From a9a09ad0a3aa9f81639a98c88680308fc1ec542c Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Fri, 27 Dec 2024 13:58:35 +0100
Subject: [PATCH 01/22] refactor: refs #8316 used VnSection and VnCardBeta

---
 src/pages/Entry/Card/EntryCard.vue |  14 +-
 src/pages/Entry/EntryList.vue      | 122 ++++++++---------
 src/pages/Entry/locale/en.yml      |   3 +
 src/pages/Entry/locale/es.yml      |   6 +-
 src/router/modules/entry.js        | 201 ++++++++++++++++-------------
 5 files changed, 179 insertions(+), 167 deletions(-)

diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index 3f2596338..6d743926e 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -1,21 +1,11 @@
 <script setup>
-import VnCard from 'components/common/VnCard.vue';
+import VnCardBeta from 'components/common/VnCardBeta.vue';
 import EntryDescriptor from './EntryDescriptor.vue';
-import EntryFilter from '../EntryFilter.vue';
-import filter from './EntryFilter.js';
 </script>
 <template>
-    <VnCard
+    <VnCardBeta
         data-key="Entry"
         base-url="Entries"
-        :filter="filter"
         :descriptor="EntryDescriptor"
-        :filter-panel="EntryFilter"
-        search-data-key="EntryList"
-        :searchbar-props="{
-            url: 'Entries/filter',
-            label: 'Search entries',
-            info: 'You can search by entry reference',
-        }"
     />
 </template>
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 84ead85ad..6e7e9fc82 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -2,19 +2,19 @@
 import { onMounted, ref, computed } from 'vue';
 import { useI18n } from 'vue-i18n';
 import EntryFilter from './EntryFilter.vue';
-import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
 import { useStateStore } from 'stores/useStateStore';
 import VnTable from 'components/VnTable/VnTable.vue';
-import RightMenu from 'src/components/common/RightMenu.vue';
 import { toDate } from 'src/filters';
 import { useSummaryDialog } from 'src/composables/useSummaryDialog';
 import EntrySummary from './Card/EntrySummary.vue';
 import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
 import TravelDescriptorProxy from 'src/pages/Travel/Card/TravelDescriptorProxy.vue';
+import VnSection from 'src/components/common/VnSection.vue';
 
 const stateStore = useStateStore();
 const { t } = useI18n();
 const tableRef = ref();
+const dataKey = 'EntryList';
 
 const { viewSummary } = useSummaryDialog();
 const entryFilter = {
@@ -180,67 +180,71 @@ const columns = computed(() => [
     },
 ]);
 </script>
+
 <template>
-    <VnSearchbar
-        data-key="EntryList"
+    <VnSection
+        :data-key="dataKey"
+        :columns="columns"
+        prefix="entry"
         url="Entries/filter"
-        :label="t('Search entries')"
-        :info="t('You can search by entry reference')"
-    />
-    <RightMenu>
-        <template #right-panel>
+        :array-data-props="{
+            url: 'Entries/filter',
+            order: 'id DESC',
+            exprBuilder,
+        }"
+    >
+        <template #rightMenu>
             <EntryFilter data-key="EntryList" />
         </template>
-    </RightMenu>
-    <VnTable
-        ref="tableRef"
-        data-key="EntryList"
-        url="Entries/filter"
-        :filter="entryFilter"
-        :create="{
-            urlCreate: 'Entries',
-            title: t('Create entry'),
-            onDataSaved: ({ id }) => tableRef.redirect(id),
-            formInitialData: {},
-        }"
-        order="id DESC"
-        :columns="columns"
-        redirect="entry"
-        :right-search="false"
-    >
-        <template #column-status="{ row }">
-            <div class="row q-gutter-xs">
-                <QIcon
-                    v-if="!!row.isExcludedFromAvailable"
-                    name="vn:inventory"
-                    color="primary"
-                >
-                    <QTooltip>{{
-                        t('entry.list.tableVisibleColumns.isExcludedFromAvailable')
-                    }}</QTooltip>
-                </QIcon>
-                <QIcon v-if="!!row.isRaid" name="vn:net" color="primary">
-                    <QTooltip>
-                        {{
-                            t('globals.raid', { daysInForward: row.daysInForward })
-                        }}</QTooltip
-                    >
-                </QIcon>
-            </div>
-        </template>
-        <template #column-supplierFk="{ row }">
-            <span class="link" @click.stop>
-                {{ row.supplierName }}
-                <SupplierDescriptorProxy :id="row.supplierFk" />
-            </span>
-        </template>
-        <template #column-travelFk="{ row }">
-            <span class="link" @click.stop>
-                {{ row.travelRef }}
-                <TravelDescriptorProxy :id="row.travelFk" />
-            </span>
-        </template>
-    </VnTable>
+        <template #body>
+            <VnTable
+                ref="tableRef"
+                :data-key="dataKey"
+                :create="{
+                    urlCreate: 'Entries',
+                    title: t('Create entry'),
+                    onDataSaved: ({ id }) => tableRef.redirect(id),
+                    formInitialData: {},
+                }"
+                :columns="columns"
+                redirect="entry"
+                :right-search="false"
+            >
+                <template #column-status="{ row }">
+                    <div class="row q-gutter-xs">
+                        <QIcon
+                            v-if="!!row.isExcludedFromAvailable"
+                            name="vn:inventory"
+                            color="primary"
+                        >
+                            <QTooltip>{{
+                                t('entry.list.tableVisibleColumns.isExcludedFromAvailable')
+                            }}</QTooltip>
+                        </QIcon>
+                        <QIcon v-if="!!row.isRaid" name="vn:net" color="primary">
+                            <QTooltip>
+                                {{
+                                    t('globals.raid', { daysInForward: row.daysInForward })
+                                }}</QTooltip
+                            >
+                        </QIcon>
+                    </div>
+                </template>
+                <template #column-supplierFk="{ row }">
+                    <span class="link" @click.stop>
+                        {{ row.supplierName }}
+                        <SupplierDescriptorProxy :id="row.supplierFk" />
+                    </span>
+                </template>
+                <template #column-travelFk="{ row }">
+                    <span class="link" @click.stop>
+                        {{ row.travelRef }}
+                        <TravelDescriptorProxy :id="row.travelFk" />
+                    </span>
+                </template>
+            </VnTable>
+        </template> 
+    </VnSection>
 </template>
 
 <i18n>
diff --git a/src/pages/Entry/locale/en.yml b/src/pages/Entry/locale/en.yml
index cd5113d84..b0e3cc1d5 100644
--- a/src/pages/Entry/locale/en.yml
+++ b/src/pages/Entry/locale/en.yml
@@ -1,3 +1,6 @@
+entry:
+    search: Search entries
+    searchInfo: You can search by entry reference
 entryList:
     list:
         inventoryEntry: Inventory entry
diff --git a/src/pages/Entry/locale/es.yml b/src/pages/Entry/locale/es.yml
index 3007c5d44..313a7f5c7 100644
--- a/src/pages/Entry/locale/es.yml
+++ b/src/pages/Entry/locale/es.yml
@@ -1,6 +1,6 @@
-Search entries: Buscar entradas
-You can search by entry reference: Puedes buscar por referencia de la entrada
-
+entry:
+    search: Buscar entradas
+    searchInfo: Puedes buscar por referencia de entrada
 entryList:
     list:
         inventoryEntry: Es inventario
diff --git a/src/router/modules/entry.js b/src/router/modules/entry.js
index 26ce773c5..f362c7653 100644
--- a/src/router/modules/entry.js
+++ b/src/router/modules/entry.js
@@ -1,50 +1,123 @@
 import { RouterView } from 'vue-router';
 
+const entryCard = {
+    name: 'EntryCard',
+    path: ':id',
+    component: () => import('src/pages/Entry/Card/EntryCard.vue'),
+    redirect: { name: 'EntrySummary' },
+    meta: {
+        menu: [
+            'EntryBasicData',
+            'EntryBuys',
+            'EntryNotes',
+            'EntryDms',
+            'EntryLog',
+        ],
+    },
+    children: [
+        {
+            path: 'summary',
+            name: 'EntrySummary',
+            meta: {
+                title: 'summary',
+                icon: 'launch',
+            },
+            component: () => import('src/pages/Entry/Card/EntrySummary.vue'),
+        },
+        {
+            path: 'basic-data',
+            name: 'EntryBasicData',
+            meta: {
+                title: 'basicData',
+                icon: 'vn:settings',
+            },
+            component: () => import('src/pages/Entry/Card/EntryBasicData.vue'),
+        },
+        {
+            path: 'buys',
+            name: 'EntryBuys',
+            meta: {
+                title: 'buys',
+                icon: 'vn:lines',
+            },
+            component: () => import('src/pages/Entry/Card/EntryBuys.vue'),
+        },
+        {
+            path: 'buys/import',
+            name: 'EntryBuysImport',
+            component: () => import('src/pages/Entry/Card/EntryBuysImport.vue'),
+        },
+        {
+            path: 'notes',
+            name: 'EntryNotes',
+            meta: {
+                title: 'notes',
+                icon: 'vn:notes',
+            },
+            component: () => import('src/pages/Entry/Card/EntryNotes.vue'),
+        },
+        {
+            path: 'dms',
+            name: 'EntryDms',
+            meta: {
+                title: 'dms',
+                icon: 'smb_share',
+            },
+            component: () => import('src/pages/Entry/Card/EntryDms.vue'),
+        },
+        {
+            path: 'log',
+            name: 'EntryLog',
+            meta: {
+                title: 'log',
+                icon: 'vn:History',
+            },
+            component: () => import('src/pages/Entry/Card/EntryLog.vue'),
+        },
+    ],
+};
+
 export default {
-    path: '/entry',
     name: 'Entry',
+    path: '/entry',
     meta: {
         title: 'entries',
         icon: 'vn:entry',
         moduleName: 'Entry',
         keyBinding: 'e',
-    },
-    component: RouterView,
-    redirect: { name: 'EntryMain' },
-    menus: {
-        main: [
+        menu: [
             'EntryList',
             'MyEntries',
             'EntryLatestBuys',
             'EntryStockBought',
             'EntryWasteRecalc',
-        ],
-        card: ['EntryBasicData', 'EntryBuys', 'EntryNotes', 'EntryDms', 'EntryLog'],
+        ]
     },
+    component: RouterView,
+    redirect: { name: 'EntryMain' },
     children: [
         {
-            path: '',
             name: 'EntryMain',
+            path: '',
             component: () => import('src/components/common/VnModule.vue'),
-            redirect: { name: 'EntryList' },
+            redirect: { name: 'EntryIndexMain' },
             children: [
                 {
-                    path: 'list',
-                    name: 'EntryList',
-                    meta: {
-                        title: 'list',
-                        icon: 'view_list',
-                    },
+                    path:'',
+                    name: 'EntryIndexMain',
+                    redirect: { name: 'EntryList' },
                     component: () => import('src/pages/Entry/EntryList.vue'),
-                },
-                {
-                    path: 'my',
-                    name: 'MyEntries',
-                    meta: {
-                        title: 'labeler',
-                        icon: 'sell',
-                    },
-                    component: () => import('src/pages/Entry/MyEntries.vue'),
+                    children: [
+                        {
+                            name: 'EntryList',
+                            path: 'list',
+                            meta: {
+                                title: 'list',
+                                icon: 'view_list',
+                            },
+                        },
+                        entryCard,
+                    ],
                 },
                 {
                     path: 'create',
@@ -54,6 +127,15 @@ export default {
                         icon: 'add',
                     },
                     component: () => import('src/pages/Entry/EntryCreate.vue'),
+                },                
+                {
+                    path: 'my',
+                    name: 'MyEntries',
+                    meta: {
+                        title: 'labeler',
+                        icon: 'sell',
+                    },
+                    component: () => import('src/pages/Entry/MyEntries.vue'),
                 },
                 {
                     path: 'latest-buys',
@@ -84,72 +166,5 @@ export default {
                 },
             ],
         },
-        {
-            name: 'EntryCard',
-            path: ':id',
-            component: () => import('src/pages/Entry/Card/EntryCard.vue'),
-            redirect: { name: 'EntrySummary' },
-            children: [
-                {
-                    name: 'EntrySummary',
-                    path: 'summary',
-                    meta: {
-                        title: 'summary',
-                        icon: 'launch',
-                    },
-                    component: () => import('src/pages/Entry/Card/EntrySummary.vue'),
-                },
-                {
-                    path: 'basic-data',
-                    name: 'EntryBasicData',
-                    meta: {
-                        title: 'basicData',
-                        icon: 'vn:settings',
-                    },
-                    component: () => import('src/pages/Entry/Card/EntryBasicData.vue'),
-                },
-                {
-                    path: 'buys',
-                    name: 'EntryBuys',
-                    meta: {
-                        title: 'buys',
-                        icon: 'vn:lines',
-                    },
-                    component: () => import('src/pages/Entry/Card/EntryBuys.vue'),
-                },
-                {
-                    path: 'buys/import',
-                    name: 'EntryBuysImport',
-                    component: () => import('src/pages/Entry/Card/EntryBuysImport.vue'),
-                },
-                {
-                    path: 'notes',
-                    name: 'EntryNotes',
-                    meta: {
-                        title: 'notes',
-                        icon: 'vn:notes',
-                    },
-                    component: () => import('src/pages/Entry/Card/EntryNotes.vue'),
-                },
-                {
-                    path: 'dms',
-                    name: 'EntryDms',
-                    meta: {
-                        title: 'dms',
-                        icon: 'smb_share',
-                    },
-                    component: () => import('src/pages/Entry/Card/EntryDms.vue'),
-                },
-                {
-                    path: 'log',
-                    name: 'EntryLog',
-                    meta: {
-                        title: 'log',
-                        icon: 'vn:History',
-                    },
-                    component: () => import('src/pages/Entry/Card/EntryLog.vue'),
-                },
-            ],
-        },
     ],
-};
+};
\ No newline at end of file

