Merge branch 'dev' into 8041-unifyClassLink
gitea/salix-front/pipeline/pr-dev This commit is unstable
Details
gitea/salix-front/pipeline/pr-dev This commit is unstable
Details
This commit is contained in:
commit
3429be7d7f
|
@ -113,6 +113,7 @@ pipeline {
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
|
sh 'rm junit/e2e-*.xml || true'
|
||||||
env.COMPOSE_TAG = PROTECTED_BRANCH.contains(env.CHANGE_TARGET) ? env.CHANGE_TARGET : 'dev'
|
env.COMPOSE_TAG = PROTECTED_BRANCH.contains(env.CHANGE_TARGET) ? env.CHANGE_TARGET : 'dev'
|
||||||
def image = docker.build('lilium-dev', '-f docs/Dockerfile.dev docs')
|
def image = docker.build('lilium-dev', '-f docs/Dockerfile.dev docs')
|
||||||
sh "docker-compose ${env.COMPOSE_PARAMS} up -d"
|
sh "docker-compose ${env.COMPOSE_PARAMS} up -d"
|
||||||
|
|
|
@ -694,8 +694,10 @@ worker:
|
||||||
machine: Machine
|
machine: Machine
|
||||||
business:
|
business:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
|
id: ID
|
||||||
started: Start Date
|
started: Start Date
|
||||||
ended: End Date
|
ended: End Date
|
||||||
|
hourlyLabor: Time sheet
|
||||||
company: Company
|
company: Company
|
||||||
reasonEnd: Reason for Termination
|
reasonEnd: Reason for Termination
|
||||||
department: Department
|
department: Department
|
||||||
|
@ -703,6 +705,7 @@ worker:
|
||||||
calendarType: Work Calendar
|
calendarType: Work Calendar
|
||||||
workCenter: Work Center
|
workCenter: Work Center
|
||||||
payrollCategories: Contract Category
|
payrollCategories: Contract Category
|
||||||
|
workerBusinessAgreementName: Agreement
|
||||||
occupationCode: Contribution Code
|
occupationCode: Contribution Code
|
||||||
rate: Rate
|
rate: Rate
|
||||||
businessType: Contract Type
|
businessType: Contract Type
|
||||||
|
|
|
@ -770,8 +770,10 @@ worker:
|
||||||
concept: Concepto
|
concept: Concepto
|
||||||
business:
|
business:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
|
id: Id
|
||||||
started: Fecha inicio
|
started: Fecha inicio
|
||||||
ended: Fecha fin
|
ended: Fecha fin
|
||||||
|
hourlyLabor: Ficha
|
||||||
company: Empresa
|
company: Empresa
|
||||||
reasonEnd: Motivo finalización
|
reasonEnd: Motivo finalización
|
||||||
department: Departamento
|
department: Departamento
|
||||||
|
@ -782,6 +784,7 @@ worker:
|
||||||
occupationCode: Cotización
|
occupationCode: Cotización
|
||||||
rate: Tarifa
|
rate: Tarifa
|
||||||
businessType: Contrato
|
businessType: Contrato
|
||||||
|
workerBusinessAgreementName: Convenio
|
||||||
amount: Salario
|
amount: Salario
|
||||||
basicSalary: Salario transportistas
|
basicSalary: Salario transportistas
|
||||||
notes: Notas
|
notes: Notas
|
||||||
|
|
|
@ -185,6 +185,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
|
||||||
data-key="InvoiceInSummary"
|
data-key="InvoiceInSummary"
|
||||||
:url="`InvoiceIns/${entityId}/summary`"
|
:url="`InvoiceIns/${entityId}/summary`"
|
||||||
@on-fetch="(data) => init(data)"
|
@on-fetch="(data) => init(data)"
|
||||||
|
module-name="InvoiceIn"
|
||||||
>
|
>
|
||||||
<template #header="{ entity }">
|
<template #header="{ entity }">
|
||||||
<div>{{ entity.id }} - {{ entity.supplier?.name }}</div>
|
<div>{{ entity.id }} - {{ entity.supplier?.name }}</div>
|
||||||
|
|
|
@ -180,6 +180,7 @@ const onDmsSaved = async (dms, response) => {
|
||||||
rows: dmsDialog.value.rowsToCreateInvoiceIn,
|
rows: dmsDialog.value.rowsToCreateInvoiceIn,
|
||||||
dms: response.data,
|
dms: response.data,
|
||||||
});
|
});
|
||||||
|
notify(t('Data saved'), 'positive');
|
||||||
}
|
}
|
||||||
dmsDialog.value.show = false;
|
dmsDialog.value.show = false;
|
||||||
dmsDialog.value.initialForm = null;
|
dmsDialog.value.initialForm = null;
|
||||||
|
@ -243,7 +244,7 @@ onUnmounted(() => (stateStore.rightDrawer = false));
|
||||||
</template>
|
</template>
|
||||||
<template #column-invoiceInFk="{ row }">
|
<template #column-invoiceInFk="{ row }">
|
||||||
<span class="link" @click.stop>
|
<span class="link" @click.stop>
|
||||||
{{ row.invoiceInFk }}
|
{{ row.supplierRef }}
|
||||||
<InvoiceInDescriptorProxy v-if="row.invoiceInFk" :id="row.invoiceInFk" />
|
<InvoiceInDescriptorProxy v-if="row.invoiceInFk" :id="row.invoiceInFk" />
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref, markRaw } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
|
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
|
||||||
import { toHour } from 'src/filters';
|
import { toHour } from 'src/filters';
|
||||||
|
@ -8,6 +8,7 @@ import RouteFilter from 'pages/Route/Card/RouteFilter.vue';
|
||||||
import VnTable from 'components/VnTable/VnTable.vue';
|
import VnTable from 'components/VnTable/VnTable.vue';
|
||||||
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
|
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
|
||||||
import VnSection from 'src/components/common/VnSection.vue';
|
import VnSection from 'src/components/common/VnSection.vue';
|
||||||
|
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const { viewSummary } = useSummaryDialog();
|
const { viewSummary } = useSummaryDialog();
|
||||||
|
@ -38,17 +39,7 @@ const columns = computed(() => [
|
||||||
align: 'left',
|
align: 'left',
|
||||||
name: 'workerFk',
|
name: 'workerFk',
|
||||||
label: t('route.Worker'),
|
label: t('route.Worker'),
|
||||||
component: 'select',
|
component: markRaw(VnSelectWorker),
|
||||||
attrs: {
|
|
||||||
url: 'Workers/activeWithInheritedRole',
|
|
||||||
fields: ['id', 'name'],
|
|
||||||
useLike: false,
|
|
||||||
optionFilter: 'firstName',
|
|
||||||
find: {
|
|
||||||
value: 'workerFk',
|
|
||||||
label: 'workerUserName',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
create: true,
|
create: true,
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.travelRef),
|
format: (row, dashIfEmpty) => dashIfEmpty(row.travelRef),
|
||||||
|
@ -59,6 +50,10 @@ const columns = computed(() => [
|
||||||
name: 'agencyName',
|
name: 'agencyName',
|
||||||
label: t('route.Agency'),
|
label: t('route.Agency'),
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t('route.Agency'),
|
||||||
|
name: 'agencyModeFk',
|
||||||
component: 'select',
|
component: 'select',
|
||||||
attrs: {
|
attrs: {
|
||||||
url: 'agencyModes',
|
url: 'agencyModes',
|
||||||
|
@ -69,14 +64,19 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
create: true,
|
create: true,
|
||||||
columnClass: 'expand',
|
|
||||||
columnFilter: false,
|
columnFilter: false,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
name: 'vehiclePlateNumber',
|
name: 'vehiclePlateNumber',
|
||||||
label: t('route.Vehicle'),
|
label: t('route.Vehicle'),
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'vehicleFk',
|
||||||
|
label: t('route.Vehicle'),
|
||||||
|
cardVisible: true,
|
||||||
component: 'select',
|
component: 'select',
|
||||||
attrs: {
|
attrs: {
|
||||||
url: 'vehicles',
|
url: 'vehicles',
|
||||||
|
@ -90,6 +90,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
create: true,
|
create: true,
|
||||||
columnFilter: false,
|
columnFilter: false,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -156,6 +157,7 @@ const columns = computed(() => [
|
||||||
<VnTable
|
<VnTable
|
||||||
:data-key
|
:data-key
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
|
ref="tableRef"
|
||||||
:right-search="false"
|
:right-search="false"
|
||||||
redirect="route"
|
redirect="route"
|
||||||
:create="{
|
:create="{
|
||||||
|
|
|
@ -35,6 +35,22 @@ async function reactivateWorker() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
|
{
|
||||||
|
name: 'id',
|
||||||
|
label: t('Id'),
|
||||||
|
align: 'left',
|
||||||
|
isId: true,
|
||||||
|
cardVisible: true,
|
||||||
|
width: '40px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'isHourlyLabor',
|
||||||
|
label: t('worker.business.tableVisibleColumns.hourlyLabor'),
|
||||||
|
align: 'left',
|
||||||
|
component: 'checkbox',
|
||||||
|
cardVisible: true,
|
||||||
|
width: '60px',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'started',
|
name: 'started',
|
||||||
label: t('worker.business.tableVisibleColumns.started'),
|
label: t('worker.business.tableVisibleColumns.started'),
|
||||||
|
@ -194,6 +210,20 @@ const columns = computed(() => [
|
||||||
format: ({ workerBusinessTypeName }, dashIfEmpty) =>
|
format: ({ workerBusinessTypeName }, dashIfEmpty) =>
|
||||||
dashIfEmpty(workerBusinessTypeName),
|
dashIfEmpty(workerBusinessTypeName),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'workerBusinessAgreementFk',
|
||||||
|
label: t('worker.business.tableVisibleColumns.workerBusinessAgreementName'),
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'WorkerBusinessAgreements',
|
||||||
|
fields: ['id', 'name'],
|
||||||
|
},
|
||||||
|
cardVisible: true,
|
||||||
|
create: true,
|
||||||
|
format: ({ workerBusinessAgreementName }, dashIfEmpty) =>
|
||||||
|
dashIfEmpty(workerBusinessAgreementName),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('worker.business.tableVisibleColumns.amount'),
|
label: t('worker.business.tableVisibleColumns.amount'),
|
||||||
|
@ -230,7 +260,7 @@ const columns = computed(() => [
|
||||||
save-url="/Businesses/crud"
|
save-url="/Businesses/crud"
|
||||||
:create="{
|
:create="{
|
||||||
urlCreate: `Workers/${entityId}/Business`,
|
urlCreate: `Workers/${entityId}/Business`,
|
||||||
title: 'Create business',
|
title: t('Create business'),
|
||||||
onDataSaved: () => tableRef.reload(),
|
onDataSaved: () => tableRef.reload(),
|
||||||
formInitialData: {},
|
formInitialData: {},
|
||||||
}"
|
}"
|
||||||
|
@ -248,4 +278,5 @@ const columns = computed(() => [
|
||||||
<i18n>
|
<i18n>
|
||||||
es:
|
es:
|
||||||
Do you want to reactivate the user?: desea reactivar el usuario?
|
Do you want to reactivate the user?: desea reactivar el usuario?
|
||||||
|
Create business: Crear contrato
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
describe('Entry', () => {
|
describe.skip('Entry', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
cy.viewport(1920, 1080);
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
describe('RouteAutonomous', () => {
|
||||||
|
const getLinkSelector = (colField) =>
|
||||||
|
`tr:first-child > [data-col-field="${colField}"] > .no-padding > .link`;
|
||||||
|
|
||||||
|
const selectors = {
|
||||||
|
reference: 'Reference_input',
|
||||||
|
date: 'tr:first-child > [data-col-field="dated"]',
|
||||||
|
total: '.value > .text-h6',
|
||||||
|
received: getLinkSelector('invoiceInFk'),
|
||||||
|
autonomous: getLinkSelector('supplierName'),
|
||||||
|
firstRowCheckbox: '.q-virtual-scroll__content tr:first-child .q-checkbox__bg',
|
||||||
|
secondRowCheckbox: '.q-virtual-scroll__content tr:nth-child(2) .q-checkbox__bg',
|
||||||
|
createInvoiceBtn: '.q-card > .q-btn',
|
||||||
|
saveFormBtn: 'FormModelPopup_save',
|
||||||
|
summaryIcon: 'tableAction-0',
|
||||||
|
summaryPopupBtn: '.header > :nth-child(2) > .q-btn__content > .q-icon',
|
||||||
|
summaryHeader: '.summaryHeader > :nth-child(2)',
|
||||||
|
descriptorHeader: '.summaryHeader > div',
|
||||||
|
descriptorTitle: '.q-item__label--header > .title > span',
|
||||||
|
summaryGoToSummaryBtn: '.header > .q-icon',
|
||||||
|
descriptorGoToSummaryBtn: '.descriptor > .header > a[href] > .q-btn',
|
||||||
|
};
|
||||||
|
|
||||||
|
const data = {
|
||||||
|
reference: 'Test invoice',
|
||||||
|
total: '€206.40',
|
||||||
|
supplier: 'PLANTS SL',
|
||||||
|
route: 'first route',
|
||||||
|
};
|
||||||
|
|
||||||
|
const summaryUrl = '/summary';
|
||||||
|
const dataSaved = 'Data saved';
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.viewport(1920, 1080);
|
||||||
|
cy.login('developer');
|
||||||
|
cy.visit(`/#/route/agency-term`);
|
||||||
|
cy.typeSearchbar('{enter}');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should list autonomous routes', () => {
|
||||||
|
cy.get('.q-table')
|
||||||
|
.children()
|
||||||
|
.should('be.visible')
|
||||||
|
.should('have.length.greaterThan', 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should create invoice in to selected route', () => {
|
||||||
|
cy.get(selectors.firstRowCheckbox).click();
|
||||||
|
cy.get(selectors.createInvoiceBtn).click();
|
||||||
|
cy.dataCy(selectors.reference).type(data.reference);
|
||||||
|
cy.get('.q-file').selectFile('test/cypress/fixtures/image.jpg', {
|
||||||
|
force: true,
|
||||||
|
});
|
||||||
|
cy.dataCy(selectors.saveFormBtn).click();
|
||||||
|
cy.checkNotification(dataSaved);
|
||||||
|
cy.typeSearchbar('{enter}');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should display the total price of the selected rows', () => {
|
||||||
|
cy.get(selectors.firstRowCheckbox).click();
|
||||||
|
cy.get(selectors.secondRowCheckbox).click();
|
||||||
|
cy.validateContent(selectors.total, data.total);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should redirect to the summary when clicking a route', () => {
|
||||||
|
cy.get(selectors.date).click();
|
||||||
|
cy.get(selectors.summaryHeader).should('contain', data.route);
|
||||||
|
cy.url().should('include', summaryUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Received pop-ups', () => {
|
||||||
|
it('Should redirect to invoice in summary from the received descriptor pop-up', () => {
|
||||||
|
cy.get(selectors.received).click();
|
||||||
|
cy.validateContent(selectors.descriptorTitle, data.reference);
|
||||||
|
cy.get(selectors.descriptorGoToSummaryBtn).click();
|
||||||
|
cy.get(selectors.descriptorHeader).should('contain', data.supplier);
|
||||||
|
cy.url().should('include', summaryUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should redirect to the invoiceIn summary from summary pop-up from the received descriptor pop-up', () => {
|
||||||
|
cy.get(selectors.received).click();
|
||||||
|
cy.validateContent(selectors.descriptorTitle, data.reference);
|
||||||
|
cy.get(selectors.summaryPopupBtn).click();
|
||||||
|
cy.get(selectors.descriptorHeader).should('contain', data.supplier);
|
||||||
|
cy.get(selectors.summaryGoToSummaryBtn).click();
|
||||||
|
cy.get(selectors.descriptorHeader).should('contain', data.supplier);
|
||||||
|
cy.url().should('include', summaryUrl);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Autonomous pop-ups', () => {
|
||||||
|
it('Should redirect to the supplier summary from the received descriptor pop-up', () => {
|
||||||
|
cy.get(selectors.autonomous).click();
|
||||||
|
cy.validateContent(selectors.descriptorTitle, data.supplier);
|
||||||
|
cy.get(selectors.descriptorGoToSummaryBtn).click();
|
||||||
|
cy.get(selectors.summaryHeader).should('contain', data.supplier);
|
||||||
|
cy.url().should('include', summaryUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should redirect to the supplier summary from summary pop-up from the autonomous descriptor pop-up', () => {
|
||||||
|
cy.get(selectors.autonomous).click();
|
||||||
|
cy.get(selectors.descriptorTitle).should('contain', data.supplier);
|
||||||
|
cy.get(selectors.summaryPopupBtn).click();
|
||||||
|
cy.get(selectors.summaryHeader).should('contain', data.supplier);
|
||||||
|
cy.get(selectors.summaryGoToSummaryBtn).click();
|
||||||
|
cy.get(selectors.summaryHeader).should('contain', data.supplier);
|
||||||
|
cy.url().should('include', summaryUrl);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Route pop-ups', () => {
|
||||||
|
it('Should redirect to the summary from the route summary pop-up', () => {
|
||||||
|
cy.dataCy(selectors.summaryIcon).first().click();
|
||||||
|
cy.get(selectors.summaryHeader).should('contain', data.route);
|
||||||
|
cy.get(selectors.summaryGoToSummaryBtn).click();
|
||||||
|
cy.get(selectors.summaryHeader).should('contain', data.route);
|
||||||
|
cy.url().should('include', summaryUrl);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -1,5 +1,5 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('TicketList', () => {
|
describe.skip('TicketList', () => {
|
||||||
const firstRow = 'tbody > :nth-child(1)';
|
const firstRow = 'tbody > :nth-child(1)';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|
Loading…
Reference in New Issue