From 5e865958317a997ec7d7d1afa2ea207b552c598f Mon Sep 17 00:00:00 2001 From: aserrador Date: Sat, 30 May 2026 20:57:50 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20agregar=20sincronizaci=C3=B3n=20de=20ve?= =?UTF-8?q?ntas=20de=20cat=C3=A1logo=20a=20Tryton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Agregar método sendCatalogSalesToTryton() en django-api.js y api.js - Crear página sincronizar_catalog_sales_tryton.vue para exportar catalog_sales - Agregar botón 'Sincronizar a Tryton' en CatalogSalesManagement header - Reorganizar menú admin en NavBar con sección 'Sincronización Tryton' - Separar opciones de importación (download) y exportación (upload) a Tryton - Endpoint: /don_confiao/api/enviar_catalog_sales_a_tryton - Mostrar resultados exitosos/fallidos similar a sincronización de ventas normales --- src/components/CatalogSalesManagement.vue | 8 ++ src/components/NavBar.vue | 26 ++-- .../sincronizar_catalog_sales_tryton.vue | 120 ++++++++++++++++++ src/services/api.js | 4 + src/services/django-api.js | 5 + 5 files changed, 153 insertions(+), 10 deletions(-) create mode 100644 src/pages/sincronizar_catalog_sales_tryton.vue diff --git a/src/components/CatalogSalesManagement.vue b/src/components/CatalogSalesManagement.vue index 9d596b3..7115d3f 100644 --- a/src/components/CatalogSalesManagement.vue +++ b/src/components/CatalogSalesManagement.vue @@ -6,6 +6,14 @@

Ventas por Catálogo

+ + Sincronizar a Tryton + {{ catalogSales.length }} venta(s) diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index 4a0bdc6..e0c0e27 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -63,13 +63,16 @@ - + @@ -105,9 +108,12 @@ { title: 'Compra adm', route: '/compra_admin', icon: 'mdi-cart'}, { title: 'Gestión de Productos', route: '/admin/products', icon: 'mdi-package-variant'}, { title: 'Ver Ventas por Catálogo', route: '/admin/catalog-sales', icon: 'mdi-cart-arrow-down'}, - { title: 'Actualizar Productos De Tryton', route: '/sincronizar_productos_tryton', icon: 'mdi-sync'}, - { title: 'Actualizar Clientes De Tryton', route: '/sincronizar_clientes_tryton', icon: 'mdi-sync'}, - { title: 'Actualizar Ventas Tryton', route: '/sincronizar_ventas_tryton', icon: 'mdi-sync'} + { divider: true }, + { header: 'Sincronización Tryton' }, + { title: 'Importar Productos', route: '/sincronizar_productos_tryton', icon: 'mdi-download'}, + { title: 'Importar Clientes', route: '/sincronizar_clientes_tryton', icon: 'mdi-download'}, + { title: 'Exportar Ventas', route: '/sincronizar_ventas_tryton', icon: 'mdi-upload'}, + { title: 'Exportar Ventas Catálogo', route: '/sincronizar_catalog_sales_tryton', icon: 'mdi-upload'} ], }), computed: { diff --git a/src/pages/sincronizar_catalog_sales_tryton.vue b/src/pages/sincronizar_catalog_sales_tryton.vue new file mode 100644 index 0000000..568028a --- /dev/null +++ b/src/pages/sincronizar_catalog_sales_tryton.vue @@ -0,0 +1,120 @@ + + + diff --git a/src/services/api.js b/src/services/api.js index 87c5e15..5f9ec70 100644 --- a/src/services/api.js +++ b/src/services/api.js @@ -71,6 +71,10 @@ class Api { return this.apiImplementation.sendSalesToTryton(); } + sendCatalogSalesToTryton() { + return this.apiImplementation.sendCatalogSalesToTryton(); + } + getCatalogSales() { return this.apiImplementation.getCatalogSales(); } diff --git a/src/services/django-api.js b/src/services/django-api.js index 8375653..3ac56e5 100644 --- a/src/services/django-api.js +++ b/src/services/django-api.js @@ -116,6 +116,11 @@ class DjangoApi { return this.postRequest(url, {}); } + sendCatalogSalesToTryton() { + const url = this.base + "/don_confiao/api/enviar_catalog_sales_a_tryton"; + return this.postRequest(url, {}); + } + getCatalogSales() { const url = this.base + "/don_confiao/api/catalog_sales/"; return this.getRequest(url);