From e2fa5a87eb213e75945be8c276d22d0f8ae9995a Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Fri, 7 Mar 2025 13:19:58 +0100
Subject: [PATCH 01/11] fix: refs #8731 customerBalance and test

---
 .../components/CustomerNewPayment.vue         | 66 +++++++++----------
 .../integration/client/clientBalance.spec.js  |  6 ++
 2 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/src/pages/Customer/components/CustomerNewPayment.vue b/src/pages/Customer/components/CustomerNewPayment.vue
index 6ecccc544..2295b922b 100644
--- a/src/pages/Customer/components/CustomerNewPayment.vue
+++ b/src/pages/Customer/components/CustomerNewPayment.vue
@@ -74,26 +74,27 @@ onBeforeMount(() => {
     urlCreate.value = `Clients/${route.params.id}/createReceipt`;
 });
 
-function setPaymentType(accounting) {
+function setPaymentType(data, accounting) {
+    data.bankFk = accounting.id;
+    console.log('accounting: ', accounting);
     if (!accounting) return;
     accountingType.value = accounting.accountingType;
-    initialData.description = [];
-    initialData.payed = Date.vnNew();
+    console.log('accountingType.value: ', accountingType.value);
+    data.description = [];
+    data.payed = Date.vnNew();
     isCash.value = accountingType.value.code == 'cash';
     viewReceipt.value = isCash.value;
     if (accountingType.value.daysInFuture)
-        initialData.payed.setDate(
-            initialData.payed.getDate() + accountingType.value.daysInFuture,
-        );
+        data.payed.setDate(data.payed.getDate() + accountingType.value.daysInFuture);
+    console.log('data.payed', data.payed);
     maxAmount.value = accountingType.value && accountingType.value.maxAmount;
-    if (accountingType.value.code == 'compensation')
-        return (initialData.description = '');
+    if (accountingType.value.code == 'compensation') return (data.description = '');
 
     let descriptions = [];
     if (accountingType.value.receiptDescription)
         descriptions.push(accountingType.value.receiptDescription);
-    if (initialData.description) descriptions.push(initialData.description);
-    initialData.description = descriptions.join(', ');
+    if (data.description) descriptions.push(data.description);
+    data.description = descriptions.join(', ');
 }
 
 const calculateFromAmount = (event) => {
@@ -113,7 +114,8 @@ function onBeforeSave(data) {
     if (isCash.value && shouldSendEmail.value && !data.email)
         return notify(t('There is no assigned email for this client'), 'negative');
 
-    data.bankFk = data.bankFk?.id;
+    // data.bankFk = data.bankFk?.id;
+
     return data;
 }
 
@@ -184,11 +186,10 @@ async function getAmountPaid() {
         <FormModel
             ref="formModelRef"
             :form-initial-data="initialData"
-            :observe-form-changes="false"
             :url-create="urlCreate"
             :mapper="onBeforeSave"
             @on-data-saved="onDataSaved"
-            prevent-submit
+            :prevent-submit="true"
         >
             <template #form="{ data, validate }">
                 <span ref="closeButton" class="row justify-end close-icon" v-close-popup>
@@ -196,27 +197,9 @@ async function getAmountPaid() {
                 </span>
 
                 <h5 class="q-mt-none">{{ t('New payment') }}</h5>
-
-                <VnRow>
-                    <VnInputDate
-                        :label="t('Date')"
-                        :required="true"
-                        v-model="data.payed"
-                    />
-                    <VnSelect
-                        :label="t('Company')"
-                        :options="companyOptions"
-                        :required="true"
-                        :rules="validate('entry.companyFk')"
-                        hide-selected
-                        option-label="code"
-                        option-value="id"
-                        v-model="data.companyFk"
-                        @update:model-value="getAmountPaid()"
-                    />
-                </VnRow>
                 <VnRow>
                     <VnSelect
+                        autofocus
                         :label="t('Bank')"
                         v-model="data.bankFk"
                         url="Accountings"
@@ -225,9 +208,10 @@ async function getAmountPaid() {
                         sort-by="id"
                         :limit="0"
                         @update:model-value="
-                            (value, options) => setPaymentType(value, options)
+                            (value, options) => setPaymentType(data, value, options)
                         "
                         :emit-value="false"
+                        data-cy="paymentBank"
                     >
                         <template #option="scope">
                             <QItem v-bind="scope.itemProps">
@@ -245,8 +229,24 @@ async function getAmountPaid() {
                         @update:model-value="calculateFromAmount($event)"
                         clearable
                         v-model.number="data.amountPaid"
+                        data-cy="paymentAmount"
                     />
                 </VnRow>
+                <VnRow>
+                    <VnInputDate :label="t('Date')" v-model="data.payed" />
+                    <VnSelect
+                        :label="t('Company')"
+                        :options="companyOptions"
+                        :required="true"
+                        :rules="validate('entry.companyFk')"
+                        hide-selected
+                        option-label="code"
+                        option-value="id"
+                        v-model="data.companyFk"
+                        @update:model-value="getAmountPaid()"
+                    />
+                </VnRow>
+
                 <div v-if="data.bankFk?.accountingType?.code == 'compensation'">
                     <div class="text-h6">
                         {{ t('Compensation') }}
diff --git a/test/cypress/integration/client/clientBalance.spec.js b/test/cypress/integration/client/clientBalance.spec.js
index abfa74cec..8f8296264 100644
--- a/test/cypress/integration/client/clientBalance.spec.js
+++ b/test/cypress/integration/client/clientBalance.spec.js
@@ -8,4 +8,10 @@ describe('Client balance', () => {
     it('Should load layout', () => {
         cy.get('.q-page').should('be.visible');
     });
+    it('Should create a mandate', () => {
+        cy.get('.q-page-sticky > div > .q-btn').click();
+        cy.dataCy('paymentBank').type({ arroyDown });
+        cy.dataCy('paymentAmount').type('100');
+        cy.saveCard();
+    });
 });

From 1c48a6d504919c0c32bb229d91de89989c0141a9 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 10 Mar 2025 08:14:35 +0100
Subject: [PATCH 02/11] fix: refs #8731 customerBalance

---
 .../components/CustomerNewPayment.vue         | 31 +++----------------
 1 file changed, 4 insertions(+), 27 deletions(-)

diff --git a/src/pages/Customer/components/CustomerNewPayment.vue b/src/pages/Customer/components/CustomerNewPayment.vue
index 2295b922b..5c1e4044b 100644
--- a/src/pages/Customer/components/CustomerNewPayment.vue
+++ b/src/pages/Customer/components/CustomerNewPayment.vue
@@ -5,7 +5,7 @@ import { useRoute } from 'vue-router';
 import axios from 'axios';
 import { getClientRisk } from '../composables/getClientRisk';
 import { useDialogPluginComponent } from 'quasar';
-
+import FormModelPopup from 'components/FormModelPopup.vue';
 import { usePrintService } from 'composables/usePrintService';
 import useNotify from 'src/composables/useNotify.js';
 import FetchData from 'components/FetchData.vue';
@@ -183,7 +183,7 @@ async function getAmountPaid() {
             auto-load
             url="Clients/findOne"
         />
-        <FormModel
+        <FormModelPopup
             ref="formModelRef"
             :form-initial-data="initialData"
             :url-create="urlCreate"
@@ -191,11 +191,7 @@ async function getAmountPaid() {
             @on-data-saved="onDataSaved"
             :prevent-submit="true"
         >
-            <template #form="{ data, validate }">
-                <span ref="closeButton" class="row justify-end close-icon" v-close-popup>
-                    <QIcon name="close" size="sm" />
-                </span>
-
+            <template #form-inputs="{ data, validate }">
                 <h5 class="q-mt-none">{{ t('New payment') }}</h5>
                 <VnRow>
                     <VnSelect
@@ -287,27 +283,8 @@ async function getAmountPaid() {
                         <QCheckbox v-model="shouldSendEmail" :label="t('Send email')" />
                     </VnRow>
                 </div>
-                <div class="q-mt-lg row justify-end">
-                    <QBtn
-                        :disabled="formModelRef.isLoading"
-                        :label="t('globals.cancel')"
-                        :loading="formModelRef.isLoading"
-                        class="q-ml-sm"
-                        color="primary"
-                        flat
-                        type="reset"
-                        v-close-popup
-                    />
-                    <QBtn
-                        :disabled="formModelRef.isLoading"
-                        :label="t('globals.save')"
-                        :loading="formModelRef.isLoading"
-                        color="primary"
-                        @click="formModelRef.save()"
-                    />
-                </div>
             </template>
-        </FormModel>
+        </FormModelPopup>
     </QDialog>
 </template>
 

From dc600a568b9191b4338c2a937948a58fbd01ca11 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 10 Mar 2025 08:42:14 +0100
Subject: [PATCH 03/11] fix: refs #8731 remove logs

---
 src/pages/Customer/components/CustomerNewPayment.vue | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/pages/Customer/components/CustomerNewPayment.vue b/src/pages/Customer/components/CustomerNewPayment.vue
index 5c1e4044b..49ed99d3c 100644
--- a/src/pages/Customer/components/CustomerNewPayment.vue
+++ b/src/pages/Customer/components/CustomerNewPayment.vue
@@ -76,17 +76,14 @@ onBeforeMount(() => {
 
 function setPaymentType(data, accounting) {
     data.bankFk = accounting.id;
-    console.log('accounting: ', accounting);
     if (!accounting) return;
     accountingType.value = accounting.accountingType;
-    console.log('accountingType.value: ', accountingType.value);
     data.description = [];
     data.payed = Date.vnNew();
     isCash.value = accountingType.value.code == 'cash';
     viewReceipt.value = isCash.value;
     if (accountingType.value.daysInFuture)
         data.payed.setDate(data.payed.getDate() + accountingType.value.daysInFuture);
-    console.log('data.payed', data.payed);
     maxAmount.value = accountingType.value && accountingType.value.maxAmount;
     if (accountingType.value.code == 'compensation') return (data.description = '');
 

From 677477df8d6f3fae95a822eed2a82a4c5fd7d91c Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 10 Mar 2025 08:43:03 +0100
Subject: [PATCH 04/11] fix: refs #8731 clean code

---
 src/pages/Customer/components/CustomerNewPayment.vue | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/pages/Customer/components/CustomerNewPayment.vue b/src/pages/Customer/components/CustomerNewPayment.vue
index 49ed99d3c..ad120d7ef 100644
--- a/src/pages/Customer/components/CustomerNewPayment.vue
+++ b/src/pages/Customer/components/CustomerNewPayment.vue
@@ -111,8 +111,6 @@ function onBeforeSave(data) {
     if (isCash.value && shouldSendEmail.value && !data.email)
         return notify(t('There is no assigned email for this client'), 'negative');
 
-    // data.bankFk = data.bankFk?.id;
-
     return data;
 }
 

From 18c927adb23f4c829cc0195c4cbf58f8250897d0 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 10 Mar 2025 09:08:36 +0100
Subject: [PATCH 05/11] fix: refs #8731 required Date

---
 src/pages/Customer/components/CustomerNewPayment.vue | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/pages/Customer/components/CustomerNewPayment.vue b/src/pages/Customer/components/CustomerNewPayment.vue
index ad120d7ef..ac80fdaa4 100644
--- a/src/pages/Customer/components/CustomerNewPayment.vue
+++ b/src/pages/Customer/components/CustomerNewPayment.vue
@@ -224,7 +224,11 @@ async function getAmountPaid() {
                     />
                 </VnRow>
                 <VnRow>
-                    <VnInputDate :label="t('Date')" v-model="data.payed" />
+                    <VnInputDate
+                        :label="t('Date')"
+                        v-model="data.payed"
+                        :required="true"
+                    />
                     <VnSelect
                         :label="t('Company')"
                         :options="companyOptions"

From 434696581b65e7be859d1e51a71eada531887441 Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Mon, 10 Mar 2025 09:10:56 +0100
Subject: [PATCH 06/11] refactor: refs #8197 rename VnCardBeta to VnCard

---
 src/components/common/VnCard.vue              | 67 +++++++----------
 src/components/common/VnCardBeta.vue          | 74 -------------------
 src/pages/Account/Alias/Card/AliasCard.vue    |  4 +-
 src/pages/Account/Card/AccountCard.vue        |  4 +-
 src/pages/Account/Role/Card/RoleCard.vue      |  4 +-
 src/pages/Claim/Card/ClaimCard.vue            |  4 +-
 src/pages/Customer/Card/CustomerCard.vue      |  4 +-
 src/pages/Entry/Card/EntryCard.vue            |  4 +-
 src/pages/InvoiceIn/Card/InvoiceInCard.vue    |  4 +-
 src/pages/InvoiceOut/Card/InvoiceOutCard.vue  |  4 +-
 src/pages/Item/Card/ItemCard.vue              |  4 +-
 src/pages/Item/ItemType/Card/ItemTypeCard.vue |  4 +-
 src/pages/Order/Card/OrderCard.vue            |  4 +-
 src/pages/Route/Agency/Card/AgencyCard.vue    |  4 +-
 src/pages/Route/Card/RouteCard.vue            |  4 +-
 src/pages/Route/Roadmap/RoadmapCard.vue       |  4 +-
 src/pages/Route/Vehicle/Card/VehicleCard.vue  |  4 +-
 src/pages/Shelving/Card/ShelvingCard.vue      |  4 +-
 .../Shelving/Parking/Card/ParkingCard.vue     |  4 +-
 src/pages/Supplier/Card/SupplierCard.vue      |  4 +-
 src/pages/Ticket/Card/TicketCard.vue          |  4 +-
 src/pages/Travel/Card/TravelCard.vue          |  4 +-
 src/pages/Wagon/Card/WagonCard.vue            |  4 +-
 src/pages/Worker/Card/WorkerCard.vue          |  4 +-
 .../Worker/Department/Card/DepartmentCard.vue |  4 +-
 src/pages/Zone/Card/ZoneCard.vue              |  4 +-
 26 files changed, 74 insertions(+), 163 deletions(-)
 delete mode 100644 src/components/common/VnCardBeta.vue

diff --git a/src/components/common/VnCard.vue b/src/components/common/VnCard.vue
index 44002c22a..620dc2ad2 100644
--- a/src/components/common/VnCard.vue
+++ b/src/components/common/VnCard.vue
@@ -1,50 +1,56 @@
 <script setup>
-import { onBeforeMount, computed } from 'vue';
-import { useRoute, useRouter, onBeforeRouteUpdate } from 'vue-router';
+import { onBeforeMount } from 'vue';
+import { useRouter, onBeforeRouteUpdate, onBeforeRouteLeave } from 'vue-router';
 import { useArrayData } from 'src/composables/useArrayData';
 import { useStateStore } from 'stores/useStateStore';
 import useCardSize from 'src/composables/useCardSize';
 import VnSubToolbar from '../ui/VnSubToolbar.vue';
-import VnSearchbar from 'components/ui/VnSearchbar.vue';
-import LeftMenu from 'components/LeftMenu.vue';
-import RightMenu from 'components/common/RightMenu.vue';
+
 const props = defineProps({
     dataKey: { type: String, required: true },
     url: { type: String, default: undefined },
+    idInWhere: { type: Boolean, default: false },
     filter: { type: Object, default: () => {} },
     descriptor: { type: Object, required: true },
     filterPanel: { type: Object, default: undefined },
-    idInWhere: { type: Boolean, default: false },
     searchDataKey: { type: String, default: undefined },
     searchbarProps: { type: Object, default: undefined },
     redirectOnError: { type: Boolean, default: false },
 });
 
 const stateStore = useStateStore();
-const route = useRoute();
 const router = useRouter();
-const searchRightDataKey = computed(() => {
-    if (!props.searchDataKey) return route.name;
-    return props.searchDataKey;
-});
-
 const arrayData = useArrayData(props.dataKey, {
     url: props.url,
     userFilter: props.filter,
     oneRecord: true,
 });
 
+onBeforeRouteLeave(() => {
+    stateStore.cardDescriptorChangeValue(null);
+});
+
 onBeforeMount(async () => {
+    stateStore.cardDescriptorChangeValue(props.descriptor);
+
+    const route = router.currentRoute.value;
     try {
         await fetch(route.params.id);
     } catch {
-        const { matched: matches } = router.currentRoute.value;
+        const { matched: matches } = route;
         const { path } = matches.at(-1);
         router.push({ path: path.replace(/:id.*/, '') });
     }
 });
 
 onBeforeRouteUpdate(async (to, from) => {
+    if (hasRouteParam(to.params)) {
+        const { matched } = router.currentRoute.value;
+        const { name } = matched.at(-3);
+        if (name) {
+            router.push({ name, params: to.params });
+        }
+    }
     const id = to.params.id;
     if (id !== from.params.id) await fetch(id, true);
 });
@@ -56,34 +62,13 @@ async function fetch(id, append = false) {
     else arrayData.store.url = props.url.replace(regex, `/${id}`);
     await arrayData.fetch({ append, updateRouter: false });
 }
+function hasRouteParam(params, valueToCheck = ':addressId') {
+    return Object.values(params).includes(valueToCheck);
+}
 </script>
 <template>
-    <QDrawer
-        v-model="stateStore.leftDrawer"
-        show-if-above
-        :width="256"
-        v-if="stateStore.isHeaderMounted()"
-    >
-        <QScrollArea class="fit">
-            <component :is="descriptor" />
-            <QSeparator />
-            <LeftMenu source="card" />
-        </QScrollArea>
-    </QDrawer>
-    <slot name="searchbar" v-if="props.searchDataKey">
-        <VnSearchbar :data-key="props.searchDataKey" v-bind="props.searchbarProps" />
-    </slot>
-    <RightMenu>
-        <template #right-panel v-if="props.filterPanel">
-            <component :is="props.filterPanel" :data-key="searchRightDataKey" />
-        </template>
-    </RightMenu>
-    <QPageContainer>
-        <QPage>
-            <VnSubToolbar />
-            <div :class="[useCardSize(), $attrs.class]">
-                <RouterView :key="$route.path" />
-            </div>
-        </QPage>
-    </QPageContainer>
+    <VnSubToolbar />
+    <div :class="[useCardSize(), $attrs.class]">
+        <RouterView :key="$route.path" />
+    </div>
 </template>
diff --git a/src/components/common/VnCardBeta.vue b/src/components/common/VnCardBeta.vue
deleted file mode 100644
index 620dc2ad2..000000000
--- a/src/components/common/VnCardBeta.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<script setup>
-import { onBeforeMount } from 'vue';
-import { useRouter, onBeforeRouteUpdate, onBeforeRouteLeave } from 'vue-router';
-import { useArrayData } from 'src/composables/useArrayData';
-import { useStateStore } from 'stores/useStateStore';
-import useCardSize from 'src/composables/useCardSize';
-import VnSubToolbar from '../ui/VnSubToolbar.vue';
-
-const props = defineProps({
-    dataKey: { type: String, required: true },
-    url: { type: String, default: undefined },
-    idInWhere: { type: Boolean, default: false },
-    filter: { type: Object, default: () => {} },
-    descriptor: { type: Object, required: true },
-    filterPanel: { type: Object, default: undefined },
-    searchDataKey: { type: String, default: undefined },
-    searchbarProps: { type: Object, default: undefined },
-    redirectOnError: { type: Boolean, default: false },
-});
-
-const stateStore = useStateStore();
-const router = useRouter();
-const arrayData = useArrayData(props.dataKey, {
-    url: props.url,
-    userFilter: props.filter,
-    oneRecord: true,
-});
-
-onBeforeRouteLeave(() => {
-    stateStore.cardDescriptorChangeValue(null);
-});
-
-onBeforeMount(async () => {
-    stateStore.cardDescriptorChangeValue(props.descriptor);
-
-    const route = router.currentRoute.value;
-    try {
-        await fetch(route.params.id);
-    } catch {
-        const { matched: matches } = route;
-        const { path } = matches.at(-1);
-        router.push({ path: path.replace(/:id.*/, '') });
-    }
-});
-
-onBeforeRouteUpdate(async (to, from) => {
-    if (hasRouteParam(to.params)) {
-        const { matched } = router.currentRoute.value;
-        const { name } = matched.at(-3);
-        if (name) {
-            router.push({ name, params: to.params });
-        }
-    }
-    const id = to.params.id;
-    if (id !== from.params.id) await fetch(id, true);
-});
-
-async function fetch(id, append = false) {
-    const regex = /\/(\d+)/;
-    if (props.idInWhere) arrayData.store.filter.where = { id };
-    else if (!regex.test(props.url)) arrayData.store.url = `${props.url}/${id}`;
-    else arrayData.store.url = props.url.replace(regex, `/${id}`);
-    await arrayData.fetch({ append, updateRouter: false });
-}
-function hasRouteParam(params, valueToCheck = ':addressId') {
-    return Object.values(params).includes(valueToCheck);
-}
-</script>
-<template>
-    <VnSubToolbar />
-    <div :class="[useCardSize(), $attrs.class]">
-        <RouterView :key="$route.path" />
-    </div>
-</template>
diff --git a/src/pages/Account/Alias/Card/AliasCard.vue b/src/pages/Account/Alias/Card/AliasCard.vue
index f37bd7d0f..f3faa5bee 100644
--- a/src/pages/Account/Alias/Card/AliasCard.vue
+++ b/src/pages/Account/Alias/Card/AliasCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import AliasDescriptor from './AliasDescriptor.vue';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Alias"
         url="MailAliases"
         :descriptor="AliasDescriptor"
diff --git a/src/pages/Account/Card/AccountCard.vue b/src/pages/Account/Card/AccountCard.vue
index a5037e301..e102415c7 100644
--- a/src/pages/Account/Card/AccountCard.vue
+++ b/src/pages/Account/Card/AccountCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import AccountDescriptor from './AccountDescriptor.vue';
 import filter from './AccountFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         url="VnUsers/preview"
         :id-in-where="true"
         data-key="Account"
diff --git a/src/pages/Account/Role/Card/RoleCard.vue b/src/pages/Account/Role/Card/RoleCard.vue
index ef5b9db04..43ad22b90 100644
--- a/src/pages/Account/Role/Card/RoleCard.vue
+++ b/src/pages/Account/Role/Card/RoleCard.vue
@@ -1,9 +1,9 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import RoleDescriptor from './RoleDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         url="VnRoles"
         data-key="Role"
         :id-in-where="true"
diff --git a/src/pages/Claim/Card/ClaimCard.vue b/src/pages/Claim/Card/ClaimCard.vue
index 05f3b53a8..307a6df40 100644
--- a/src/pages/Claim/Card/ClaimCard.vue
+++ b/src/pages/Claim/Card/ClaimCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ClaimDescriptor from './ClaimDescriptor.vue';
 import filter from './ClaimFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Claim"
         url="Claims"
         :descriptor="ClaimDescriptor"
diff --git a/src/pages/Customer/Card/CustomerCard.vue b/src/pages/Customer/Card/CustomerCard.vue
index 75fcb98fa..8c70646c1 100644
--- a/src/pages/Customer/Card/CustomerCard.vue
+++ b/src/pages/Customer/Card/CustomerCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import CustomerDescriptor from './CustomerDescriptor.vue';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Customer"
         :url="`Clients/${$route.params.id}/getCard`"
         :descriptor="CustomerDescriptor"
diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index be82289f4..50f8b8e55 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import EntryDescriptor from './EntryDescriptor.vue';
 import filter from './EntryFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Entry"
         url="Entries"
         :descriptor="EntryDescriptor"
diff --git a/src/pages/InvoiceIn/Card/InvoiceInCard.vue b/src/pages/InvoiceIn/Card/InvoiceInCard.vue
index 34cc26437..a1bae87a6 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInCard.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInCard.vue
@@ -1,5 +1,5 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import InvoiceInDescriptor from './InvoiceInDescriptor.vue';
 import { onBeforeRouteUpdate } from 'vue-router';
 import { setRectificative } from '../composables/setRectificative';
@@ -9,7 +9,7 @@ onBeforeRouteUpdate(async (to) => await setRectificative(to));
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="InvoiceIn"
         url="InvoiceIns"
         :descriptor="InvoiceInDescriptor"
diff --git a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
index a50c9d247..cdb736555 100644
--- a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
+++ b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import InvoiceOutDescriptor from './InvoiceOutDescriptor.vue';
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import filter from './InvoiceOutFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="InvoiceOut"
         url="InvoiceOuts"
         :filter="filter"
diff --git a/src/pages/Item/Card/ItemCard.vue b/src/pages/Item/Card/ItemCard.vue
index 610b77a02..ddd21fe36 100644
--- a/src/pages/Item/Card/ItemCard.vue
+++ b/src/pages/Item/Card/ItemCard.vue
@@ -1,9 +1,9 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ItemDescriptor from './ItemDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Item"
         :url="`Items/${$route.params.id}/getCard`"
         :descriptor="ItemDescriptor"
diff --git a/src/pages/Item/ItemType/Card/ItemTypeCard.vue b/src/pages/Item/ItemType/Card/ItemTypeCard.vue
index 84e810de5..bd41b1be2 100644
--- a/src/pages/Item/ItemType/Card/ItemTypeCard.vue
+++ b/src/pages/Item/ItemType/Card/ItemTypeCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ItemTypeDescriptor from 'src/pages/Item/ItemType/Card/ItemTypeDescriptor.vue';
 import filter from './ItemTypeFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="ItemType"
         url="ItemTypes"
         :filter="filter"
diff --git a/src/pages/Order/Card/OrderCard.vue b/src/pages/Order/Card/OrderCard.vue
index ad5c73a87..7dab307a0 100644
--- a/src/pages/Order/Card/OrderCard.vue
+++ b/src/pages/Order/Card/OrderCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import OrderDescriptor from 'pages/Order/Card/OrderDescriptor.vue';
 import filter from './OrderFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Order"
         url="Orders"
         :filter="filter"
diff --git a/src/pages/Route/Agency/Card/AgencyCard.vue b/src/pages/Route/Agency/Card/AgencyCard.vue
index 7dc31f8ba..c21298470 100644
--- a/src/pages/Route/Agency/Card/AgencyCard.vue
+++ b/src/pages/Route/Agency/Card/AgencyCard.vue
@@ -1,7 +1,7 @@
 <script setup>
 import AgencyDescriptor from 'pages/Route/Agency/Card/AgencyDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Agency" url="Agencies" :descriptor="AgencyDescriptor" />
+    <VnCard data-key="Agency" url="Agencies" :descriptor="AgencyDescriptor" />
 </template>
diff --git a/src/pages/Route/Card/RouteCard.vue b/src/pages/Route/Card/RouteCard.vue
index c178dc6bf..b71f7d088 100644
--- a/src/pages/Route/Card/RouteCard.vue
+++ b/src/pages/Route/Card/RouteCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import RouteDescriptor from 'pages/Route/Card/RouteDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import filter from './RouteFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Route"
         url="Routes"
         :filter="filter"
diff --git a/src/pages/Route/Roadmap/RoadmapCard.vue b/src/pages/Route/Roadmap/RoadmapCard.vue
index 48ba516a1..af08bc9d4 100644
--- a/src/pages/Route/Roadmap/RoadmapCard.vue
+++ b/src/pages/Route/Roadmap/RoadmapCard.vue
@@ -1,7 +1,7 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import RoadmapDescriptor from 'pages/Route/Roadmap/RoadmapDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Roadmap" url="Roadmaps" :descriptor="RoadmapDescriptor" />
+    <VnCard data-key="Roadmap" url="Roadmaps" :descriptor="RoadmapDescriptor" />
 </template>
diff --git a/src/pages/Route/Vehicle/Card/VehicleCard.vue b/src/pages/Route/Vehicle/Card/VehicleCard.vue
index f59420aa2..b6038c24c 100644
--- a/src/pages/Route/Vehicle/Card/VehicleCard.vue
+++ b/src/pages/Route/Vehicle/Card/VehicleCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import VehicleDescriptor from './VehicleDescriptor.vue';
 import VehicleFilter from '../VehicleFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Vehicle"
         url="Vehicles"
         :filter="VehicleFilter"
diff --git a/src/pages/Shelving/Card/ShelvingCard.vue b/src/pages/Shelving/Card/ShelvingCard.vue
index 9e0ac8ad2..e2fb79fb0 100644
--- a/src/pages/Shelving/Card/ShelvingCard.vue
+++ b/src/pages/Shelving/Card/ShelvingCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ShelvingDescriptor from 'pages/Shelving/Card/ShelvingDescriptor.vue';
 import filter from './ShelvingFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Shelving"
         url="Shelvings"
         :filter="filter"
diff --git a/src/pages/Shelving/Parking/Card/ParkingCard.vue b/src/pages/Shelving/Parking/Card/ParkingCard.vue
index b32c1b7d3..c8b3c60d7 100644
--- a/src/pages/Shelving/Parking/Card/ParkingCard.vue
+++ b/src/pages/Shelving/Parking/Card/ParkingCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ParkingDescriptor from 'pages/Shelving/Parking/Card/ParkingDescriptor.vue';
 import filter from './ParkingFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Parking"
         url="Parkings"
         :filter="filter"
diff --git a/src/pages/Supplier/Card/SupplierCard.vue b/src/pages/Supplier/Card/SupplierCard.vue
index e30f79f96..74b3520bf 100644
--- a/src/pages/Supplier/Card/SupplierCard.vue
+++ b/src/pages/Supplier/Card/SupplierCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import SupplierDescriptor from './SupplierDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import filter from './SupplierFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Supplier"
         url="Suppliers"
         :descriptor="SupplierDescriptor"
diff --git a/src/pages/Ticket/Card/TicketCard.vue b/src/pages/Ticket/Card/TicketCard.vue
index e22d5799a..19dbd608c 100644
--- a/src/pages/Ticket/Card/TicketCard.vue
+++ b/src/pages/Ticket/Card/TicketCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import TicketDescriptor from './TicketDescriptor.vue';
 import filter from './TicketFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Ticket"
         url="Tickets"
         :descriptor="TicketDescriptor"
diff --git a/src/pages/Travel/Card/TravelCard.vue b/src/pages/Travel/Card/TravelCard.vue
index cb09eafd6..479b47fb9 100644
--- a/src/pages/Travel/Card/TravelCard.vue
+++ b/src/pages/Travel/Card/TravelCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import TravelDescriptor from './TravelDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import filter from './TravelFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Travel"
         url="Travels"
         :descriptor="TravelDescriptor"
diff --git a/src/pages/Wagon/Card/WagonCard.vue b/src/pages/Wagon/Card/WagonCard.vue
index 1694dad7b..19f0a682a 100644
--- a/src/pages/Wagon/Card/WagonCard.vue
+++ b/src/pages/Wagon/Card/WagonCard.vue
@@ -1,6 +1,6 @@
 <script setup>
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Wagon" url="Wagons" :descriptor="{}" />
+    <VnCard data-key="Wagon" url="Wagons" :descriptor="{}" />
 </template>
diff --git a/src/pages/Worker/Card/WorkerCard.vue b/src/pages/Worker/Card/WorkerCard.vue
index 3b7a62025..591dadcd2 100644
--- a/src/pages/Worker/Card/WorkerCard.vue
+++ b/src/pages/Worker/Card/WorkerCard.vue
@@ -1,9 +1,9 @@
 <script setup>
 import WorkerDescriptor from './WorkerDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Worker"
         url="Workers/summary"
         :id-in-where="true"
diff --git a/src/pages/Worker/Department/Card/DepartmentCard.vue b/src/pages/Worker/Department/Card/DepartmentCard.vue
index 2e3f11521..0fbc90332 100644
--- a/src/pages/Worker/Department/Card/DepartmentCard.vue
+++ b/src/pages/Worker/Department/Card/DepartmentCard.vue
@@ -1,9 +1,9 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import DepartmentDescriptor from 'pages/Worker/Department/Card/DepartmentDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         class="q-pa-md column items-center"
         v-bind="{ ...$attrs }"
         data-key="Department"
diff --git a/src/pages/Zone/Card/ZoneCard.vue b/src/pages/Zone/Card/ZoneCard.vue
index 205ed074b..2ce4193a0 100644
--- a/src/pages/Zone/Card/ZoneCard.vue
+++ b/src/pages/Zone/Card/ZoneCard.vue
@@ -1,7 +1,7 @@
 <script setup>
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import ZoneDescriptor from './ZoneDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Zone" url="Zones" :descriptor="ZoneDescriptor" />
+    <VnCard data-key="Zone" url="Zones" :descriptor="ZoneDescriptor" />
 </template>

From 5653ed6b18922d0f57f804f9dfcc3b0880a88857 Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Mon, 10 Mar 2025 12:23:08 +0100
Subject: [PATCH 07/11] fix: handle optional company code in CustomerMandates
 component

---
 src/pages/Customer/Card/CustomerMandates.vue | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/pages/Customer/Card/CustomerMandates.vue b/src/pages/Customer/Card/CustomerMandates.vue
index 81a643142..2511f5730 100644
--- a/src/pages/Customer/Card/CustomerMandates.vue
+++ b/src/pages/Customer/Card/CustomerMandates.vue
@@ -17,7 +17,6 @@ const filter = {
         { relation: 'company', scope: { fields: ['id', 'code'] } },
     ],
     order: ['created DESC'],
-    limit: 20,
 };
 
 const columns = computed(() => [
@@ -31,7 +30,7 @@ const columns = computed(() => [
     {
         align: 'left',
         cardVisible: true,
-        format: ({ company }) => company.code,
+        format: ({ company }) => company?.code,
         label: t('globals.company'),
         name: 'company',
     },

From d53d1a5ad3e3499c56ed2ed8df5e0a0652587f95 Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Mon, 10 Mar 2025 15:01:23 +0100
Subject: [PATCH 08/11] chore: update CHANGELOG for version 25.10 with new
 features, changes, and fixes

---
 CHANGELOG.md | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 184 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10b7c73f7..dd75a00a4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,187 @@
+# Version 25.10 - 2025-03-11
+
+### Added 🆕
+
+- chore: refs #6695 empty commit by:alexm
+- chore: refs #6695 get docker compose version by:alexm
+- chore: refs #6695 try use docker compose by:alexm
+- feat: add --browser chromium by:Javier Segarra
+- feat: docker pull back image by:alexm
+- feat(jenkinsE2E): refs #6695 new image by:alexm
+- feat(jenkinsE2E): refs #6695 try fix db by:alexm
+- feat(jenkinsE2E): refs #6695 try new sintax by:alexm
+- feat(Jenkinsfile): refs #8714 add CHANGE_TARGET environment variable logging (origin/8714-devToTest, 8714-devToTest) by:alexm
+- feat: refs #6695 add additional test directories for Cypress integration tests in Jenkinsfile by:alexm
+- feat: refs #6695 add cypress-cache volume to docker-compose.e2e.yml by:alexm
+- feat: refs #6695 add Dockerfile for Cypress setup and update Jenkinsfile for installation steps by:alexm
+- feat: refs #6695 add setup and e2e testing by:alexm
+- feat: refs #6695 better stages for e2e by:alexm
+- feat: refs #6695 better stages for e2e rollback by:alexm
+- feat: refs #6695 install Cypress during Jenkins pipeline setup by:alexm
+- feat: refs #6695 jenkins run e2e by:alexm
+- feat: refs #6695 jenkins run e2e front deteach by:alexm
+- feat: refs #6695 jenkins run e2e rebuild by:alexm
+- feat: refs #6695 jenkins run e2e remove ports by:alexm
+- feat: refs #6695 jenkins run e2e try down and rm by:alexm
+- feat: refs #6695 jenkins run e2e try fix db by:alexm
+- feat: refs #6695 jenkins run e2e whitout rebuild by:alexm
+- feat: refs #6695 pull salix-back image and use by:alexm
+- feat: refs #6695 run e2e in docker by:alexm
+- feat: refs #6695 run front by:alexm
+- feat: refs #6695 run front quasar build by:alexm
+- feat: refs #6695 run parallel e2e in local by:alexm
+- feat: refs #6695 update cypress cache path command in Jenkinsfile by:alexm
+- feat: refs #6695 update cypress-cache volume path in docker-compose.e2e.yml by:alexm
+- feat: refs #6695 update cypress command in Jenkinsfile and docker-compose.e2e.yml by:alexm
+- feat: refs #6695 update Docker configurations and Cypress settings for improved local development (origin/6695-docker_push_2, 6695-docker_push_2) by:alexm
+- feat: refs #6695 when failure, clean by:alexm
+- feat: refs #7937 add import claim button to ClaimAction component by:jgallego
+- feat: refs #7937 add shelving selection to claim actions with data fetching by:jgallego
+- feat: refs #8348 Added grouping by:guillermo
+- feat: refs #8402 added lost filters from Salix by:Jon
+- feat: refs #8484 add addressId to createForm in CustomerDescriptor by:jorgep
+- feat: refs #8484 overwrite Cypress visit command to ensure main element exists by:jorgep
+- feat: refs #8555 added new filter field and translations by:Jon
+- feat: refs #8593 added summary button & modified e2e tests by:provira
+- feat: refs #8593 changed parking to VnTable and modified e2e tests by:provira
+- feat: refs #8599 added new test and translations by:Jon
+- feat: refs #8599 modified tests to be more complete and added new ones by:Jon
+- feat: refs #8697 enable data-cy attribute for VnTable, update test cases to remove skips and adjust selectors by:pablone
+- feat: rename test:unit by test:front by:Javier Segarra
+- feat: try run salix back by:alexm
+- fix: style w-80 by:Javier Segarra
+- Merge pull request 'fix: style' (!1425) from warmfix_vntable_card_style into test by:Javier Segarra
+
+### Changed 📦
+
+- ci: refs #6695 Docker & Jenkinsfile fixes/refactor by:Juan Ferrer Toribio
+- ci: refs #6695 refactor Cypress setup in Jenkinsfile and replace local docker-compose with new configuration by:alexm
+- perf: refs #6695 only necessary by:alexm
+- refactor: adjust translation to standardize it by:Jon
+- refactor: refs #6695 comment out vnComponent tests in Jenkinsfile by:alexm
+- refactor: refs #6695 improve group size calculation for parallel test execution in Jenkinsfile by:alexm
+- refactor: refs #6695 improve parallel test execution logic in Jenkinsfile by:alexm
+- refactor: refs #6695 simplify Docker cleanup commands in Jenkinsfile by:alexm
+- refactor: refs #6695 update Docker setup for Cypress and remove obsolete files by:alexm
+- refactor: refs #6695 update E2E test execution to support parallel groups and improve by:alexm
+- refactor: refs #6695 update Jenkinsfile and Dockerfile to use 'developer' by:alexm
+- refactor: refs #6695 update Jenkinsfile to run E2E tests in parallel and simplify docker-compose command by:alexm
+- refactor: refs #6897 clean up Cypress configuration and improve entry list filtering (origin/6897-fixEntryE2e) by:pablone
+- refactor: refs #7414 update VnLog component to change display order value changes on update action by:jtubau
+- refactor: refs #7937 align columns to the right and add shelvingCode to ClaimSummaryAction by:jgallego
+- refactor: refs #8484 add data-cy attribute for claim photo image and update test to use it by:jorgep
+- refactor: refs #8484 clean up test files by removing commented issue references and updating test cases by:jorgep
+- refactor: refs #8484 enhance login command with session management and clean up unused commands by:jtubau
+- refactor: refs #8484 improve search input behavior and enhance visit command with DOM content load by:jtubau
+- refactor: refs #8484 improve selectOption command with retry logic for visibility checks by:jtubau
+- refactor: refs #8484 remove comment in wagonCreate.spec.js by:jtubau
+- refactor: refs #8484 remove redundant visit command overwrite by:jorgep
+- refactor: refs #8484 remove unnecessary domContentLoad calls from client tests by:jorgep
+- refactor: refs #8484 remove unnecessary intercepts and waits in ticket and zone tests by:jorgep
+- refactor: refs #8484 simplify image dialog test by using aliases for elements by:jorgep
+- refactor: refs #8484 streamline assertions in ClaimNotes test by:jorgep
+- refactor: refs #8484 streamline login command and remove commented code by:jorgep
+- refactor: refs #8484 update specPattern to include all spec files and remove data-cy attribute by:jorgep
+- refactor: refs #8594 update vehicle summary tests to use expected variable for consistency by:jtubau
+- refactor: refs #8599 corrected it name by:Jon
+- refactor: refs #8599 invoice out list e2e by:Jon
+- refactor: refs #8599 requested changes by:Jon
+- refactor: refs #8606 modified table height and deleted void file by:Jon
+- refactor: refs #8606 modified table width and order by:Jon
+- refactor: refs #8606 modified upcoming deliveries view by:Jon
+- refactor: refs #8606 translations by:Jon
+- refactor: refs #8618 simplify selectors and improve test readability in routeExtendedList.spec.js by:jtubau
+- refactor: refs #8620 update RouteAutonomous to notify on data save and change invoice reference display by:jtubau
+- refactor: remove default browser setting from Cypress configuration by:alexm
+- refactor: remove unused variables by:alexm
+- refactor: skip claimNotes by:alexm
+- refactor: update labels and conditions in Claim components by:jgallego
+- refactor: use constant for account input selector in VnAccountNumber tests by:alexm
+
+### Fixed 🛠️
+
+- build: refs #6695 cypress-setup fix volume by:alexm
+- build: refs #6695 cypress-setup fix volume (origin/6695-docker_push, 6695-docker_push) by:alexm
+- ci: refs #6695 cypress reporter fix by:Juan Ferrer Toribio
+- ci: refs #6695 Docker & Jenkinsfile fixes/refactor by:Juan Ferrer Toribio
+- ci: refs #6695 JUnit report fixes by:Juan Ferrer Toribio
+- ci: refs #6695 vitest junit file fix by:Juan Ferrer Toribio
+- feat(jenkinsE2E): refs #6695 try fix db by:alexm
+- feat: refs #6695 jenkins run e2e try fix db by:alexm
+- fix: add data-cy attribute to card button for improved testing by:jtubau
+- fix: added lost code by:Jon
+- fix: add --init flag to Cypress Docker container for improved stability by:alexm
+- fix: add mapper before Save by:Javier Segarra
+- fix: cy.domContentLoad(); not exist by:alexm
+- fix: elements position by:Javier Segarra
+- fix: fixed select not filtering when typing by:Jon
+- fix: fixed wagonTypeCreate test (origin/wagonTypeTestFix) by:PAU ROVIRA ROSALENY
+- fix: fix sctions by:carlossa
+- fix(Jenkinsfile): enhance Docker registry credentials handling with dynamic URL (origin/warmFix_use_withDockerRegistry, warmFix_use_withDockerRegistry) by:alexm
+- fix(Jenkinsfile): update Docker registry credentials handling in E2E stage by:alexm
+- fix: junit report by:alexm
+- fix: merge revert by:alexm
+- fix: merge test to dev by:alexm
+- fix: prevent 'cypress run' error to show junit by:alexm
+- fix: refs #6695 add --volumes flag to docker-compose down command by:alexm
+- fix: refs #6695 checkErrors(folderName) by:alexm
+- fix: refs #6695 clientBasicData by:alexm
+- fix: refs #6695 dockerFile by:alexm
+- fix: refs #6695 e2e.sh by:alexm
+- fix: refs #6695 e2e stockBought by:alexm
+- fix: refs #6695 fix e2e's by:alexm
+- fix: refs #6695 storage by:alexm
+- fix: refs #6695 try by:alexm
+- fix: refs #6695 try parallel by:alexm
+- fix: refs #6695 update Cypress cache handling and increase wait timeout for elements by:alexm
+- fix: refs #6695 update Cypress configuration and Docker setup for improved testing by:alexm
+- fix: refs #6695 update E2E stages to run tests in parallel for specific folders by:alexm
+- fix: refs #6695 update remove Cypress installation by:alexm
+- fix: refs #6695 zoneWarehouse est by:alexm
+- fix: refs #6943 e2e clientList, formModel by:carlossa
+- fix: refs #6943 formModel workerDepartment by:carlossa
+- fix: refs #7323 e2e (origin/7323-fixe2e) by:carlossa
+- fix: refs #7323 notification manager by:carlossa
+- fix: refs #7414 updated default value rendering for non-update scenarios by:jtubau
+- fix: refs #7414 update VnLog.vue to correctly display log actions and values by:jtubau
+- fix: refs #7937 update claimId in ClaimAction test to reflect correct value (origin/7937-claimAgile) by:jgallego
+- fix: refs #8484 ensure document is fully loaded before visiting pages in tests by:jorgep
+- fix: refs #8484 fixed some tests to enable previously skipped cases and enhance functionality by:jtubau
+- fix: refs #8484 remove unused addressId from createForm in CustomerDescriptor.vue by:jtubau
+- fix: refs #8484 rollback by:jorgep
+- fix: refs #8484 update Boss field type to 'selectWorker' and add selectWorkerOption command by:jtubau
+- fix: refs #8484 update Boss type from 'selectWorker' to 'select' by:jorgep
+- fix: refs #8484 update parking list URL to correct shelving path in integration test by:jtubau
+- fix: refs #8484 update selector for buyLabel button in myEntry test by:jtubau
+- fix: refs #8484 update selector for removing wagon type in wagonCreate.spec.js by:jtubau
+- fix: refs #8484 update wagon type deletion selector and clean up unused code in commands.js by:jtubau
+- fix: refs #8593 fixed parking e2e tests by:provira
+- fix: refs #8606 fixed list e2e test by:Jon
+- fix: refs #8620 add module name to InvoiceInSummary by:jtubau
+- fix: refs #8623 fixed different errors by:Jon
+- fix: remove info by:carlossa
+- fix: remove old end-to-end test files before building Docker image by:alexm
+- fix: revert cypress.config by:alexm
+- fix: style w-80 by:Javier Segarra
+- fix: unnecessary function by:alexm
+- fix: update docker-compose command to remove volumes on teardown by:alexm
+- fix: update Jenkinsfile to remove specific end-to-end test files by:alexm
+- fix: update Jenkinsfile to use environment variable for Docker registry credentials by:alexm
+- fix: warmFix vnInput dataCy by:alexm
+- Merge pull request 'fix: style' (!1425) from warmfix_vntable_card_style into test by:Javier Segarra
+- revert: browser chromium package.json by:Javier Segarra
+- Revert "revert 1015acefb7e400be2d8b5958dba69b4d98276b34" by:alexm
+- test: refs #6695 e2e fix allowedHosts by:alexm
+- test: refs #6695 e2e fix back image by:alexm
+- test: refs #6695 e2e fix base urls by:alexm
+- test: refs #6695 e2e fix command by:alexm
+- test: refs #6695 e2e fix connection db by:alexm
+- test: refs #6695 e2e fix network by:alexm
+- test: refs #6695 e2e fix sequential by:alexm
+- test: refs #6695 fix e2e by:alexm
+- test: refs #6695 fix e2e command by:alexm
+- test: refs #6695 fix selectOption command by:alexm
+
 # Version 25.08 - 2025-03-04
 
 ### Added 🆕

From 2eeef91a1e2a7ba5507a1afd355ee08e28018677 Mon Sep 17 00:00:00 2001
From: jgallego <jgallego@verdnatura.es>
Date: Mon, 10 Mar 2025 20:33:39 +0100
Subject: [PATCH 09/11] fix(ClaimAction): update shelving options to use URL
 instead of static data

---
 src/pages/Claim/Card/ClaimAction.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/pages/Claim/Card/ClaimAction.vue b/src/pages/Claim/Card/ClaimAction.vue
index baa36710c..a499d8b5d 100644
--- a/src/pages/Claim/Card/ClaimAction.vue
+++ b/src/pages/Claim/Card/ClaimAction.vue
@@ -328,7 +328,7 @@ async function post(query, params) {
                     <QTd>
                         <VnSelect
                             v-model="row.shelvingFk"
-                            :options="shelvings"
+                            url="Shelvings"
                             option-label="code"
                             option-value="id"
                             style="width: 100px"

From 852e72eb9082f8aedde823541df3264851b40301 Mon Sep 17 00:00:00 2001
From: jgallego <jgallego@verdnatura.es>
Date: Tue, 11 Mar 2025 07:41:30 +0100
Subject: [PATCH 10/11] fix: update shelving options to use URL for data
 retrieval in ClaimAction component

---
 src/pages/Claim/Card/ClaimAction.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/pages/Claim/Card/ClaimAction.vue b/src/pages/Claim/Card/ClaimAction.vue
index baa36710c..a499d8b5d 100644
--- a/src/pages/Claim/Card/ClaimAction.vue
+++ b/src/pages/Claim/Card/ClaimAction.vue
@@ -328,7 +328,7 @@ async function post(query, params) {
                     <QTd>
                         <VnSelect
                             v-model="row.shelvingFk"
-                            :options="shelvings"
+                            url="Shelvings"
                             option-label="code"
                             option-value="id"
                             style="width: 100px"

From a2a7bdb76253e076a8991d9bc6fb7e2aa909ea3c Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Tue, 11 Mar 2025 08:20:06 +0100
Subject: [PATCH 11/11] test: skip Client balance tests in Cypress

---
 test/cypress/integration/client/clientBalance.spec.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/cypress/integration/client/clientBalance.spec.js b/test/cypress/integration/client/clientBalance.spec.js
index 8f8296264..4579efaa6 100644
--- a/test/cypress/integration/client/clientBalance.spec.js
+++ b/test/cypress/integration/client/clientBalance.spec.js
@@ -1,5 +1,5 @@
 /// <reference types="cypress" />
-describe('Client balance', () => {
+describe.skip('Client balance', () => {
     beforeEach(() => {
         cy.viewport(1280, 720);
         cy.login('developer');