From 64f29e0696b465feee45da34da5954520af0238b Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Thu, 20 Feb 2025 13:37:17 +0100
Subject: [PATCH 1/4] fix: address

---
 src/pages/Ticket/Card/TicketSummary.vue | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue
index 999240b7c9d..8cb518823f3 100644
--- a/src/pages/Ticket/Card/TicketSummary.vue
+++ b/src/pages/Ticket/Card/TicketSummary.vue
@@ -45,6 +45,15 @@ const descriptorData = useArrayData('ticketData');
 onMounted(async () => {
     ticketUrl.value = (await getUrl('ticket/')) + entityId.value + '/';
 });
+const formattedAddress = computed(() => {
+    if (!ticket.value) return '';
+
+    const address = ticket.value.address;
+    const postcode = address.postalCode;
+    const province = address.province ? `(${address.province.name})` : '';
+
+    return `${address.street} - ${postcode} - ${address.city} ${province}`;
+});
 
 function isEditable() {
     try {
@@ -237,7 +246,7 @@ onMounted(async () => {
                 />
                 <VnLv
                     :label="t('ticket.summary.consigneeStreet')"
-                    :value="entity.address?.street"
+                    :value="formattedAddress"
                 />
             </QCard>
             <QCard class="vn-one" v-if="entity.notes.length">

From a3828ab8692a0aee5f8890348b29dc8d233f325e Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Thu, 20 Feb 2025 21:16:05 +0100
Subject: [PATCH 2/4] fix: handle multiple changes

---
 src/pages/Ticket/Card/TicketSale.vue | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index 92936b26a74..a083ed3168b 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -174,11 +174,19 @@ const getSaleTotal = (sale) => {
     return price - discount;
 };
 
+const getRowUpdateInputEvents = (sale) => ({
+    'keyup.enter': () => {
+        changeQuantity(sale);
+    },
+    blur: () => {
+        changeQuantity(sale);
+    },
+});
+
 const resetChanges = async () => {
     arrayData.fetch({ append: false });
     tableRef.value.reload();
 };
-const rowToUpdate = ref(null);
 const changeQuantity = async (sale) => {
     if (
         !sale.itemFk ||
@@ -196,11 +204,8 @@ const changeQuantity = async (sale) => {
 const updateQuantity = async (sale) => {
     try {
         let { quantity, id } = sale;
-        if (!rowToUpdate.value) return;
-        rowToUpdate.value = null;
         sale.isNew = false;
-        const params = { quantity: quantity };
-        await axios.post(`Sales/${id}/updateQuantity`, params);
+        await axios.post(`Sales/${id}/updateQuantity`, { quantity });
         notify('globals.dataSaved', 'positive');
         tableRef.value.reload();
     } catch (e) {
@@ -816,9 +821,7 @@ watch(
                 v-if="row.isNew || isTicketEditable"
                 type="number"
                 v-model.number="row.quantity"
-                @blur="changeQuantity(row)"
-                @keyup.enter.stop="changeQuantity(row)"
-                @update:model-value="() => (rowToUpdate = row)"
+                v-on="getRowUpdateInputEvents(row)"
                 @focus="edit.oldQuantity = row.quantity"
             />
             <span v-else>{{ row.quantity }}</span>

From e82dc90ff9a91b26d48fb882a7f351dd5d3923f3 Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Fri, 21 Feb 2025 09:01:28 +0100
Subject: [PATCH 3/4] fix: ticketSale

---
 src/pages/Ticket/Card/TicketSale.vue | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index a083ed3168b..f5fb50ecff8 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -188,11 +188,7 @@ const resetChanges = async () => {
     tableRef.value.reload();
 };
 const changeQuantity = async (sale) => {
-    if (
-        !sale.itemFk ||
-        sale.quantity == null ||
-        edit.value?.oldQuantity === sale.quantity
-    )
+    if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity)
         return;
     if (!sale.id) return addSale(sale);
 

From 8536ade5b7e13ec4e1d962863ca49fbce218a501 Mon Sep 17 00:00:00 2001
From: Javier Segarra <jsegarra@verdnatura.es>
Date: Fri, 21 Feb 2025 09:01:40 +0100
Subject: [PATCH 4/4] feat: add keyup.enter

---
 src/pages/Ticket/Card/TicketSaleMoreActions.vue | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/pages/Ticket/Card/TicketSaleMoreActions.vue b/src/pages/Ticket/Card/TicketSaleMoreActions.vue
index 4cc96e9e2d3..8b5537edc80 100644
--- a/src/pages/Ticket/Card/TicketSaleMoreActions.vue
+++ b/src/pages/Ticket/Card/TicketSaleMoreActions.vue
@@ -50,6 +50,7 @@ const { dialog } = useQuasar();
 const { notify } = useNotify();
 const acl = useAcl();
 const btnDropdownRef = ref(null);
+const editManaProxyRef = ref(null);
 const { openConfirmationModal } = useVnConfirm();
 
 const newDiscount = ref(null);
@@ -131,13 +132,13 @@ const createClaim = () => {
         openConfirmationModal(
             t('Claim out of time'),
             t('Do you want to continue?'),
-            onCreateClaimAccepted
+            onCreateClaimAccepted,
         );
     else
         openConfirmationModal(
             t('Do you want to create a claim?'),
             false,
-            onCreateClaimAccepted
+            onCreateClaimAccepted,
         );
 };
 
@@ -216,8 +217,15 @@ const createRefund = async (withWarehouse) => {
                 <QItemSection>
                     <QItemLabel>{{ t('Update discount') }}</QItemLabel>
                 </QItemSection>
-                <TicketEditManaProxy :mana="props.mana" @save="changeMultipleDiscount()">
+                <TicketEditManaProxy
+                    ref="editManaProxyRef"
+                    :sale="row"
+                    :mana="props.mana"
+                    @save="changeMultipleDiscount"
+                >
                     <VnInput
+                        autofocus
+                        @keyup.enter.stop="() => editManaProxyRef.save(row)"
                         v-model.number="newDiscount"
                         :label="t('ticketSale.discount')"
                         type="number"