From 7f1684ddfcd970f4ac1f36cf6e9502144771f59b Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Wed, 8 Jan 2025 08:14:05 +0100
Subject: [PATCH 02/22] refactor: refs #8316 added entryFilter

---
 src/pages/Entry/Card/EntryCard.vue | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index 6d743926e..8e271ffab 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -1,11 +1,13 @@
 <script setup>
 import VnCardBeta from 'components/common/VnCardBeta.vue';
 import EntryDescriptor from './EntryDescriptor.vue';
+import filter from './EntryFilter.js'
 </script>
 <template>
     <VnCardBeta
         data-key="Entry"
         base-url="Entries"
         :descriptor="EntryDescriptor"
+        :filter="filter"
     />
 </template>

From dfd7ba93795252a00c9fc65fcf264491f669eea0 Mon Sep 17 00:00:00 2001
From: provira <provira@verdnatura.es>
Date: Wed, 8 Jan 2025 08:14:37 +0100
Subject: [PATCH 03/22] feat: refs #8258 added uppercase option to VnInput

---
 src/components/common/VnInput.vue   | 13 ++++++++-----
 src/pages/Customer/CustomerList.vue |  3 +++
 src/pages/Supplier/SupplierList.vue |  7 ++++++-
 src/pages/Worker/WorkerList.vue     |  6 +++++-
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/components/common/VnInput.vue b/src/components/common/VnInput.vue
index 3cecf760a..44ce07248 100644
--- a/src/components/common/VnInput.vue
+++ b/src/components/common/VnInput.vue
@@ -42,6 +42,10 @@ const $props = defineProps({
         type: Number,
         default: null,
     },
+    uppercase: {
+        type: Boolean,
+        default: false,
+    },
 });
 
 const vnInputRef = ref(null);
