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',