diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6ffb606..cddf59d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,26 +1,49 @@ spring.application.name=erp -logging.level.org.springframework.security=DEBUG +# +# Logging +# +logging.level.org.springframework.security=DEBUG logging.level.root=WARN logging.level.org.springframework=ERROR -#debug JPA / Hibernate -#spring.jpa.show-sql=true -#logging.level.org.hibernate.SQL=DEBUG -#logging.level.org.hibernate.orm.jdbc.bind=TRACE -#spring.jpa.properties.hibernate.format_sql=true - +# +# Database Configuration +# spring.datasource.url=jdbc:mysql://localhost:3309/imprimelibros #spring.datasource.url=jdbc:mysql://127.0.0.1:3309/imprimelibros?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Europe/Madrid&characterEncoding=utf8 spring.datasource.username=imprimelibros_user spring.datasource.password=om91irrDctd spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true + + +# +# Safekat API Configuration +# safekat.api.url=http://localhost:8000/ #safekat.api.url=https://erp-dev.safekat.es/ safekat.api.email=imnavajas@coit.es safekat.api.password=Safekat2024 -spring.jpa.hibernate.ddl-auto=update -spring.jpa.show-sql=true \ No newline at end of file + +# +# Debug JPA / Hibernate +# +#spring.jpa.show-sql=true +#logging.level.org.hibernate.SQL=DEBUG +#logging.level.org.hibernate.orm.jdbc.bind=TRACE +#spring.jpa.properties.hibernate.format_sql=true + + +# +# Resource chain +# Activa el resource chain y versionado por contenido +# +spring.web.resources.chain.enabled=true +spring.web.resources.chain.strategy.content.enabled=true +spring.web.resources.chain.strategy.content.paths=/assets/** + diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js index 4a81990..f29014c 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js @@ -59,6 +59,38 @@ class PresupuestoCliente { acabado: 0 } }, + servicios: { + servicios: [], + datosMarcaPaginas: { + marcapaginas_tirada: 100, + tamanio_maquetacion: '_50x140_', + caras_impresion: 'una_cara', + papel_marcapaginas: 'cartulina_grafica', + gramaje_marcapaginas: 300, + acabado_marcapaginas: 'ninguno', + resultado: { + precio_unitario: 0, + precio_total: 0 + } + }, + datosMaquetacion: { + num_caracteres: 200000, + formato_maquetacion: 'A5', + cuerpo_texto: 'medium', + num_columnas: 1, + num_tablas: 0, + num_fotos: 0, + correccion_ortotipografica: false, + texto_mecanografiado: false, + disenio_portada: false, + epub: false, + resultado: { + num_paginas_estimadas: 0, + precio_pagina_estimado: 0, + precio: 0 + } + } + }, selectedTirada: null, } @@ -236,8 +268,9 @@ class PresupuestoCliente { contenedor.append(label); } + /****************************** - * END OF DATOS GENERALES + * DATOS GENERALES ******************************/ #initDatosGenerales() { @@ -1087,7 +1120,7 @@ class PresupuestoCliente { const tipoCubierta = $('.tapa-cubierta.selected').attr('id') || 'tapaBlanda'; const solapas = $('.solapas-cubierta.selected').id == 'sin-solapas' ? 0 : 1 || 0; - const tamanioSolapas = $('#tamanio-solapas-cubierta').val() || '80'; + const tamanioSolapasCubierta = $('#tamanio-solapas-cubierta').val() || '80'; const cubiertaCaras = parseInt(this.carasImpresionCubierta.val()) || 2; const guardasPapelId = parseInt($('#papel-guardas option:selected').data('papel-id')) || 3; const guardasGramaje = parseInt($('#papel-guardas option:selected').data('gramaje')) || 170; @@ -1111,7 +1144,7 @@ class PresupuestoCliente { return { tipoCubierta: tipoCubierta, solapas: solapas, - tamanioSolapas: tamanioSolapas, + tamanioSolapasCubierta: tamanioSolapasCubierta, cubiertaCaras: cubiertaCaras, guardasPapelId: guardasPapelId, guardasGramaje: guardasGramaje, @@ -1142,7 +1175,7 @@ class PresupuestoCliente { this.formData.cubierta.tipoCubierta = data.tipoCubierta; this.formData.cubierta.solapas = data.solapas; - this.formData.cubierta.tamanioSolapas = data.tamanioSolapas; + this.formData.cubierta.tamanioSolapasCubierta = data.tamanioSolapasCubierta; this.formData.cubierta.cubiertaCaras = data.cubiertaCaras; this.formData.cubierta.guardasPapelId = data.guardasPapelId; this.formData.cubierta.guardasGramaje = data.guardasGramaje; @@ -1219,7 +1252,7 @@ class PresupuestoCliente { $(`.solapas-cubierta#con-solapas`).addClass('selected'); this.divSolapasCubierta.removeClass('d-none'); this.carasImpresionCubierta.val(this.formData.cubierta.cubiertaCaras); - this.tamanioSolapasCubierta.val(this.formData.cubierta.tamanioSolapas); + this.tamanioSolapasCubierta.val(this.formData.cubierta.tamanioSolapasCubierta); } this.carasImpresionCubierta.val(this.formData.cubierta.cubiertaCaras); @@ -1361,6 +1394,7 @@ class PresupuestoCliente { // Eventos para el resumen $(document).on('change', '.service-checkbox', (e) => { Summary.updateExtras(); + }); } diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-maquetacion.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-maquetacion.js index 91987d8..eaaa0da 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-maquetacion.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-maquetacion.js @@ -3,10 +3,12 @@ import { formateaMoneda } from "../utils.js"; $(document).on('change', '#maquetacion', function (e) { + e.preventDefault(); if ($('#maquetacion').is(':checked')) { $.get("/presupuesto/public/maquetacion/form", function (data) { $("#maquetacionModalBody").html(data); + loadMaquetacionData(); $("#maquetacionModal").modal("show"); }); } else { @@ -18,7 +20,9 @@ $(document).on('change', '#maquetacion', function (e) { } }); + $(document).on("submit", "#maquetacionForm", function (e) { + e.preventDefault(); const $form = $(this); @@ -34,16 +38,15 @@ $(document).on("submit", "#maquetacionForm", function (e) { const modal = bootstrap.Modal.getInstance(modalEl) || new bootstrap.Modal(modalEl); modal.hide(); - const resumenHtml = ` -
-