@@ -50,6 +54,9 @@ const value = computed({
         return $props.modelValue;
     },
     set(value) {
+        if ($props.uppercase && typeof value === 'string') {
+            value = value.toUpperCase();
+        }
         if ($props.emptyToNull && value === '') value = null;
         emit('update:modelValue', value);
     },
@@ -169,6 +176,7 @@ const handleInsertMode = (e) => {
         </QInput>
     </div>
 </template>
+
 <i18n>
     en:
         inputMin: Must be more than {value}
@@ -179,8 +187,3 @@ const handleInsertMode = (e) => {
         maxLength: El valor excede los {value} carácteres
         inputMax: Debe ser menor a {value}
 </i18n>
-<style lang="scss">
-.q-field__append {
-    padding-inline: 0;
-}
-</style>
diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue
index fdfd7ff9c..037940ffa 100644
--- a/src/pages/Customer/CustomerList.vue
+++ b/src/pages/Customer/CustomerList.vue
@@ -50,6 +50,9 @@ const columns = computed(() => [
         isTitle: true,
         create: true,
         columnClass: 'expand',
+        attrs: {
+            uppercase: true,
+        },
     },
     {
         align: 'left',
diff --git a/src/pages/Supplier/SupplierList.vue b/src/pages/Supplier/SupplierList.vue
index c0748af87..f9238e361 100644
--- a/src/pages/Supplier/SupplierList.vue
+++ b/src/pages/Supplier/SupplierList.vue
@@ -24,8 +24,13 @@ const columns = computed(() => [
         label: t('globals.name'),
         name: 'socialName',
         create: true,
+        attrs: {
+            uppercase: true,
+        },
         columnFilter: {
-            name: 'search',
+            name: 'search',attrs: {
+            uppercase: false,
+        },
         },
         isTitle: true,
     },
diff --git a/src/pages/Worker/WorkerList.vue b/src/pages/Worker/WorkerList.vue
index 48393a8c7..0b784b993 100644
--- a/src/pages/Worker/WorkerList.vue
+++ b/src/pages/Worker/WorkerList.vue
@@ -138,7 +138,11 @@ function uppercaseStreetModel(data) {
     return {
         get: () => (data.street ? data.street.toUpperCase() : ''),
         set: (value) => {
-            data.street = value.toUpperCase();
+            if (value) {
+                data.street = value.toUpperCase();
+            } else {
+                data.street = null;
+            }
         },
     };
 }

From f834f3b7549e9c3ea726fa78a72b897d9b7aa50d Mon Sep 17 00:00:00 2001
From: provira <provira@verdnatura.es>
Date: Fri, 10 Jan 2025 07:52:22 +0100
Subject: [PATCH 04/22] feat: refs #8258 added button to pass to uppercase

---
 src/components/common/VnInput.vue             | 28 ++++++++++++++++---
 .../Customer/Card/CustomerFiscalData.vue      |  1 +
 src/pages/Customer/CustomerList.vue           |  5 ++++
 .../Supplier/Card/SupplierFiscalData.vue      |  1 +
 src/pages/Supplier/SupplierList.vue           |  7 +++--
 5 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/src/components/common/VnInput.vue b/src/components/common/VnInput.vue
index c45f7d073..e921d8e1f 100644
--- a/src/components/common/VnInput.vue
+++ b/src/components/common/VnInput.vue
@@ -49,15 +49,11 @@ const $props = defineProps({
 });
 
 const vnInputRef = ref(null);
-const showPassword = ref(false);
 const value = computed({
     get() {
         return $props.modelValue;
     },
     set(value) {
-        if ($props.uppercase && typeof value === 'string') {
-            value = value.toUpperCase();
-        }
         if ($props.emptyToNull && value === '') value = null;
         emit('update:modelValue', value);
     },
@@ -124,6 +120,10 @@ const handleInsertMode = (e) => {
         input.setSelectionRange(cursorPos + 1, cursorPos + 1);
     });
 };
+
+const handleUppercase = () => {
+    value.value = value.value?.toUpperCase() || '';
+};
 </script>
 
 <template>
@@ -166,7 +166,16 @@ const handleInsertMode = (e) => {
                             emit('remove');
                         }
                     "
+                ></QIcon>
+                
+                <QIcon
+                    name="match_case"
+                    size="xs"
+                    v-if="!$attrs.disabled && !($attrs.readonly) && $props.uppercase"
+                    @click="handleUppercase"
+                    class="uppercase-icon"
                 />
+                
                 <slot name="append" v-if="$slots.append && !$attrs.disabled" />
                 <QIcon v-if="info" name="info">
                     <QTooltip max-width="350px">
@@ -177,3 +186,14 @@ const handleInsertMode = (e) => {
         </QInput>
     </div>
 </template>
+
+<i18n>
+    en:
+        inputMin: Must be more than {value}
+        maxLength: The value exceeds {value} characters
+        inputMax: Must be less than {value}
+    es:
+        inputMin: Debe ser mayor a {value}
+        maxLength: El valor excede los {value} carácteres
+        inputMax: Debe ser menor a {value}
+</i18n>
\ No newline at end of file
diff --git a/src/pages/Customer/Card/CustomerFiscalData.vue b/src/pages/Customer/Card/CustomerFiscalData.vue
index aff7deda4..8f2c4efb0 100644
--- a/src/pages/Customer/Card/CustomerFiscalData.vue
+++ b/src/pages/Customer/Card/CustomerFiscalData.vue
@@ -44,6 +44,7 @@ function handleLocation(data, location) {
                     :required="true"
                     :rules="validate('client.socialName')"
                     clearable
+                    uppercase="true"
                     v-model="data.socialName"
                 >
                     <template #append>
diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue
index 037940ffa..51788a842 100644
--- a/src/pages/Customer/CustomerList.vue
+++ b/src/pages/Customer/CustomerList.vue
@@ -53,6 +53,11 @@ const columns = computed(() => [
         attrs: {
             uppercase: true,
         },
+        columnFilter: {
+            attrs: {
+                uppercase: false,
+            },
+        },
     },
     {
         align: 'left',
diff --git a/src/pages/Supplier/Card/SupplierFiscalData.vue b/src/pages/Supplier/Card/SupplierFiscalData.vue
index 44235717f..cd80583a7 100644
--- a/src/pages/Supplier/Card/SupplierFiscalData.vue
+++ b/src/pages/Supplier/Card/SupplierFiscalData.vue
@@ -92,6 +92,7 @@ function handleLocation(data, location) {
                 <VnInput
                     v-model="data.name"
                     :label="t('supplier.fiscalData.name')"
+                    uppercase="true"
                     clearable
                 />
                 <VnInput
diff --git a/src/pages/Supplier/SupplierList.vue b/src/pages/Supplier/SupplierList.vue
index f9238e361..607c46a54 100644
--- a/src/pages/Supplier/SupplierList.vue
+++ b/src/pages/Supplier/SupplierList.vue
@@ -28,9 +28,10 @@ const columns = computed(() => [
             uppercase: true,
         },
         columnFilter: {
-            name: 'search',attrs: {
-            uppercase: false,
-        },
+            name: 'search',
+            attrs: {
+                uppercase: false,
+            },
         },
         isTitle: true,
     },

From 7be5f9633b1ecd26d1c02c4725f897f111c0f3c4 Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Fri, 10 Jan 2025 15:24:40 +0100
Subject: [PATCH 05/22] feat: refs #8316 add entryFilter prop to VnTable
 component in EntryList

---
 src/pages/Entry/EntryList.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 1f8ade121..572a5908b 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -2,7 +2,6 @@
 import { ref, computed } from 'vue';
 import { useI18n } from 'vue-i18n';
 import EntryFilter from './EntryFilter.vue';
-import { useStateStore } from 'stores/useStateStore';
 import VnTable from 'components/VnTable/VnTable.vue';
 import { toDate } from 'src/filters';
 import { useSummaryDialog } from 'src/composables/useSummaryDialog';
@@ -199,6 +198,7 @@ const columns = computed(() => [
             <VnTable
                 ref="tableRef"
                 :data-key="dataKey"
+                :filter="entryFilter"
                 :create="{
                     urlCreate: 'Entries',
                     title: t('Create entry'),

From 702ae17d9450e88b3e51785bed0384fca1ca6cb7 Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Tue, 14 Jan 2025 08:25:10 +0100
Subject: [PATCH 06/22] refactor: refs #8316 update EntryCard to use
 user-filter prop and remove exprBuilder from EntryList

---
 src/pages/Entry/Card/EntryCard.vue | 2 +-
 src/pages/Entry/EntryList.vue      | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index 8e271ffab..e00623a21 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -8,6 +8,6 @@ import filter from './EntryFilter.js'
         data-key="Entry"
         base-url="Entries"
         :descriptor="EntryDescriptor"
-        :filter="filter"
+        :user-filter="filter"
     />
 </template>
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 572a5908b..edd3ae942 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -188,7 +188,6 @@ const columns = computed(() => [
         :array-data-props="{
             url: 'Entries/filter',
             order: 'id DESC',
-            exprBuilder,
         }"
     >
         <template #rightMenu>

From 3cc5595e141c9ccde3d150359eb7799c4daabba3 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Tue, 14 Jan 2025 13:08:52 +0100
Subject: [PATCH 07/22] refactor: refs #8198 simplify data fetching and
 filtering logic

---
 src/pages/Item/Card/ItemLastEntries.vue | 67 +++++++++++++++----------
 1 file changed, 41 insertions(+), 26 deletions(-)

diff --git a/src/pages/Item/Card/ItemLastEntries.vue b/src/pages/Item/Card/ItemLastEntries.vue
index c2df553c3..7d8890c2b 100644
--- a/src/pages/Item/Card/ItemLastEntries.vue
+++ b/src/pages/Item/Card/ItemLastEntries.vue
@@ -36,18 +36,7 @@ const exprBuilder = (param, value) => {
     }
 };
 
-const where = {
-    itemFk: route.params.id,
-};
-
-const arrayData = useArrayData('ItemLastEntries', {
-    url: 'Items/lastEntriesFilter',
-    order: ['landed DESC', 'buyFk DESC'],
-    exprBuilder: exprBuilder,
-    userFilter: {
-        where: where,
-    },
-});
+let arrayData = useArrayData('ItemLastEntries');
 const itemLastEntries = ref([]);
 
 const columns = computed(() => [
@@ -161,25 +150,51 @@ const getDate = (date, type) => {
 };
 
 const updateFilter = async () => {
-    let filter;
-    if (!from.value && to.value) filter = { lte: to.value };
-    else if (from.value && !to.value) filter = { gte: from.value };
-    else if (from.value && to.value) filter = { between: [from.value, to.value] };
-
-    const userFilter = arrayData.store.userFilter.where;
-
-    userFilter.landed = filter;
+    let landed;
+    if (!from.value && to.value) landed = { lte: to.value };
+    else if (from.value && !to.value) landed = { gte: from.value };
+    else if (from.value && to.value) landed = { between: [from.value, to.value] };
 
+    arrayData.store.filter.where.landed = landed;
     await fetchItemLastEntries();
 };
 
 onMounted(async () => {
-    const _from = Date.vnNew();
-    _from.setDate(_from.getDate() - 75);
-    from.value = getDate(_from, 'from');
-    const _to = Date.vnNew();
-    _to.setDate(_to.getDate() + 10);
-    to.value = getDate(_to, 'to');
+    const landed = arrayData.store.filter.where?.landed;
+    arrayData = useArrayData('ItemLastEntries', {
+        url: 'Items/lastEntriesFilter',
+        order: ['landed DESC', 'buyFk DESC'],
+        exprBuilder: exprBuilder,
+        filter: {
+            where: {
+                itemFk: route.params.id,
+                landed,
+            },
+        },
+    });
+
+    if (landed) {
+        const key = Object.keys(landed)[0];
+        switch (key) {
+            case 'gte':
+                from.value = landed.gte;
+                break;
+            case 'lte':
+                to.value = landed.lte;
+                break;
+            case 'between':
+                from.value = landed.between[0];
+                to.value = landed.between[1];
+                break;
+        }
+    } else {
+        const _from = Date.vnNew();
+        _from.setDate(_from.getDate() - 75);
+        from.value = getDate(_from, 'from');
+        const _to = Date.vnNew();
+        _to.setDate(_to.getDate() + 10);
+        to.value = getDate(_to, 'to');
+    }
 
     updateFilter();
 

From df9e5f805945c3856c4dcb8bbd4be57582b48028 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Tue, 14 Jan 2025 17:13:59 +0100
Subject: [PATCH 08/22] refactor: refs #8198 simplify state management and data
 fetching in ItemDiary component

---
 src/pages/Item/Card/ItemDiary.vue | 92 +++++++++++++------------------
 1 file changed, 37 insertions(+), 55 deletions(-)

diff --git a/src/pages/Item/Card/ItemDiary.vue b/src/pages/Item/Card/ItemDiary.vue
index 96a003a09..c2f2c19a0 100644
--- a/src/pages/Item/Card/ItemDiary.vue
+++ b/src/pages/Item/Card/ItemDiary.vue
@@ -1,7 +1,7 @@
 <script setup>
-import { onMounted, computed, reactive, ref, nextTick, watch } from 'vue';
+import { onMounted, computed, ref, nextTick } from 'vue';
 import { useI18n } from 'vue-i18n';
-import { useRoute, useRouter } from 'vue-router';
+import { useRoute } from 'vue-router';
 
 import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue';
 import EntryDescriptorProxy from 'src/pages/Entry/Card/EntryDescriptorProxy.vue';
@@ -22,19 +22,16 @@ import VnSubToolbar from 'components/ui/VnSubToolbar.vue';
 
 const { t } = useI18n();
 const route = useRoute();
-const router = useRouter();
 const state = useState();
 const user = state.getUser();
-const today = ref(Date.vnNew());
+const today = Date.vnNew();
+today.setHours(0, 0, 0, 0);
 const warehousesOptions = ref([]);
-const itemBalancesRef = ref(null);
-const itemsBalanceFilter = reactive({
-    where: { itemFk: route.params.id, warehouseFk: null, date: null },
-});
-const itemBalances = ref([]);
-const warehouseFk = ref(null);
-const _showWhatsBeforeInventory = ref(false);
+const itemBalances = computed(() => arrayDataItemBalances.store.data);
+const where = computed(() => arrayDataItemBalances.store.filter.where || {});
+const showWhatsBeforeInventory = ref(false);
 const inventoriedDate = ref(null);
+let arrayDataItemBalances = useArrayData('ItemBalances');
 
 const originTypeMap = {
     entry: {
@@ -122,36 +119,28 @@ const columns = computed(() => [
     },
 ]);
 
-const showWhatsBeforeInventory = computed({
-    get: () => _showWhatsBeforeInventory.value,
-    set: (val) => {
-        _showWhatsBeforeInventory.value = val;
-        if (!val) itemsBalanceFilter.where.date = null;
-        else itemsBalanceFilter.where.date = inventoriedDate.value ?? new Date();
-    },
-});
-
 onMounted(async () => {
-    today.value.setHours(0, 0, 0, 0);
-    if (route.query.warehouseFk) warehouseFk.value = route.query.warehouseFk;
-    else if (user.value) warehouseFk.value = user.value.warehouseFk;
-    itemsBalanceFilter.where.warehouseFk = warehouseFk.value;
-    const { data } = await axios.get('Configs/findOne');
-    inventoriedDate.value = data.inventoried;
+    const ref = where.value;
+    const query = route.query;
+    inventoriedDate.value =
+        (await axios.get('Configs/findOne')).data?.inventoried || today;
+
+    if (query.warehouseFk) ref.warehouseFk = query.warehouseFk;
+    else if (!ref.warehouseFk && user.value) ref.warehouseFk = user.value.warehouseFk;
+    if (ref.date) showWhatsBeforeInventory.value = true;
+    ref.itemFk = route.params.id;
+
+    arrayDataItemBalances = useArrayData('ItemBalances', {
+        url: 'Items/getBalance',
+        filter: { where: ref },
+    });
+
     await fetchItemBalances();
     await scrollToToday();
-    await updateWarehouse(warehouseFk.value);
+    await updateWarehouse(ref.warehouseFk);
 });
 
-watch(
-    () => router.currentRoute.value.params.id,
-    (newId) => {
-        itemsBalanceFilter.where.itemFk = newId;
-        itemBalancesRef.value.fetch();
-    }
-);
-
-const fetchItemBalances = async () => await itemBalancesRef.value.fetch();
+const fetchItemBalances = async () => await arrayDataItemBalances.fetch({});
 
 const getBadgeAttrs = (_date) => {
     const isSameDate = date.isSameDate(today.value, _date);
@@ -178,23 +167,13 @@ const formatDateForAttribute = (dateValue) => {
 };
 
 async function updateWarehouse(warehouseFk) {
-    const stock = useArrayData('descriptorStock', {
-        userParams: {
-            warehouseFk,
-        },
-    });
+    const stock = useArrayData('descriptorStock', { userParams: { warehouseFk } });
     await stock.fetch({});
     stock.store.data.itemFk = route.params.id;
 }
 </script>
 
 <template>
-    <FetchData
-        ref="itemBalancesRef"
-        url="Items/getBalance"
-        :filter="itemsBalanceFilter"
-        @on-fetch="(data) => (itemBalances = data)"
-    />
     <FetchData
         url="Warehouses"
         :filter="{ fields: ['id', 'name'], order: 'name ASC' }"
@@ -207,27 +186,30 @@ async function updateWarehouse(warehouseFk) {
                 <VnSelect
                     :label="t('itemDiary.warehouse')"
                     :options="warehousesOptions"
-                    hide-selected
-                    option-label="name"
-                    option-value="id"
-                    dense
-                    v-model="itemsBalanceFilter.where.warehouseFk"
+                    v-model="where.warehouseFk"
                     @update:model-value="
-                        (value) => fetchItemBalances() && updateWarehouse(value)
+                        (val) => fetchItemBalances() && updateWarehouse(val)
                     "
                     class="q-mr-lg"
+                    :is-clearable="false"
                 />
                 <QCheckbox
                     :label="t('itemDiary.showBefore')"
                     v-model="showWhatsBeforeInventory"
-                    @update:model-value="fetchItemBalances"
+                    @update:model-value="
+                        async (val) => {
+                            if (!val) where.date = null;
+                            else where.date = inventoriedDate;
+                            await fetchItemBalances();
+                        }
+                    "
                     class="q-mr-lg"
                 />
                 <VnInputDate
                     v-if="showWhatsBeforeInventory"
                     :label="t('itemDiary.since')"
                     dense
-                    v-model="itemsBalanceFilter.where.date"
+                    v-model="where.date"
                     @update:model-value="fetchItemBalances"
                 />
             </div>

From a95f6f56bd348b9acc4b20b81dcab8c3efe93fcd Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Wed, 15 Jan 2025 12:17:06 +0100
Subject: [PATCH 09/22] fix: refs #8316 userFilter

---
 src/pages/Entry/EntryList.vue | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index e6b06eb6b..6afce1edf 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -188,6 +188,7 @@ const columns = computed(() => [
         :array-data-props="{
             url: 'Entries/filter',
             order: 'id DESC',
+            userFilter: 'entryFilter',
         }"
     >
         <template #rightMenu>
@@ -197,7 +198,6 @@ const columns = computed(() => [
             <VnTable
                 ref="tableRef"
                 :data-key="dataKey"
-                :filter="entryFilter"
                 :create="{
                     urlCreate: 'Entries',
                     title: t('Create entry'),
@@ -216,13 +216,17 @@ const columns = computed(() => [
                             color="primary"
                         >
                             <QTooltip>{{
-                                t('entry.list.tableVisibleColumns.isExcludedFromAvailable')
+                                t(
+                                    'entry.list.tableVisibleColumns.isExcludedFromAvailable'
+                                )
                             }}</QTooltip>
                         </QIcon>
                         <QIcon v-if="!!row.isRaid" name="vn:net" color="primary">
                             <QTooltip>
                                 {{
-                                    t('globals.raid', { daysInForward: row.daysInForward })
+                                    t('globals.raid', {
+                                        daysInForward: row.daysInForward,
+                                    })
                                 }}</QTooltip
                             >
                         </QIcon>
@@ -241,7 +245,7 @@ const columns = computed(() => [
                     </span>
                 </template>
             </VnTable>
-        </template> 
+        </template>
     </VnSection>
 </template>
 

From 80413eef3ef616e77efeb842bd4159078b558e88 Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Wed, 15 Jan 2025 15:19:47 +0100
Subject: [PATCH 10/22] refactor: refs #8316 moved localizations to local
 locale

---
 src/i18n/locale/en.yml        | 74 ---------------------------------
 src/i18n/locale/es.yml        | 74 ---------------------------------
 src/pages/Entry/EntryList.vue | 10 +----
 src/pages/Entry/locale/en.yml | 77 ++++++++++++++++++++++++++++++++--
 src/pages/Entry/locale/es.yml | 78 +++++++++++++++++++++++++++++++++--
 5 files changed, 148 insertions(+), 165 deletions(-)

diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml
index 91d07a9d3..80f18238d 100644
--- a/src/i18n/locale/en.yml
+++ b/src/i18n/locale/en.yml
@@ -389,80 +389,6 @@ cau:
     subtitle: By sending this ticket, all the data related to the error, the section, the user, etc., are already sent.
     inputLabel: Explain why this error should not appear
     askPrivileges: Ask for privileges
-entry:
-    list:
-        newEntry: New entry
-        tableVisibleColumns:
-            created: Creation
-            supplierFk: Supplier
-            isBooked: Booked
-            isConfirmed: Confirmed
-            isOrdered: Ordered
-            companyFk: Company
-            travelFk: Travel
-            isExcludedFromAvailable: Inventory
-            invoiceAmount: Import
-    summary:
-        commission: Commission
-        currency: Currency
-        invoiceNumber: Invoice number
-        ordered: Ordered
-        booked: Booked
-        excludedFromAvailable: Inventory
-        travelReference: Reference
-        travelAgency: Agency
-        travelShipped: Shipped
-        travelDelivered: Delivered
-        travelLanded: Landed
-        travelReceived: Received
-        buys: Buys
-        stickers: Stickers
-        package: Package
-        packing: Pack.
-        grouping: Group.
-        buyingValue: Buying value
-        import: Import
-        pvp: PVP
-    basicData:
-        travel: Travel
-        currency: Currency
-        commission: Commission
-        observation: Observation
-        booked: Booked
-        excludedFromAvailable: Inventory
-    buys:
-        observations: Observations
-        packagingFk: Box
-        color: Color
-        printedStickers: Printed stickers
-    notes:
-        observationType: Observation type
-    latestBuys:
-        tableVisibleColumns:
-            image: Picture
-            itemFk: Item ID
-            weightByPiece: Weight/Piece
-            isActive: Active
-            family: Family
-            entryFk: Entry
-            freightValue: Freight value
-            comissionValue: Commission value
-            packageValue: Package value
-            isIgnored: Is ignored
-            price2: Grouping
-            price3: Packing
-            minPrice: Min
-            ektFk: Ekt
-            packingOut: Package out
-            landing: Landing
-            isExcludedFromAvailable: Es inventory
-    params:
-        toShipped: To
-        fromShipped: From
-        warehouseiNFk: Warehouse
-        daysOnward: Days onward
-        daysAgo: Days ago
-        warehouseInFk: Warehouse in
 ticket:
     params:
         ticketFk: Ticket ID
diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml
index 2d3077b78..786236617 100644
--- a/src/i18n/locale/es.yml
+++ b/src/i18n/locale/es.yml
@@ -389,80 +389,6 @@ cau:
     subtitle: Al enviar este cau ya se envían todos los datos relacionados con el error, la sección, el usuario, etc
     inputLabel: Explique el motivo por el que no deberia aparecer este fallo
     askPrivileges: Solicitar permisos
-entry:
-    list:
-        newEntry: Nueva entrada
-        tableVisibleColumns:
-            created: Creación
-            supplierFk: Proveedor
-            isBooked: Asentado
-            isConfirmed: Confirmado
-            isOrdered: Pedida
-            companyFk: Empresa
-            travelFk: Envio
-            isExcludedFromAvailable: Inventario
-            invoiceAmount: Importe
-    summary:
-        commission: Comisión
-        currency: Moneda
-        invoiceNumber: Núm. factura
-        ordered: Pedida
-        booked: Contabilizada
-        excludedFromAvailable: Inventario
-        travelReference: Referencia
-        travelAgency: Agencia
-        travelShipped: F. envio
-        travelWarehouseOut: Alm. salida
-        travelDelivered: Enviada
-        travelLanded: F. entrega
-        travelReceived: Recibida
-        buys: Compras
-        stickers: Etiquetas
-        package: Embalaje
-        packing: Pack.
-        grouping: Group.
-        buyingValue: Coste
-        import: Importe
-        pvp: PVP
-    basicData:
-        travel: Envío
-        currency: Moneda
-        observation: Observación
-        commission: Comisión
-        booked: Asentado
-        excludedFromAvailable: Inventario
-    buys:
-        observations: Observaciónes
-        packagingFk: Embalaje
-        color: Color
-        printedStickers: Etiquetas impresas
-    notes:
-        observationType: Tipo de observación
-    latestBuys:
-        tableVisibleColumns:
-            image: Foto
-            itemFk: Id Artículo
-            weightByPiece: Peso (gramos)/tallo
-            isActive: Activo
-            family: Familia
-            entryFk: Entrada
-            freightValue: Porte
-            comissionValue: Comisión
-            packageValue: Embalaje
-            isIgnored: Ignorado
-            price2: Grouping
-            price3: Packing
-            minPrice: Min
-            ektFk: Ekt
-            packingOut: Embalaje envíos
-            landing: Llegada
-            isExcludedFromAvailable: Es inventario
-    params:
-        toShipped: Hasta
-        fromShipped: Desde
-        warehouseInFk: Alm. entrada
-        daysOnward: Días adelante
-        daysAgo: Días atras
 ticket:
     params:
         ticketFk: ID de ticket
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 6afce1edf..ea6f1a621 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -200,7 +200,7 @@ const columns = computed(() => [
                 :data-key="dataKey"
                 :create="{
                     urlCreate: 'Entries',
-                    title: t('Create entry'),
+                    title: t('entry.list.newEntry'),
                     onDataSaved: ({ id }) => tableRef.redirect(id),
                     formInitialData: {},
                 }"
@@ -248,11 +248,3 @@ const columns = computed(() => [
         </template>
     </VnSection>
 </template>
-
-<i18n>
-es:
-    Virtual entry: Es una redada
-    Search entries: Buscar entradas
-    You can search by entry reference: Puedes buscar por referencia de la entrada
-    Create entry: Crear entrada
-</i18n>
diff --git a/src/pages/Entry/locale/en.yml b/src/pages/Entry/locale/en.yml
index 565989e13..5d0162fe2 100644
--- a/src/pages/Entry/locale/en.yml
+++ b/src/pages/Entry/locale/en.yml
@@ -1,10 +1,79 @@
 entry:
+    list:
+        newEntry: New entry
+        tableVisibleColumns:
+            created: Creation
+            supplierFk: Supplier
+            isBooked: Booked
+            isConfirmed: Confirmed
+            isOrdered: Ordered
+            companyFk: Company
+            travelFk: Travel
+            isExcludedFromAvailable: Inventory
+            invoiceAmount: Import
+        inventoryEntry: Inventory entry
+    summary:
+        commission: Commission
+        currency: Currency
+        invoiceNumber: Invoice number
+        ordered: Ordered
+        booked: Booked
+        excludedFromAvailable: Inventory
+        travelReference: Reference
+        travelAgency: Agency
+        travelShipped: Shipped
+        travelDelivered: Delivered
+        travelLanded: Landed
+        travelReceived: Received
+        buys: Buys
+        stickers: Stickers
+        package: Package
+        packing: Pack.
+        grouping: Group.
+        buyingValue: Buying value
+        import: Import
+        pvp: PVP
+    basicData:
+        travel: Travel
+        currency: Currency
+        commission: Commission
+        observation: Observation
+        booked: Booked
+        excludedFromAvailable: Inventory
+    buys:
+        observations: Observations
+        packagingFk: Box
+        color: Color
+        printedStickers: Printed stickers
+    notes:
+        observationType: Observation type
+    latestBuys:
+        tableVisibleColumns:
+            image: Picture
+            itemFk: Item ID
+            weightByPiece: Weight/Piece
+            isActive: Active
+            family: Family
+            entryFk: Entry
+            freightValue: Freight value
+            comissionValue: Commission value
+            packageValue: Package value
+            isIgnored: Is ignored
+            price2: Grouping
+            price3: Packing
+            minPrice: Min
+            ektFk: Ekt
+            packingOut: Package out
+            landing: Landing
+            isExcludedFromAvailable: Es inventory
+    params:
+        toShipped: To
+        fromShipped: From
+        daysOnward: Days onward
+        daysAgo: Days ago
+        warehouseInFk: Warehouse in
     search: Search entries
     searchInfo: You can search by entry reference
-entryList:
-    list:
-        inventoryEntry: Inventory entry
-        showEntryReport: Show entry report
 entryFilter:
     filter:
         search: General search
diff --git a/src/pages/Entry/locale/es.yml b/src/pages/Entry/locale/es.yml
index f6e8a8b7c..064dcbfd9 100644
--- a/src/pages/Entry/locale/es.yml
+++ b/src/pages/Entry/locale/es.yml
@@ -1,10 +1,80 @@
 entry:
+    list:
+        newEntry: Nueva entrada
+        tableVisibleColumns:
+            created: Creación
+            supplierFk: Proveedor
+            isBooked: Asentado
+            isConfirmed: Confirmado
+            isOrdered: Pedida
+            companyFk: Empresa
+            travelFk: Envio
+            isExcludedFromAvailable: Inventario
+            invoiceAmount: Importe
+        inventoryEntry: Es inventario
+    summary:
+        commission: Comisión
+        currency: Moneda
+        invoiceNumber: Núm. factura
+        ordered: Pedida
+        booked: Contabilizada
+        excludedFromAvailable: Inventario
+        travelReference: Referencia
+        travelAgency: Agencia
+        travelShipped: F. envio
+        travelWarehouseOut: Alm. salida
+        travelDelivered: Enviada
+        travelLanded: F. entrega
+        travelReceived: Recibida
+        buys: Compras
+        stickers: Etiquetas
+        package: Embalaje
+        packing: Pack.
+        grouping: Group.
+        buyingValue: Coste
+        import: Importe
+        pvp: PVP
+    basicData:
+        travel: Envío
+        currency: Moneda
+        observation: Observación
+        commission: Comisión
+        booked: Asentado
+        excludedFromAvailable: Inventario
+    buys:
+        observations: Observaciónes
+        packagingFk: Embalaje
+        color: Color
+        printedStickers: Etiquetas impresas
+    notes:
+        observationType: Tipo de observación
+    latestBuys:
+        tableVisibleColumns:
+            image: Foto
+            itemFk: Id Artículo
+            weightByPiece: Peso (gramos)/tallo
+            isActive: Activo
+            family: Familia
+            entryFk: Entrada
+            freightValue: Porte
+            comissionValue: Comisión
+            packageValue: Embalaje
+            isIgnored: Ignorado
+            price2: Grouping
+            price3: Packing
+            minPrice: Min
+            ektFk: Ekt
+            packingOut: Embalaje envíos
+            landing: Llegada
+            isExcludedFromAvailable: Es inventario
+    params:
+        toShipped: Hasta
+        fromShipped: Desde
+        warehouseInFk: Alm. entrada
+        daysOnward: Días adelante
+        daysAgo: Días atras
     search: Buscar entradas
     searchInfo: Puedes buscar por referencia de entrada
-entryList:
-    list:
-        inventoryEntry: Es inventario
-        showEntryReport: Ver informe del pedido
 entryFilter:
     filter:
         search: Búsqueda general

From 39adfb3693809f4c024a057b46451280df9cf086 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Thu, 16 Jan 2025 10:43:40 +0100
Subject: [PATCH 11/22] fix: refs #8198 update query param

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

diff --git a/src/pages/Department/Card/DepartmentDescriptor.vue b/src/pages/Department/Card/DepartmentDescriptor.vue
index e08495faf..b219ccfe1 100644
--- a/src/pages/Department/Card/DepartmentDescriptor.vue
+++ b/src/pages/Department/Card/DepartmentDescriptor.vue
@@ -106,7 +106,7 @@ const { openConfirmationModal } = useVnConfirm();
                     :to="{
                         name: 'WorkerList',
                         query: {
-                            params: JSON.stringify({ departmentFk: entityId }),
+                            table: JSON.stringify({ departmentFk: entityId }),
                         },
                     }"
                 >

From 31795ae40b94f7853033809efa99a5e001b9ea90 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Thu, 16 Jan 2025 12:51:35 +0100
Subject: [PATCH 12/22] test: refs #8198 skip tests

---
 test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index b7fd11307..2f28d99b1 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -20,7 +20,7 @@ describe('InvoiceOut summary', () => {
         cy.checkNotification('The invoice PDF document has been regenerated');
     });
 
-    it('should refund the invoice ', () => {
+    it.skip('should refund the invoice ', () => {
         cy.typeSearchbar('T1111111{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(7)').click();
@@ -28,7 +28,7 @@ describe('InvoiceOut summary', () => {
         cy.checkNotification('The following refund ticket have been created 1000000');
     });
 
-    it('should delete an invoice ', () => {
+    it.skip('should delete an invoice ', () => {
         cy.typeSearchbar('T2222222{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(4)').click();

From 21bcfdc9975a8b11f37bb1a1d54580e8463169e3 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Thu, 16 Jan 2025 16:20:02 +0100
Subject: [PATCH 13/22] feat: skip tests

---
 test/cypress/integration/claim/claimPhoto.spec.js              | 2 +-
 test/cypress/integration/entry/myEntry.spec.js                 | 2 +-
 test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js | 2 +-
 test/cypress/integration/invoiceIn/invoiceInList.spec.js       | 2 +-
 test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js  | 2 +-
 test/cypress/integration/item/itemList.spec.js                 | 2 +-
 test/cypress/integration/item/itemTag.spec.js                  | 2 +-
 test/cypress/integration/ticket/ticketExpedition.spec.js       | 2 +-
 test/cypress/integration/ticket/ticketList.spec.js             | 2 +-
 test/cypress/integration/vnComponent/VnLocation.spec.js        | 2 +-
 test/cypress/integration/zone/zoneWarehouse.spec.js            | 2 +-
 11 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/test/cypress/integration/claim/claimPhoto.spec.js b/test/cypress/integration/claim/claimPhoto.spec.js
index 9b2978b19..0d540a0b7 100755
--- a/test/cypress/integration/claim/claimPhoto.spec.js
+++ b/test/cypress/integration/claim/claimPhoto.spec.js
@@ -1,5 +1,5 @@
 /// <reference types="cypress" />
-describe('ClaimPhoto', () => {
+describe.skip('ClaimPhoto', () => {
     beforeEach(() => {
         const claimId = 1;
         cy.login('developer');
diff --git a/test/cypress/integration/entry/myEntry.spec.js b/test/cypress/integration/entry/myEntry.spec.js
index 4addec1c4..9f45c3729 100644
--- a/test/cypress/integration/entry/myEntry.spec.js
+++ b/test/cypress/integration/entry/myEntry.spec.js
@@ -9,7 +9,7 @@ describe('EntryMy when is supplier', () => {
         });
     });
 
-    it('should open buyLabel when is supplier', () => {
+    it.skip('should open buyLabel when is supplier', () => {
         cy.get(
             '[to="/null/3"] > .q-card > .column > .q-btn > .q-btn__content > .q-icon'
         ).click();
diff --git a/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js b/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
index 0eb873355..446d6782a 100644
--- a/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
 
-describe('InvoiceInCorrective', () => {
+describe.skip('InvoiceInCorrective', () => {
     const createCorrective = '.q-menu > .q-list > :nth-child(6) > .q-item__section';
     const rectificativeSection = '.q-drawer-container .q-list > a:nth-child(6)';
     const saveDialog = '.q-card > .q-card__actions > .q-btn--standard ';
diff --git a/test/cypress/integration/invoiceIn/invoiceInList.spec.js b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
index d9ab3f7e7..4e77ec95d 100644
--- a/test/cypress/integration/invoiceIn/invoiceInList.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
@@ -22,7 +22,7 @@ describe('InvoiceInList', () => {
             });
     });
 
-    it('should open the details', () => {
+    it.skip('should open the details', () => {
         cy.get(firstDetailBtn).click();
         cy.get(summaryHeaders).eq(1).contains('Basic data');
         cy.get(summaryHeaders).eq(4).contains('Vat');
diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index b7fd11307..9b6cbb57a 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -36,7 +36,7 @@ describe('InvoiceOut summary', () => {
         cy.checkNotification('InvoiceOut deleted');
     });
 
-    it('should transfer the invoice ', () => {
+    it.skip('should transfer the invoice ', () => {
         cy.typeSearchbar('T1111111{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(1)').click();
diff --git a/test/cypress/integration/item/itemList.spec.js b/test/cypress/integration/item/itemList.spec.js
index 49e393451..195679026 100644
--- a/test/cypress/integration/item/itemList.spec.js
+++ b/test/cypress/integration/item/itemList.spec.js
@@ -16,7 +16,7 @@ describe('Item list', () => {
         cy.get('.q-virtual-scroll__content > :nth-child(4) > :nth-child(4)').click();
     });
 
-    it('should create an item', () => {
+    it.skip('should create an item', () => {
         const data = {
             Description: { val: `Test item` },
             Type: { val: `Crisantemo`, type: 'select' },
diff --git a/test/cypress/integration/item/itemTag.spec.js b/test/cypress/integration/item/itemTag.spec.js
index c2de93068..cf0e0b5fe 100644
--- a/test/cypress/integration/item/itemTag.spec.js
+++ b/test/cypress/integration/item/itemTag.spec.js
@@ -19,7 +19,7 @@ describe('Item tag', () => {
         cy.checkNotification("The tag or priority can't be repeated for an item");
     });
 
-    it('should add a new tag', () => {
+    it.skip('should add a new tag', () => {
         cy.get('.q-page').should('be.visible');
         cy.get('.q-page-sticky > div').click();
         cy.get('.q-page-sticky > div').click();
diff --git a/test/cypress/integration/ticket/ticketExpedition.spec.js b/test/cypress/integration/ticket/ticketExpedition.spec.js
index d74a122a1..482991645 100644
--- a/test/cypress/integration/ticket/ticketExpedition.spec.js
+++ b/test/cypress/integration/ticket/ticketExpedition.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
 
-describe('Ticket expedtion', () => {
+describe.skip('Ticket expedtion', () => {
     const tableContent = '.q-table .q-virtual-scroll__content';
     const stateTd = 'td:nth-child(9)';
 
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index e273825c0..891d9b918 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -31,7 +31,7 @@ describe('TicketList', () => {
         cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/);
     });
 
-    it('should open ticket summary', () => {
+    it.skip('should open ticket summary', () => {
         searchResults();
         cy.get(firstRow).find('.q-btn:last').click();
         cy.dataCy('ticketSummary').should('exist');
diff --git a/test/cypress/integration/vnComponent/VnLocation.spec.js b/test/cypress/integration/vnComponent/VnLocation.spec.js
index 14eb0f978..48cb1959f 100644
--- a/test/cypress/integration/vnComponent/VnLocation.spec.js
+++ b/test/cypress/integration/vnComponent/VnLocation.spec.js
@@ -53,7 +53,7 @@ describe('VnLocation', () => {
             cy.waitForElement('.q-card');
             cy.get(inputLocation).click();
         });
-        it('Show all options', function () {
+        it.skip('Show all options', function () {
             cy.get(locationOptions).should('have.length.at.least', 5);
         });
         it('input filter location as "al"', function () {
diff --git a/test/cypress/integration/zone/zoneWarehouse.spec.js b/test/cypress/integration/zone/zoneWarehouse.spec.js
index 817e26312..dc9dfa431 100644
--- a/test/cypress/integration/zone/zoneWarehouse.spec.js
+++ b/test/cypress/integration/zone/zoneWarehouse.spec.js
@@ -19,7 +19,7 @@ describe('ZoneWarehouse', () => {
         cy.checkNotification(dataError);
     });
 
-    it('should create & remove a warehouse', () => {
+    it.skip('should create & remove a warehouse', () => {
         cy.addBtnClick();
         cy.fillInForm(data);
         cy.get(saveBtn).click();

From b5ae3a19012f1b74f3356ea5afe3833377f6b9b7 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Thu, 16 Jan 2025 16:27:18 +0100
Subject: [PATCH 14/22] chore: refs #8198 rollback

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

diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index 2f28d99b1..557a14106 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -28,7 +28,7 @@ describe('InvoiceOut summary', () => {
         cy.checkNotification('The following refund ticket have been created 1000000');
     });
 
-    it.skip('should delete an invoice ', () => {
+    it('should delete an invoice ', () => {
         cy.typeSearchbar('T2222222{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(4)').click();

From fb530d8408c18172c325798994bf9521451d3829 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Thu, 16 Jan 2025 16:29:28 +0100
Subject: [PATCH 15/22] chore: refs #8198 rollback

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

diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index 557a14106..b7fd11307 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -20,7 +20,7 @@ describe('InvoiceOut summary', () => {
         cy.checkNotification('The invoice PDF document has been regenerated');
     });
 
-    it.skip('should refund the invoice ', () => {
+    it('should refund the invoice ', () => {
         cy.typeSearchbar('T1111111{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(7)').click();

From 972b377e131fb7b110eb82658c269ebedaaa3974 Mon Sep 17 00:00:00 2001
From: Jon <jon@verdnatura.es>
Date: Fri, 17 Jan 2025 07:35:23 +0100
Subject: [PATCH 16/22] fix: redirect when confirming lines

---
 src/pages/Order/Card/OrderLines.vue | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/pages/Order/Card/OrderLines.vue b/src/pages/Order/Card/OrderLines.vue
index 9d802c557..2c9b1618b 100644
--- a/src/pages/Order/Card/OrderLines.vue
+++ b/src/pages/Order/Card/OrderLines.vue
@@ -227,10 +227,7 @@ async function handleConfirm() {
             type: 'positive',
         });
         router.push({
-            name: 'TicketSale',
-            query: {
-                table: JSON.stringify({ id: ticket.data[0].ticketFk }),
-            },
+            path: `/ticket/${ticket.data[0].ticketFk}/sale?table={"filter":{"limit":20,"skip":0}}`,
         });
     }
 }

From c2cbcb330950f05059868f85c9f026a305fd6d7a Mon Sep 17 00:00:00 2001
From: jtubau <jtubau@verdnatura.es>
Date: Fri, 17 Jan 2025 08:58:25 +0100
Subject: [PATCH 17/22] refactor: refs #8316 add new localization keys and
 update existing ones for entry components

---
 src/i18n/locale/en.yml               |  3 ++
 src/i18n/locale/es.yml               |  4 ++
 src/pages/Entry/EntryFilter.vue      | 61 +++++++---------------------
 src/pages/Entry/EntryLatestBuys.vue  |  9 +---
 src/pages/Entry/EntryStockBought.vue | 35 +++++-----------
 src/pages/Entry/MyEntries.vue        |  8 +---
 src/pages/Entry/locale/en.yml        | 26 +++++++++++-
 src/pages/Entry/locale/es.yml        | 26 +++++++++++-
 8 files changed, 87 insertions(+), 85 deletions(-)

diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml
index 80f18238d..7c733eae8 100644
--- a/src/i18n/locale/en.yml
+++ b/src/i18n/locale/en.yml
@@ -816,7 +816,10 @@ components:
         hasMinPrice: Minimum price
         # LatestBuysFilter
         salesPersonFk: Buyer
+        supplierFk: Supplier
         from: From
+        to: To
+        visible: Is visible
         active: Is active
         floramondo: Is floramondo
         showBadDates: Show future items
diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml
index 786236617..d13ccf3f9 100644
--- a/src/i18n/locale/es.yml
+++ b/src/i18n/locale/es.yml
@@ -816,7 +816,11 @@ components:
         wareHouseFk: Almacén
         # LatestBuysFilter
         salesPersonFk: Comprador
+        supplierFk: Proveedor
+        visible: Visible
         active: Activo
+        from: Desde
+        to: Hasta
         floramondo: Floramondo
         showBadDates: Ver items a futuro
     userPanel:
diff --git a/src/pages/Entry/EntryFilter.vue b/src/pages/Entry/EntryFilter.vue
index f91f7f128..bc8b40aaa 100644
--- a/src/pages/Entry/EntryFilter.vue
+++ b/src/pages/Entry/EntryFilter.vue
@@ -40,7 +40,7 @@ const companiesOptions = ref([]);
     <VnFilterPanel :data-key="props.dataKey" :search-button="true">
         <template #tags="{ tag, formatFn }">
             <div class="q-gutter-x-xs">
-                <strong>{{ t(`params.${tag.label}`) }}: </strong>
+                <strong>{{ t(`entryFilter.params.${tag.label}`) }}: </strong>
                 <span>{{ formatFn(tag.value) }}</span>
             </div>
         </template>
@@ -49,7 +49,7 @@ const companiesOptions = ref([]);
                 <QItemSection>
                     <VnInput
                         v-model="params.search"
-                        :label="t('entryFilter.filter.search')"
+                        :label="t('entryFilter.params.search')"
                         is-outlined
                     />
                 </QItemSection>
@@ -58,7 +58,7 @@ const companiesOptions = ref([]);
                 <QItemSection>
                     <VnInput
                         v-model="params.reference"
-                        :label="t('entryFilter.filter.reference')"
+                        :label="t('entryFilter.params.reference')"
                         is-outlined
                     />
                 </QItemSection>
@@ -67,7 +67,7 @@ const companiesOptions = ref([]);
                 <QItemSection>
                     <VnInput
                         v-model="params.invoiceNumber"
-                        :label="t('params.invoiceNumber')"
+                        :label="t('entryFilter.params.invoiceNumber')"
                         is-outlined
                     />
                 </QItemSection>
@@ -76,7 +76,7 @@ const companiesOptions = ref([]);
                 <QItemSection>
                     <VnInput
                         v-model="params.travelFk"
-                        :label="t('params.travelFk')"
+                        :label="t('entryFilter.params.travelFk')"
                         is-outlined
                     />
                 </QItemSection>
@@ -84,7 +84,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <VnSelect
-                        :label="t('params.companyFk')"
+                        :label="t('entryFilter.params.companyFk')"
                         v-model="params.companyFk"
                         @update:model-value="searchFn()"
                         :options="companiesOptions"
@@ -100,7 +100,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <VnSelect
-                        :label="t('params.currencyFk')"
+                        :label="t('entryFilter.params.currencyFk')"
                         v-model="params.currencyFk"
                         @update:model-value="searchFn()"
                         :options="currenciesOptions"
@@ -116,7 +116,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <VnSelect
-                        :label="t('params.supplierFk')"
+                        :label="t('entryFilter.params.supplierFk')"
                         v-model="params.supplierFk"
                         @update:model-value="searchFn()"
                         url="Suppliers"
@@ -148,7 +148,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <VnInputDate
-                        :label="t('params.created')"
+                        :label="t('entryFilter.params.created')"
                         v-model="params.created"
                         @update:model-value="searchFn()"
                         is-outlined
@@ -158,7 +158,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <VnInputDate
-                        :label="t('params.from')"
+                        :label="t('entryFilter.params.from')"
                         v-model="params.from"
                         @update:model-value="searchFn()"
                         is-outlined
@@ -168,7 +168,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <VnInputDate
-                        :label="t('params.to')"
+                        :label="t('entryFilter.params.to')"
                         v-model="params.to"
                         @update:model-value="searchFn()"
                         is-outlined
@@ -178,14 +178,14 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <QCheckbox
-                        :label="t('params.isBooked')"
+                        :label="t('entryFilter.params.isBooked')"
                         v-model="params.isBooked"
                         toggle-indeterminate
                     />
                 </QItemSection>
                 <QItemSection>
                     <QCheckbox
-                        :label="t('params.isConfirmed')"
+                        :label="t('entryFilter.params.isConfirmed')"
                         v-model="params.isConfirmed"
                         toggle-indeterminate
                     />
@@ -194,7 +194,7 @@ const companiesOptions = ref([]);
             <QItem>
                 <QItemSection>
                     <QCheckbox
-                        :label="t('params.isOrdered')"
+                        :label="t('entryFilter.params.isOrdered')"
                         v-model="params.isOrdered"
                         toggle-indeterminate
                     />
@@ -202,35 +202,4 @@ const companiesOptions = ref([]);
             </QItem>
         </template>
     </VnFilterPanel>
-</template>
-
-<i18n>
-en:
-    params:
-        
-        invoiceNumber: Invoice number
-        travelFk: Travel
-        companyFk: Company
-        currencyFk: Currency
-        supplierFk: Supplier
-        from: From
-        to: To
-        created: Created
-        isBooked: Booked
-        isConfirmed: Confirmed
-        isOrdered: Ordered
-es:
-    params:
-       
-        invoiceNumber: Núm. factura
-        travelFk: Envío
-        companyFk: Empresa
-        currencyFk: Moneda
-        supplierFk: Proveedor
-        from: Desde
-        to: Hasta
-        created: Fecha creación
-        isBooked: Asentado
-        isConfirmed: Confirmado
-        isOrdered: Pedida
-</i18n>
+</template>
\ No newline at end of file
diff --git a/src/pages/Entry/EntryLatestBuys.vue b/src/pages/Entry/EntryLatestBuys.vue
index 450efe624..73fdcbbbf 100644
--- a/src/pages/Entry/EntryLatestBuys.vue
+++ b/src/pages/Entry/EntryLatestBuys.vue
@@ -102,7 +102,7 @@ const columns = [
     },
     {
         align: 'left',
-        label: t('globals.weightByPiece'),
+        label: t('entry.latestBuys.tableVisibleColumns.weightByPiece'),
         name: 'weightByPiece',
         columnFilter: {
             component: 'number',
@@ -157,7 +157,7 @@ const columns = [
     },
     {
         align: 'left',
-        label: t('entry.buys.packageValue'),
+        label: t('entry.latestBuys.tableVisibleColumns.packageValue'),
         name: 'packageValue',
         columnFilter: {
             component: 'number',
@@ -262,8 +262,3 @@ onUnmounted(() => (stateStore.rightDrawer = false));
         :right-search="false"
     />
 </template>
-
-<i18n>
-es:
-    Edit buy(s): Editar compra(s)
-</i18n>
diff --git a/src/pages/Entry/EntryStockBought.vue b/src/pages/Entry/EntryStockBought.vue
index 3f0cd2d99..fa0bdc12e 100644
--- a/src/pages/Entry/EntryStockBought.vue
+++ b/src/pages/Entry/EntryStockBought.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { ref } from 'vue';
+import { ref, computed } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { useState } from 'src/composables/useState';
 import { useQuasar } from 'quasar';
@@ -19,7 +19,7 @@ const { t } = useI18n();
 const quasar = useQuasar();
 const state = useState();
 const user = state.getUser();
-const columns = [
+const columns = computed(() => [
     {
         align: 'left',
         label: 'Id',
@@ -31,7 +31,7 @@ const columns = [
     {
         align: 'left',
         name: 'workerFk',
-        label: t('Buyer'),
+        label: t('entryStockBought.buyer'),
         isTitle: true,
         component: 'select',
         cardVisible: true,
@@ -49,7 +49,7 @@ const columns = [
     },
     {
         align: 'center',
-        label: t('Reserve'),
+        label: t('entryStockBought.reserve'),
         name: 'reserve',
         columnFilter: false,
         create: true,
@@ -58,7 +58,7 @@ const columns = [
     },
     {
         align: 'center',
-        label: t('Bought'),
+        label: t('entryStockBought.bought'),
         name: 'bought',
         summation: true,
         cardVisible: true,
@@ -66,7 +66,7 @@ const columns = [
     },
     {
         align: 'left',
-        label: t('Date'),
+        label: t('entryStockBought.date'),
         name: 'dated',
         component: 'date',
         visible: false,
@@ -77,7 +77,7 @@ const columns = [
         name: 'tableActions',
         actions: [
             {
-                title: t('View more details'),
+                title: t('entryStockBought.viewMoreDetails'),
                 icon: 'search',
                 isPrimary: true,
                 action: (row) => {
@@ -92,7 +92,7 @@ const columns = [
             },
         ],
     },
-];
+]);
 
 const fetchDataRef = ref();
 const travelDialogRef = ref(false);
@@ -166,7 +166,7 @@ function round(value) {
             <VnRow class="travel">
                 <div v-if="travel">
                     <span style="color: var(--vn-label-color)">
-                        {{ t('Purchase Spaces') }}:
+                        {{ t('entryStockBought.purchaseSpaces') }}:
                     </span>
                     <span>
                         {{ travel?.m3 }}
@@ -177,7 +177,7 @@ function round(value) {
                         flat
                         icon="edit"
                         @click="openDialog()"
-                        :title="t('Edit travel')"
+                        :title="t('entryStockBought.editTravel')"
                         color="primary"
                     />
                 </div>
@@ -226,7 +226,7 @@ function round(value) {
                 @on-fetch="(data) => setFooter(data)"
                 :create="{
                     urlCreate: 'StockBoughts',
-                    title: t('Reserve some space'),
+                    title: t('entryStockBought.reserveSomeSpace'),
                     onDataSaved: () => tableRef.reload(),
                     formInitialData: {
                         workerFk: user.id,
@@ -288,16 +288,3 @@ function round(value) {
     color: $negative !important;
 }
 </style>
-<i18n>
-    es:
-        Edit travel: Editar envío
-        Travel: Envíos
-        Purchase Spaces: Espacios de compra
-        Buyer: Comprador
-        Reserve: Reservado
-        Bought: Comprado
-        Date: Fecha
-        View more details: Ver más detalles
-        Reserve some space: Reservar espacio
-        This buyer has already made a reservation for this date: Este comprador ya ha hecho una reserva para esta fecha
-</i18n>
diff --git a/src/pages/Entry/MyEntries.vue b/src/pages/Entry/MyEntries.vue
index dbe05eb88..3f7566ae0 100644
--- a/src/pages/Entry/MyEntries.vue
+++ b/src/pages/Entry/MyEntries.vue
@@ -123,8 +123,8 @@ const printBuys = (rowId) => {
     <VnSearchbar
         data-key="myEntriesList"
         url="Entries/filter"
-        :label="t('Search entries')"
-        :info="t('You can search by entry reference')"
+        :label="t('myEntries.search')"
+        :info="t('myEntries.searchInfo')"
     />
     <VnTable
         data-key="myEntriesList"
@@ -137,7 +137,3 @@ const printBuys = (rowId) => {
         chip-locale="myEntries"
     />
 </template>
-
-<i18n>
-    You can search by entry reference: Puedes buscar por referencia de la entrada
-</i18n>
diff --git a/src/pages/Entry/locale/en.yml b/src/pages/Entry/locale/en.yml
index 5d0162fe2..ff83de0ab 100644
--- a/src/pages/Entry/locale/en.yml
+++ b/src/pages/Entry/locale/en.yml
@@ -75,7 +75,18 @@ entry:
     search: Search entries
     searchInfo: You can search by entry reference
 entryFilter:
-    filter:
+    params:
+        invoiceNumber: Invoice number
+        travelFk: Travel
+        companyFk: Company
+        currencyFk: Currency
+        supplierFk: Supplier
+        from: From
+        to: To
+        created: Created
+        isBooked: Booked
+        isConfirmed: Confirmed
+        isOrdered: Ordered
         search: General search
         reference: Reference
 myEntries:
@@ -91,5 +102,18 @@ myEntries:
     daysOnward: Days onward
     daysAgo: Days ago
     downloadCsv: Download CSV
+    search: Search entries
+    searchInfo: You can search by entry reference
+entryStockBought:
+    travel: Travel
+    editTravel: Edit travel
+    purchaseSpaces: Purchase spaces
+    buyer: Buyer
+    reserve: Reserve
+    bought: Bought
+    date: Date
+    viewMoreDetails: View more details
+    reserveSomeSpace: Reserve some space
+    thisBuyerHasReservationThisDate: This buyer has already made a reservation for this date
 wasteRecalc:
     recalcOk: The wastes were successfully recalculated
diff --git a/src/pages/Entry/locale/es.yml b/src/pages/Entry/locale/es.yml
index 064dcbfd9..72072f6ab 100644
--- a/src/pages/Entry/locale/es.yml
+++ b/src/pages/Entry/locale/es.yml
@@ -76,7 +76,18 @@ entry:
     search: Buscar entradas
     searchInfo: Puedes buscar por referencia de entrada
 entryFilter:
-    filter:
+    params:
+        invoiceNumber: Núm. factura
+        travelFk: Envío
+        companyFk: Empresa
+        currencyFk: Moneda
+        supplierFk: Proveedor
+        from: Desde
+        to: Hasta
+        created: Fecha creación
+        isBooked: Asentado
+        isConfirmed: Confirmado
+        isOrdered: Pedida
         search: Búsqueda general
         reference: Referencia
 myEntries:
@@ -92,5 +103,18 @@ myEntries:
     daysOnward: Días adelante
     daysAgo: Días atras
     downloadCsv: Descargar CSV
+    search: Buscar entradas
+    searchInfo: Puedes buscar por referencia de la entrada
+entryStockBought:
+    travel: Envío
+    editTravel: Editar envío
+    purchaseSpaces: Espacios de compra
+    buyer: Comprador
+    reserve: Reservado
+    bought: Comprado
+    date: Fecha
+    viewMoreDetails: Ver más detalles
+    reserveSomeSpace: Reservar espacio
+    thisBuyerHasReservationThisDate: Este comprador ya ha hecho una reserva para esta fecha
 wasteRecalc:
     recalcOk: Se han recalculado las mermas correctamente

From e1a395b0158312fc0e27261b70c18403a8115426 Mon Sep 17 00:00:00 2001
From: Jon <jon@verdnatura.es>
Date: Fri, 17 Jan 2025 13:07:30 +0100
Subject: [PATCH 18/22] refactor: redirect using  params

---
 src/pages/Order/Card/OrderLines.vue | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/pages/Order/Card/OrderLines.vue b/src/pages/Order/Card/OrderLines.vue
index 2c9b1618b..36dc3883e 100644
--- a/src/pages/Order/Card/OrderLines.vue
+++ b/src/pages/Order/Card/OrderLines.vue
@@ -227,7 +227,9 @@ async function handleConfirm() {
             type: 'positive',
         });
         router.push({
-            path: `/ticket/${ticket.data[0].ticketFk}/sale?table={"filter":{"limit":20,"skip":0}}`,
+            name: 'TicketSale',
+            params: { id: ticket.data[0].ticketFk },
+            query: { table: JSON.stringify({ filter: { limit: 20, skip: 0 } }) },
         });
     }
 }

From 32909a96bdac41d10b47274434676c4e0cda55c5 Mon Sep 17 00:00:00 2001
From: provira <provira@verdnatura.es>
Date: Fri, 17 Jan 2025 13:19:12 +0100
Subject: [PATCH 19/22] feat: refs #8258 added uppercase validation on supplier
 create

---
 src/pages/Supplier/SupplierList.vue | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/pages/Supplier/SupplierList.vue b/src/pages/Supplier/SupplierList.vue
index 607c46a54..85cc11857 100644
--- a/src/pages/Supplier/SupplierList.vue
+++ b/src/pages/Supplier/SupplierList.vue
@@ -5,6 +5,7 @@ import VnTable from 'components/VnTable/VnTable.vue';
 import VnSearchbar from 'components/ui/VnSearchbar.vue';
 import RightMenu from 'src/components/common/RightMenu.vue';
 import SupplierListFilter from './SupplierListFilter.vue';
+import VnInput from 'src/components/common/VnInput.vue';
 
 const { t } = useI18n();
 const tableRef = ref();
@@ -23,7 +24,6 @@ const columns = computed(() => [
         align: 'left',
         label: t('globals.name'),
         name: 'socialName',
-        create: true,
         attrs: {
             uppercase: true,
         },
@@ -124,14 +124,18 @@ const columns = computed(() => [
             formInitialData: {},
             mapper: (data) => {
                 data.name = data.socialName;
-                delete data.socialName;
+
                 return data;
             },
         }"
         :right-search="false"
         order="id ASC"
         :columns="columns"
-    />
+    >
+        <template #more-create-dialog="{ data }">
+            <VnInput :label="t('globals.name')" v-model="data.socialName" :uppercase="true" />
+            </template>
+    </VnTable>
 </template>
 
 <i18n>

From 18d4661bc31bc85b5e2874116e089e4c432035d2 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Mon, 20 Jan 2025 11:37:28 +0100
Subject: [PATCH 20/22] chore: add task comment

---
 test/cypress/integration/claim/claimPhoto.spec.js           | 3 ++-
 test/cypress/integration/entry/myEntry.spec.js              | 4 ++--
 .../integration/invoiceIn/invoiceInCorrective.spec.js       | 4 ++--
 test/cypress/integration/invoiceIn/invoiceInList.spec.js    | 4 ++--
 .../integration/invoiceOut/invoiceOutSummary.spec.js        | 4 ++--
 test/cypress/integration/item/itemList.spec.js              | 4 ++--
 test/cypress/integration/item/itemTag.spec.js               | 4 ++--
 test/cypress/integration/ticket/ticketExpedition.spec.js    | 4 ++--
 test/cypress/integration/ticket/ticketList.spec.js          | 6 +++---
 test/cypress/integration/zone/zoneWarehouse.spec.js         | 4 ++--
 10 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/test/cypress/integration/claim/claimPhoto.spec.js b/test/cypress/integration/claim/claimPhoto.spec.js
index 0d540a0b7..a79c36f12 100755
--- a/test/cypress/integration/claim/claimPhoto.spec.js
+++ b/test/cypress/integration/claim/claimPhoto.spec.js
@@ -1,5 +1,6 @@
 /// <reference types="cypress" />
-describe.skip('ClaimPhoto', () => {
+// redmine.verdnatura.es/issues/8417
+describe('ClaimPhoto', () => {
     beforeEach(() => {
         const claimId = 1;
         cy.login('developer');
diff --git a/test/cypress/integration/entry/myEntry.spec.js b/test/cypress/integration/entry/myEntry.spec.js
index 9f45c3729..77d1c51c8 100644
--- a/test/cypress/integration/entry/myEntry.spec.js
+++ b/test/cypress/integration/entry/myEntry.spec.js
@@ -8,8 +8,8 @@ describe('EntryMy when is supplier', () => {
             },
         });
     });
-
-    it.skip('should open buyLabel when is supplier', () => {
+    // https://redmine.verdnatura.es/issues/8418
+    it('should open buyLabel when is supplier', () => {
         cy.get(
             '[to="/null/3"] > .q-card > .column > .q-btn > .q-btn__content > .q-icon'
         ).click();
diff --git a/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js b/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
index 446d6782a..50f71dd94 100644
--- a/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
-
-describe.skip('InvoiceInCorrective', () => {
+// https://redmine.verdnatura.es/issues/8419
+describe('InvoiceInCorrective', () => {
     const createCorrective = '.q-menu > .q-list > :nth-child(6) > .q-item__section';
     const rectificativeSection = '.q-drawer-container .q-list > a:nth-child(6)';
     const saveDialog = '.q-card > .q-card__actions > .q-btn--standard ';
diff --git a/test/cypress/integration/invoiceIn/invoiceInList.spec.js b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
index 4e77ec95d..aa9af5120 100644
--- a/test/cypress/integration/invoiceIn/invoiceInList.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
@@ -21,8 +21,8 @@ describe('InvoiceInList', () => {
                 cy.url().should('include', `/invoice-in/${id}/summary`);
             });
     });
-
-    it.skip('should open the details', () => {
+    // https://redmine.verdnatura.es/issues/8420
+    it('should open the details', () => {
         cy.get(firstDetailBtn).click();
         cy.get(summaryHeaders).eq(1).contains('Basic data');
         cy.get(summaryHeaders).eq(4).contains('Vat');
diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index 9b6cbb57a..5c43ad42f 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -35,8 +35,8 @@ describe('InvoiceOut summary', () => {
         cy.dataCy('VnConfirm_confirm').click();
         cy.checkNotification('InvoiceOut deleted');
     });
-
-    it.skip('should transfer the invoice ', () => {
+    // https://redmine.verdnatura.es/issues/8415
+    it('should transfer the invoice ', () => {
         cy.typeSearchbar('T1111111{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(1)').click();
diff --git a/test/cypress/integration/item/itemList.spec.js b/test/cypress/integration/item/itemList.spec.js
index 195679026..3539b02de 100644
--- a/test/cypress/integration/item/itemList.spec.js
+++ b/test/cypress/integration/item/itemList.spec.js
@@ -15,8 +15,8 @@ describe('Item list', () => {
         cy.get('.q-menu .q-item').contains('Anthurium').click();
         cy.get('.q-virtual-scroll__content > :nth-child(4) > :nth-child(4)').click();
     });
-
-    it.skip('should create an item', () => {
+    // https://redmine.verdnatura.es/issues/8421
+    it('should create an item', () => {
         const data = {
             Description: { val: `Test item` },
             Type: { val: `Crisantemo`, type: 'select' },
diff --git a/test/cypress/integration/item/itemTag.spec.js b/test/cypress/integration/item/itemTag.spec.js
index cf0e0b5fe..6748b748b 100644
--- a/test/cypress/integration/item/itemTag.spec.js
+++ b/test/cypress/integration/item/itemTag.spec.js
@@ -18,8 +18,8 @@ describe('Item tag', () => {
         +cy.dataCy('crudModelDefaultSaveBtn').click();
         cy.checkNotification("The tag or priority can't be repeated for an item");
     });
-
-    it.skip('should add a new tag', () => {
+    // https://redmine.verdnatura.es/issues/8422
+    it('should add a new tag', () => {
         cy.get('.q-page').should('be.visible');
         cy.get('.q-page-sticky > div').click();
         cy.get('.q-page-sticky > div').click();
diff --git a/test/cypress/integration/ticket/ticketExpedition.spec.js b/test/cypress/integration/ticket/ticketExpedition.spec.js
index 482991645..4c556c8bd 100644
--- a/test/cypress/integration/ticket/ticketExpedition.spec.js
+++ b/test/cypress/integration/ticket/ticketExpedition.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
-
-describe.skip('Ticket expedtion', () => {
+// https://redmine.verdnatura.es/issues/8423
+describe('Ticket expedtion', () => {
     const tableContent = '.q-table .q-virtual-scroll__content';
     const stateTd = 'td:nth-child(9)';
 
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index 891d9b918..e2c450e96 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -30,14 +30,14 @@ describe('TicketList', () => {
         cy.get(firstRow).find('.q-btn:first').click();
         cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/);
     });
-
-    it.skip('should open ticket summary', () => {
+    // https://redmine.verdnatura.es/issues/8424
+    it('should open ticket summary', () => {
         searchResults();
         cy.get(firstRow).find('.q-btn:last').click();
         cy.dataCy('ticketSummary').should('exist');
     });
 
-    it.skip('Client list create new client', () => {
+    it('Client list create new client', () => {
         cy.dataCy('vnTableCreateBtn').should('exist');
         cy.dataCy('vnTableCreateBtn').click();
         const data = {
diff --git a/test/cypress/integration/zone/zoneWarehouse.spec.js b/test/cypress/integration/zone/zoneWarehouse.spec.js
index dc9dfa431..9262e02d3 100644
--- a/test/cypress/integration/zone/zoneWarehouse.spec.js
+++ b/test/cypress/integration/zone/zoneWarehouse.spec.js
@@ -18,8 +18,8 @@ describe('ZoneWarehouse', () => {
         cy.get(saveBtn).click();
         cy.checkNotification(dataError);
     });
-
-    it.skip('should create & remove a warehouse', () => {
+    // https://redmine.verdnatura.es/issues/8425
+    it('should create & remove a warehouse', () => {
         cy.addBtnClick();
         cy.fillInForm(data);
         cy.get(saveBtn).click();

From 1d3feef1e7faa9b01c5cf8591172dd5166aa3feb Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Mon, 20 Jan 2025 11:39:59 +0100
Subject: [PATCH 21/22] chore: add task comment

---
 test/cypress/integration/vnComponent/VnLocation.spec.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/test/cypress/integration/vnComponent/VnLocation.spec.js b/test/cypress/integration/vnComponent/VnLocation.spec.js
index 48cb1959f..f4354bee7 100644
--- a/test/cypress/integration/vnComponent/VnLocation.spec.js
+++ b/test/cypress/integration/vnComponent/VnLocation.spec.js
@@ -53,7 +53,8 @@ describe('VnLocation', () => {
             cy.waitForElement('.q-card');
             cy.get(inputLocation).click();
         });
-        it.skip('Show all options', function () {
+        // https://redmine.verdnatura.es/issues/8436
+        it('Show all options', function () {
             cy.get(locationOptions).should('have.length.at.least', 5);
         });
         it('input filter location as "al"', function () {

From 7d57b1ebe73042041682d01fe763604a26e4e1c0 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Mon, 20 Jan 2025 13:13:09 +0100
Subject: [PATCH 22/22] test: skip

---
 test/cypress/integration/claim/claimPhoto.spec.js             | 2 +-
 test/cypress/integration/entry/myEntry.spec.js                | 2 +-
 .../cypress/integration/invoiceIn/invoiceInCorrective.spec.js | 2 +-
 test/cypress/integration/invoiceIn/invoiceInList.spec.js      | 2 +-
 test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js | 2 +-
 test/cypress/integration/item/itemList.spec.js                | 2 +-
 test/cypress/integration/item/itemTag.spec.js                 | 2 +-
 test/cypress/integration/ticket/ticketExpedition.spec.js      | 2 +-
 test/cypress/integration/ticket/ticketList.spec.js            | 4 ++--
 test/cypress/integration/vnComponent/VnLocation.spec.js       | 2 +-
 test/cypress/integration/zone/zoneWarehouse.spec.js           | 2 +-
 11 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/test/cypress/integration/claim/claimPhoto.spec.js b/test/cypress/integration/claim/claimPhoto.spec.js
index a79c36f12..0a7320060 100755
--- a/test/cypress/integration/claim/claimPhoto.spec.js
+++ b/test/cypress/integration/claim/claimPhoto.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
 // redmine.verdnatura.es/issues/8417
-describe('ClaimPhoto', () => {
+describe.skip('ClaimPhoto', () => {
     beforeEach(() => {
         const claimId = 1;
         cy.login('developer');
diff --git a/test/cypress/integration/entry/myEntry.spec.js b/test/cypress/integration/entry/myEntry.spec.js
index 77d1c51c8..c25476419 100644
--- a/test/cypress/integration/entry/myEntry.spec.js
+++ b/test/cypress/integration/entry/myEntry.spec.js
@@ -9,7 +9,7 @@ describe('EntryMy when is supplier', () => {
         });
     });
     // https://redmine.verdnatura.es/issues/8418
-    it('should open buyLabel when is supplier', () => {
+    it.skip('should open buyLabel when is supplier', () => {
         cy.get(
             '[to="/null/3"] > .q-card > .column > .q-btn > .q-btn__content > .q-icon'
         ).click();
diff --git a/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js b/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
index 50f71dd94..c2f111892 100644
--- a/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInCorrective.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
 // https://redmine.verdnatura.es/issues/8419
-describe('InvoiceInCorrective', () => {
+describe.skip('InvoiceInCorrective', () => {
     const createCorrective = '.q-menu > .q-list > :nth-child(6) > .q-item__section';
     const rectificativeSection = '.q-drawer-container .q-list > a:nth-child(6)';
     const saveDialog = '.q-card > .q-card__actions > .q-btn--standard ';
diff --git a/test/cypress/integration/invoiceIn/invoiceInList.spec.js b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
index aa9af5120..0eb495419 100644
--- a/test/cypress/integration/invoiceIn/invoiceInList.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
@@ -22,7 +22,7 @@ describe('InvoiceInList', () => {
             });
     });
     // https://redmine.verdnatura.es/issues/8420
-    it('should open the details', () => {
+    it.skip('should open the details', () => {
         cy.get(firstDetailBtn).click();
         cy.get(summaryHeaders).eq(1).contains('Basic data');
         cy.get(summaryHeaders).eq(4).contains('Vat');
diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index 5c43ad42f..27f887eeb 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -36,7 +36,7 @@ describe('InvoiceOut summary', () => {
         cy.checkNotification('InvoiceOut deleted');
     });
     // https://redmine.verdnatura.es/issues/8415
-    it('should transfer the invoice ', () => {
+    it.skip('should transfer the invoice ', () => {
         cy.typeSearchbar('T1111111{enter}');
         cy.dataCy('descriptor-more-opts').click();
         cy.get('.q-menu > .q-list > :nth-child(1)').click();
diff --git a/test/cypress/integration/item/itemList.spec.js b/test/cypress/integration/item/itemList.spec.js
index 3539b02de..97e85a212 100644
--- a/test/cypress/integration/item/itemList.spec.js
+++ b/test/cypress/integration/item/itemList.spec.js
@@ -16,7 +16,7 @@ describe('Item list', () => {
         cy.get('.q-virtual-scroll__content > :nth-child(4) > :nth-child(4)').click();
     });
     // https://redmine.verdnatura.es/issues/8421
-    it('should create an item', () => {
+    it.skip('should create an item', () => {
         const data = {
             Description: { val: `Test item` },
             Type: { val: `Crisantemo`, type: 'select' },
diff --git a/test/cypress/integration/item/itemTag.spec.js b/test/cypress/integration/item/itemTag.spec.js
index 6748b748b..28e0a747f 100644
--- a/test/cypress/integration/item/itemTag.spec.js
+++ b/test/cypress/integration/item/itemTag.spec.js
@@ -19,7 +19,7 @@ describe('Item tag', () => {
         cy.checkNotification("The tag or priority can't be repeated for an item");
     });
     // https://redmine.verdnatura.es/issues/8422
-    it('should add a new tag', () => {
+    it.skip('should add a new tag', () => {
         cy.get('.q-page').should('be.visible');
         cy.get('.q-page-sticky > div').click();
         cy.get('.q-page-sticky > div').click();
diff --git a/test/cypress/integration/ticket/ticketExpedition.spec.js b/test/cypress/integration/ticket/ticketExpedition.spec.js
index 4c556c8bd..d957f2136 100644
--- a/test/cypress/integration/ticket/ticketExpedition.spec.js
+++ b/test/cypress/integration/ticket/ticketExpedition.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
 // https://redmine.verdnatura.es/issues/8423
-describe('Ticket expedtion', () => {
+describe.skip('Ticket expedtion', () => {
     const tableContent = '.q-table .q-virtual-scroll__content';
     const stateTd = 'td:nth-child(9)';
 
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index e2c450e96..3337287c4 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -31,13 +31,13 @@ describe('TicketList', () => {
         cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/);
     });
     // https://redmine.verdnatura.es/issues/8424
-    it('should open ticket summary', () => {
+    it.skip('should open ticket summary', () => {
         searchResults();
         cy.get(firstRow).find('.q-btn:last').click();
         cy.dataCy('ticketSummary').should('exist');
     });
 
-    it('Client list create new client', () => {
+    it.skip('Client list create new client', () => {
         cy.dataCy('vnTableCreateBtn').should('exist');
         cy.dataCy('vnTableCreateBtn').click();
         const data = {
diff --git a/test/cypress/integration/vnComponent/VnLocation.spec.js b/test/cypress/integration/vnComponent/VnLocation.spec.js
index f4354bee7..09665a816 100644
--- a/test/cypress/integration/vnComponent/VnLocation.spec.js
+++ b/test/cypress/integration/vnComponent/VnLocation.spec.js
@@ -54,7 +54,7 @@ describe('VnLocation', () => {
             cy.get(inputLocation).click();
         });
         // https://redmine.verdnatura.es/issues/8436
-        it('Show all options', function () {
+        it.skip('Show all options', function () {
             cy.get(locationOptions).should('have.length.at.least', 5);
         });
         it('input filter location as "al"', function () {
diff --git a/test/cypress/integration/zone/zoneWarehouse.spec.js b/test/cypress/integration/zone/zoneWarehouse.spec.js
index 9262e02d3..a55a5619e 100644
--- a/test/cypress/integration/zone/zoneWarehouse.spec.js
+++ b/test/cypress/integration/zone/zoneWarehouse.spec.js
@@ -19,7 +19,7 @@ describe('ZoneWarehouse', () => {
         cy.checkNotification(dataError);
     });
     // https://redmine.verdnatura.es/issues/8425
-    it('should create & remove a warehouse', () => {
+    it.skip('should create & remove a warehouse', () => {
         cy.addBtnClick();
         cy.fillInForm(data);
         cy.get(saveBtn).click();