mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-12 16:38:48 +00:00
corregidas unidades por marcapaginas en resumen. tambien corregido el manejo de los datos de session en marcapaginas form y maquetacion form
This commit is contained in:
@ -831,8 +831,12 @@ public class PresupuestoService {
|
||||
if(servicios != null){
|
||||
for (Map<String, Object> servicio : servicios) {
|
||||
HashMap<String, Object> servicioData = new HashMap<>();
|
||||
servicioData.put("id", servicio.get("id"));
|
||||
servicioData.put("descripcion", servicio.get("label"));
|
||||
servicioData.put("precio", servicio.get("price"));
|
||||
servicioData.put("precio", servicio.get("id").equals("marcapaginas") ?
|
||||
Double.parseDouble(servicio.get("price").toString())/Double.parseDouble(servicio.get("units").toString()) :
|
||||
servicio.get("price"));
|
||||
servicioData.put("unidades", servicio.get("units"));
|
||||
serviciosExtras.add(servicioData);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1401,6 +1401,7 @@ class PresupuestoCliente {
|
||||
servicios.push({
|
||||
id: $servicio.attr('id') ?? $(`label[for="${$servicio.attr('id')}"] .service-title`).text().trim(),
|
||||
label: $(`label[for="${$servicio.attr('id')}"] .service-title`).text().trim(),
|
||||
units: $servicio.attr('id') === 'marcapaginas' ? self.formData.servicios.datosMarcapaginas.marcapaginas_tirada : 1,
|
||||
price: $servicio.data('price') ?? $(`label[for="${$servicio.attr('id')}"] .service-price`).text().trim().replace(" " + self.divExtras.data('currency'), ''),
|
||||
});
|
||||
});
|
||||
@ -1442,6 +1443,9 @@ class PresupuestoCliente {
|
||||
Summary.updateExtras();
|
||||
this.#cacheFormData();
|
||||
});
|
||||
|
||||
this.#bindMaquetacionEvents();
|
||||
this.#bindMarcapaginasEvents();
|
||||
}
|
||||
|
||||
#loadExtrasData(servicios) {
|
||||
@ -1473,6 +1477,67 @@ class PresupuestoCliente {
|
||||
this.#cacheFormData();
|
||||
Summary.updateExtras();
|
||||
}
|
||||
|
||||
#bindMaquetacionEvents() {
|
||||
|
||||
$(document).on('maquetacion:request', (e) => {
|
||||
const data = this.formData.servicios.datosMaquetacion;
|
||||
$(document).trigger('maquetacion:response', [data]);
|
||||
});
|
||||
|
||||
$(document).on('maquetacion:update', (e, payload) => {
|
||||
// payload: campos planos (num_caracteres, formato_maquetacion, ...)
|
||||
this.formData.servicios.datosMaquetacion = {
|
||||
...this.formData.servicios.datosMaquetacion,
|
||||
...payload,
|
||||
};
|
||||
this.#cacheFormData();
|
||||
});
|
||||
|
||||
$(document).on('maquetacion:result', (e, result) => {
|
||||
this.formData.servicios.datosMaquetacion.resultado = {
|
||||
...this.formData.servicios.datosMaquetacion.resultado,
|
||||
...result,
|
||||
};
|
||||
|
||||
const list = this.formData.servicios.servicios;
|
||||
if (!list.includes('maquetacion')) list.push('maquetacion');
|
||||
|
||||
this.#cacheFormData();
|
||||
});
|
||||
}
|
||||
|
||||
#bindMarcapaginasEvents() {
|
||||
|
||||
$(document).on('marcapaginas:request', (e) => {
|
||||
const data = this.formData.servicios.datosMarcapaginas;
|
||||
$(document).trigger('marcapaginas:response', [data]);
|
||||
});
|
||||
|
||||
$(document).on('marcapaginas:update', (e, payload) => {
|
||||
// payload: { marcapaginas_tirada, tamanio_marcapaginas, ... }
|
||||
this.formData.servicios.datosMarcapaginas = {
|
||||
...this.formData.servicios.datosMarcapaginas,
|
||||
...payload,
|
||||
};
|
||||
this.#cacheFormData();
|
||||
});
|
||||
|
||||
$(document).on('marcapaginas:result', (e, result) => {
|
||||
// result: { precio_unitario, precio }
|
||||
this.formData.servicios.datosMarcapaginas.resultado = {
|
||||
...this.formData.servicios.datosMarcapaginas.resultado,
|
||||
...result,
|
||||
};
|
||||
|
||||
// asegúrate de añadir el servicio seleccionado
|
||||
const list = this.formData.servicios.servicios;
|
||||
if (!list.includes('marcapaginas')) list.push('marcapaginas');
|
||||
|
||||
this.#cacheFormData();
|
||||
});
|
||||
|
||||
}
|
||||
/******************************
|
||||
* END EXTRAS
|
||||
******************************/
|
||||
@ -1526,7 +1591,7 @@ class PresupuestoCliente {
|
||||
for (const l of lineas) {
|
||||
const row = `
|
||||
<tr>
|
||||
<td>${l=="linea0" ? `<img style="max-width: 60px; height: auto;" src="${data.imagen}" alt="${data.imagen_alt}" class="img-fluid" />` : ''}</td>
|
||||
<td>${l == "linea0" ? `<img style="max-width: 60px; height: auto;" src="${data.imagen}" alt="${data.imagen_alt}" class="img-fluid" />` : ''}</td>
|
||||
<td>${data[l].descripcion}</td>
|
||||
<td class="text-center">${data[l].cantidad}</td>
|
||||
<td class="text-center">${formateaMoneda(data[l].precio_unitario, 4, locale)}</td>
|
||||
@ -1541,9 +1606,9 @@ class PresupuestoCliente {
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>${s.descripcion}</td>
|
||||
<td class="text-center">1</td>
|
||||
<td class="text-center">${formateaMoneda(s.precio, 2, locale)}</td>
|
||||
<td class="text-end">${formateaMoneda(s.precio, 2, locale)}</td>
|
||||
<td class="text-center">${s.unidades}</td>
|
||||
<td class="text-center">${s.id === "marcapaginas" ? formateaMoneda(s.precio, 4, locale) : formateaMoneda(s.precio, 2, locale)}</td>
|
||||
<td class="text-end">${s.id === "marcapaginas" ? formateaMoneda(s.precio * s.unidades, 2, locale) : formateaMoneda(s.precio, 2, locale)}</td>
|
||||
</tr>
|
||||
`;
|
||||
total += s.precio;
|
||||
|
||||
@ -44,7 +44,7 @@ $(document).on("submit", "#maquetacionForm", function (e) {
|
||||
<p>${json.language.precio_por_pagina_estimado || 'Precio por página estimado'}: ${formateaMoneda(json.precioPaginaEstimado) || "-"}</p>
|
||||
<hr class="my-2">
|
||||
${json.precio ?
|
||||
`<h3 class="mb-0"><strong>Precio:</strong> ${formateaMoneda(json.precio)}</h3>` : ""}
|
||||
`<h3 class="mb-0"><strong>Precio:</strong> ${formateaMoneda(json.precio)}</h3>` : ""}
|
||||
</div>
|
||||
`;
|
||||
|
||||
@ -66,25 +66,22 @@ $(document).on("submit", "#maquetacionForm", function (e) {
|
||||
if (result.isConfirmed) {
|
||||
$('#maquetacion').prop('checked', true);
|
||||
$('#maquetacion').data('price', json.precio);
|
||||
$('label[for="maquetacion"] .service-price')
|
||||
.text(formateaMoneda(json.precio));
|
||||
$('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;
|
||||
if(stored.servicios.servicios.includes("maquetacion") === false) {
|
||||
stored.servicios.servicios.push("maquetacion");
|
||||
}
|
||||
sessionStorage.setItem("formData", JSON.stringify(stored));
|
||||
}
|
||||
else {
|
||||
// 🔔 Notifica el resultado a PresupuestoCliente
|
||||
$(document).trigger('maquetacion:result', [{
|
||||
num_paginas_estimadas: json.numPaginasEstimadas,
|
||||
precio_pagina_estimado: json.precioPaginaEstimado,
|
||||
precio: json.precio
|
||||
}]);
|
||||
} else {
|
||||
// reset UI si cancelan
|
||||
const calcularStr = $('#div-extras').data('language-calcular');
|
||||
$('#maquetacion').prop('checked', false);
|
||||
$('#maquetacion').data('price', calcularStr);
|
||||
$('label[for="maquetacion"] .service-price').text(calcularStr);
|
||||
Summary.updateExtras();
|
||||
}
|
||||
});
|
||||
},
|
||||
@ -126,42 +123,42 @@ $(document).on('hidden.bs.modal', '#maquetacionModal', function () {
|
||||
|
||||
$(document).on('change', '.maquetacion-item', () => {
|
||||
|
||||
saveMaquetacionData();
|
||||
$(document).on('change', '.maquetacion-item', () => {
|
||||
const payload = {
|
||||
num_caracteres: parseInt($('#num-caracteres').val()) || 0,
|
||||
formato_maquetacion: $('#formato-maquetacion').val() || 'A5',
|
||||
cuerpo_texto: $('#cuerpo-texto').val() || 'medium',
|
||||
num_columnas: parseInt($('#num-columnas').val()) || 1,
|
||||
num_tablas: parseInt($('#num-tablas').val()) || 0,
|
||||
num_fotos: parseInt($('#num-fotos').val()) || 0,
|
||||
correccion_ortotipografica: $('#correccion-ortotipografica').is(':checked'),
|
||||
texto_mecanografiado: $('#texto-mecanografiado').is(':checked'),
|
||||
disenio_portada: $('#disenio-portada').is(':checked'),
|
||||
epub: $('#epub').is(':checked'),
|
||||
};
|
||||
$(document).trigger('maquetacion:update', [payload]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
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);
|
||||
$(document).one('maquetacion:response', (e, stored) => {
|
||||
$('#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));
|
||||
Summary.updateExtras();
|
||||
});
|
||||
|
||||
$(document).trigger('maquetacion:request');
|
||||
}
|
||||
|
||||
|
||||
@ -65,24 +65,20 @@ $(document).on("submit", "#marcapaginasForm", function (e) {
|
||||
if (result.isConfirmed) {
|
||||
$('#marcapaginas').prop('checked', true);
|
||||
$('#marcapaginas').data('price', json.precio_total);
|
||||
$('label[for="marcapaginas"] .service-price')
|
||||
.text(formateaMoneda(json.precio_total));
|
||||
$('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;
|
||||
if(stored.servicios.servicios.includes("marcapaginas") === false) {
|
||||
stored.servicios.servicios.push("marcapaginas");
|
||||
}
|
||||
sessionStorage.setItem("formData", JSON.stringify(stored));
|
||||
}
|
||||
else {
|
||||
// 🔔 Notifica el resultado a PresupuestoCliente
|
||||
$(document).trigger('marcapaginas:result', [{
|
||||
precio_unitario: json.precio_unitario,
|
||||
precio: json.precio_total
|
||||
}]);
|
||||
} else {
|
||||
const calcularStr = $('#div-extras').data('language-calcular');
|
||||
$('#marcapaginas').prop('checked', false);
|
||||
$('#marcapaginas').data('price', calcularStr);
|
||||
$('label[for="marcapaginas"] .service-price').text(calcularStr);
|
||||
Summary.updateExtras();
|
||||
}
|
||||
});
|
||||
},
|
||||
@ -118,11 +114,11 @@ $(document).on("change", "#caras-impresion", function (e) {
|
||||
|
||||
|
||||
$(document).on('hidden.bs.modal', '#marcapaginasModal', function () {
|
||||
|
||||
const calcularStr = $('#div-extras').data('language-calcular');
|
||||
$('#marcapaginas').data('price', calcularStr);
|
||||
$('label[for="marcapaginas"] .service-price').text(calcularStr);
|
||||
$('#marcapaginas').prop('checked', false).trigger('change');
|
||||
$('#marcapaginas').prop('checked', false);
|
||||
|
||||
Summary.updateExtras();
|
||||
});
|
||||
|
||||
@ -154,32 +150,31 @@ function filtrarAcabados() {
|
||||
|
||||
$(document).on('change', '.marcapaginas-item', () => {
|
||||
|
||||
saveMarcapaginasData();
|
||||
const payload = {
|
||||
marcapaginas_tirada: parseInt($('#marcapaginas-tirada').val()) || 100,
|
||||
tamanio_marcapaginas: $('#tamanio-marcapaginas').val() || '_50x140_',
|
||||
caras_impresion: $('#caras-impresion').val() || 'una_cara',
|
||||
papel_marcapaginas: $('#papel-marcapaginas').val() || 'cartulina_grafica',
|
||||
gramaje_marcapaginas: parseInt($('#gramaje-marcapaginas').val()) || 300,
|
||||
acabado_marcapaginas: $('#acabado-marcapaginas').val() || 'ninguno',
|
||||
};
|
||||
$(document).trigger('marcapaginas:update', [payload]);
|
||||
});
|
||||
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
$(document).one('marcapaginas:response', (e, stored) => {
|
||||
$('#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));
|
||||
$(document).trigger('marcapaginas:request');
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user