From 1007a884b9634d1d1bee939a48a5fd59f955d02b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 8 May 2025 12:25:59 +0200 Subject: [PATCH 1/7] feat: remove reset selected variable --- src/components/VnTable/VnTable.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 29a9200f0..f26f96170 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -312,7 +312,6 @@ function stopEventPropagation(event) { } function reload(params) { - selected.value = []; CrudModelRef.value.reload(params); } From 7dcfeb0fc76dc0576bf778e95f178de821424c97 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 9 May 2025 11:56:18 +0200 Subject: [PATCH 2/7] test: try to fix entryBuys test --- test/cypress/integration/entry/commands.js | 4 ++-- test/cypress/integration/entry/entryCard/entryBuys.spec.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/test/cypress/integration/entry/commands.js b/test/cypress/integration/entry/commands.js index 4d4a8f980..8bc502f60 100644 --- a/test/cypress/integration/entry/commands.js +++ b/test/cypress/integration/entry/commands.js @@ -7,8 +7,8 @@ Cypress.Commands.add('selectTravel', (warehouse = '1') => { }); Cypress.Commands.add('deleteEntry', () => { - cy.get('[data-cy="descriptor-more-opts"]').should('be.visible').click(); - cy.waitForElement('div[data-cy="delete-entry"]').click(); + cy.openActionsDescriptor(); + cy.get('[data-cy="delete-entry"]').click(); }); Cypress.Commands.add('createEntry', () => { diff --git a/test/cypress/integration/entry/entryCard/entryBuys.spec.js b/test/cypress/integration/entry/entryCard/entryBuys.spec.js index b5e185a8e..a61ac4221 100644 --- a/test/cypress/integration/entry/entryCard/entryBuys.spec.js +++ b/test/cypress/integration/entry/entryCard/entryBuys.spec.js @@ -94,8 +94,10 @@ describe('EntryBuys', () => { cy.get('button[data-cy="vnTableCreateBtn"]').click(); cy.get('input[data-cy="itemFk-create-popup"]').type('1'); + cy.intercept('GET', /\/api\/Items\/1\/getVisibleAvailable/).as('item'); cy.get('div[role="listbox"] > div > div[role="option"]').eq(0).click(); + cy.wait('@item'); cy.get('input[data-cy="Grouping mode_select"]').should('have.value', 'packing'); - cy.get('button[data-cy="FormModelPopup_save"]').click(); + cy.saveFormModel(); } }); From 359f1cc4db8faf22a63a83e36e980485ebe31287 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 13 May 2025 13:51:05 +0200 Subject: [PATCH 3/7] fix: reset selected values on reload in VnTable and comment out selectedRows reset in TicketSale --- src/components/VnTable/VnTable.vue | 1 + src/pages/Ticket/Card/TicketSale.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index f26f96170..29a9200f0 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -312,6 +312,7 @@ function stopEventPropagation(event) { } function reload(params) { + selected.value = []; CrudModelRef.value.reload(params); } diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index 90ea4c11f..dbba77ab6 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -191,7 +191,7 @@ const resetChanges = async () => { tableRef.value.CrudModelRef.hasChanges = false; await tableRef.value.reload(); - selectedRows.value = []; + // selectedRows.value = []; }; const changeQuantity = async (sale) => { if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity) From 5be52872678cbfc428a67688a32c2eade62647a6 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 13 May 2025 13:51:33 +0200 Subject: [PATCH 4/7] fix: improve error handling in TicketList --- src/pages/Ticket/Card/TicketSale.vue | 2 -- src/pages/Ticket/TicketList.vue | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index dbba77ab6..774f7fc57 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -190,8 +190,6 @@ const resetChanges = async () => { await arrayData.fetch({ append: false }); tableRef.value.CrudModelRef.hasChanges = false; await tableRef.value.reload(); - - // selectedRows.value = []; }; const changeQuantity = async (sale) => { if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity) diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index 456747cf8..879700b9e 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -369,7 +369,11 @@ function openBalanceDialog(ticket) { ); if (!isSameClient) { - throw new Error('You cannot make a payment on account from multiple clients'); + notify( + t('You cannot make a payment on account from multiple clients'), + 'negative', + ); + return; } for (let ticketData of checkedTickets) { @@ -837,4 +841,5 @@ es: Zone: Zona New ticket: Nuevo ticket Component lack: Faltan componentes + You cannot make a payment on account from multiple clients: No puedes hacer un pago a cuenta de varios clientes From 0ec8283ba595dd638b734f24cc84b38c9aeb5713 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 19 May 2025 14:08:46 +0200 Subject: [PATCH 5/7] test: fix test ticketSale --- src/pages/Ticket/Card/TicketSale.vue | 2 ++ test/cypress/integration/ticket/ticketSale.spec.js | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index 627bfb86b..97ae0477c 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -187,9 +187,11 @@ const getRowUpdateInputEvents = (sale) => { }; const resetChanges = async () => { + const _selectedRows = selectedRows.value; await arrayData.fetch({ append: false }); tableRef.value.CrudModelRef.hasChanges = false; await tableRef.value.reload(); + tableRef.value.selected = _selectedRows; }; const changeQuantity = async (sale) => { if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity) diff --git a/test/cypress/integration/ticket/ticketSale.spec.js b/test/cypress/integration/ticket/ticketSale.spec.js index 7fc843cf1..8bb276f81 100644 --- a/test/cypress/integration/ticket/ticketSale.spec.js +++ b/test/cypress/integration/ticket/ticketSale.spec.js @@ -137,7 +137,7 @@ describe('TicketSale', { testIsolation: true }, () => { cy.dataCy('recalculatePriceItem').click(); cy.wait('@recalculatePrice').its('response.statusCode').should('eq', 200); cy.checkNotification('Data saved'); - cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled'); + cy.dataCy('ticketSaleMoreActionsDropdown').should('not.be.disabled'); }); it('should update discount when "Update discount" is clicked', () => { @@ -159,7 +159,7 @@ describe('TicketSale', { testIsolation: true }, () => { cy.dataCy('saveManaBtn').click(); cy.wait('@updateDiscount').its('response.statusCode').should('eq', 204); cy.checkNotification('Data saved'); - cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled'); + cy.dataCy('ticketSaleMoreActionsDropdown').should('not.be.disabled'); }); it('adds claim', () => { From 9a7f4cdd8c70e21299cbfb740bee314622ffea2b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 19 May 2025 15:05:45 +0200 Subject: [PATCH 6/7] fix: minor issue and add test --- .../Ticket/components/TicketNewPayment.vue | 42 ++++++++++++++----- .../integration/ticket/ticketList.spec.js | 19 +++++++++ 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/pages/Ticket/components/TicketNewPayment.vue b/src/pages/Ticket/components/TicketNewPayment.vue index 4951e5249..15a018b82 100644 --- a/src/pages/Ticket/components/TicketNewPayment.vue +++ b/src/pages/Ticket/components/TicketNewPayment.vue @@ -52,30 +52,50 @@ const filterBanks = { const state = useState(); const user = state.getUser(); +const originalDescription = ref(''); const initialData = ref({ ...$props.formData, companyFk: user.value.companyFk, payed: Date.vnNew(), + originalDescription: '', }); function setPaymentType(data, accounting) { - data.bankFk = accounting.id; if (!accounting) return; + + data.bankFk = accounting.id; accountingType.value = accounting.accountingType; + data.description = []; - data.payed = Date.vnNew(); isCash.value = accountingType.value.code == 'cash'; viewReceipt.value = isCash.value; - if (accountingType.value.daysInFuture) - data.payed.setDate(data.payed.getDate() + accountingType.value.daysInFuture); - maxAmount.value = accountingType.value && accountingType.value.maxAmount; - if (accountingType.value.code == 'compensation') return (data.description = ''); - let descriptions = []; - if (accountingType.value.receiptDescription) - descriptions.push(accountingType.value.receiptDescription); - if (data.description > 0) descriptions.push(data.description); - data.description = descriptions.join(', '); + switch (accountingType.value.code) { + case 'compensation': + data.description.push($props.formData.description); + break; + + default: + if ( + accountingType.value.receiptDescription != null && + accountingType.value.receiptDescription != '' + ) { + data.description.push(accountingType.value.receiptDescription); + } + const originalDescription = + data.originalDescription || $props.formData.description; + if (originalDescription) { + data.description.push(originalDescription); + } + } + + data.description = data.description.join(', '); + data.payed = Date.vnNew(); + if (accountingType.value.daysInFuture) { + data.payed.setDate(data.payed.getDate() + accountingType.value.daysInFuture); + } + + maxAmount.value = accountingType.value && accountingType.value.maxAmount; } const calculateFromAmount = (event) => { diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js index ae0e0ff10..67a1c29e2 100644 --- a/test/cypress/integration/ticket/ticketList.spec.js +++ b/test/cypress/integration/ticket/ticketList.spec.js @@ -26,6 +26,25 @@ describe('TicketList', () => { cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/); }); + it.only('should create payment ticket', () => { + cy.get('[data-cy="vnFilterPanel_search"] > .q-btn__content > .q-icon').click(); + + const rowSelected = + 'tbody > :nth-child(2) > :nth-child(1) > .q-checkbox > .q-checkbox__inner '; + cy.get(rowSelected).click(); + cy.get( + '[style="transform: translate(-256px, 0px); margin: 140px 20px; z-index: 2;"] > div > .q-btn', + ).click(); + const description = 'Albaran: 31'; + cy.dataCy('Reference_input').should('have.value', description); + cy.selectOption('[data-cy="paymentBank"]', 'Cash').click(); + cy.get('[data-cy="Delivered amount_input"]').clear(); + cy.get('[data-cy="Delivered amount_input"]').type('41.62'); + cy.dataCy('Reference_input').should('have.value', `Cash, ${description}`); + cy.get('[aria-label="View recipt"]').click(); + cy.get('.q-btn--standard > .q-btn__content > .block').click(); + }); + it('should open ticket summary', () => { searchResults(); cy.getRow().find('.q-btn:last').click(); From 33eb77864f308f536fba1a6748d6e858fc9c5abb Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 20 May 2025 08:38:24 +0200 Subject: [PATCH 7/7] test: minor changes --- test/cypress/integration/ticket/ticketBasicData.spec.js | 4 ++-- test/cypress/integration/ticket/ticketList.spec.js | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/test/cypress/integration/ticket/ticketBasicData.spec.js b/test/cypress/integration/ticket/ticketBasicData.spec.js index 443e9569b..6ad4d4518 100644 --- a/test/cypress/integration/ticket/ticketBasicData.spec.js +++ b/test/cypress/integration/ticket/ticketBasicData.spec.js @@ -6,7 +6,7 @@ describe('TicketBasicData', () => { cy.visit('/#/ticket/31/basic-data'); }); - it('Should redirect to customer basic data', () => { + it.skip('Should redirect to customer basic data', () => { cy.get('.q-page').should('be.visible'); cy.get(':nth-child(2) > div > .text-primary').click(); cy.dataCy('Address_select').click(); @@ -16,7 +16,7 @@ describe('TicketBasicData', () => { ).click(); cy.url().should('include', '/customer/1104/basic-data'); }); - it.only('stepper', () => { + it('stepper', () => { cy.get('.q-stepper__tab--active').should('have.class', 'q-stepper__tab--active'); cy.get('.q-stepper__nav > .q-btn--standard').click(); diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js index 67a1c29e2..f113494dc 100644 --- a/test/cypress/integration/ticket/ticketList.spec.js +++ b/test/cypress/integration/ticket/ticketList.spec.js @@ -26,8 +26,8 @@ describe('TicketList', () => { cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/); }); - it.only('should create payment ticket', () => { - cy.get('[data-cy="vnFilterPanel_search"] > .q-btn__content > .q-icon').click(); + it('should create payment ticket', () => { + cy.searchInFilterPanel().click(); const rowSelected = 'tbody > :nth-child(2) > :nth-child(1) > .q-checkbox > .q-checkbox__inner '; @@ -37,9 +37,8 @@ describe('TicketList', () => { ).click(); const description = 'Albaran: 31'; cy.dataCy('Reference_input').should('have.value', description); - cy.selectOption('[data-cy="paymentBank"]', 'Cash').click(); - cy.get('[data-cy="Delivered amount_input"]').clear(); - cy.get('[data-cy="Delivered amount_input"]').type('41.62'); + cy.selectOption('[data-cy="paymentBank"]', 'Cash'); + cy.dataCy('Delivered amount_input').clear().type('41.62'); cy.dataCy('Reference_input').should('have.value', `Cash, ${description}`); cy.get('[aria-label="View recipt"]').click(); cy.get('.q-btn--standard > .q-btn__content > .block').click();