From 4307d976391af3e886477511c2362d56c6383d34 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Fri, 6 Feb 2026 23:22:59 -0600 Subject: [PATCH] =?UTF-8?q?feat:=20exportaci=C3=B3n=20de=20kardex=20y=20me?= =?UTF-8?q?joras=20en=20b=C3=BAsqueda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Implementa KardexModal para generar reportes de inventario. - Optimiza búsqueda en modales con debounce y visualización de SKU. - Agrega cálculo de costos totales y stock disponible por almacén. --- src/pages/POS/Inventory/CreateModal.vue | 17 -- src/pages/POS/Inventory/EditModal.vue | 17 -- src/pages/POS/Inventory/Index.vue | 127 ++++++++--- src/pages/POS/Movements/EntryModal.vue | 15 -- src/pages/POS/Movements/ExitModal.vue | 249 ++++++++++++++++++-- src/pages/POS/Movements/Index.vue | 17 ++ src/pages/POS/Movements/KardexModal.vue | 256 +++++++++++++++++++++ src/pages/POS/Movements/TransferModal.vue | 266 ++++++++++++++++++++-- src/services/reportService.js | 71 ++++++ 9 files changed, 912 insertions(+), 123 deletions(-) create mode 100644 src/pages/POS/Movements/KardexModal.vue diff --git a/src/pages/POS/Inventory/CreateModal.vue b/src/pages/POS/Inventory/CreateModal.vue index f8198a3..aea0884 100644 --- a/src/pages/POS/Inventory/CreateModal.vue +++ b/src/pages/POS/Inventory/CreateModal.vue @@ -23,7 +23,6 @@ const form = useForm({ sku: '', barcode: '', category_id: '', - cost: 0, retail_price: 0, tax: 16 }); @@ -157,22 +156,6 @@ watch(() => props.show, (newValue) => { - -
- - - -
-
- -
- - - -
-
diff --git a/src/pages/POS/Movements/EntryModal.vue b/src/pages/POS/Movements/EntryModal.vue index eeaae83..3d5c2fd 100644 --- a/src/pages/POS/Movements/EntryModal.vue +++ b/src/pages/POS/Movements/EntryModal.vue @@ -86,11 +86,6 @@ const removeProduct = (index) => { selectedProducts.value.splice(index, 1); }; -const getProductName = (productId) => { - const product = products.value.find(p => p.id == productId); - return product ? `${product.name} (${product.sku})` : ''; -}; - /** Métodos de búsqueda de productos */ const onProductInput = (index) => { currentSearchIndex.value = index; @@ -166,16 +161,6 @@ const selectProduct = (product) => { window.Notify.success(`Producto ${product.name} agregado`); }; -const clearProductSearch = (index) => { - if (currentSearchIndex.value === index) { - productSearch.value = ''; - productSuggestions.value = []; - showProductSuggestions.value = false; - productNotFound.value = false; - currentSearchIndex.value = null; - } -}; - const createEntry = () => { // Preparar datos del formulario form.products = selectedProducts.value.map(item => ({ diff --git a/src/pages/POS/Movements/ExitModal.vue b/src/pages/POS/Movements/ExitModal.vue index 5f17d05..de7ab24 100644 --- a/src/pages/POS/Movements/ExitModal.vue +++ b/src/pages/POS/Movements/ExitModal.vue @@ -1,6 +1,7 @@ + + diff --git a/src/pages/POS/Movements/TransferModal.vue b/src/pages/POS/Movements/TransferModal.vue index 894b793..7c71857 100644 --- a/src/pages/POS/Movements/TransferModal.vue +++ b/src/pages/POS/Movements/TransferModal.vue @@ -1,6 +1,7 @@