diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index d1fbdc312..7d0f3e0b2 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -48,6 +48,7 @@ globals: rowRemoved: Row removed pleaseWait: Please wait... noPinnedModules: You don't have any pinned modules + enterToConfirm: Press Enter to confirm summary: basicData: Basic data daysOnward: Days onward diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index bfab41a75..7ca9e4b4c 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -48,6 +48,7 @@ globals: rowRemoved: Fila eliminada pleaseWait: Por favor espera... noPinnedModules: No has fijado ningún módulo + enterToConfirm: Pulsa Enter para confirmar summary: basicData: Datos básicos daysOnward: Días adelante diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index 94d393900..082e14014 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -52,7 +52,6 @@ const transfer = ref({ sales: [], }); const tableRef = ref([]); -const canProceed = ref(); watch( () => route.params.id, @@ -132,7 +131,6 @@ const columns = computed(() => [ align: 'left', label: t('globals.amount'), name: 'amount', - format: (row) => toCurrency(getSaleTotal(row)), }, { align: 'left', @@ -182,8 +180,6 @@ const resetChanges = async () => { }; const rowToUpdate = ref(null); const changeQuantity = async (sale) => { - canProceed.value = await isSalePrepared(sale); - if (!canProceed.value) return; if ( !sale.itemFk || sale.quantity == null || @@ -192,11 +188,21 @@ const changeQuantity = async (sale) => { return; if (!sale.id) return addSale(sale); + if (await isSalePrepared(sale)) { + await confirmUpdate(() => updateQuantity(sale)); + } else await updateQuantity(sale); +}; + +const updateQuantity = async (sale) => { try { + let { quantity, id } = sale; if (!rowToUpdate.value) return; rowToUpdate.value = null; sale.isNew = false; - await updateQuantity(sale); + const params = { quantity: quantity }; + await axios.post(`Sales/${id}/updateQuantity`, params); + notify('globals.dataSaved', 'positive'); + tableRef.value.reload(); } catch (e) { const { quantity } = tableRef.value.CrudModelRef.originalData.find( (s) => s.id === sale.id, @@ -206,12 +212,6 @@ const changeQuantity = async (sale) => { } }; -const updateQuantity = async ({ quantity, id }) => { - const params = { quantity: quantity }; - await axios.post(`Sales/${id}/updateQuantity`, params); - notify('globals.dataSaved', 'positive'); -}; - const addSale = async (sale) => { const params = { barcode: sale.itemFk, @@ -236,13 +236,17 @@ const addSale = async (sale) => { sale.isNew = false; arrayData.fetch({}); }; +const changeConcept = async (sale) => { + if (await isSalePrepared(sale)) { + await confirmUpdate(() => updateConcept(sale)); + } else await updateConcept(sale); +}; const updateConcept = async (sale) => { - canProceed.value = await isSalePrepared(sale); - if (!canProceed.value) return; const data = { newConcept: sale.concept }; await axios.post(`Sales/${sale.id}/updateConcept`, data); notify('globals.dataSaved', 'positive'); + tableRef.value.reload(); }; const DEFAULT_EDIT = { @@ -294,33 +298,36 @@ const onOpenEditDiscountPopover = async (sale) => { }; } }; - -const updatePrice = async (sale) => { - canProceed.value = await isSalePrepared(sale); - if (!canProceed.value) return; +const changePrice = async (sale) => { const newPrice = edit.value.price; if (newPrice != null && newPrice != sale.price) { - await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice }); - sale.price = newPrice; - edit.value = { ...DEFAULT_EDIT }; - notify('globals.dataSaved', 'positive'); + if (await isSalePrepared(sale)) { + await confirmUpdate(() => updatePrice(sale, newPrice)); + } else updatePrice(sale, newPrice); } - await getMana(); }; +const updatePrice = async (sale, newPrice) => { + await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice }); + sale.price = newPrice; + edit.value = { ...DEFAULT_EDIT }; + notify('globals.dataSaved', 'positive'); + tableRef.value.reload(); +}; const changeDiscount = async (sale) => { const newDiscount = edit.value.discount; if (newDiscount != null && newDiscount != sale.discount) { - if (isSalePrepared(sale)) + if (await isSalePrepared(sale)) await confirmUpdate(() => updateDiscount([sale], newDiscount)); + else await updateDiscount([sale], newDiscount); } }; const updateDiscounts = async (sales, newDiscount = null) => { - const someSaleIsPrepared = sales.some(isSalePrepared); - if (someSaleIsPrepared); - await confirmUpdate(() => updateDiscount(sales, newDiscount)); + const someSaleIsPrepared = await sales.some(isSalePrepared); + if (someSaleIsPrepared) await confirmUpdate(() => updateDiscount(sales, newDiscount)); + else updateDiscount(sales, newDiscount); }; const updateDiscount = async (sales, newDiscount = null) => { @@ -426,9 +433,13 @@ onMounted(async () => { const items = ref([]); const newRow = ref({}); +const changeItem = async (sale) => { + if (await isSalePrepared(sale)) { + await confirmUpdate(() => updateItem(sale)); + } else await updateItem(sale); +}; + const updateItem = async (row) => { - canProceed.value = await isSalePrepared(row); - if (!canProceed.value) return; const selectedItem = items.value.find((item) => item.id === row.itemFk); if (selectedItem) { row.item = selectedItem; @@ -499,22 +510,27 @@ async function isSalePrepared(sale) { const matchingSale = data.find(({ itemFk }) => itemFk === sale.itemFk); if (!matchingSale) { + return false; + } + + const flagsToCheck = [ + 'hasSaleGroupDetail', + 'isControled', + 'isPrepared', + 'isPrevious', + 'isPreviousSelected', + ]; + if (flagsToCheck.some((flag) => matchingSale[flag] === 1)) { return true; } - return ( - matchingSale.hasSaleGroupDetail || - matchingSale.isControled || - matchingSale.isPrepared || - matchingSale.isPrevious || - matchingSale.isPreviousSelected - ); + return false; } watch( () => newRow.value.itemFk, (newItemFk) => { if (newItemFk) { - updateItem(newRow.value); + changeItem(newRow.value); } }, ); @@ -751,7 +767,7 @@ watch( option-value="id" v-model="row.itemFk" :use-like="false" - @update:model-value="updateItem(row)" + @update:model-value="changeItem(row)" > +