From 36918d8434fd42dde172e85ec47e13f618bd2914 Mon Sep 17 00:00:00 2001 From: PAU ROVIRA ROSALENY Date: Wed, 2 Apr 2025 09:13:59 +0000 Subject: [PATCH 01/23] fix: fixed CustomerConsumption errors when changing customer & downloading pdf --- src/pages/Customer/Card/CustomerConsumption.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Customer/Card/CustomerConsumption.vue b/src/pages/Customer/Card/CustomerConsumption.vue index f3949bb32..db7236a3d 100644 --- a/src/pages/Customer/Card/CustomerConsumption.vue +++ b/src/pages/Customer/Card/CustomerConsumption.vue @@ -18,7 +18,7 @@ import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue'; import VnSelect from 'components/common/VnSelect.vue'; import VnInputDate from 'components/common/VnInputDate.vue'; -const arrayData = useArrayData('Client'); +const arrayData = useArrayData('Customer'); const { t } = useI18n(); const route = useRoute(); const campaignList = ref(); @@ -260,7 +260,7 @@ const updateDateParams = (value, params) => { :label="t('globals.campaign')" :filled="true" class="q-px-sm q-pt-none fit" - :option-label="(opt) => t(opt.code)" + :option-label="(opt) => t(opt.code ?? '')" :fields="['id', 'code', 'dated', 'scopeDays']" @update:model-value="(data) => updateDateParams(data, params)" dense From 8d3c2f51cfaa461119a81b7fb613e146c48eb784 Mon Sep 17 00:00:00 2001 From: PAU ROVIRA ROSALENY Date: Wed, 2 Apr 2025 11:53:44 +0000 Subject: [PATCH 02/23] fix: fixed errors on CustomerSamples --- src/pages/Customer/Card/CustomerSamples.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Customer/Card/CustomerSamples.vue b/src/pages/Customer/Card/CustomerSamples.vue index 19a7f8759..756ae4667 100644 --- a/src/pages/Customer/Card/CustomerSamples.vue +++ b/src/pages/Customer/Card/CustomerSamples.vue @@ -34,7 +34,7 @@ const columns = computed(() => [ }, { align: 'left', - format: (row) => row.type.description, + format: (row) => row?.type?.description, label: t('Description'), name: 'description', }, From 85f74e5ad8da4a5f41bd4a3662ee1d6861d2b5d4 Mon Sep 17 00:00:00 2001 From: jgallego Date: Wed, 2 Apr 2025 15:38:39 +0200 Subject: [PATCH 03/23] refactor: refs #6696 remove VnUsesMana component and update related logic in TicketEditMana and TicketSale --- src/components/ui/VnUsesMana.vue | 60 ------------------------ src/pages/Ticket/Card/TicketEditMana.vue | 59 ++++++++++++++--------- src/pages/Ticket/Card/TicketSale.vue | 28 ++++------- src/router/modules/ticket.js | 4 +- 4 files changed, 48 insertions(+), 103 deletions(-) delete mode 100644 src/components/ui/VnUsesMana.vue diff --git a/src/components/ui/VnUsesMana.vue b/src/components/ui/VnUsesMana.vue deleted file mode 100644 index cb066b235..000000000 --- a/src/components/ui/VnUsesMana.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - es: - Promotion mana: Maná promoción - Claim mana: Maná reclamación - diff --git a/src/pages/Ticket/Card/TicketEditMana.vue b/src/pages/Ticket/Card/TicketEditMana.vue index 266c82ccd..152d24dc5 100644 --- a/src/pages/Ticket/Card/TicketEditMana.vue +++ b/src/pages/Ticket/Card/TicketEditMana.vue @@ -4,7 +4,6 @@ import { useI18n } from 'vue-i18n'; import { computed, ref } from 'vue'; import { useRoute } from 'vue-router'; import { toCurrency } from 'src/filters'; -import VnUsesMana from 'components/ui/VnUsesMana.vue'; const $props = defineProps({ newPrice: { @@ -15,23 +14,36 @@ const $props = defineProps({ type: Object, default: null, }, + componentId: { + type: Number, + default: null, + }, }); +const emit = defineEmits(['save', 'cancel', 'update:componentId']); + const route = useRoute(); const mana = ref(null); -const usesMana = ref(false); - -const emit = defineEmits(['save', 'cancel']); +const usesMana = ref([]); const { t } = useI18n(); const QPopupProxyRef = ref(null); -const manaCode = ref($props.manaCode); + +const componentId = computed({ + get: () => $props.componentId, + set: (val) => emit('update:componentId', val), +}); const save = (sale = $props.sale) => { emit('save', sale); QPopupProxyRef.value.hide(); }; +const cancel = () => { + emit('cancel'); + QPopupProxyRef.value.hide(); +}; + const getMana = async () => { const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`); mana.value = data; @@ -39,15 +51,12 @@ const getMana = async () => { }; const getUsesMana = async () => { - const { data } = await axios.get('Sales/usesMana'); + const { data } = await axios.get('Sales/getComponents'); usesMana.value = data; }; -const cancel = () => { - emit('cancel'); - QPopupProxyRef.value.hide(); -}; const hasMana = computed(() => typeof mana.value === 'number'); + defineExpose({ save }); @@ -59,17 +68,28 @@ defineExpose({ save }); >
Mana: {{ toCurrency(mana) }}
- + + +
-
- + +
+
+
{{ t('New price') }} - - {{ toCurrency($props.newPrice) }} - + {{ toCurrency(newPrice) }}
@@ -77,7 +97,6 @@ defineExpose({ save }); @@ -86,7 +105,6 @@ defineExpose({ save }); - - -es: - New price: Nuevo precio - diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index 2fb305cc3..d84d322fc 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -45,7 +45,7 @@ const isTicketEditable = ref(false); const sales = ref([]); const editableStatesOptions = ref([]); const selectedSales = ref([]); -const manaCode = ref('mana'); +const componentId = ref(null); const ticketState = computed(() => store.data?.ticketState?.state?.code); const transfer = ref({ lastActiveTickets: [], @@ -262,18 +262,6 @@ const DEFAULT_EDIT = { oldQuantity: null, }; const edit = ref({ ...DEFAULT_EDIT }); -const usesMana = ref(null); - -const getUsesMana = async () => { - const { data } = await axios.get('Sales/usesMana'); - usesMana.value = data; -}; - -const getMana = async () => { - const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`); - mana.value = data; - await getUsesMana(); -}; const selectedValidSales = computed(() => { if (!sales.value) return; @@ -306,11 +294,14 @@ const changePrice = async (sale) => { if (newPrice != null && newPrice != sale.price) { if (await isSalePrepared(sale)) { await confirmUpdate(() => updatePrice(sale, newPrice)); - } else updatePrice(sale, newPrice); + } else await updatePrice(sale, newPrice); } }; const updatePrice = async (sale, newPrice) => { - await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice }); + await axios.post(`Sales/${sale.id}/updatePrice`, { + newPrice: newPrice, + componentId: componentId.value, + }); sale.price = newPrice; edit.value = { ...DEFAULT_EDIT }; notify('globals.dataSaved', 'positive'); @@ -341,7 +332,7 @@ const updateDiscount = async (sales, newDiscount = 0) => { const params = { salesIds, newDiscount, - manaCode: manaCode.value, + componentId: componentId.value, }; await axios.post(`Tickets/${route.params.id}/updateDiscount`, params); notify('globals.dataSaved', 'positive'); @@ -796,10 +787,11 @@ watch( ref="editPriceProxyRef" :sale="row" :new-price="getNewPrice" + v-model:component-id="componentId" @save="changePrice" > import('src/pages/Ticket/Card/TicketExpedition.vue'), }, @@ -168,7 +168,7 @@ const ticketCard = { name: 'TicketBoxing', meta: { title: 'boxing', - icon: 'view_in_ar', + icon: 'videocam', }, component: () => import('src/pages/Ticket/Card/TicketBoxing.vue'), }, From d637ca978532781b6e1ed3628e6f1c498b23b953 Mon Sep 17 00:00:00 2001 From: jgallego Date: Sun, 6 Apr 2025 13:26:33 +0200 Subject: [PATCH 04/23] fix: refs #6696 handle optional chaining and ensure async operations in TicketSale components --- src/pages/Customer/Card/CustomerSummary.vue | 2 +- src/pages/Ticket/Card/TicketSale.vue | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/pages/Customer/Card/CustomerSummary.vue b/src/pages/Customer/Card/CustomerSummary.vue index 7d5d691a3..8687f85bc 100644 --- a/src/pages/Customer/Card/CustomerSummary.vue +++ b/src/pages/Customer/Card/CustomerSummary.vue @@ -183,7 +183,7 @@ const sumRisk = ({ clientRisks }) => { /> diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index d84d322fc..0ad3754c4 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -186,8 +186,8 @@ const getRowUpdateInputEvents = (sale) => { }; const resetChanges = async () => { - arrayData.fetch({ append: false }); - tableRef.value.reload(); + await arrayData.fetch({ append: false }); + await tableRef.value.reload(); selectedRows.value = []; }; const changeQuantity = async (sale) => { @@ -302,10 +302,8 @@ const updatePrice = async (sale, newPrice) => { newPrice: newPrice, componentId: componentId.value, }); - sale.price = newPrice; - edit.value = { ...DEFAULT_EDIT }; notify('globals.dataSaved', 'positive'); - resetChanges(); + await resetChanges(); }; const changeDiscount = async (sale) => { From 5bd2859e5d10ee4b145a89230f81ff4d536b590a Mon Sep 17 00:00:00 2001 From: jgallego Date: Tue, 8 Apr 2025 10:33:11 +0200 Subject: [PATCH 05/23] fix: refs #6696 update login role in tests and add data attributes for component options --- src/pages/Claim/Card/ClaimSummary.vue | 23 ++++++++++--------- src/pages/Ticket/Card/TicketEditMana.vue | 1 + .../integration/ticket/ticketSale.spec.js | 16 ++++++++----- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue index 67d57004f..196d24e07 100644 --- a/src/pages/Claim/Card/ClaimSummary.vue +++ b/src/pages/Claim/Card/ClaimSummary.vue @@ -346,17 +346,18 @@ function claimUrl(section) { diff --git a/src/pages/Ticket/Card/TicketEditMana.vue b/src/pages/Ticket/Card/TicketEditMana.vue index 152d24dc5..f8a72caf3 100644 --- a/src/pages/Ticket/Card/TicketEditMana.vue +++ b/src/pages/Ticket/Card/TicketEditMana.vue @@ -84,6 +84,7 @@ defineExpose({ save }); dense :dark="true" class="q-mb-sm" + :data-cy="`componentOption-${item.id}`" />
diff --git a/test/cypress/integration/ticket/ticketSale.spec.js b/test/cypress/integration/ticket/ticketSale.spec.js index 6d84f214c..7f2633092 100644 --- a/test/cypress/integration/ticket/ticketSale.spec.js +++ b/test/cypress/integration/ticket/ticketSale.spec.js @@ -4,7 +4,7 @@ const firstRow = 'tbody > :nth-child(1)'; describe('TicketSale', () => { describe('Ticket #23', () => { beforeEach(() => { - cy.login('developer'); + cy.login('salesPerson'); cy.viewport(1920, 1080); cy.visit('/#/ticket/23/sale'); }); @@ -15,6 +15,8 @@ describe('TicketSale', () => { cy.get('[data-col-field="price"]').find('.q-btn').click(); cy.waitForElement('[data-cy="ticketEditManaProxy"]'); cy.dataCy('ticketEditManaProxy').should('exist'); + cy.get('[data-cy="componentOption-17"]').click(); + cy.waitForElement('[data-cy="Price_input"]'); cy.dataCy('Price_input').clear(); cy.dataCy('Price_input').type(price); @@ -31,6 +33,7 @@ describe('TicketSale', () => { cy.get('[data-col-field="discount"]').find('.q-btn').click(); cy.waitForElement('[data-cy="ticketEditManaProxy"]'); cy.dataCy('ticketEditManaProxy').should('exist'); + cy.get('[data-cy="componentOption-17"]').click(); cy.waitForElement('[data-cy="Disc_input"]'); cy.dataCy('Disc_input').clear(); cy.dataCy('Disc_input').type(discount); @@ -73,7 +76,7 @@ describe('TicketSale', () => { }); describe('Ticket to add claim #24', () => { beforeEach(() => { - cy.login('developer'); + cy.login('salesPerson'); cy.viewport(1920, 1080); cy.visit('/#/ticket/24/sale'); }); @@ -90,9 +93,9 @@ describe('TicketSale', () => { cy.dataCy('VnConfirm_confirm').click(); }); }); - describe('Free ticket #31', () => { + describe.only('Free ticket #31', () => { beforeEach(() => { - cy.login('developer'); + cy.login('salesPerson'); cy.viewport(1920, 1080); cy.visit('/#/ticket/31/sale'); }); @@ -129,7 +132,7 @@ describe('TicketSale', () => { cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled'); }); - it('should update discount when "Update discount" is clicked', () => { + it.only('should update discount when "Update discount" is clicked', () => { selectFirstRow(); cy.dataCy('ticketSaleMoreActionsDropdown').click(); cy.waitForElement('[data-cy="updateDiscountItem"]'); @@ -138,6 +141,7 @@ describe('TicketSale', () => { cy.waitForElement('[data-cy="ticketSaleDiscountInput"]'); cy.dataCy('ticketSaleDiscountInput').find('input').focus(); cy.dataCy('ticketSaleDiscountInput').find('input').type('10'); + cy.get('[data-cy="componentOption-17"]').click(); cy.dataCy('saveManaBtn').click(); cy.waitForElement('.q-notification__message'); cy.checkNotification('Data saved'); @@ -175,7 +179,7 @@ describe('TicketSale', () => { }); describe('Ticket to transfer #32', () => { beforeEach(() => { - cy.login('developer'); + cy.login('salesPerson'); cy.viewport(1920, 1080); cy.visit('/#/ticket/32/sale'); }); From c47cb05cbd22b8547aa64345f3daac8dab21f7f1 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 9 Apr 2025 08:23:38 +0200 Subject: [PATCH 06/23] fix(VnLog): update filter to include originFk and improve sorting in VnLogFilter --- src/components/common/VnLog.vue | 9 +-------- src/components/common/VnLogFilter.vue | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/components/common/VnLog.vue b/src/components/common/VnLog.vue index e2f18866a..7020c8489 100644 --- a/src/components/common/VnLog.vue +++ b/src/components/common/VnLog.vue @@ -68,7 +68,6 @@ const filter = { }, }, ], - where: { and: [{ originFk: route.params.id }] }, }; const paginate = ref(); @@ -267,13 +266,6 @@ onMounted(() => { onUnmounted(() => { stateStore.rightDrawer = false; }); - -watch( - () => router.currentRoute.value.params.id, - () => { - applyFilter(); - }, -);