From 15d94ca165ebe7dd23f6c9c185a2cef8f1aa6727 Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Mon, 3 Mar 2025 23:10:44 +0100
Subject: [PATCH 1/6] fix: add order and sortBy

---
 src/components/FilterTravelForm.vue            | 2 +-
 src/pages/Entry/EntryFilter.vue                | 1 +
 src/pages/Route/Card/RouteAutonomousFilter.vue | 3 +--
 src/pages/Ticket/TicketFilter.vue              | 7 ++++++-
 src/pages/Travel/ExtraCommunityFilter.vue      | 1 +
 src/pages/Travel/TravelCreate.vue              | 1 +
 src/pages/Travel/TravelFilter.vue              | 3 +--
 src/pages/Zone/ZoneFilterPanel.vue             | 3 ++-
 src/pages/Zone/ZoneList.vue                    | 3 +--
 9 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/components/FilterTravelForm.vue b/src/components/FilterTravelForm.vue
index 4d43c3810..cd4b28a44 100644
--- a/src/components/FilterTravelForm.vue
+++ b/src/components/FilterTravelForm.vue
@@ -124,7 +124,7 @@ const selectTravel = ({ id }) => {
     <FetchData
         url="AgencyModes"
         @on-fetch="(data) => (agenciesOptions = data)"
-        :filter="{ fields: ['id', 'name'], order: 'name ASC' }"
+        :filter="{ fields: ['id', 'name'], order: ['name ASC'] }"
         auto-load
     />
     <FetchData
diff --git a/src/pages/Entry/EntryFilter.vue b/src/pages/Entry/EntryFilter.vue
index 0f632c0ef..715133386 100644
--- a/src/pages/Entry/EntryFilter.vue
+++ b/src/pages/Entry/EntryFilter.vue
@@ -89,6 +89,7 @@ const companiesOptions = ref([]);
                         v-model="params.companyFk"
                         @update:model-value="searchFn()"
                         :options="companiesOptions"
+                        sort-by="name ASC"
                         option-value="id"
                         option-label="code"
                         hide-selected
diff --git a/src/pages/Route/Card/RouteAutonomousFilter.vue b/src/pages/Route/Card/RouteAutonomousFilter.vue
index 3be409ec9..f70f60e1c 100644
--- a/src/pages/Route/Card/RouteAutonomousFilter.vue
+++ b/src/pages/Route/Card/RouteAutonomousFilter.vue
@@ -44,8 +44,7 @@ const exprBuilder = (param, value) => {
 <template>
     <FetchData
         url="AgencyModes"
-        :filter="{ fields: ['id', 'name'] }"
-        sort-by="name ASC"
+        :filter="{ fields: ['id', 'name'], order: ['name ASC'] }"
         @on-fetch="(data) => (agencyList = data)"
         auto-load
     />
diff --git a/src/pages/Ticket/TicketFilter.vue b/src/pages/Ticket/TicketFilter.vue
index c82c0067f..aeb758c62 100644
--- a/src/pages/Ticket/TicketFilter.vue
+++ b/src/pages/Ticket/TicketFilter.vue
@@ -46,7 +46,12 @@ const getGroupedStates = (data) => {
         "
         auto-load
     />
-    <FetchData url="AgencyModes" @on-fetch="(data) => (agencies = data)" auto-load />
+    <FetchData
+        url="AgencyModes"
+        :filter="{ fields: ['id', 'name'], order: ['name ASC'] }"
+        @on-fetch="(data) => (agencies = data)"
+        auto-load
+    />
     <FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load />
     <VnFilterPanel :data-key="props.dataKey" :search-button="true">
         <template #tags="{ tag, formatFn }">
diff --git a/src/pages/Travel/ExtraCommunityFilter.vue b/src/pages/Travel/ExtraCommunityFilter.vue
index b903aeabf..4f5a7d065 100644
--- a/src/pages/Travel/ExtraCommunityFilter.vue
+++ b/src/pages/Travel/ExtraCommunityFilter.vue
@@ -73,6 +73,7 @@ warehouses();
     />
     <FetchData
         url="AgencyModes"
+        :filter="{ fields: ['id', 'name'], order: ['name ASC'] }"
         @on-fetch="(data) => (agenciesOptions = data)"
         auto-load
     />
diff --git a/src/pages/Travel/TravelCreate.vue b/src/pages/Travel/TravelCreate.vue
index 72c34aad8..35a936134 100644
--- a/src/pages/Travel/TravelCreate.vue
+++ b/src/pages/Travel/TravelCreate.vue
@@ -39,6 +39,7 @@ const redirectToTravelBasicData = (_, { id }) => {
 <template>
     <FetchData
         url="AgencyModes"
+        :filter="{ fields: ['id', 'name'], order: ['name ASC'] }"
         @on-fetch="(data) => (agenciesOptions = data)"
         auto-load
     />
diff --git a/src/pages/Travel/TravelFilter.vue b/src/pages/Travel/TravelFilter.vue
index 90901ee4d..4a9c80952 100644
--- a/src/pages/Travel/TravelFilter.vue
+++ b/src/pages/Travel/TravelFilter.vue
@@ -52,9 +52,8 @@ defineExpose({ states });
                     v-model="params.agencyModeFk"
                     @update:model-value="searchFn()"
                     url="agencyModes"
+                    sort-by="name ASC"
                     :use-like="false"
-                    option-value="id"
-                    option-label="name"
                     option-filter="name"
                     dense
                     outlined
diff --git a/src/pages/Zone/ZoneFilterPanel.vue b/src/pages/Zone/ZoneFilterPanel.vue
index 3a35527ab..9f5763e46 100644
--- a/src/pages/Zone/ZoneFilterPanel.vue
+++ b/src/pages/Zone/ZoneFilterPanel.vue
@@ -5,6 +5,7 @@ import VnInput from 'components/common/VnInput.vue';
 import FetchData from 'components/FetchData.vue';
 import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
 import VnSelect from 'components/common/VnSelect.vue';
+import order from 'src/router/modules/order';
 
 const { t } = useI18n();
 const props = defineProps({
@@ -24,7 +25,7 @@ const agencies = ref([]);
 <template>
     <FetchData
         url="AgencyModes"
-        :filter="{ fields: ['id', 'name'] }"
+        :filter="{ fields: ['id', 'name'], order: ['name ASC'] }"
         @on-fetch="(data) => (agencies = data)"
         auto-load
     />
diff --git a/src/pages/Zone/ZoneList.vue b/src/pages/Zone/ZoneList.vue
index e4a1774fe..b146071ed 100644
--- a/src/pages/Zone/ZoneList.vue
+++ b/src/pages/Zone/ZoneList.vue
@@ -212,9 +212,8 @@ function showValidAddresses(row) {
         <template #more-create-dialog="{ data }">
             <VnSelect
                 url="AgencyModes"
+                sort-by="name ASC"
                 v-model="data.agencyModeFk"
-                option-value="id"
-                option-label="name"
                 :label="t('list.agency')"
             />
             <VnInput

From 3d0e25f8deb53ff88bbc0368c134581d0b388d43 Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Tue, 4 Mar 2025 11:15:21 +0100
Subject: [PATCH 2/6] feat: define prop

---
 src/components/VnTable/VnTable.vue | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue
index 0d186bd57..28a24690f 100644
--- a/src/components/VnTable/VnTable.vue
+++ b/src/components/VnTable/VnTable.vue
@@ -59,6 +59,10 @@ const $props = defineProps({
         type: [Function, Boolean],
         default: null,
     },
+    rowCtrlClick: {
+        type: [Function, Boolean],
+        default: null,
+    },
     redirect: {
         type: String,
         default: null,

From 856ec7f6a5114e7ca8d4d997257502e6d27b1bf0 Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Tue, 4 Mar 2025 11:16:08 +0100
Subject: [PATCH 3/6] feat: define rowCtrlClick

---
 src/pages/Monitor/Ticket/MonitorTickets.vue | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/pages/Monitor/Ticket/MonitorTickets.vue b/src/pages/Monitor/Ticket/MonitorTickets.vue
index 2ec862df0..782175cd6 100644
--- a/src/pages/Monitor/Ticket/MonitorTickets.vue
+++ b/src/pages/Monitor/Ticket/MonitorTickets.vue
@@ -17,6 +17,7 @@ import MonitorTicketFilter from './MonitorTicketFilter.vue';
 import TicketProblems from 'src/components/TicketProblems.vue';
 import VnDateBadge from 'src/components/common/VnDateBadge.vue';
 import { useStateStore } from 'src/stores/useStateStore';
+import useOpenURL from 'src/composables/useOpenURL';
 
 const DEFAULT_AUTO_REFRESH = 2 * 60 * 1000;
 const { t } = useI18n();
@@ -321,8 +322,7 @@ const totalPriceColor = (ticket) => {
     if (total > 0 && total < 50) return 'warning';
 };
 
-const openTab = (id) =>
-    window.open(`#/ticket/${id}/sale`, '_blank', 'noopener, noreferrer');
+const openTab = (id) => useOpenURL(`#/ticket/${id}/sale`);
 </script>
 <template>
     <FetchData
@@ -397,6 +397,7 @@ const openTab = (id) =>
         default-mode="table"
         auto-load
         :row-click="({ id }) => openTab(id)"
+        :row-ctrl-click="(_, { id }) => openTab(id)"
         :disable-option="{ card: true }"
         :user-params="{ from, to, scopeDays: 0 }"
     >

From 14cae9de45132440c1585253fefea0dad34674b2 Mon Sep 17 00:00:00 2001
From: jorgep <jorgep@verdnatura.es>
Date: Tue, 4 Mar 2025 11:31:16 +0100
Subject: [PATCH 4/6] feat: refs #6919 add additional fields to filter options

---
 src/pages/Supplier/Card/SupplierFilter.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/pages/Supplier/Card/SupplierFilter.js b/src/pages/Supplier/Card/SupplierFilter.js
index 3ce5c3de2..3aabe2c6d 100644
--- a/src/pages/Supplier/Card/SupplierFilter.js
+++ b/src/pages/Supplier/Card/SupplierFilter.js
@@ -11,6 +11,11 @@ export default {
         'isSerious',
         'isTrucker',
         'account',
+        'workerFk',
+        'note',
+        'isReal',
+        'isPayMethodChecked',
+        'companySize',
     ],
     include: [
         {

From 849d1b889a534b4b1d071a183301d4beb4f60f0b Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Tue, 4 Mar 2025 12:03:00 +0100
Subject: [PATCH 5/6] fix(TicketDescriptor): fix risk, adding client credit

---
 src/pages/Monitor/locale/en.yml            | 2 +-
 src/pages/Monitor/locale/es.yml            | 2 +-
 src/pages/Ticket/Card/TicketDescriptor.vue | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/pages/Monitor/locale/en.yml b/src/pages/Monitor/locale/en.yml
index 496c8761a..c049a5e53 100644
--- a/src/pages/Monitor/locale/en.yml
+++ b/src/pages/Monitor/locale/en.yml
@@ -22,7 +22,7 @@ salesTicketsTable:
     notVisible: Not visible
     purchaseRequest: Purchase request
     clientFrozen: Client frozen
-    risk: Risk
+    risk: Excess risk
     componentLack: Component lack
     tooLittle: Ticket too little
     identifier: Identifier
diff --git a/src/pages/Monitor/locale/es.yml b/src/pages/Monitor/locale/es.yml
index f6a29879f..a02d7f36f 100644
--- a/src/pages/Monitor/locale/es.yml
+++ b/src/pages/Monitor/locale/es.yml
@@ -22,7 +22,7 @@ salesTicketsTable:
     notVisible: No visible
     purchaseRequest: Petición de compra
     clientFrozen: Cliente congelado
-    risk: Riesgo
+    risk: Exceso de riesgo
     componentLack: Faltan componentes
     tooLittle: Ticket demasiado pequeño
     identifier: Identificador
diff --git a/src/pages/Ticket/Card/TicketDescriptor.vue b/src/pages/Ticket/Card/TicketDescriptor.vue
index c5f3233b1..1e585592f 100644
--- a/src/pages/Ticket/Card/TicketDescriptor.vue
+++ b/src/pages/Ticket/Card/TicketDescriptor.vue
@@ -93,9 +93,9 @@ function ticketFilter(ticket) {
             <VnLv :label="t('globals.warehouse')" :value="entity.warehouse?.name" />
             <VnLv :label="t('globals.alias')" :value="entity.nickname" />
         </template>
-        <template #icons>
+        <template #icons="{ entity }">
             <QCardActions class="q-gutter-x-xs">
-                <TicketProblems :row="problems" />
+                <TicketProblems :row="{ ...entity?.client, ...problems }" />
             </QCardActions>
         </template>
         <template #actions="{ entity }">

From 6b578b147d52eff83a9c74aeed1ec398fcb8262e Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Tue, 4 Mar 2025 12:34:11 +0100
Subject: [PATCH 6/6] test(invoiceOutSummary): skip ticket list test

---
 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 333f7e2c4..29d841acc 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -33,7 +33,7 @@ describe('InvoiceOut summary', () => {
         cy.get('.q-item > .q-item__label').should('include.text', '1101');
     });
 
-    it('should open the ticket list', () => {
+    it.skip('should open the ticket list', () => {
         cy.get(toTicketList).click();
         cy.get('.descriptor').should('be.visible');
         cy.dataCy('vnFilterPanelChip').should('include.text', 'T1111111');