From 658bd015caa50faaa47cca00c0f3767de21f5e5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= <carlosap@verdnatura.es> Date: Fri, 14 Feb 2025 12:41:11 +0100 Subject: [PATCH 01/10] feat: refs #8529 invoiceIn move deductible field from head to lines --- .../InvoiceIn/Card/InvoiceInBasicData.vue | 28 ++++--------------- src/pages/InvoiceIn/Card/InvoiceInSummary.vue | 4 --- src/pages/InvoiceIn/Card/InvoiceInVat.vue | 15 ++++++++++ 3 files changed, 20 insertions(+), 27 deletions(-) diff --git a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue index 905ddebb2..9fe365a38 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue @@ -143,20 +143,12 @@ function deleteFile(dmsFk) { </VnRow> <VnRow> <VnSelect - :label="t('Undeductible VAT')" - v-model="data.deductibleExpenseFk" - :options="expenses" + :label="t('invoiceIn.summary.sage')" + v-model="data.withholdingSageFk" + :options="sageWithholdings" option-value="id" - option-label="id" - :filter-options="['id', 'name']" - data-cy="UnDeductibleVatSelect" - > - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - {{ `${scope.opt.id}: ${scope.opt.name}` }} - </QItem> - </template> - </VnSelect> + option-label="withholding" + /> <div class="row no-wrap"> <VnInput @@ -253,15 +245,6 @@ function deleteFile(dmsFk) { option-label="code" /> </VnRow> - <VnRow> - <VnSelect - :label="t('invoiceIn.summary.sage')" - v-model="data.withholdingSageFk" - :options="sageWithholdings" - option-value="id" - option-label="withholding" - /> - </VnRow> </template> </FormModel> <QDialog v-model="documentDialogRef.show"> @@ -313,7 +296,6 @@ function deleteFile(dmsFk) { supplierFk: Proveedor Expedition date: Fecha expedición Operation date: Fecha operación - Undeductible VAT: Iva no deducible Document: Documento Download file: Descargar archivo Entry date: Fecha asiento diff --git a/src/pages/InvoiceIn/Card/InvoiceInSummary.vue b/src/pages/InvoiceIn/Card/InvoiceInSummary.vue index d358601d3..f2393a56d 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInSummary.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInSummary.vue @@ -272,10 +272,6 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`; :label="t('invoiceIn.summary.sage')" :value="entity.sageWithholding?.withholding" /> - <VnLv - :label="t('invoiceIn.summary.vat')" - :value="entity.expenseDeductible?.name" - /> <VnLv :label="t('invoiceIn.card.company')" :value="entity.company?.code" diff --git a/src/pages/InvoiceIn/Card/InvoiceInVat.vue b/src/pages/InvoiceIn/Card/InvoiceInVat.vue index e77453bc0..e3ed617c6 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInVat.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInVat.vue @@ -53,6 +53,13 @@ const columns = computed(() => [ sortable: true, align: 'left', }, + { + name: 'isDeductible', + label: t('Deductible'), + field: (row) => row.isDeductible, + model: 'isDeductible', + align: 'center', + }, { name: 'sageiva', label: t('Sage iva'), @@ -119,6 +126,7 @@ const filter = { 'foreignValue', 'taxTypeSageFk', 'transactionTypeSageFk', + 'isDeductible', ], where: { invoiceInFk: route.params.id, @@ -227,6 +235,11 @@ function setCursor(ref) { </VnSelectDialog> </QTd> </template> + <template #body-cell-isDeductible="{ row }"> + <QTd align="center"> + <QCheckbox v-model="row.isDeductible" /> + </QTd> + </template> <template #body-cell-taxablebase="{ row }"> <QTd shrink> <VnInputNumber @@ -321,6 +334,7 @@ function setCursor(ref) { </QTd> <QTd /> <QTd /> + <QTd /> <QTd> {{ toCurrency(taxRateTotal) }} </QTd> @@ -491,6 +505,7 @@ es: Create a new expense: Crear nuevo gasto Add tax: Crear gasto Taxable base: Base imp. + Deductible: Deducible Sage tax: Sage iva Sage transaction: Sage transacción Rate: Tasa From 816a6197c72bd11b3e44a10d700569738491e937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= <carlosap@verdnatura.es> Date: Mon, 3 Mar 2025 18:05:19 +0100 Subject: [PATCH 02/10] feat: refs #8529 enhance InvoiceInVat component with data-cy attribute for isDeductible checkbox --- src/pages/InvoiceIn/Card/InvoiceInVat.vue | 5 ++++- .../invoiceIn/invoiceInBasicData.spec.js | 6 +----- .../invoiceIn/invoiceInDescriptor.spec.js | 4 ++-- .../integration/invoiceIn/invoiceInVat.spec.js | 13 ++++++++++++- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/pages/InvoiceIn/Card/InvoiceInVat.vue b/src/pages/InvoiceIn/Card/InvoiceInVat.vue index 0f8f9a6c5..7077c9a59 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInVat.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInVat.vue @@ -237,7 +237,10 @@ function setCursor(ref) { </template> <template #body-cell-isDeductible="{ row }"> <QTd align="center"> - <QCheckbox v-model="row.isDeductible" /> + <QCheckbox + v-model="row.isDeductible" + data-cy="isDeductible_checkbox" + /> </QTd> </template> <template #body-cell-taxablebase="{ row }"> diff --git a/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js b/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js index 11ca1bb59..5b6836784 100644 --- a/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js @@ -11,13 +11,9 @@ describe('InvoiceInBasicData', () => { }); it('should edit the provideer and supplier ref', () => { - cy.dataCy('UnDeductibleVatSelect').type('4751000000'); - cy.get('.q-menu .q-item').contains('4751000000').click(); - cy.get(resetBtn).click(); - cy.waitForElement('#formModel').within(() => { cy.dataCy('vnSupplierSelect').type('Bros nick'); - }) + }); cy.get('.q-menu .q-item').contains('Bros nick').click(); cy.saveCard(); cy.get(`${firstFormSelect} input`).invoke('val').should('eq', 'Bros nick'); diff --git a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js index 97a9fe976..fed90c517 100644 --- a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js @@ -1,7 +1,7 @@ describe('InvoiceInDescriptor', () => { const book = '.summaryHeader > .no-wrap > .q-btn'; - const firstDescritorOpt = '.q-menu > .q-list > :nth-child(5) > .q-item__section'; - const checkbox = ':nth-child(5) > .q-checkbox'; + const firstDescritorOpt = '.q-menu > .q-list > :nth-child(4) > .q-item__section'; + const checkbox = ':nth-child(4) > .q-checkbox'; it('should booking and unbooking the invoice properly', () => { cy.viewport(1280, 720); diff --git a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js index 1e7ce1003..2693ac410 100644 --- a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js @@ -1,7 +1,7 @@ /// <reference types="cypress" /> describe('InvoiceInVat', () => { const thirdRow = 'tbody > :nth-child(3)'; - const firstLineVat = 'tbody > :nth-child(1) > :nth-child(4)'; + const firstLineVat = 'tbody > :nth-child(1) '; const vats = '[data-cy="vat-sageiva"]'; const dialogInputs = '.q-dialog label input'; const addBtn = 'tbody tr:nth-child(1) td:nth-child(2) .--add-icon'; @@ -20,6 +20,17 @@ describe('InvoiceInVat', () => { cy.get(vats).eq(0).should('have.value', '8: H.P. IVA 21% CEE'); }); + it('should mark the line as deductible VAT', () => { + cy.get(`${firstLineVat} [data-cy="isDeductible_checkbox"]`).click(); + + cy.saveCard(); + + cy.get(`${firstLineVat} [data-cy="isDeductible_checkbox"]`) + + .click(); + cy.saveCard(); + }); + it('should add a new row', () => { cy.addRow(); cy.fillRow(thirdRow, [true, 2000000001, 30, 'H.P. IVA 10']); From 535fe011f61f3511ff5cc2df7c1a942cb668c97e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= <carlosap@verdnatura.es> Date: Mon, 24 Mar 2025 17:51:29 +0100 Subject: [PATCH 03/10] feat: refs #8529 add isDeductible column and localization for InvoiceIn summary --- src/pages/InvoiceIn/Card/InvoiceInSummary.vue | 16 ++++++++++++++++ src/pages/InvoiceIn/Card/InvoiceInVat.vue | 3 +-- src/pages/InvoiceIn/locale/en.yml | 1 + src/pages/InvoiceIn/locale/es.yml | 1 + .../invoiceIn/invoiceInDescriptor.spec.js | 3 --- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/pages/InvoiceIn/Card/InvoiceInSummary.vue b/src/pages/InvoiceIn/Card/InvoiceInSummary.vue index 4f1140a9a..d5fded4bc 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInSummary.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInSummary.vue @@ -40,6 +40,13 @@ const vatColumns = ref([ sortable: true, align: 'left', }, + { + name: 'isDeductible', + label: 'invoiceIn.isDeductible', + field: (row) => row.isDeductible, + sortable: true, + align: 'center', + }, { name: 'vat', label: 'invoiceIn.summary.sageVat', @@ -331,6 +338,15 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`; </QTh> </QTr> </template> + <template #body-cell-isDeductible="{ row }"> + <QTd align="center"> + <QCheckbox + v-model="row.isDeductible" + disable + data-cy="isDeductible_checkbox" + /> + </QTd> + </template> <template #body-cell-vat="{ value: vatCell }"> <QTd :title="vatCell" shrink> {{ vatCell }} diff --git a/src/pages/InvoiceIn/Card/InvoiceInVat.vue b/src/pages/InvoiceIn/Card/InvoiceInVat.vue index 5a868d32d..61c3040ae 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInVat.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInVat.vue @@ -55,7 +55,7 @@ const columns = computed(() => [ }, { name: 'isDeductible', - label: t('Deductible'), + label: t('invoiceIn.isDeductible'), field: (row) => row.isDeductible, model: 'isDeductible', align: 'center', @@ -511,7 +511,6 @@ es: Create a new expense: Crear nuevo gasto Add tax: Crear gasto Taxable base: Base imp. - Deductible: Deducible Sage tax: Sage iva Sage transaction: Sage transacción Rate: Tasa diff --git a/src/pages/InvoiceIn/locale/en.yml b/src/pages/InvoiceIn/locale/en.yml index 548e6c201..7e3603f0f 100644 --- a/src/pages/InvoiceIn/locale/en.yml +++ b/src/pages/InvoiceIn/locale/en.yml @@ -4,6 +4,7 @@ invoiceIn: serial: Serial isBooked: Is booked supplierRef: Invoice nº + isDeductible: Deductible list: ref: Reference supplier: Supplier diff --git a/src/pages/InvoiceIn/locale/es.yml b/src/pages/InvoiceIn/locale/es.yml index 142d95f92..e6ac9273c 100644 --- a/src/pages/InvoiceIn/locale/es.yml +++ b/src/pages/InvoiceIn/locale/es.yml @@ -4,6 +4,7 @@ invoiceIn: serial: Serie isBooked: Contabilizada supplierRef: Nº factura + isDeductible: Deducible list: ref: Referencia supplier: Proveedor diff --git a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js index ee1a55434..7058e154c 100644 --- a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js @@ -1,7 +1,4 @@ describe('InvoiceInDescriptor', () => { - const book = '.summaryHeader > .no-wrap > .q-btn'; - const firstDescritorOpt = '.q-menu > .q-list > :nth-child(4) > .q-item__section'; - const checkbox = ':nth-child(4) > .q-checkbox'; beforeEach(() => cy.login('administrative')); describe('more options', () => { From 8da61655e2cc10aa186989211332b795fe820060 Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Mon, 24 Mar 2025 23:02:05 +0100 Subject: [PATCH 04/10] fix: refs #8602 disable use-like option in EntryBuys component --- src/pages/Entry/Card/EntryBuys.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/Entry/Card/EntryBuys.vue b/src/pages/Entry/Card/EntryBuys.vue index 3990fde19..89c6d52c4 100644 --- a/src/pages/Entry/Card/EntryBuys.vue +++ b/src/pages/Entry/Card/EntryBuys.vue @@ -652,6 +652,7 @@ onMounted(() => { :fields="['id', 'nickname']" option-label="nickname" sort-by="nickname ASC" + :use-like="false" /> <VnSelect :label="t('Family')" From ca4e02a2bf0e3a07ee91a88c83b20cd68b87cac1 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 25 Mar 2025 08:39:19 +0100 Subject: [PATCH 05/10] chore: update changelog --- CHANGELOG.md | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd75a00a4..3b654a1ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,214 @@ +# Version 25.12 - 2025-03-25 + +### Added 🆕 + +- chore: add junit-merge dependency to package.json by:alexm +- chore: downgrade version from 25.14.0 to 25.12.0 in package.json by:alexm +- chore: reduce page load timeout in Cypress configuration by:alexm +- chore: refs #6695 update Cypress to version 14.1.0 and simplify test execution in Jenkinsfile by:alexm +- chore: refs #8602 add comments for clarity in Cypress commands file by:pablone +- chore: refs #8602 enhance Cypress support files with detailed comments and organization by:pablone +- ci: refs #6695 feat jenkins parallel e2e by:alexm +- feat: integrate vue-router to enhance routing capabilities in ZoneCard component by:alexm +- feat: refs #6695 implement parallel Cypress testing and enhance timeout configurations by:alexm +- feat: refs #6695 update Cypress parallel test execution to use 3 instances by:alexm +- feat: refs #6802 add dash placeholder for empty department names in InvoiceOut list by:jgallego +- feat: refs #6802 add DepartmentDescriptorProxy to InvoiceOutList and update translations by:jgallego +- feat: refs #6802 add DepartmentDescriptorProxy to various components and update department handling by:jgallego +- feat: refs #7587 add 'ticketClaimed' translation and implement claims retrieval in TicketDescriptor by:jtubau +- feat: refs #7949 show new field in ticket sales by:Jon +- feat: refs #8045 added new logic to show the correct icon and the correct path to redirect by:Jon +- feat: refs #8045 modified icon and route to redirect from CardDescriptor by:Jon +- feat: refs #8074 modified spinner size by:Jon +- feat: refs #8600 added calendar e2e and modified basic data by:Jon +- feat: refs #8600 added deliveryDays and modified warehouse E2Es by:Jon +- feat: refs #8600 added new tests for zoneSummary & zoneLocations by:provira +- feat: refs #8602 add custom Cypress commands for improved element interaction and request handling by:pablone +- feat: refs #8602 add new Cypress command for clicking buttons with icons by:pablone +- feat: refs #8602 add remove functionality for tag filters in EntryBuys component by:pablone +- feat: refs #8602 add sorting options for select fields and update locale files with supplier name by:pablone +- feat: refs #8602 refactor EntryBuys component and enhance observation tests by:pablone +- feat: refs #8602 remove unused state property from useArrayDataStore by:pablone +- feat: refs #8602 remove unused URL property from VnTable in ClaimList component by:pablone +- feat: refs #8602 skip warehouse creation and removal test in ZoneWarehouse spec by:pablone +- feat: refs #8602 streamline beforeSaveFn execution in CrudModel component by:pablone +- feat: refs #8602 streamline beforeSaveFn execution in VnTable component by:pablone +- feat: refs #8602 streamline filter logic in EntryBuys component by:pablone +- feat: refs #8602 update entry components and tests, add data-cy attributes for Cypress integration by:pablone +- feat: refs #8602 update localization for purchased spaces and enhance Entry components with new labels by:pablone +- feat: refs #8606 adapt module to VnCatdBeta by:Jon +- feat: refs #8612 added summary button & changed e2e tests by:provira +- feat: refs #8612 changed shelving to VnTable & created e2e tests by:provira +- feat: refs #8616 add summary prop to CardDescriptor in RoadmapDescriptor and WorkerDescriptor by:jtubau +- feat: refs #8616 add VnCheckbox component to VnFilter and update prop types in VnFilterPanel and VnSearchbar by:jtubau +- feat: refs #8630 add Agency and Vehicle descriptor components with summary props by:jtubau +- feat: refs #8638 add AWB field to travel and entry forms, update translations and styles by:pablone +- feat: refs #8638 add data attributes for transfer buys functionality in EntryBuys.vue and corresponding tests by:pablone +- feat: refs #8648 enhance roadmapList tests with improved selectors and additional scenarios by:jtubau +- feat: refs #8664 add CmrFilter component and integrate it into CmrList for enhanced filtering options by:jtubau +- feat: refs #8721 add ticket navigation and update route columns by:jtubau +- feat: run.sh build neccessary images by:alexm +- feat: update Jenkinsfile to pull Docker images for back and db services by:alexm +- feat: update labels and add department selection in InvoiceOut filter and list by:jgallego +- refactor: refs #8626 update button styles and improve route redirection logic by:jtubau +- style: refs #8041 new variable by:benjaminedc + +### Changed 📦 + +- feat: refs #8602 refactor EntryBuys component and enhance observation tests by:pablone +- refactor(cypress): refs #6695 simplify parallel test execution script by:alexm +- refactor: deleted useless (origin/Warmfix-DepartmentIcon) by:Jon +- refactor: refs #6695 enable ClaimNotes test suite by:alexm +- refactor: refs #6695 fix invoiceOutSummary by:alexm +- refactor: refs #6695 improve notification check and extend waitForElement timeout by:alexm +- refactor: refs #6695 remove mocha dependency and optimize Cypress command execution by:alexm +- refactor: refs #6695 skips by:alexm +- refactor: refs #6695 skip zoneWarehouse by:alexm +- refactor: refs #6695 streamline Cypress test execution and remove deprecated configurations by:alexm +- refactor: refs #6802 replace salesPerson references with department in claims and tickets by:jgallego +- refactor: refs #6802 replace 'salesPerson' terminology with 'team' across multiple locales and components by:jgallego +- refactor: refs #6802 update import paths for DepartmentDescriptorProxy to use Worker directory by:jgallego +- refactor: refs #6802 update InvoiceOutNegativeBases to use Department instead of Worker by:jgallego +- refactor: refs #6802 update TicketFilter and TicketSale components to use departmentFk and adjust API endpoints by:jgallego +- refactor: refs #8041 unify class link and unify titles to VnTitles by:benjaminedc +- refactor: refs #8045 modified icon and module const by:Jon +- refactor: refs #8197 rename VnCardBeta to VnCard by:alexm +- refactor: refs #8197 simplify menu retrieval logic in LeftMenu component by:alexm +- refactor: refs #8322 changed Wagon component to use VnSection/VnCardBeta by:provira +- refactor: refs #8322 remove keyBinding from Wagon router module by:alexm +- refactor: refs #8322 update WagonCard component and routing structure by:alexm +- refactor: refs #8370 modified function to get the correct date by:Jon +- refactor: refs #8472 remove added div and add class to VnInput by:jtubau +- refactor: refs #8472 unified styling for the more-create-dialog slot to ensure consistency across all scenarios by:jtubau +- refactor: refs #8472 update class names from q-span-2 to col-span-2 for consistency in layout by:jtubau +- refactor: refs #8600 changed test case description by:provira +- refactor: refs #8600 modified make invoice and send dialog e2es by:Jon +- refactor: refs #8600 modified upcomingDeliveries e2e and created deliveryDays by:Jon +- refactor: refs #8600 modified zoneSummary e2e by:Jon +- refactor: refs #8602 remove redundant date input test from entryList.spec.js by:pablone +- refactor: refs #8606 clear some warnings by:Jon +- refactor: refs #8606 deleted code and fixed translation by:Jon +- refactor: refs #8606 merged previous and e2e changes and corrected minor errors by:Jon +- refactor: refs #8606 requested changes by:Jon +- refactor: refs #8616 integrate summary dialog and update navigation in Agency and Vehicle components by:jtubau +- refactor: refs #8616 integrate VnSelectWorker component in RouteList and optimize format functions by:jtubau +- refactor: refs #8616 simplify template bindings and improve link generation in VehicleSummary by:jtubau +- refactor: refs #8616 update routing components for AgencyList and RouteRoadmap in route.js by:jtubau +- refactor: refs #8619 simplify empty data check in RouteDescriptor component by:jtubau +- refactor: refs #8626 add cardVisible property to RouteList columns by:jtubau +- refactor: refs #8626 add formatting for agency and vehicle columns in RouteList by:jtubau +- refactor: refs #8626 enhance Worker and Agency components with data attributes and improved routing by:jtubau +- refactor: refs #8626 improve test messages and selectors in route tests by:jtubau +- refactor: refs #8626 update button styles and improve route redirection logic by:jtubau +- refactor: refs #8626 update RouteList columns and enable AgencyWorkCenter tests by:jtubau +- refactor: refs #8630 add vehicle translations and enhance route list columns by:jtubau +- refactor: refs #8648 update roadmap deletion test to use current element text by:jtubau +- refactor: refs #8664 enhance CmrList component with query initialization and user parameters by:jtubau +- refactor: refs #8664 localization files by:jtubau +- refactor: refs #8664 remove CmrFilter and replace with VnSearchbar in CmrList by:jtubau +- refactor: remove unnecessary login and reload calls in ClaimDevelopment tests by:alexm +- refactor: simplify client selection in order creation test by:alexm +- refactor: update client ID input selector and remove viewport setting by:alexm +- test: refs #8197 comment out ticket list tests for refactoring by:alexm +- test: refs #8626 refactor notification check in routeList.spec.js by:jtubau +- test: refs #8626 refactor routeList.spec.js to use a constant for summary URL by:jtubau +- test: refs #8626 refactor routeList.spec.js to use selectors and improve readability by:jtubau + +### Fixed 🛠️ + +- fix: add --init flag to Docker container for Cypress tests by:alexm +- fix: agency list filters by:jtubau +- fix: align Article label to the left in EntryBuys component by:alexm +- fix: card descriptor imports by:Jon +- fix: card descriptor merge by:Jon +- fix(ClaimAction): update shelving options to use URL instead of static data by:jgallego +- fix(ClaimSummary): clean url by:alexm +- fix(cypress.config.js): refs #6695 update reporter to junit and remove unused dependencies by:alexm +- fix(cypressParallel.sh): refs #6695 improve script readability by:alexm +- fix(cypressParallel.sh): refs #6695 improve test execution output for clarity by:alexm +- fix(cypressParallel.sh): refs #6695 simplify test execution output format by:alexm +- fix(cypress scripts): refs #6695 improve cleanup process and adjust output redirection by:alexm +- fix: fixed department descriptor icon by:Jon +- fix: fixed submodule descriptors icons by:Jon +- fix(invoiceOutSummary.spec.js): refs #6695 remove unnecessary visibility check for descriptor by:alexm +- fix(Jenkinsfile): reduce parallel Cypress test execution from 3 to 2 by:alexm +- fix(Jenkinsfile): refs #6695 add credentials for Docker login in E2E stage by:alexm +- fix(Jenkinsfile): refs #6695 change parallel test execution from 4 to 2 by:alexm +- fix(Jenkinsfile): refs #6695 increase parallel test execution from 2 to 4 by:alexm +- fix(Jenkinsfile): refs #6695 update parallel test execution to 4 by:alexm +- fix(LeftMenu): refs #8197 handle missing children in findRoute and update menu structure by:alexm +- fix: refs #6695 update Cypress configuration and test result paths by:alexm +- fix: refs #6695 update Jenkinsfile to build Docker image correctly and modify logout test visit method by:alexm +- fix: refs #6695 update Jenkinsfile to remove specific e2e XML files and adjust Cypress parallel execution by:alexm +- fix: refs #6695 update Jenkinsfile to source cypressParallel.sh correctly by:alexm +- fix: refs #6695 update visit method in TicketLackDetail.spec.js to prevent page reload by:alexm +- fix: refs #6802 update import path for DepartmentDescriptorProxy in OrderList.vue by:jgallego +- fix: refs #6802 update OrderFilter to use department relation instead of salesPerson by:jgallego +- fix: refs #8041 update redirection from preview to summary in ShelvingList tests by:benjaminedc +- fix: refs #8041 update selector for summary header in ParkingList tests by:benjaminedc +- fix: refs #8041 update summaryHeader selector in ParkingList test by:benjaminedc +- fix: refs #8322 update order property for WagonList component by:alexm +- fix: refs #8370 change param rely on month by:Jon +- fix: refs #8417 added data-cy to all files and fixed test by:provira +- fix: refs #8417 added data-cy to delete button by:provira +- fix: refs #8417 fixed claimPhoto e2e by:provira +- fix: refs #8417 fixed claimPhoto e2e test by:provira +- fix: refs #8417 fixed e2e test by:provira +- fix: refs #8417 fixed e2e test case by:provira +- fix: refs #8417 fixed failing test case by:provira +- fix: refs #8417 fixed invoiceOutSummary e2e test by:provira +- fix: refs #8417 removed .only by:provira +- fix: refs #8583 basicData, business, summary by:carlossa +- fix: refs #8583 basicData e2e by:carlossa +- fix: refs #8583 basicData timeControl by:carlossa +- fix: refs #8583 cypressconf by:carlossa +- fix: refs #8583 dataCy operator by:carlossa +- fix: refs #8583 fix AddCard by:carlossa +- fix: refs #8583 mutual create by:carlossa +- fix: refs #8583 operator by:carlossa +- fix: refs #8583 remove workerTimeControl by:carlossa +- fix: refs #8583 tMutual, tNotes, TOperator by:carlossa +- fix: refs #8583 wBusiness by:carlossa +- fix: refs #8583 wBusiness e2e by:carlossa +- fix: refs #8583 workerBasicData & workerTimeControl by:carlossa +- fix: refs #8583 workerBusiness by:carlossa +- fix: refs #8583 workerBusiness e2e by:carlossa +- fix: refs #8583 workerBusiness test by:carlossa +- fix: refs #8583 workerE2E by:carlossa +- fix: refs #8583 worker mutual e2e by:carlossa +- fix: refs #8583 workerSummary test by:carlossa +- fix: refs #8583 workerTimeControl by:carlossa +- fix: refs #8583 workerTimeControl e2e by:carlossa +- fix: refs #8600 e2e by:Jon +- fix: refs #8600 fixed calendar e2e by:Jon +- fix: refs #8600 fixed e2e and skip client ones by:Jon +- fix: refs #8600 fixed e2e by:Jon +- fix: refs #8600 fixed invoiceOut summary e2e by:Jon +- fix: refs #8600 fixed zoneList & added test case to zoneSummary by:provira +- fix: refs #8600 zone basic data e2e and skip intermitent invoice out summary it by:Jon +- fix: refs #8602 delete unused entryDms and stockBought test files (origin/8581-e2eInvoiceIn) by:pablone +- fix: refs #8606 deleted code by:Jon +- fix: refs #8612 changed QCheckbox for VnCheckbox by:provira +- fix: refs #8612 fixed shelving e2e tests by:provira +- fix: refs #8616 add conditional for SupplierDescriptorProxy and bind attributes in CardDescriptor by:jtubau +- fix: refs #8616 remove redundant v-on binding from QCheckbox in VnCheckbox.vue by:jtubau +- fix: refs #8616 update binding syntax for is-editable prop in AgencyList.vue by:jtubau +- fix: refs #8616 update FormModel prop from 'update-url' to 'url-update' in Agency and RoadMap BasicData by:jtubau +- fix: refs #8619 handle empty ticket records in RouteDescriptor component by:jtubau +- fix: refs #8619 update route descriptor to handle empty ticket records and adjust test cases by:jtubau +- fix: refs #8626 remove duplicate ref attribute from RouteList.vue by:jtubau +- fix: refs #8630 remove duplicated locations by:jtubau +- fix: refs #8638 restore invoiceInBasicData by:pablone +- fix: refs #8638 update comment formatting in VnTable.vue by:pablone +- fix: refs #8638 update null check for maxlength validation in VnInput.vue by:pablone +- fix: simplify menu structure in monitor router module (origin/fix_monitor_leftMenu) by:Javier Segarra +- refactor: refs #6695 fix invoiceOutSummary by:alexm +- refactor: refs #8606 deleted code and fixed translation by:Jon +- test: fix intermitent e2e by:alexm +- test: fix orderList e2e, unestables by:alexm +- test(OrderList): fix inconsistency by:alexm +- test(TicketList): fix inconsistency by:alexm + # Version 25.10 - 2025-03-11 ### Added 🆕 From 0014356b3358709a4d5401d49f592e1bf93a2109 Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Tue, 25 Mar 2025 10:08:58 +0100 Subject: [PATCH 06/10] fix: use store instead formData --- src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue b/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue index 3c2fe95e5..76191b099 100644 --- a/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue +++ b/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue @@ -44,7 +44,7 @@ const getPriceDifference = async () => { shipped: ticket.value.shipped, }; const { data } = await axios.post( - `tickets/${formData.value.id}/priceDifference`, + `tickets/${ticket.value.id}/priceDifference`, params, ); ticket.value.sale = data; @@ -71,7 +71,7 @@ const submit = async () => { }; const { data } = await axios.post( - `tickets/${formData.value.id}/componentUpdate`, + `tickets/${ticket.value.id}/componentUpdate`, params, ); From 9446202dee42c3a48e2aacb17c5a04d626f1457d Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 25 Mar 2025 11:30:09 +0100 Subject: [PATCH 07/10] fix: update file path in useDescriptorStore to remove leading slash --- src/stores/useDescriptorStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/useDescriptorStore.js b/src/stores/useDescriptorStore.js index 89189f32e..c6a95fa85 100644 --- a/src/stores/useDescriptorStore.js +++ b/src/stores/useDescriptorStore.js @@ -8,7 +8,7 @@ export const useDescriptorStore = defineStore('descriptorStore', () => { if (Object.keys(descriptors).length) return descriptors; const currentDescriptors = {}; - const files = import.meta.glob(`/src/**/*DescriptorProxy.vue`); + const files = import.meta.glob(`src/**/*DescriptorProxy.vue`); const moduleParser = { account: 'user', client: 'customer', From af5a850311debf2d612e4dd1d824a9d5a4d37ee2 Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Tue, 25 Mar 2025 11:41:04 +0100 Subject: [PATCH 08/10] fix: remove create prop departmentFk --- src/pages/Customer/Card/CustomerDescriptor.vue | 9 --------- .../Customer/Card/CustomerDescriptorMenu.vue | 17 ----------------- src/pages/Order/OrderList.vue | 1 - 3 files changed, 27 deletions(-) diff --git a/src/pages/Customer/Card/CustomerDescriptor.vue b/src/pages/Customer/Card/CustomerDescriptor.vue index 8978c00f1..bd127c9ed 100644 --- a/src/pages/Customer/Card/CustomerDescriptor.vue +++ b/src/pages/Customer/Card/CustomerDescriptor.vue @@ -105,15 +105,6 @@ const debtWarning = computed(() => { > <QTooltip>{{ t('customer.card.isDisabled') }}</QTooltip> </QIcon> - - <QIcon - v-if="entity?.substitutionAllowed" - name="help" - size="xs" - color="primary" - > - <QTooltip>{{ t('Allowed substitution') }}</QTooltip> - </QIcon> <QIcon v-if="!entity.account?.active" color="primary" diff --git a/src/pages/Customer/Card/CustomerDescriptorMenu.vue b/src/pages/Customer/Card/CustomerDescriptorMenu.vue index aea45721c..fb78eab69 100644 --- a/src/pages/Customer/Card/CustomerDescriptorMenu.vue +++ b/src/pages/Customer/Card/CustomerDescriptorMenu.vue @@ -61,16 +61,6 @@ const openCreateForm = (type) => { .join('&'); useOpenURL(`/#/${type}/list?${params}`); }; -const updateSubstitutionAllowed = async () => { - try { - await axios.patch(`Clients/${route.params.id}`, { - substitutionAllowed: !$props.customer.substitutionAllowed, - }); - notify('globals.notificationSent', 'positive'); - } catch (error) { - notify(error.message, 'positive'); - } -}; </script> <template> @@ -79,13 +69,6 @@ const updateSubstitutionAllowed = async () => { {{ t('globals.pageTitles.createTicket') }} </QItemSection> </QItem> - <QItem v-ripple clickable> - <QItemSection @click="updateSubstitutionAllowed()">{{ - $props.customer.substitutionAllowed - ? t('Disable substitution') - : t('Allow substitution') - }}</QItemSection> - </QItem> <QItem v-ripple clickable> <QItemSection @click="showSmsDialog()">{{ t('Send SMS') }}</QItemSection> </QItem> diff --git a/src/pages/Order/OrderList.vue b/src/pages/Order/OrderList.vue index d75390d96..1241c4ee2 100644 --- a/src/pages/Order/OrderList.vue +++ b/src/pages/Order/OrderList.vue @@ -65,7 +65,6 @@ const columns = computed(() => [ attrs: { url: 'Departments', }, - create: true, columnField: { component: null, }, From c0e9efc5d8b36fafd33de1547c5b7cdab02eab13 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 25 Mar 2025 11:54:14 +0100 Subject: [PATCH 09/10] fix(useDescriptorStore): simplify async component import logic --- src/stores/useDescriptorStore.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/stores/useDescriptorStore.js b/src/stores/useDescriptorStore.js index c6a95fa85..425411709 100644 --- a/src/stores/useDescriptorStore.js +++ b/src/stores/useDescriptorStore.js @@ -16,9 +16,7 @@ export const useDescriptorStore = defineStore('descriptorStore', () => { for (const file in files) { const name = file.split('/').at(-1).slice(0, -19).toLowerCase(); const descriptor = moduleParser[name] ?? name; - currentDescriptors[descriptor + 'Fk'] = defineAsyncComponent( - () => import(/* @vite-ignore */ file), - ); + currentDescriptors[descriptor + 'Fk'] = defineAsyncComponent(files[file]); } setDescriptors(currentDescriptors); return currentDescriptors; From 6dffa7823545a8b6995775343f31b0a008bce1ba Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 25 Mar 2025 12:47:43 +0100 Subject: [PATCH 10/10] fix(useDescriptorStore): correct file path for descriptor proxy imports --- src/stores/useDescriptorStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/useDescriptorStore.js b/src/stores/useDescriptorStore.js index 425411709..a5b83a42e 100644 --- a/src/stores/useDescriptorStore.js +++ b/src/stores/useDescriptorStore.js @@ -8,7 +8,7 @@ export const useDescriptorStore = defineStore('descriptorStore', () => { if (Object.keys(descriptors).length) return descriptors; const currentDescriptors = {}; - const files = import.meta.glob(`src/**/*DescriptorProxy.vue`); + const files = import.meta.glob(`/src/**/*DescriptorProxy.vue`); const moduleParser = { account: 'user', client: 'customer',