${json.language.num_paginas_estimadas || 'Páginas calculadas'}: ${json.numPaginasEstimadas ?? "-"}

-

${json.language.precio_por_pagina_estimado || 'Precio por página estimado'}: ${formateaMoneda(json.precioPaginaEstimado) || "-"}

-
- ${json.precio ? - `

Precio: ${formateaMoneda(json.precio)}

` : ""} -
- `; +
+

${json.language.num_paginas_estimadas || 'Páginas calculadas'}: ${json.numPaginasEstimadas ?? "-"}

+

${json.language.precio_por_pagina_estimado || 'Precio por página estimado'}: ${formateaMoneda(json.precioPaginaEstimado) || "-"}

+
+ ${json.precio ? + `

Precio: ${formateaMoneda(json.precio)}

` : ""} +
+ `; Swal.fire({ title: json.language.presupuesto_maquetacion || 'Presupuesto Maquetación', @@ -66,6 +69,13 @@ $(document).on("submit", "#maquetacionForm", function (e) { $('label[for="maquetacion"] .service-price') .text(formateaMoneda(json.precio)); Summary.updateExtras(); + + // guardamos los datos del formulario en sessionStorage + const stored = JSON.parse(sessionStorage.getItem("formData")); + stored.servicios.datosMaquetacion.resultado.num_paginas_estimadas = json.numPaginasEstimadas; + stored.servicios.datosMaquetacion.resultado.precio_pagina_estimado = json.precioPaginaEstimado; + stored.servicios.datosMaquetacion.resultado.precio = json.precio; + sessionStorage.setItem("formData", JSON.stringify(stored)); } else { const calcularStr = $('#div-extras').data('language-calcular'); @@ -108,3 +118,43 @@ $(document).on('hidden.bs.modal', '#maquetacionModal', function () { $('label[for="maquetacion"] .service-price').text(calcularStr); }); + +$(document).on('change', '.maquetacion-item', () => { + + saveMaquetacionData(); +}); + + +function loadMaquetacionData() { + + const stored = JSON.parse(sessionStorage.getItem("formData")).servicios.datosMaquetacion; + $('#num-caracteres').val(stored.num_caracteres); + $('#formato-maquetacion').val(stored.formato_maquetacion); + $('#cuerpo-texto').val(stored.cuerpo_texto); + $('#num-columnas').val(stored.num_columnas); + $('#num-tablas').val(stored.num_tablas); + $('#num-fotos').val(stored.num_fotos); + $('#correccion-ortotipografica').prop('checked', stored.correccion_ortotipografica); + $('#texto-mecanografiado').prop('checked', stored.texto_mecanografiado); + $('#disenio-portada').prop('checked', stored.disenio_portada); + $('#epub').prop('checked', stored.epub); +} + + +function saveMaquetacionData() { + + const stored = JSON.parse(sessionStorage.getItem("formData")); + stored.servicios.datosMaquetacion.num_caracteres = parseInt($('#num-caracteres').val()) || 0; + stored.servicios.datosMaquetacion.formato_maquetacion = $('#formato-maquetacion').val() || 'A5'; + stored.servicios.datosMaquetacion.cuerpo_texto = $('#cuerpo-texto').val() || 'medium'; + stored.servicios.datosMaquetacion.num_columnas = parseInt($('#num-columnas').val()) || 1; + stored.servicios.datosMaquetacion.num_tablas = parseInt($('#num-tablas').val()) || 0; + stored.servicios.datosMaquetacion.num_fotos = parseInt($('#num-fotos').val()) || 0; + stored.servicios.datosMaquetacion.correccion_ortotipografica = $('#correccion-ortotipografica').is(':checked'); + stored.servicios + .datosMaquetacion.texto_mecanografiado = $('#texto-mecanografiado').is(':checked'); + stored.servicios.datosMaquetacion.disenio_portada = $('#disenio-portada').is(':checked'); + stored.servicios.datosMaquetacion.epub = $('#epub').is(':checked'); + sessionStorage.setItem("formData", JSON.stringify(stored)); +} + diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-marcapaginas.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-marcapaginas.js index 94349f5..6c2f932 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-marcapaginas.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuesto-marcapaginas.js @@ -7,6 +7,8 @@ $(document).on('change', '#marcapaginas', function (e) { $.get("/presupuesto/public/marcapaginas/form", function (data) { $("#marcapaginasModalBody").html(data); + loadMarcapaginasData(); + // init marcapaginas form filtrarAcabados(); $("#marcapaginasModal").modal("show"); @@ -65,6 +67,12 @@ $(document).on("submit", "#marcapaginasForm", function (e) { $('label[for="marcapaginas"] .service-price') .text(formateaMoneda(json.precio_total)); Summary.updateExtras(); + + // guardamos los datos del formulario en sessionStorage + const stored = JSON.parse(sessionStorage.getItem("formData")); + stored.servicios.datosMarcapaginas.resultado.precio_unitario = json.precio_unidad; + stored.servicios.datosMarcapaginas.resultado.precio_total = json.precio_total; + sessionStorage.setItem("formData", JSON.stringify(stored)); } else { const calcularStr = $('#div-extras').data('language-calcular'); @@ -139,5 +147,37 @@ function filtrarAcabados() { } +$(document).on('change', '.marcapaginas-item', () => { + + saveMarcapaginasData(); +}); + + +function loadMarcapaginasData() { + + const stored = JSON.parse(sessionStorage.getItem("formData")).servicios.datosMarcapaginas; + $('#marcapaginas-tirada').val(stored.marcapaginas_tirada); + $('#tamanio-maquetacion').val(stored.tamanio_maquetacion); + $('#caras-impresion').val(stored.caras_impresion); + $('#papel-marcapaginas').val(stored.papel_marcapaginas); + $('#gramaje-marcapaginas').val(stored.gramaje_marcapaginas); + $('#num-fotos').val(stored.num_fotos); + $('#acabado-marcapaginas').prop('checked', stored.acabado_marcapaginas); +} + + +function saveMarcapaginasData() { + + const stored = JSON.parse(sessionStorage.getItem("formData")); + stored.servicios.datosMarcapaginas.marcapaginas_tirada = parseInt($('#marcapaginas-tirada').val()) || 100; + stored.servicios.datosMarcapaginas.tamanio_maquetacion = $('#tamanio-maquetacion').val() || '_50x140_'; + stored.servicios.datosMarcapaginas.caras_impresion = $('#caras-impresion').val() || 'una_cara'; + stored.servicios.datosMarcapaginas.papel_marcapaginas = $('#papel-marcapaginas').val() || 'cartulina_grafica'; + stored.servicios.datosMarcapaginas.gramaje_marcapaginas = parseInt($('#gramaje-marcapaginas').val()) || 300; + stored.servicios.datosMarcapaginas.num_fotos = parseInt($('#num-fotos').val()) || 0; + stored.servicios.datosMarcapaginas.acabado_marcapaginas = $('#acabado-marcapaginas').val() || 'ninguno'; + sessionStorage.setItem("formData", JSON.stringify(stored)); +} + diff --git a/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-maquetacion-form.html b/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-maquetacion-form.html index 43715a7..47c1160 100644 --- a/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-maquetacion-form.html +++ b/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-maquetacion-form.html @@ -2,13 +2,13 @@
- +
- @@ -17,52 +17,52 @@
- - +
- +
- +
- +
-
-
-
-
diff --git a/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-marcapaginas-form.html b/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-marcapaginas-form.html index 1b806fd..b8440ee 100644 --- a/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-marcapaginas-form.html +++ b/src/main/resources/templates/imprimelibros/presupuestos/presupuesto-marcapaginas-form.html @@ -2,12 +2,12 @@
- +
- @@ -15,28 +15,28 @@
-
-
-
-