-
${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');
@@ -103,8 +113,52 @@ $(document).on("submit", "#maquetacionForm", function (e) {
$(document).on('hidden.bs.modal', '#maquetacionModal', function () {
const calcularStr = $('#div-extras').data('language-calcular');
- $('#maquetacion').prop('checked', false);
$('#maquetacion').data('price', calcularStr);
$('label[for="maquetacion"] .service-price').text(calcularStr);
+ $('#maquetacion').prop('checked', false).trigger('change');
+
+ Summary.updateExtras();
});
+
+$(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);
+
+ Summary.updateExtras();
+}
+
+
+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..34e4a3b 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
@@ -1,5 +1,5 @@
import * as Summary from "./summary.js";
-import { formateaMoneda, formateaMoneda6Decimales } from "../utils.js";
+import { formateaMoneda } from "../utils.js";
$(document).on('change', '#marcapaginas', function (e) {
e.preventDefault();
@@ -7,8 +7,11 @@ $(document).on('change', '#marcapaginas', function (e) {
$.get("/presupuesto/public/marcapaginas/form", function (data) {
$("#marcapaginasModalBody").html(data);
+ loadMarcapaginasData();
+
// init marcapaginas form
- filtrarAcabados();
+ filtrarAcabados();
+
$("#marcapaginasModal").modal("show");
});
} else {
@@ -39,7 +42,7 @@ $(document).on("submit", "#marcapaginasForm", function (e) {
const resumenHtml = `
-
${json.language.precio_unidad || 'Precio por unidad'}: ${formateaMoneda6Decimales(json.precio_unitario) || "-"}
+
${json.language.precio_unidad || 'Precio por unidad'}: ${formateaMoneda(json.precio_unitario, 6) || "-"}
${json.language.precio_total || 'Precio total'}: ${formateaMoneda(json.precio_total) || "-"}
`;
@@ -65,6 +68,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_unitario;
+ stored.servicios.datosMarcapaginas.resultado.precio = json.precio_total;
+ sessionStorage.setItem("formData", JSON.stringify(stored));
}
else {
const calcularStr = $('#div-extras').data('language-calcular');
@@ -108,9 +117,10 @@ $(document).on("change", "#caras-impresion", function (e) {
$(document).on('hidden.bs.modal', '#marcapaginasModal', function () {
const calcularStr = $('#div-extras').data('language-calcular');
- $('#marcapaginas').prop('checked', false);
$('#marcapaginas').data('price', calcularStr);
$('label[for="marcapaginas"] .service-price').text(calcularStr);
+ $('#marcapaginas').prop('checked', false).trigger('change');
+ Summary.updateExtras();
});
@@ -139,5 +149,35 @@ 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-marcapaginas').val(stored.tamanio_marcapaginas);
+ $('#caras-impresion').val(stored.caras_impresion);
+ $('#papel-marcapaginas').val(stored.papel_marcapaginas);
+ $('#gramaje-marcapaginas').val(stored.gramaje_marcapaginas);
+ $('#acabado-marcapaginas').val(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_marcapaginas = $('#tamanio-marcapaginas').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.acabado_marcapaginas = $('#acabado-marcapaginas').val() || 'ninguno';
+ sessionStorage.setItem("formData", JSON.stringify(stored));
+}
+
diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/service-option-card.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/service-option-card.js
index d9416f0..2e0835f 100644
--- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/service-option-card.js
+++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/service-option-card.js
@@ -1,3 +1,5 @@
+import {formateaMoneda, isNumber} from '../utils.js';
+
class ServiceOptionCard {
constructor({ id, title, description = '', price = '', priceUnit = '', checked = false, allowChange = true, ribbonText }) {
@@ -23,7 +25,7 @@ class ServiceOptionCard {
${ribbonHtml}
${this.labels.total}
-
${this.#formatMoneyES(this.precioTotal, 2)} ${this.moneda}
+
${formateaMoneda(this.precioTotal, 2, this.locale)}