From dc64e40e38c5464bd13920440b5ea89e34d554f4 Mon Sep 17 00:00:00 2001 From: jjimenez Date: Tue, 4 Nov 2025 15:29:29 +0100 Subject: [PATCH] haciendo vista de pagos --- .../erp/payments/PaymentController.java | 20 ++++ .../erp/payments/PaymentService.java | 2 +- src/main/resources/i18n/app_es.properties | 1 + src/main/resources/i18n/pagos_en.properties | 0 src/main/resources/i18n/pagos_es.properties | 4 + .../pages/imprimelibros/cart/shipping-cart.js | 3 +- .../pages/imprimelibros/checkout/checkout.js | 53 +++++++++- .../pages/imprimelibros/direcciones/list.js | 2 +- .../js/pages/imprimelibros/pagos/pagos.js | 3 + .../imprimelibros/pagos/gestion-pagos.html | 96 +++++++++++++++++++ .../imprimelibros/partials/sidebar.html | 8 ++ 11 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/imprimelibros/erp/payments/PaymentController.java create mode 100644 src/main/resources/i18n/pagos_en.properties create mode 100644 src/main/resources/i18n/pagos_es.properties create mode 100644 src/main/resources/static/assets/js/pages/imprimelibros/pagos/pagos.js create mode 100644 src/main/resources/templates/imprimelibros/pagos/gestion-pagos.html diff --git a/src/main/java/com/imprimelibros/erp/payments/PaymentController.java b/src/main/java/com/imprimelibros/erp/payments/PaymentController.java new file mode 100644 index 0000000..85f946d --- /dev/null +++ b/src/main/java/com/imprimelibros/erp/payments/PaymentController.java @@ -0,0 +1,20 @@ +package com.imprimelibros.erp.payments; + +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.GetMapping; + + +@Controller +@RequestMapping("/pagos") +@PreAuthorize("hasRole('SUPERADMIN')") +public class PaymentController { + + @GetMapping() + public String index() { + return "imprimelibros/pagos/gestion-pagos"; + } + + +} diff --git a/src/main/java/com/imprimelibros/erp/payments/PaymentService.java b/src/main/java/com/imprimelibros/erp/payments/PaymentService.java index ec64784..bba6420 100644 --- a/src/main/java/com/imprimelibros/erp/payments/PaymentService.java +++ b/src/main/java/com/imprimelibros/erp/payments/PaymentService.java @@ -187,7 +187,7 @@ public class PaymentService { p.setStatus(PaymentStatus.failed); p.setFailedAt(LocalDateTime.now()); } - + payRepo.save(p); if (!authorized) { diff --git a/src/main/resources/i18n/app_es.properties b/src/main/resources/i18n/app_es.properties index 4ce7940..74f7b97 100644 --- a/src/main/resources/i18n/app_es.properties +++ b/src/main/resources/i18n/app_es.properties @@ -23,5 +23,6 @@ app.sidebar.configuracion=Configuración app.sidebar.usuarios=Usuarios app.sidebar.direcciones=Mis Direcciones app.sidebar.direcciones-admin=Administrar Direcciones +app.sidebar.gestion-pagos=Gestión de Pagos app.errors.403=No tienes permiso para acceder a esta página. \ No newline at end of file diff --git a/src/main/resources/i18n/pagos_en.properties b/src/main/resources/i18n/pagos_en.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/i18n/pagos_es.properties b/src/main/resources/i18n/pagos_es.properties new file mode 100644 index 0000000..bd5a049 --- /dev/null +++ b/src/main/resources/i18n/pagos_es.properties @@ -0,0 +1,4 @@ +pagos.module-title=Gestión de Pagos + +pagos.tab.movimientos-redsys=Movimientos Redsys +pagos.tab.transferencias-bancarias=Transferencias Bancarias \ No newline at end of file diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/cart/shipping-cart.js b/src/main/resources/static/assets/js/pages/imprimelibros/cart/shipping-cart.js index 95bab99..4d86a7e 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/cart/shipping-cart.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/cart/shipping-cart.js @@ -422,7 +422,7 @@ $(() => { return; } // Éxito real: cerrar y recargar tabla - modal.addClass('d-none'); + $('#direccionFormModal').modal('hide'); seleccionarDireccionEnvio(); }, error: function (xhr) { @@ -432,7 +432,6 @@ $(() => { const isEdit = $('#direccionFormModalBody #direccionForm input[name="_method"][value="PUT"]').length > 0; const title = $('#direccionFormModalBody #direccionForm').data(isEdit ? 'edit' : 'add'); $('#direccionModal .modal-title').text(title); - initSelect2Cliente(true); return; } // Fallback diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/checkout/checkout.js b/src/main/resources/static/assets/js/pages/imprimelibros/checkout/checkout.js index b5e01bd..b3f1673 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/checkout/checkout.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/checkout/checkout.js @@ -153,10 +153,59 @@ $(() => { $('#btn-checkout').prop('disabled', true); }); - - $('input[name="paymentMethod"]').on('change', function() { + + $('input[name="paymentMethod"]').on('change', function () { const method = $(this).val(); // set the hidden input value in the form $('input[name="method"]').val(method); }); + + $(document).on("change", ".direccionFacturacion", function () { + const isChecked = $(this).is(':checked'); + if (isChecked) { + $('.direccionFacturacionItems').removeClass('d-none'); + } else { + $('.direccionFacturacionItems').addClass('d-none'); + $('#razonSocial').val(''); + $('#tipoIdentificacionFiscal').val('DNI'); + $('#identificacionFiscal').val(''); + } + }); + + $(document).on('submit', '#direccionForm', function (e) { + e.preventDefault(); + const $form = $(this); + + $.ajax({ + url: $form.attr('action'), + type: 'POST', // PUT simulado via _method + data: $form.serialize(), + dataType: 'html', + success: function (html) { + // Si por cualquier motivo llega 200 con fragmento, lo insertamos igual + if (typeof html === 'string' && html.indexOf('id="direccionForm"') !== -1 && html.indexOf(' 0; + const title = $('#direccionFormModalBody #direccionForm').data(isEdit ? 'edit' : 'add'); + $('#direccionModal .modal-title').text(title); + return; + } + // Éxito real: cerrar y recargar tabla + $('#direccionFormModal').modal('hide'); + seleccionarDireccionEnvio(); + }, + error: function (xhr) { + // Con 422 devolvemos el fragmento con errores aquí + if (xhr.status === 422 && xhr.responseText) { + $('#direccionFormModalBody').html(xhr.responseText); + const isEdit = $('#direccionFormModalBody #direccionForm input[name="_method"][value="PUT"]').length > 0; + const title = $('#direccionFormModalBody #direccionForm').data(isEdit ? 'edit' : 'add'); + $('#direccionModal .modal-title').text(title); + return; + } + // Fallback + $('#direccionFormModalBody').html('
Error inesperado.
'); + } + }); + }); }); diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/direcciones/list.js b/src/main/resources/static/assets/js/pages/imprimelibros/direcciones/list.js index 0e54408..b2e42a1 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/direcciones/list.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/direcciones/list.js @@ -181,7 +181,7 @@ }); // Submit del form en el modal - $(document).on('submit', '#direccionForm', function (e) { + $(document).on('submit', '#direccionForm', function (e) { e.preventDefault(); const $form = $(this); diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/pagos/pagos.js b/src/main/resources/static/assets/js/pages/imprimelibros/pagos/pagos.js new file mode 100644 index 0000000..c1a9089 --- /dev/null +++ b/src/main/resources/static/assets/js/pages/imprimelibros/pagos/pagos.js @@ -0,0 +1,3 @@ +$(()=>{ + +}) \ No newline at end of file diff --git a/src/main/resources/templates/imprimelibros/pagos/gestion-pagos.html b/src/main/resources/templates/imprimelibros/pagos/gestion-pagos.html new file mode 100644 index 0000000..b09284c --- /dev/null +++ b/src/main/resources/templates/imprimelibros/pagos/gestion-pagos.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ +
+ + +
+ + + + + + +
+
+ +
+
+ +
+
+ + +
+
+ +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/imprimelibros/partials/sidebar.html b/src/main/resources/templates/imprimelibros/partials/sidebar.html index a1854f0..e811ed6 100644 --- a/src/main/resources/templates/imprimelibros/partials/sidebar.html +++ b/src/main/resources/templates/imprimelibros/partials/sidebar.html @@ -53,6 +53,14 @@ th:text="#{app.sidebar.direcciones}">Mis Direcciones +