diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index e721e2d1c..b83ff7e93 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -197,12 +197,7 @@ const changeQuantity = async (sale) => { if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity) return; else sale.originalQuantity = sale.quantity; - try { - if (!sale.id) await addSale(sale); - } catch (e) { - app.config.errorHandler(e); - return; - } + if (!sale.id) await addSale(sale); if (await isSalePrepared(sale)) { await confirmUpdate(() => updateQuantity(sale)); @@ -229,27 +224,23 @@ const addSale = async (sale) => { barcode: sale.itemFk, quantity: sale.quantity, }; - try { - const { data } = await axios.post(`tickets/${route.params.id}/addSale`, params); + const { data } = await axios.post(`tickets/${route.params.id}/addSale`, params); - if (!data) return; + if (!data) return; - const newSale = data; - sale.id = newSale.id; - sale.image = newSale.item.image; - sale.subName = newSale.item.subName; - sale.concept = newSale.concept; - sale.quantity = newSale.quantity; - sale.discount = newSale.discount; - sale.price = newSale.price; - sale.item = newSale.item; + const newSale = data; + sale.id = newSale.id; + sale.image = newSale.item.image; + sale.subName = newSale.item.subName; + sale.concept = newSale.concept; + sale.quantity = newSale.quantity; + sale.discount = newSale.discount; + sale.price = newSale.price; + sale.item = newSale.item; - notify('globals.dataSaved', 'positive'); - sale.isNew = false; - resetChanges(); - } catch (e) { - app.config.errorHandler(e); - } + notify('globals.dataSaved', 'positive'); + sale.isNew = false; + resetChanges(); }; const changeConcept = async (sale) => { if (await isSalePrepared(sale)) { @@ -258,14 +249,10 @@ const changeConcept = async (sale) => { }; const updateConcept = async (sale) => { - try { - const data = { newConcept: sale.concept }; - await axios.post(`Sales/${sale.id}/updateConcept`, data); - notify('globals.dataSaved', 'positive'); - resetChanges(); - } catch (e) { - app.config.errorHandler(e); - } + const data = { newConcept: sale.concept }; + await axios.post(`Sales/${sale.id}/updateConcept`, data); + notify('globals.dataSaved', 'positive'); + resetChanges(); }; const DEFAULT_EDIT = { @@ -343,20 +330,15 @@ const updateDiscounts = async (sales, newDiscount) => { }; const updateDiscount = async (sales, newDiscount = 0) => { - try { - const salesIds = sales.map(({ id }) => id); - const params = { - salesIds, - newDiscount, - manaCode: manaCode.value, - }; - await axios.post(`Tickets/${route.params.id}/updateDiscount`, params); - notify('globals.dataSaved', 'positive'); - resetChanges(); - } catch (e) { - app.config.errorHandler(e); - return; - } + const salesIds = sales.map(({ id }) => id); + const params = { + salesIds, + newDiscount, + manaCode: manaCode.value, + }; + await axios.post(`Tickets/${route.params.id}/updateDiscount`, params); + notify('globals.dataSaved', 'positive'); + resetChanges(); }; const getNewPrice = computed(() => { @@ -378,15 +360,11 @@ const getNewPrice = computed(() => { }); const newOrderFromTicket = async () => { - try { - const { data } = await axios.post(`Orders/newFromTicket`, { - ticketFk: Number(route.params.id), - }); - const routeData = router.resolve({ name: 'OrderCatalog', params: { id: data } }); - window.open(routeData.href, '_blank'); - } catch (e) { - app.config.errorHandler(e); - } + const { data } = await axios.post(`Orders/newFromTicket`, { + ticketFk: Number(route.params.id), + }); + const routeData = router.resolve({ name: 'OrderCatalog', params: { id: data } }); + window.open(routeData.href, '_blank'); }; const goToLog = (saleId) => { @@ -403,15 +381,11 @@ const goToLog = (saleId) => { }; const changeTicketState = async (val) => { - try { - stateBtnDropdownRef.value.hide(); - const params = { ticketFk: route.params.id, code: val }; - await axios.post('Tickets/state', params); - notify('globals.dataSaved', 'positive'); - resetChanges(); - } catch (e) { - app.config.errorHandler(e); - } + stateBtnDropdownRef.value.hide(); + const params = { ticketFk: route.params.id, code: val }; + await axios.post('Tickets/state', params); + notify('globals.dataSaved', 'positive'); + resetChanges(); }; const removeSelectedSales = () => { @@ -431,14 +405,10 @@ const removeSales = async () => { .forEach((sale) => tableRef.value.CrudModelRef.formData.splice(sale.$index, 1)); if (params.sales.length == 0) return; - try { - await axios.post('Sales/deleteSales', params); - removeSelectedSales(); - notify('globals.dataSaved', 'positive'); - resetChanges(); - } catch (e) { - app.config.errorHandler(e); - } + await axios.post('Sales/deleteSales', params); + removeSelectedSales(); + notify('globals.dataSaved', 'positive'); + resetChanges(); }; const setTransferParams = async () => { diff --git a/test/cypress/integration/ticket/ticketSale.spec.js b/test/cypress/integration/ticket/ticketSale.spec.js index 6d84f214c..b962c1e6c 100644 --- a/test/cypress/integration/ticket/ticketSale.spec.js +++ b/test/cypress/integration/ticket/ticketSale.spec.js @@ -4,20 +4,29 @@ 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'); }); - it('update price', () => { - const price = Number((Math.random() * 99 + 1).toFixed(2)); + it('error - update price', () => { cy.waitForElement(firstRow); - cy.get('[data-col-field="price"]').find('.q-btn').click(); + cy.get('[data-col-field="price"]').find('.q-btn').eq(1).click(); cy.waitForElement('[data-cy="ticketEditManaProxy"]'); cy.dataCy('ticketEditManaProxy').should('exist'); cy.waitForElement('[data-cy="Price_input"]'); - cy.dataCy('Price_input').clear(); - cy.dataCy('Price_input').type(price); + cy.dataCy('Price_input').clear().type(-1); + cy.dataCy('saveManaBtn').click(); + cy.checkNotification('Price must be greater than 0'); + }); + it('update price', () => { + const price = Number((Math.random() * 99 + 1).toFixed(2)); + cy.waitForElement(firstRow); + cy.get('[data-col-field="price"]').find('.q-btn').eq(1).click(); + cy.waitForElement('[data-cy="ticketEditManaProxy"]'); + cy.dataCy('ticketEditManaProxy').should('exist'); + cy.waitForElement('[data-cy="Price_input"]'); + cy.dataCy('Price_input').clear().type(price); cy.dataCy('saveManaBtn').click(); handleVnConfirm(); @@ -25,15 +34,24 @@ describe('TicketSale', () => { .find('.q-btn > .q-btn__content') .should('contain.text', `€${price}`); }); - it('update discount', () => { - const discount = Math.floor(Math.random() * 100) + 1; + it('error - update discount', () => { selectFirstRow(); - cy.get('[data-col-field="discount"]').find('.q-btn').click(); + cy.get('[data-col-field="discount"]').find('.q-btn').eq(1).click(); cy.waitForElement('[data-cy="ticketEditManaProxy"]'); cy.dataCy('ticketEditManaProxy').should('exist'); cy.waitForElement('[data-cy="Disc_input"]'); - cy.dataCy('Disc_input').clear(); - cy.dataCy('Disc_input').type(discount); + cy.dataCy('Disc_input').clear().type(200); + cy.dataCy('saveManaBtn').click(); + cy.checkNotification('Price must be greater than 0'); + }); + it('update discount', () => { + const discount = Math.floor(Math.random() * 100) + 1; + selectFirstRow(); + cy.get('[data-col-field="discount"]').find('.q-btn').eq(1).click(); + cy.waitForElement('[data-cy="ticketEditManaProxy"]'); + cy.dataCy('ticketEditManaProxy').should('exist'); + cy.waitForElement('[data-cy="Disc_input"]'); + cy.dataCy('Disc_input').find('input').eq(1).clear().type(discount); cy.dataCy('saveManaBtn').click(); handleVnConfirm(); @@ -54,10 +72,19 @@ describe('TicketSale', () => { cy.get('[data-col-field="item"]').should('contain.text', `${concept}`); }); + it('error - change quantity ', () => { + cy.waitForElement(firstRow); + cy.dataCy('ticketSaleQuantityInput').find('input').eq(1).clear(); + cy.dataCy('ticketSaleQuantityInput') + .find('input') + .eq(1) + .type(9999999999) + .trigger('tab'); + }); it('change quantity ', () => { const quantity = Math.floor(Math.random() * 100) + 1; cy.waitForElement(firstRow); - cy.dataCy('ticketSaleQuantityInput').find('input').clear(); + cy.dataCy('ticketSaleQuantityInput').find('input').eq(1).clear(); cy.dataCy('ticketSaleQuantityInput') .find('input') .type(quantity)