From 5462d3ce9a823b28682863fca9afd64689242813 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 5 Feb 2024 09:57:09 +0100
Subject: [PATCH 01/22] refs #6787 isLoading

---
 src/pages/Customer/Card/CustomerDescriptor.vue | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/pages/Customer/Card/CustomerDescriptor.vue b/src/pages/Customer/Card/CustomerDescriptor.vue
index 222406d8a..833a310ad 100644
--- a/src/pages/Customer/Card/CustomerDescriptor.vue
+++ b/src/pages/Customer/Card/CustomerDescriptor.vue
@@ -19,16 +19,17 @@ const $props = defineProps({
         default: null,
     },
 });
-
+const isLoading = ref(false);
 const route = useRoute();
 const { t } = useI18n();
-
 const entityId = computed(() => {
     return $props.id || route.params.id;
 });
+isLoading.value = true;
 
 const data = ref(useCardDescription());
 const setData = (entity) => (data.value = useCardDescription(entity.name, entity.id));
+isLoading.value = false;
 </script>
 
 <template>
@@ -121,6 +122,11 @@ const setData = (entity) => (data.value = useCardDescription(entity.name, entity
             </QCardActions>
         </template>
     </CardDescriptor>
+    <QInnerLoading
+        :label="t('globals.pleaseWait')"
+        :showing="isLoading"
+        color="primary"
+    />
 </template>
 <i18n>
 {

From 760b2d5574a621a44a2532cbe418c47738f63917 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 5 Feb 2024 10:30:23 +0100
Subject: [PATCH 02/22] refs #6787 isLoading CardDescriptor

---
 src/components/ui/CardDescriptor.vue | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/components/ui/CardDescriptor.vue b/src/components/ui/CardDescriptor.vue
index 8f6ffa35d..afedfe06f 100644
--- a/src/components/ui/CardDescriptor.vue
+++ b/src/components/ui/CardDescriptor.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { onMounted, useSlots, watch, computed } from 'vue';
+import { onMounted, useSlots, watch, computed, ref } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { useQuasar } from 'quasar';
 import SkeletonDescriptor from 'components/ui/SkeletonDescriptor.vue';
@@ -39,6 +39,7 @@ const quasar = useQuasar();
 const slots = useSlots();
 const { t } = useI18n();
 const entity = computed(() => useArrayData($props.dataKey).store.data);
+const isLoading = ref(false);
 
 defineExpose({
     getData,
@@ -60,8 +61,13 @@ async function getData() {
         filter: $props.filter,
         skip: 0,
     });
-    const { data } = await arrayData.fetch({ append: false, updateRouter: false });
-    emit('onFetch', data);
+    isLoading.value = true;
+    try {
+        const { data } = await arrayData.fetch({ append: false, updateRouter: false });
+        emit('onFetch', data);
+    } finally {
+        isLoading.value = false;
+    }
 }
 const emit = defineEmits(['onFetch']);
 

From 346fed05785fa11272e300dd658db067dc47fad8 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Tue, 6 Feb 2024 15:03:56 +0100
Subject: [PATCH 03/22] refs #6795 summary, order

---
 src/pages/Claim/Card/ClaimSummary.vue | 35 ++++++++++++++-------------
 src/pages/Claim/ClaimList.vue         |  2 +-
 2 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue
index dcd236027..6f166f2b4 100644
--- a/src/pages/Claim/Card/ClaimSummary.vue
+++ b/src/pages/Claim/Card/ClaimSummary.vue
@@ -211,14 +211,14 @@ function openDialog(dmsId) {
                     </template>
                 </VnLv>
             </QCard>
-            <QCard class="vn-max claimVnNotes">
+            <QCard class="vn-two claimVnNotes">
                 <a class="header" :href="`#/claim/${entityId}/notes`">
                     {{ t('claim.summary.notes') }}
                     <QIcon name="open_in_new" color="primary" />
                 </a>
                 <ClaimNotes :add-note="false" style="height: 350px" order="created ASC" />
             </QCard>
-            <QCard class="vn-max" v-if="salesClaimed.length > 0">
+            <QCard class="vn-two" v-if="salesClaimed.length > 0">
                 <a class="header" :href="`#/claim/${entityId}/lines`">
                     {{ t('claim.summary.details') }}
                     <QIcon name="open_in_new" color="primary" />
@@ -233,6 +233,21 @@ function openDialog(dmsId) {
                     </template>
                 </QTable>
             </QCard>
+            <QCard class="vn-two" v-if="developments.length > 0">
+                <a class="header" :href="claimUrl + 'development'">
+                    {{ t('claim.summary.development') }}
+                    <QIcon name="open_in_new" color="primary" />
+                </a>
+                <QTable :columns="developmentColumns" :rows="developments" flat>
+                    <template #header="props">
+                        <QTr :props="props">
+                            <QTh v-for="col in props.cols" :key="col.name" :props="props">
+                                {{ t(col.label) }}
+                            </QTh>
+                        </QTr>
+                    </template>
+                </QTable>
+            </QCard>
             <QCard class="vn-max" v-if="claimDms.length > 0">
                 <a class="header" :href="`#/claim/${entityId}/photos`">
                     {{ t('claim.summary.photos') }}
@@ -275,21 +290,7 @@ function openDialog(dmsId) {
                     </div>
                 </div>
             </QCard>
-            <QCard class="vn-two" v-if="developments.length > 0">
-                <a class="header" :href="claimUrl + 'development'">
-                    {{ t('claim.summary.development') }}
-                    <QIcon name="open_in_new" color="primary" />
-                </a>
-                <QTable :columns="developmentColumns" :rows="developments" flat>
-                    <template #header="props">
-                        <QTr :props="props">
-                            <QTh v-for="col in props.cols" :key="col.name" :props="props">
-                                {{ t(col.label) }}
-                            </QTh>
-                        </QTr>
-                    </template>
-                </QTable>
-            </QCard>
+
             <QCard class="vn-max" v-if="developments.length > 0">
                 <a class="header" :href="claimUrl + 'action'">
                     {{ t('claim.summary.actions') }}
diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index 1b5979f5a..8c28b7a6a 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -75,7 +75,7 @@ function viewSummary(id) {
             <VnPaginate
                 data-key="ClaimList"
                 url="Claims/filter"
-                order="claimStateFk"
+                :order="['priority ASC', 'created DESC']"
                 auto-load
             >
                 <template #body="{ rows }">

From 5312a4e43a480dd23504ed2596c52a682a8be84c Mon Sep 17 00:00:00 2001
From: wbuezas <wbuezas@verdnatura.es>
Date: Thu, 8 Feb 2024 07:24:24 -0300
Subject: [PATCH 04/22] WIP

---
 src/css/app.scss                    |  8 +++
 src/pages/Travel/ExtraCommunity.vue | 78 +++++++++++------------------
 2 files changed, 38 insertions(+), 48 deletions(-)

diff --git a/src/css/app.scss b/src/css/app.scss
index 57031b21d..4fec9db08 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -67,6 +67,14 @@ body.body--dark {
     max-width: 60em;
 }
 
+.bg-vn-primary-row {
+    background-color: var(--vn-dark);
+}
+
+.bg-vn-secondary-row {
+    background-color: var(--vn-light-gray);
+}
+
 /* Estilo para el asterisco en campos requeridos */
 .q-field.required .q-field__label:after {
     content: ' *';
diff --git a/src/pages/Travel/ExtraCommunity.vue b/src/pages/Travel/ExtraCommunity.vue
index f08cc64cb..5a72dcf27 100644
--- a/src/pages/Travel/ExtraCommunity.vue
+++ b/src/pages/Travel/ExtraCommunity.vue
@@ -51,57 +51,55 @@ const rows = computed(() => arrayData.store.data || []);
 const tableColumnComponents = {
     id: {
         component: QBtn,
-        attrs: () => ({ flat: true, color: 'blue', class: 'col-content' }),
+        attrs: { flat: true, color: 'primary' },
     },
     cargoSupplierNickname: {
         component: QBtn,
-        attrs: () => ({ flat: true, color: 'blue', class: 'col-content' }),
+        attrs: { flat: true, color: 'primary', dense: true },
     },
     agencyModeName: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     invoiceAmount: {
         component: 'span',
-        attrs: () => ({
-            class: 'col-content',
-        }),
+        attrs: {},
     },
     ref: {
         component: QField,
-        attrs: () => ({ readonly: true, dense: true }),
+        attrs: { readonly: true, dense: true, class: 'cursor-pointer' },
     },
     stickers: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     kg: {
-        component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        component: QField,
+        attrs: { readonly: true, dense: true, class: 'cursor-pointer' },
     },
     loadedKg: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     volumeKg: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     warehouseOutName: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     shipped: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     warehouseInName: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
     landed: {
         component: 'span',
-        attrs: () => ({ class: 'col-content' }),
+        attrs: {},
     },
 };
 
@@ -110,7 +108,7 @@ const columns = computed(() => [
         label: 'id',
         field: 'id',
         name: 'id',
-        align: 'left',
+        align: 'center',
         showValue: true,
     },
     {
@@ -161,7 +159,7 @@ const columns = computed(() => [
         field: 'kg',
         name: 'kg',
         align: 'left',
-        showValue: true,
+        showValue: false,
     },
     {
         label: t('physicKg'),
@@ -237,7 +235,7 @@ const navigateToTravelId = (id) => {
 };
 
 const stopEventPropagation = (event, col) => {
-    if (!['ref', 'id', 'cargoSupplierNickname'].includes(col.name)) return;
+    if (!['ref', 'id', 'cargoSupplierNickname', 'kg'].includes(col.name)) return;
     event.preventDefault();
     event.stopPropagation();
 };
@@ -290,13 +288,13 @@ onMounted(async () => {
             hide-bottom
             row-key="clientId"
             :pagination="{ rowsPerPage: 0 }"
-            class="full-width q-mt-md"
+            class="full-width"
         >
             <template #body="props">
                 <QTr
                     :props="props"
                     @click="navigateToTravelId(props.row.id)"
-                    class="cursor-pointer"
+                    class="cursor-pointer bg-vn-primary-row"
                 >
                     <QTd
                         v-for="col in props.cols"
@@ -306,8 +304,7 @@ onMounted(async () => {
                     >
                         <component
                             :is="tableColumnComponents[col.name].component"
-                            class="col-content"
-                            v-bind="tableColumnComponents[col.name].attrs(props)"
+                            v-bind="tableColumnComponents[col.name].attrs"
                         >
                             <!-- Editable 'ref' and 'kg' QField slot -->
                             <template
@@ -361,36 +358,32 @@ onMounted(async () => {
                     v-for="entry in props.row.entries"
                     :key="entry.id"
                     :props="props"
-                    class="secondary-row"
+                    class="bg-vn-secondary-row"
                 >
-                    <QTd>
-                        <QBtn flat color="blue" class="col-content">{{ entry.id }} </QBtn>
+                    <QTd class="row justify-center">
+                        <QBtn flat color="primary">{{ entry.id }} </QBtn>
                         <EntryDescriptorProxy :id="entry.id" />
                     </QTd>
-                    <QTd
-                        ><QBtn flat color="blue" class="col-content">{{
-                            entry.supplierName
-                        }}</QBtn>
+                    <QTd>
+                        <QBtn flat color="primary" dense>{{ entry.supplierName }}</QBtn>
                         <SupplierDescriptorProxy :id="entry.supplierFk" />
                     </QTd>
                     <QTd></QTd>
                     <QTd
-                        ><span class="col-content">{{
-                            toCurrency(entry.invoiceAmount)
-                        }}</span></QTd
+                        ><span>{{ toCurrency(entry.invoiceAmount) }}</span></QTd
                     >
                     <QTd
-                        ><span class="col-content">{{ entry.reference }}</span></QTd
+                        ><span>{{ entry.reference }}</span></QTd
                     >
                     <QTd
-                        ><span class="col-content">{{ entry.stickers }}</span></QTd
+                        ><span>{{ entry.stickers }}</span></QTd
                     >
                     <QTd></QTd>
                     <QTd
-                        ><span class="col-content">{{ entry.loadedkg }}</span></QTd
+                        ><span>{{ entry.loadedkg }}</span></QTd
                     >
                     <QTd
-                        ><span class="col-content">{{ entry.volumeKg }}</span></QTd
+                        ><span>{{ entry.volumeKg }}</span></QTd
                     >
                     <QTd></QTd>
                     <QTd></QTd>
@@ -402,17 +395,6 @@ onMounted(async () => {
     </QPage>
 </template>
 
-<style lang="scss" scoped>
-.col-content {
-    border-radius: 4px;
-    padding: 6px;
-}
-
-.secondary-row {
-    background-color: var(--vn-gray);
-}
-</style>
-
 <i18n>
 en:
     searchExtraCommunity: Search for extra community shipping

From 2f081841f922b0fd77676a40981b6497cd2d7d60 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Thu, 8 Feb 2024 13:59:37 +0100
Subject: [PATCH 05/22] refs #6795 fix claims

---
 src/components/common/VnSelectFilter.vue |  4 ++--
 src/components/ui/CardSummary.vue        |  7 +++----
 src/components/ui/VnNotes.vue            | 13 +++---------
 src/composables/useArrayData.js          |  3 ++-
 src/i18n/en/index.js                     |  1 +
 src/i18n/es/index.js                     |  1 +
 src/pages/Claim/Card/ClaimDescriptor.vue | 22 ++++++++++++++++++--
 src/pages/Claim/Card/ClaimNotes.vue      |  9 +++++++-
 src/pages/Claim/Card/ClaimSummary.vue    | 26 ++++++++++++++++++------
 src/pages/Claim/ClaimList.vue            |  6 ------
 10 files changed, 60 insertions(+), 32 deletions(-)

diff --git a/src/components/common/VnSelectFilter.vue b/src/components/common/VnSelectFilter.vue
index accf92fc6..794d86e6b 100644
--- a/src/components/common/VnSelectFilter.vue
+++ b/src/components/common/VnSelectFilter.vue
@@ -79,7 +79,7 @@ onMounted(() => {
     if ($props.url && $props.modelValue) fetchFilter($props.modelValue);
 });
 
-async function filter(val, options) {
+function filter(val, options) {
     const search = val.toString().toLowerCase();
 
     if (!search) return options;
@@ -119,7 +119,7 @@ async function filterHandler(val, update) {
                 myOptions.value = await fetchFilter(val);
                 return;
             }
-            myOptions.value = await filter(val, myOptionsOriginal.value);
+            myOptions.value = filter(val, myOptionsOriginal.value);
         },
         (ref) => {
             if (val !== '' && ref.options.length > 0) {
diff --git a/src/components/ui/CardSummary.vue b/src/components/ui/CardSummary.vue
index 33a6980d5..cb2c97746 100644
--- a/src/components/ui/CardSummary.vue
+++ b/src/components/ui/CardSummary.vue
@@ -90,17 +90,16 @@ watch(props, async () => {
         background-color: var(--vn-gray);
 
         > .q-card.vn-one {
-            width: 350px;
             flex: 1;
         }
         > .q-card.vn-two {
-            flex: 2;
+            flex: 40%;
         }
         > .q-card.vn-three {
-            flex: 4;
+            flex: 75%;
         }
         > .q-card.vn-max {
-            width: 100%;
+            flex: 100%;
         }
 
         > .q-card {
diff --git a/src/components/ui/VnNotes.vue b/src/components/ui/VnNotes.vue
index fac74837f..0514b52e0 100644
--- a/src/components/ui/VnNotes.vue
+++ b/src/components/ui/VnNotes.vue
@@ -46,7 +46,7 @@ async function insert() {
                         </slot>
                         <QItem class="full-width justify-between items-start">
                             <VnUserLink
-                                :name="`${note.worker.firstName} ${note.worker.lastName}`"
+                                :name="`${note.worker.user.nickname}`"
                                 :worker-id="note.worker.id"
                             />
 
@@ -63,15 +63,8 @@ async function insert() {
                 </QCard>
             </template>
         </VnPaginate>
-        <QPageSticky position="bottom-right" :offset="[25, 25]">
-            <QBtn
-                v-if="addNote"
-                color="primary"
-                icon="add"
-                size="lg"
-                round
-                @click="noteModal = true"
-            />
+        <QPageSticky position="bottom-right" :offset="[25, 25]" v-if="addNote">
+            <QBtn color="primary" icon="add" size="lg" round @click="noteModal = true" />
         </QPageSticky>
         <QDialog v-model="noteModal" @hide="newNote = ''">
             <QCard>
diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js
index 3f031f1d1..b6b81f2d5 100644
--- a/src/composables/useArrayData.js
+++ b/src/composables/useArrayData.js
@@ -105,7 +105,8 @@ export function useArrayData(key, userOptions) {
             for (const row of response.data) store.data.push(row);
         } else {
             store.data = response.data;
-            updateRouter && updateStateParams();
+            if (!document.querySelectorAll('[role="dialog"]'))
+                updateRouter && updateStateParams();
         }
 
         store.isLoading = false;
diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js
index 3eb47d623..01f28e5f7 100644
--- a/src/i18n/en/index.js
+++ b/src/i18n/en/index.js
@@ -496,6 +496,7 @@ export default {
             responsible: 'Responsible',
             worker: 'Worker',
             redelivery: 'Redelivery',
+            returnOfMaterial: 'RMA',
         },
         basicData: {
             customer: 'Customer',
diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js
index c4082cd71..793982b30 100644
--- a/src/i18n/es/index.js
+++ b/src/i18n/es/index.js
@@ -495,6 +495,7 @@ export default {
             responsible: 'Responsable',
             worker: 'Trabajador',
             redelivery: 'DevoluciĆ³n',
+            returnOfMaterial: 'RMA',
         },
         basicData: {
             customer: 'Cliente',
diff --git a/src/pages/Claim/Card/ClaimDescriptor.vue b/src/pages/Claim/Card/ClaimDescriptor.vue
index deaed94f8..2fa1ae528 100644
--- a/src/pages/Claim/Card/ClaimDescriptor.vue
+++ b/src/pages/Claim/Card/ClaimDescriptor.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { ref, computed } from 'vue';
+import { ref, computed, onMounted } from 'vue';
 import { useRoute } from 'vue-router';
 import { useI18n } from 'vue-i18n';
 import { toDate, toPercentage } from 'src/filters';
@@ -10,6 +10,7 @@ import CardDescriptor from 'components/ui/CardDescriptor.vue';
 import VnLv from 'src/components/ui/VnLv.vue';
 import useCardDescription from 'src/composables/useCardDescription';
 import VnUserLink from 'src/components/ui/VnUserLink.vue';
+import { getUrl } from 'src/composables/getUrl';
 
 const $props = defineProps({
     id: {
@@ -22,7 +23,7 @@ const $props = defineProps({
 const route = useRoute();
 const state = useState();
 const { t } = useI18n();
-
+const salixUrl = ref();
 const entityId = computed(() => {
     return $props.id || route.params.id;
 });
@@ -85,6 +86,9 @@ const setData = (entity) => {
     data.value = useCardDescription(entity.client.name, entity.id);
     state.set('ClaimDescriptor', entity);
 };
+onMounted(async () => {
+    salixUrl.value = await getUrl('');
+});
 </script>
 
 <template>
@@ -167,6 +171,20 @@ const setData = (entity) => {
                 >
                     <QTooltip>{{ t('claim.card.claimedTicket') }}</QTooltip>
                 </QBtn>
+                <QBtn
+                    size="md"
+                    icon="assignment"
+                    color="primary"
+                    :href="salixUrl + 'ticket/' + entity.ticketFk + '/sale-tracking'"
+                >
+                </QBtn>
+                <QBtn
+                    size="md"
+                    icon="visibility"
+                    color="primary"
+                    :href="salixUrl + 'ticket/' + entity.ticketFk + '/tracking/index'"
+                >
+                </QBtn>
             </QCardActions>
         </template>
     </CardDescriptor>
diff --git a/src/pages/Claim/Card/ClaimNotes.vue b/src/pages/Claim/Card/ClaimNotes.vue
index eeaffc85a..ed4c2040d 100644
--- a/src/pages/Claim/Card/ClaimNotes.vue
+++ b/src/pages/Claim/Card/ClaimNotes.vue
@@ -19,6 +19,12 @@ const claimFilter = {
         relation: 'worker',
         scope: {
             fields: ['id', 'firstName', 'lastName'],
+            include: {
+                relation: 'user',
+                scope: {
+                    fields: ['id', 'nickname'],
+                },
+            },
         },
     },
 };
@@ -30,7 +36,8 @@ const body = {
 </script>
 <template>
     <div class="column items-center">
-        <VnNotes style="overflow-y: scroll;"
+        <VnNotes
+            style="overflow-y: scroll"
             :add-note="$props.addNote"
             :id="id"
             url="claimObservations"
diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue
index 6f166f2b4..5e5105568 100644
--- a/src/pages/Claim/Card/ClaimSummary.vue
+++ b/src/pages/Claim/Card/ClaimSummary.vue
@@ -42,9 +42,9 @@ onMounted(async () => {
     claimUrl.value = salixUrl.value + `claim/${entityId.value}/`;
 });
 
-watch(entityId, async (id) => {
-    claimDmsFilter.value.where = { claimFk: id };
-    await claimDmsRef.value.fetch();
+watch(entityId, async (id, old) => {
+    // claimDmsFilter.value.where = { claimFk: id };
+    // await claimDmsRef.value.fetch();
 });
 
 const detailsColumns = ref([
@@ -170,7 +170,6 @@ function openDialog(dmsId) {
         :filter="claimDmsFilter"
         @on-fetch="(data) => setClaimDms(data)"
         limit="20"
-        auto-load
         ref="claimDmsRef"
     />
     <CardSummary ref="summary" :url="`Claims/${entityId}/getSummary`">
@@ -210,8 +209,22 @@ function openDialog(dmsId) {
                         />
                     </template>
                 </VnLv>
+                <VnLv :label="t('claim.summary.customer')">
+                    <template #value>
+                        <VnUserLink
+                            :name="claim.client?.name"
+                            :worker-id="claim.client?.id"
+                        />
+                    </template>
+                </VnLv>
+                <VnLv :label="t('claim.summary.returnOfMaterial')" :value="claim.rma" />
+                <QCheckbox
+                    :align-items="right"
+                    :label="t('claim.basicData.picked')"
+                    v-model="claim.hasToPickUp"
+                />
             </QCard>
-            <QCard class="vn-two claimVnNotes">
+            <QCard class="vn-three claimVnNotes full-height">
                 <a class="header" :href="`#/claim/${entityId}/notes`">
                     {{ t('claim.summary.notes') }}
                     <QIcon name="open_in_new" color="primary" />
@@ -248,6 +261,7 @@ function openDialog(dmsId) {
                     </template>
                 </QTable>
             </QCard>
+
             <QCard class="vn-max" v-if="claimDms.length > 0">
                 <a class="header" :href="`#/claim/${entityId}/photos`">
                     {{ t('claim.summary.photos') }}
@@ -291,7 +305,7 @@ function openDialog(dmsId) {
                 </div>
             </QCard>
 
-            <QCard class="vn-max" v-if="developments.length > 0">
+            <QCard class="vn-max">
                 <a class="header" :href="claimUrl + 'action'">
                     {{ t('claim.summary.actions') }}
                     <QIcon name="open_in_new" color="primary" />
diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index 8c28b7a6a..945543822 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -118,12 +118,6 @@ function viewSummary(id) {
                             </VnLv>
                         </template>
                         <template #actions>
-                            <QBtn
-                                :label="t('components.smartCard.openCard')"
-                                @click.stop="navigate(row.id)"
-                                class="bg-vn-dark"
-                                outline
-                            />
                             <QBtn
                                 :label="t('components.smartCard.viewDescription')"
                                 @click.stop

From b3251967b803ed748c575e4c2fe00b5d1d384c92 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Fri, 9 Feb 2024 09:07:54 +0100
Subject: [PATCH 06/22] refs #6795 fix descriptor

---
 src/components/ui/CardDescriptor.vue | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/components/ui/CardDescriptor.vue b/src/components/ui/CardDescriptor.vue
index 8f6ffa35d..cc07b5702 100644
--- a/src/components/ui/CardDescriptor.vue
+++ b/src/components/ui/CardDescriptor.vue
@@ -219,11 +219,8 @@ function viewSummary(id) {
     margin-bottom: 15px;
 }
 .list-box {
-    width: 90%;
     background-color: var(--vn-gray);
-    margin: 10px auto;
-    padding: 10px 5px 10px 0px;
-    border-radius: 8px;
+
     .q-item__label {
         color: var(--vn-label);
     }

From b355d4aa0f36e0cd33968fe6f73e359805cffa1e Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Fri, 9 Feb 2024 10:15:36 +0100
Subject: [PATCH 07/22] refs #6795 remove watch

---
 src/pages/Claim/Card/ClaimSummary.vue | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue
index 5e5105568..84ae117b7 100644
--- a/src/pages/Claim/Card/ClaimSummary.vue
+++ b/src/pages/Claim/Card/ClaimSummary.vue
@@ -42,11 +42,6 @@ onMounted(async () => {
     claimUrl.value = salixUrl.value + `claim/${entityId.value}/`;
 });
 
-watch(entityId, async (id, old) => {
-    // claimDmsFilter.value.where = { claimFk: id };
-    // await claimDmsRef.value.fetch();
-});
-
 const detailsColumns = ref([
     {
         name: 'item',

From c87f49b86e431961c994b4e2f88b3c145a1f324b Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Fri, 9 Feb 2024 11:46:47 +0100
Subject: [PATCH 08/22] refs #6795 popup item

---
 src/pages/Claim/Card/ClaimLines.vue | 11 ++++++++++-
 src/pages/Claim/ClaimList.vue       |  7 ++++---
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/pages/Claim/Card/ClaimLines.vue b/src/pages/Claim/Card/ClaimLines.vue
index 5190c9932..de0bd39ba 100644
--- a/src/pages/Claim/Card/ClaimLines.vue
+++ b/src/pages/Claim/Card/ClaimLines.vue
@@ -11,6 +11,8 @@ import CrudModel from 'components/CrudModel.vue';
 import FetchData from 'components/FetchData.vue';
 import VnDiscount from 'components/common/vnDiscount.vue';
 import ClaimLinesImport from './ClaimLinesImport.vue';
+import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
+import item from 'src/router/modules/item';
 
 const quasar = useQuasar();
 const route = useRoute();
@@ -229,7 +231,14 @@ function showImportDialog() {
                                 </QPopupEdit>
                             </QTd>
                         </template>
-
+                        <template #body-cell-description="{ row, value }">
+                            <QTd auto-width align="right" class="text-primary">
+                                {{ value }}
+                                <ItemDescriptorProxy
+                                    :id="row.sale.itemFk"
+                                ></ItemDescriptorProxy>
+                            </QTd>
+                        </template>
                         <template #body-cell-discount="{ row, value, rowIndex }">
                             <QTd auto-width align="right" class="text-primary">
                                 {{ value }}
diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index 91e8fdc15..c8d84b904 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -26,8 +26,9 @@ const STATE_COLOR = {
 function stateColor(code) {
     return STATE_COLOR[code];
 }
-function navigate(id) {
-    router.push({ path: `/claim/${id}` });
+function navigate(event, id) {
+    if (event.ctrlKey || event.metaKey) window.open(window.host);
+    else router.push({ path: `/claim/${id}` });
 }
 </script>
 
@@ -74,7 +75,7 @@ function navigate(id) {
                         :id="row.id"
                         :key="row.id"
                         :title="row.clientName"
-                        @click="navigate(row.id)"
+                        @click="navigate($event, row.id)"
                         v-for="row of rows"
                     >
                         <template #list-items>

From 4810e02907b2b5b720cb146b2f60e4cefde5c3b6 Mon Sep 17 00:00:00 2001
From: wbuezas <wbuezas@verdnatura.es>
Date: Fri, 9 Feb 2024 20:50:33 -0300
Subject: [PATCH 09/22] add basic order to table

---
 src/pages/Travel/ExtraCommunity.vue | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/pages/Travel/ExtraCommunity.vue b/src/pages/Travel/ExtraCommunity.vue
index 5a72dcf27..4cbb850e1 100644
--- a/src/pages/Travel/ExtraCommunity.vue
+++ b/src/pages/Travel/ExtraCommunity.vue
@@ -110,6 +110,7 @@ const columns = computed(() => [
         name: 'id',
         align: 'center',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('supplier.pageTitles.supplier'),
@@ -117,6 +118,7 @@ const columns = computed(() => [
         name: 'cargoSupplierNickname',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('globals.agency'),
@@ -124,6 +126,7 @@ const columns = computed(() => [
         name: 'agencyModeName',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('globals.amount'),
@@ -131,6 +134,7 @@ const columns = computed(() => [
         field: 'entries',
         align: 'left',
         showValue: true,
+        sortable: true,
         format: (value) =>
             toCurrency(
                 value
@@ -146,6 +150,7 @@ const columns = computed(() => [
         name: 'ref',
         align: 'left',
         showValue: false,
+        sortable: true,
     },
     {
         label: t('globals.packages'),
@@ -153,6 +158,7 @@ const columns = computed(() => [
         name: 'stickers',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('kg'),
@@ -160,6 +166,7 @@ const columns = computed(() => [
         name: 'kg',
         align: 'left',
         showValue: false,
+        sortable: true,
     },
     {
         label: t('physicKg'),
@@ -167,6 +174,7 @@ const columns = computed(() => [
         name: 'loadedKg',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: 'KG Vol.',
@@ -174,6 +182,7 @@ const columns = computed(() => [
         name: 'volumeKg',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('globals.wareHouseOut'),
@@ -181,14 +190,16 @@ const columns = computed(() => [
         name: 'warehouseOutName',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('shipped'),
         field: 'shipped',
         name: 'shipped',
         align: 'left',
-        format: (value) => toDate(value.substring(0, 10)),
         showValue: true,
+        sortable: true,
+        format: (value) => toDate(value.substring(0, 10)),
     },
     {
         label: t('globals.wareHouseIn'),
@@ -196,14 +207,16 @@ const columns = computed(() => [
         name: 'warehouseInName',
         align: 'left',
         showValue: true,
+        sortable: true,
     },
     {
         label: t('landed'),
         field: 'landed',
         name: 'landed',
         align: 'left',
-        format: (value) => toDate(value.substring(0, 10)),
         showValue: true,
+        sortable: true,
+        format: (value) => toDate(value.substring(0, 10)),
     },
 ]);
 

From cd2eb71efd7333bf630bca6f0cad06ef7b4d17e0 Mon Sep 17 00:00:00 2001
From: wbuezas <wbuezas@verdnatura.es>
Date: Mon, 12 Feb 2024 08:14:10 -0300
Subject: [PATCH 10/22] Fix view icon

---
 src/router/modules/travel.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/router/modules/travel.js b/src/router/modules/travel.js
index a9670525f..792b393e4 100644
--- a/src/router/modules/travel.js
+++ b/src/router/modules/travel.js
@@ -34,7 +34,7 @@ export default {
                     name: 'ExtraCommunity',
                     meta: {
                         title: 'extraCommunity',
-                        icon: 'vn:shipment-01',
+                        icon: 'vn:shipment',
                     },
                     component: () => import('src/pages/Travel/ExtraCommunity.vue'),
                 },

From a9c288e6eac660a9e71bcbb1e25e96b6f09bed72 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Mon, 12 Feb 2024 13:58:13 +0100
Subject: [PATCH 11/22] refs #6795 fix url, details

---
 src/pages/Claim/Card/ClaimSummary.vue | 20 ++++++++++++++++++++
 src/pages/Claim/ClaimList.vue         |  7 ++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue
index 84ae117b7..8bab43dc0 100644
--- a/src/pages/Claim/Card/ClaimSummary.vue
+++ b/src/pages/Claim/Card/ClaimSummary.vue
@@ -10,6 +10,7 @@ import { useSession } from 'src/composables/useSession';
 import VnLv from 'src/components/ui/VnLv.vue';
 import ClaimNotes from 'src/pages/Claim/Card/ClaimNotes.vue';
 import VnUserLink from 'src/components/ui/VnUserLink.vue';
+import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
 
 const route = useRoute();
 const { t } = useI18n();
@@ -239,6 +240,25 @@ function openDialog(dmsId) {
                             </QTh>
                         </QTr>
                     </template>
+                    <template #body="props">
+                        <QTr :props="props">
+                            <QTh v-for="col in props.cols" :key="col.name" :props="props">
+                                <span v-if="col.name != 'description'">{{
+                                    t(col.value)
+                                }}</span>
+                                <QBtn
+                                    v-if="col.name == 'description'"
+                                    flat
+                                    color="blue"
+                                    >{{ col.value }}</QBtn
+                                >
+                                <ItemDescriptorProxy
+                                    v-if="col.name == 'description'"
+                                    :id="2"
+                                ></ItemDescriptorProxy>
+                            </QTh>
+                        </QTr>
+                    </template>
                 </QTable>
             </QCard>
             <QCard class="vn-two" v-if="developments.length > 0">
diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index c8d84b904..60c776618 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -12,6 +12,7 @@ import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorP
 import VnUserLink from 'src/components/ui/VnUserLink.vue';
 import ClaimSummary from './Card/ClaimSummary.vue';
 import { useSummaryDialog } from 'src/composables/useSummaryDialog';
+import { getUrl } from 'src/composables/getUrl';
 
 const stateStore = useStateStore();
 const router = useRouter();
@@ -23,11 +24,15 @@ const STATE_COLOR = {
     managed: 'warning',
     resolved: 'negative',
 };
+function getApiUrl() {
+    return new URL(window.location).origin;
+}
 function stateColor(code) {
     return STATE_COLOR[code];
 }
 function navigate(event, id) {
-    if (event.ctrlKey || event.metaKey) window.open(window.host);
+    if (event.ctrlKey || event.metaKey)
+        window.open(`${getApiUrl()}/#/claim/${id}/summary`);
     else router.push({ path: `/claim/${id}` });
 }
 </script>

From 1db827a7c84fc9c9a1c5ece5152fff5716595523 Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Tue, 13 Feb 2024 08:03:31 +0100
Subject: [PATCH 12/22] refs #6795 fix: claim paddings and colors

---
 src/components/ui/VnNotes.vue            | 4 ++--
 src/pages/Claim/Card/ClaimDescriptor.vue | 7 +++----
 src/pages/Claim/Card/ClaimSummary.vue    | 8 +++-----
 src/pages/Claim/ClaimList.vue            | 6 +++---
 4 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/src/components/ui/VnNotes.vue b/src/components/ui/VnNotes.vue
index 0514b52e0..6890b52c3 100644
--- a/src/components/ui/VnNotes.vue
+++ b/src/components/ui/VnNotes.vue
@@ -39,7 +39,7 @@ async function insert() {
             ref="vnPaginateRef"
         >
             <template #body="{ rows }">
-                <QCard class="q-pa-md q-mb-md" v-for="(note, index) in rows" :key="index">
+                <QCard class="q-pa-xs q-mb-md" v-for="(note, index) in rows" :key="index">
                     <QCardSection horizontal>
                         <slot name="picture">
                             <VnAvatar :descriptor="false" :worker-id="note.workerFk" />
@@ -55,7 +55,7 @@ async function insert() {
                             </slot>
                         </QItem>
                     </QCardSection>
-                    <QCardSection>
+                    <QCardSection class="q-pa-sm">
                         <slot name="text">
                             {{ note.text }}
                         </slot>
diff --git a/src/pages/Claim/Card/ClaimDescriptor.vue b/src/pages/Claim/Card/ClaimDescriptor.vue
index 2fa1ae528..3827a70d4 100644
--- a/src/pages/Claim/Card/ClaimDescriptor.vue
+++ b/src/pages/Claim/Card/ClaimDescriptor.vue
@@ -72,11 +72,10 @@ const filter = {
 };
 
 const STATE_COLOR = {
-    pending: 'positive',
-    managed: 'warning',
-    resolved: 'negative',
+    pending: 'warning',
+    managed: 'info',
+    resolved: 'positive',
 };
-
 function stateColor(code) {
     return STATE_COLOR[code];
 }
diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue
index 8bab43dc0..cdc1f15be 100644
--- a/src/pages/Claim/Card/ClaimSummary.vue
+++ b/src/pages/Claim/Card/ClaimSummary.vue
@@ -97,11 +97,9 @@ const detailsColumns = ref([
 ]);
 
 const STATE_COLOR = {
-    pending: 'positive',
-
-    managed: 'warning',
-
-    resolved: 'negative',
+    pending: 'warning',
+    managed: 'info',
+    resolved: 'positive',
 };
 function stateColor(code) {
     return STATE_COLOR[code];
diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index 60c776618..e11041eb0 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -20,9 +20,9 @@ const { t } = useI18n();
 const { viewSummary } = useSummaryDialog();
 
 const STATE_COLOR = {
-    pending: 'positive',
-    managed: 'warning',
-    resolved: 'negative',
+    pending: 'warning',
+    managed: 'info',
+    resolved: 'positive',
 };
 function getApiUrl() {
     return new URL(window.location).origin;

From ab512e3b03c58ed1d5a9852ad03fd16cc412d5db Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Tue, 13 Feb 2024 11:50:12 +0100
Subject: [PATCH 13/22] refs #6795 fix tfront

---
 src/pages/Claim/Card/ClaimLines.vue                   | 1 -
 test/vitest/__tests__/pages/Claims/ClaimLines.spec.js | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/pages/Claim/Card/ClaimLines.vue b/src/pages/Claim/Card/ClaimLines.vue
index de0bd39ba..90dd31199 100644
--- a/src/pages/Claim/Card/ClaimLines.vue
+++ b/src/pages/Claim/Card/ClaimLines.vue
@@ -12,7 +12,6 @@ import FetchData from 'components/FetchData.vue';
 import VnDiscount from 'components/common/vnDiscount.vue';
 import ClaimLinesImport from './ClaimLinesImport.vue';
 import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
-import item from 'src/router/modules/item';
 
 const quasar = useQuasar();
 const route = useRoute();
diff --git a/test/vitest/__tests__/pages/Claims/ClaimLines.spec.js b/test/vitest/__tests__/pages/Claims/ClaimLines.spec.js
index 6dd6b89e6..2f2c0e298 100644
--- a/test/vitest/__tests__/pages/Claims/ClaimLines.spec.js
+++ b/test/vitest/__tests__/pages/Claims/ClaimLines.spec.js
@@ -1,6 +1,6 @@
 import { vi, describe, expect, it, beforeAll, beforeEach, afterEach } from 'vitest';
 import { createWrapper, axios } from 'app/test/vitest/helper';
-import ClaimLines from 'pages/Claim/Card/ClaimLines.vue';
+import ClaimLines from '/src/pages/Claim/Card/ClaimLines.vue';
 
 describe('ClaimLines', () => {
     let vm;

From 409bb1a13eb696ff8eeab7bdf85969b0efd4d931 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Tue, 13 Feb 2024 11:51:59 +0100
Subject: [PATCH 14/22] refs #6795 fix return

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

diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index e11041eb0..c079ec85b 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -33,7 +33,7 @@ function stateColor(code) {
 function navigate(event, id) {
     if (event.ctrlKey || event.metaKey)
         window.open(`${getApiUrl()}/#/claim/${id}/summary`);
-    else router.push({ path: `/claim/${id}` });
+    return router.push({ path: `/claim/${id}` });
 }
 </script>
 

From 1e5638b4875a9e8b20eaa5e82b999384de815211 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Tue, 13 Feb 2024 12:44:20 +0100
Subject: [PATCH 15/22] refs #6787 fix descriptor skeleton

---
 src/components/ui/CardDescriptor.vue          |  9 ++++-
 src/components/ui/SkeletonDescriptor.vue      | 39 ++++++++++++++++---
 .../Customer/Card/CustomerDescriptor.vue      |  8 ----
 3 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/src/components/ui/CardDescriptor.vue b/src/components/ui/CardDescriptor.vue
index afedfe06f..082a93a55 100644
--- a/src/components/ui/CardDescriptor.vue
+++ b/src/components/ui/CardDescriptor.vue
@@ -83,7 +83,7 @@ function viewSummary(id) {
 
 <template>
     <div class="descriptor">
-        <template v-if="entity">
+        <template v-if="entity && !isLoading">
             <div class="header bg-primary q-pa-sm justify-between">
                 <slot name="header-extra-action" />
                 <QBtn
@@ -169,8 +169,13 @@ function viewSummary(id) {
             <slot name="after" />
         </template>
         <!-- Skeleton -->
-        <SkeletonDescriptor v-if="!entity" />
+        <SkeletonDescriptor v-if="!entity || isLoading" />
     </div>
+    <QInnerLoading
+        :label="t('globals.pleaseWait')"
+        :showing="isLoading"
+        color="primary"
+    />
 </template>
 
 <style lang="scss">
diff --git a/src/components/ui/SkeletonDescriptor.vue b/src/components/ui/SkeletonDescriptor.vue
index 470d47e49..9679751f5 100644
--- a/src/components/ui/SkeletonDescriptor.vue
+++ b/src/components/ui/SkeletonDescriptor.vue
@@ -1,10 +1,39 @@
 <template>
     <div id="descriptor-skeleton">
-        <div class="col q-pl-sm q-pa-sm">
-            <QSkeleton type="text" square height="45px" />
-            <QSkeleton type="text" square height="18px" />
-            <QSkeleton type="text" square height="18px" />
-            <QSkeleton type="text" square height="18px" />
+        <div class="row justify-between q-pa-sm">
+            <QSkeleton square size="40px" />
+            <QSkeleton square size="40px" />
+            <QSkeleton square height="40px" width="20px" />
+        </div>
+        <div class="col justify-between q-pa-sm q-gutter-y-xs">
+            <QSkeleton square height="40px" width="150px" />
+            <QSkeleton square height="30px" width="70px" />
+        </div>
+        <div class="col q-pl-sm q-pa-sm q-mb-md">
+            <div class="row justify-between">
+                <QSkeleton type="text" square height="30px" width="20%" />
+                <QSkeleton type="text" square height="30px" width="60%" />
+            </div>
+            <div class="row justify-between">
+                <QSkeleton type="text" square height="30px" width="20%" />
+                <QSkeleton type="text" square height="30px" width="60%" />
+            </div>
+            <div class="row justify-between">
+                <QSkeleton type="text" square height="30px" width="20%" />
+                <QSkeleton type="text" square height="30px" width="60%" />
+            </div>
+            <div class="row justify-between">
+                <QSkeleton type="text" square height="30px" width="20%" />
+                <QSkeleton type="text" square height="30px" width="60%" />
+            </div>
+            <div class="row justify-between">
+                <QSkeleton type="text" square height="30px" width="20%" />
+                <QSkeleton type="text" square height="30px" width="60%" />
+            </div>
+            <div class="row justify-between">
+                <QSkeleton type="text" square height="30px" width="20%" />
+                <QSkeleton type="text" square height="30px" width="60%" />
+            </div>
         </div>
 
         <QCardActions>
diff --git a/src/pages/Customer/Card/CustomerDescriptor.vue b/src/pages/Customer/Card/CustomerDescriptor.vue
index 833a310ad..2e8770fe7 100644
--- a/src/pages/Customer/Card/CustomerDescriptor.vue
+++ b/src/pages/Customer/Card/CustomerDescriptor.vue
@@ -19,17 +19,14 @@ const $props = defineProps({
         default: null,
     },
 });
-const isLoading = ref(false);
 const route = useRoute();
 const { t } = useI18n();
 const entityId = computed(() => {
     return $props.id || route.params.id;
 });
-isLoading.value = true;
 
 const data = ref(useCardDescription());
 const setData = (entity) => (data.value = useCardDescription(entity.name, entity.id));
-isLoading.value = false;
 </script>
 
 <template>
@@ -122,11 +119,6 @@ isLoading.value = false;
             </QCardActions>
         </template>
     </CardDescriptor>
-    <QInnerLoading
-        :label="t('globals.pleaseWait')"
-        :showing="isLoading"
-        color="primary"
-    />
 </template>
 <i18n>
 {

From 3c4df815794aa05478ad75cff0f0b929fdfb8467 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Thu, 15 Feb 2024 11:30:51 +0100
Subject: [PATCH 16/22] refs #6862 fixtest

---
 src/components/common/VnSelectFilter.vue        | 4 ++--
 src/pages/InvoiceIn/Card/InvoiceInBasicData.vue | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/components/common/VnSelectFilter.vue b/src/components/common/VnSelectFilter.vue
index 659f1c3bd..31b0f16ad 100644
--- a/src/components/common/VnSelectFilter.vue
+++ b/src/components/common/VnSelectFilter.vue
@@ -79,7 +79,7 @@ onMounted(() => {
     if ($props.url && $props.modelValue) fetchFilter($props.modelValue);
 });
 
-function filter(val, options) {
+async function filter(val, options) {
     const search = val.toString().toLowerCase();
 
     if (!search) return options;
@@ -119,7 +119,7 @@ async function filterHandler(val, update) {
                 myOptions.value = await fetchFilter(val);
                 return;
             }
-            myOptions.value = filter(val, myOptionsOriginal.value);
+            myOptions.value = await filter(val, myOptionsOriginal.value);
         },
         (ref) => {
             if (val !== '' && ref.options.length > 0) {
diff --git a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
index 2f8435166..8d7362679 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
@@ -186,6 +186,7 @@ async function upsert() {
                         url="Suppliers"
                         :fields="['id', 'nickname']"
                         sort-by="nickname"
+                        :is-clearable="false"
                     >
                         <template #option="scope">
                             <QItem v-bind="scope.itemProps">

From 72d51a53a80f6a6023e6c22e1b0274ca92669366 Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Thu, 15 Feb 2024 14:53:43 +0100
Subject: [PATCH 17/22] hotFix: vnSelectFilter

---
 src/components/common/VnSelectFilter.vue | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/components/common/VnSelectFilter.vue b/src/components/common/VnSelectFilter.vue
index 31b0f16ad..a5ebd80ad 100644
--- a/src/components/common/VnSelectFilter.vue
+++ b/src/components/common/VnSelectFilter.vue
@@ -79,7 +79,7 @@ onMounted(() => {
     if ($props.url && $props.modelValue) fetchFilter($props.modelValue);
 });
 
-async function filter(val, options) {
+function filter(val, options) {
     const search = val.toString().toLowerCase();
 
     if (!search) return options;
@@ -111,15 +111,15 @@ async function fetchFilter(val) {
     return dataRef.value.fetch({ fields, where, order: sortBy, limit });
 }
 
-async function filterHandler(val, update) {
+function filterHandler(val, update) {
     update(
         async () => {
             if (!$props.defaultFilter) return;
-            if ($props.url) {
-                myOptions.value = await fetchFilter(val);
-                return;
-            }
-            myOptions.value = await filter(val, myOptionsOriginal.value);
+            // if ($props.url) {
+            //     myOptions.value = await fetchFilter(val);
+            //     return;
+            // }
+            myOptions.value = filter(val, myOptionsOriginal.value);
         },
         (ref) => {
             if (val !== '' && ref.options.length > 0) {

From 87f81eb80a25b79162a105fb63189c24167b0e9e Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Thu, 15 Feb 2024 16:15:48 +0100
Subject: [PATCH 18/22] refs #6664 hotFix: multiplicatorValue updateGreuges

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

diff --git a/src/pages/Claim/Card/ClaimAction.vue b/src/pages/Claim/Card/ClaimAction.vue
index 59409e432..ef45bf3dc 100644
--- a/src/pages/Claim/Card/ClaimAction.vue
+++ b/src/pages/Claim/Card/ClaimAction.vue
@@ -135,7 +135,7 @@ async function regularizeClaim() {
         message: t('globals.dataSaved'),
         type: 'positive',
     });
-    await onUpdateGreugeAccept();
+    if (multiplicatorValue.value) await onUpdateGreugeAccept();
 }
 
 async function onUpdateGreugeAccept() {

From 72e7bf0f7aa1132e41f060e9d24b9c44c6a4e323 Mon Sep 17 00:00:00 2001
From: carlossa <carlossa@verdnatura.es>
Date: Fri, 16 Feb 2024 13:49:11 +0100
Subject: [PATCH 19/22] refs #6795 fix navigate

---
 src/pages/Claim/ClaimList.vue | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index c079ec85b..322055b13 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -32,8 +32,8 @@ function stateColor(code) {
 }
 function navigate(event, id) {
     if (event.ctrlKey || event.metaKey)
-        window.open(`${getApiUrl()}/#/claim/${id}/summary`);
-    return router.push({ path: `/claim/${id}` });
+        return window.open(`${getApiUrl()}/#/claim/${id}/summary`);
+    router.push({ path: `/claim/${id}` });
 }
 </script>
 

From c916bd5945a660586421d1b6a71e84e8929b135f Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Mon, 19 Feb 2024 10:50:35 +0100
Subject: [PATCH 20/22] refs #6863 fix: VnSelect + url,  VnLocation

---
 src/components/common/VnLocation.vue             | 12 +++++-------
 src/components/common/VnSelectFilter.vue         | 16 ++++++++--------
 .../invoiceIn/invoiceInBasicData.spec.js         |  6 ++----
 3 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/src/components/common/VnLocation.vue b/src/components/common/VnLocation.vue
index b55706ad2..446bb371e 100644
--- a/src/components/common/VnLocation.vue
+++ b/src/components/common/VnLocation.vue
@@ -50,7 +50,10 @@ const value = computed({
         return $props.modelValue;
     },
     set(value) {
-        emit('update:modelValue', value);
+        emit(
+            'update:modelValue',
+            postcodesOptions.value.find((p) => p.code === value)
+        );
     },
 });
 
@@ -101,16 +104,11 @@ function handleFetch(data) {
         :label="t('Location')"
         :placeholder="t('Search by postalcode, town, province or country')"
         @input-value="locationFilter"
-        :default-filter="true"
+        :default-filter="false"
         :input-debounce="300"
         :class="{ required: $attrs.required }"
         v-bind="$attrs"
-        emit-value
-        map-options
-        use-input
         clearable
-        hide-selected
-        fill-input
     >
         <template #form>
             <CreateNewPostcode @on-data-saved="locationFilter()" />
diff --git a/src/components/common/VnSelectFilter.vue b/src/components/common/VnSelectFilter.vue
index a5ebd80ad..44f73bfed 100644
--- a/src/components/common/VnSelectFilter.vue
+++ b/src/components/common/VnSelectFilter.vue
@@ -111,15 +111,15 @@ async function fetchFilter(val) {
     return dataRef.value.fetch({ fields, where, order: sortBy, limit });
 }
 
-function filterHandler(val, update) {
+async function filterHandler(val, update) {
+    if (!$props.defaultFilter) return update();
+    let newOptions;
+    if ($props.url) {
+        newOptions = await fetchFilter(val);
+    } else newOptions = filter(val, myOptionsOriginal.value);
     update(
-        async () => {
-            if (!$props.defaultFilter) return;
-            // if ($props.url) {
-            //     myOptions.value = await fetchFilter(val);
-            //     return;
-            // }
-            myOptions.value = filter(val, myOptionsOriginal.value);
+        () => {
+            myOptions.value = newOptions;
         },
         (ref) => {
             if (val !== '' && ref.options.length > 0) {
diff --git a/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js b/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js
index 7617a69d1..20f137aeb 100644
--- a/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
 describe('InvoiceInBasicData', () => {
-    const selects = '.q-form .q-select';
+    const selects = ':nth-child(1) > :nth-child(1) > .q-field';
     const appendBtns = 'label button';
     const dialogAppendBtns = '.q-dialog label button';
     const dialogInputs = '.q-dialog input';
@@ -12,9 +12,7 @@ describe('InvoiceInBasicData', () => {
     });
 
     it('should edit the provideer and supplier ref', () => {
-        cy.get(selects).eq(0).click();
-        cy.get(selects).eq(0).type('Bros');
-        cy.get(selects).eq(0).type('{enter}');
+        cy.selectOption(selects, 'Bros');
 
         cy.get('[title="Reset"]').click();
         cy.get(appendBtns).eq(0).click();

From 5386c82480142ecb4c8eae6fcd93b493740f40b0 Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Mon, 19 Feb 2024 11:39:44 +0100
Subject: [PATCH 21/22] refs #6863 fix: invoiceInList e2e

---
 test/cypress/integration/invoiceIn/invoiceInList.spec.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test/cypress/integration/invoiceIn/invoiceInList.spec.js b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
index b96fd0cf2..a7d59883c 100644
--- a/test/cypress/integration/invoiceIn/invoiceInList.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInList.spec.js
@@ -7,6 +7,7 @@ describe('InvoiceInList', () => {
     const summaryHeaders = '.summaryBody .header';
 
     beforeEach(() => {
+        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/invoice-in/list`);
     });

From af4927167fdc8de5297fa6a1a899e542ba5d622a Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Mon, 19 Feb 2024 11:42:19 +0100
Subject: [PATCH 22/22] refs #6863 deploy: init version 24.10

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 27ba190a6..74f83334c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "salix-front",
-    "version": "24.8.0",
+    "version": "24.10.0",
     "description": "Salix frontend",
     "productName": "Salix",
     "author": "Verdnatura",