Merge branch 'dev/actualizar_presupuesto' into 'main'

Dev/actualizar presupuesto

See merge request jjimenez/safekat!197
This commit is contained in:
2024-04-01 15:25:41 +00:00
21 changed files with 108844 additions and 344 deletions

View File

@ -27,7 +27,7 @@ function asyncMessageDialog(title, msg, callback) {
$("#labelMsgMessageDialog").html(msg);
$("#okButton").off('click').click(function () {
callback();
$confirmDialog.modal("hide");
$messageDialog.modal("hide");
});
}

View File

@ -51,6 +51,7 @@
<th><?= lang('MaquinasTarifasImpresions.tipo') ?></th>
<th><?= lang('MaquinasTarifasImpresions.precio') ?></th>
<th><?= lang('MaquinasTarifasImpresions.margen') ?></th>
<th>is_deleted</th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -489,6 +490,7 @@
},
{ 'data': 'precio' },
{ 'data': 'margen' },
{ 'data': 'is_deleted',},
{
data: actionBtns,
className: 'row-edit dt-center'
@ -496,6 +498,10 @@
],
columnDefs: [
{
target: 4,
visible: false
},
{
orderable: false,
searchable: false,

View File

@ -390,11 +390,11 @@ function get_datos_acabado(){
values['tarifa_id'] = $(this).text()
break
case 1:
if($(this).text().includes(' '+ window.Presupuestos.cubierta))
if($(this).text().includes(window.Presupuestos.cubierta))
values['cubierta'] = 1
else
values['cubierta'] = 0
if($(this).text().includes(' '+ window.Presupuestos.sobrecubierta))
if($(this).text().includes(window.Presupuestos.sobrecubierta))
values['sobrecubierta'] = 1
else
values['sobrecubierta'] = 0
@ -527,6 +527,8 @@ function init_servicio_encuadernado(){
data: function (params) {
const dimension = getDimensionLibro();
if(parseInt($('#tirada').val())>0){
var tirada = parseInt($('#tirada').val())
}
@ -538,8 +540,8 @@ function init_servicio_encuadernado(){
tarifa_id: tarifa_id,
paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0,
tirada: tirada,
ancho: ancho_libro,
alto: alto_libro,
ancho: dimension.ancho,
alto: dimension.alto,
searchtxt: params.term, // search term
};
return_data = Object.assign(return_data, window.token_ajax);
@ -1509,4 +1511,24 @@ async function actualizar_servicios(update_preimpresion=false){
)
)
}
function popAlert(message, alertClass, alertIcon, containerId = 'sk-alert'){
var htmlString = `
<div class="alert ${alertClass} d-flex align-items-baseline" role="alert">
<span class="alert-icon alert-icon-lg text-primary me-2">
<i class="ti ${alertIcon} ti-sm"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">${message}</h5>
</div>
</div>`;
if(containerId == 'sk-alert'){
$(window).scrollTop(0);
}
$('#' + containerId).hide().empty().html(htmlString).fadeIn("slow", function(){
setTimeout(function(){
$('#' + containerId).fadeOut("slow");
}, 5000);
});
}

View File

@ -245,7 +245,7 @@
window.routes_servicios = {
dataTableOfPresupuestoAcabados: "<?=route_to('dataTableOfPresupuestoAcabados') ?>",
dataTableOfPresupuestoPreimpresion: "<?=route_to('dataTableOfPresupuestoPreimpresion') ?>",
dataTableOfPresupuestoPreimpresion: "<?=route_to('dataTableOfPresupuestoPreimpresiones') ?>",
dataTableOfPresupuestoEncuadernaciones: "<?=route_to('dataTableOfPresupuestoEncuadernaciones') ?>",
dataTableOfPresupuestoManipulados: "<?=route_to('dataTableOfPresupuestoManipulados') ?>",
menuItemsOfPresupuestoEncuadernaciones: '<?= route_to("menuItemsOfPresupuestoEncuadernaciones") ?>',

View File

@ -2977,7 +2977,7 @@ function clear_lp_rot_bn(clear_selectors){
$(".lp-rot-bn-input" ).val("0")
$("#lp_rot_bn_paginas" ).val(pags)
if(clear_selectors)
$( ".lp-rotbn-select").empty()
$( ".lp-rot-bn-select").empty()
}
@ -3324,7 +3324,7 @@ function clear_lp_rot_color(clear_selectors){
$(".lp-rot-color-input" ).val("0")
$("#lp_rot_color_paginas" ).val(pags)
if(clear_selectors)
$( ".lp-rotcolor-select").empty()
$( ".lp-rot-color-select").empty()
}
@ -4001,7 +4001,7 @@ async function calcularPresupuesto_sobrecubierta(fromComparador=false, input_dat
merma: parseInt($('#mermacubierta').val()),
ancho: dimension.ancho,
alto: dimension.alto,
lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto,
lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto(),
papel_generico_id: input_data.papel_generico_id,
papel_generico: input_data.papel_generico,
gramaje: input_data.gramaje,
@ -4137,6 +4137,7 @@ function getLomoLineasPresupuesto(){
catch(error){
lomoTotal = 0
}
$('#lomo_cubierta').val(lomoTotal)
return lomoTotal
}
@ -4152,6 +4153,7 @@ function getLomoCubiertaLineasPresupuesto(){
catch(error){
lomoTotal = 0
}
$('#lomo_sobrecubierta').val(lomoTotal+parseFloat($('#lomo_cubierta').val()))
return lomoTotal
}

View File

@ -59,19 +59,24 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
var porcentajeMargenPapel = isNaN(margenPapel/(totalPapel)*100.0)?0:margenPapel/(totalPapel)*100.0
$('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%')
$('#totalCostePapel').text(totalPapel.toFixed(2)+ '€')
$('#margenPapel').text(margenPapel.toFixed(2) + '€')
$('#totalCostePapel').text((addSeparatorsNF(totalPapel.toFixed(2), ".", ",", ".")) + "€")
$('#margenPapel').text((addSeparatorsNF(margenPapel.toFixed(2), ".", ",", ".")) + "€")
$('#totalCostePapel').attr('val',totalPapel.toFixed(2))
$('#margenPapel').attr('val',margenPapel.toFixed(2))
var porcentajeMargenImpresion = isNaN(margenImpresion/(totalImpresion)*100.0)?0:margenImpresion/(totalImpresion)*100.0
$('#porcentajeMargenImpresion').text(porcentajeMargenImpresion.toFixed(0) + '%')
$('#totalCosteImpresion').text(totalImpresion.toFixed(2) + '€')
$('#margenImpresion').text(margenImpresion.toFixed(2) + '€')
$('#totalCosteImpresion').text((addSeparatorsNF(totalImpresion.toFixed(2), ".", ",", ".")) + "€")
$('#margenImpresion').text((addSeparatorsNF(margenImpresion.toFixed(2), ".", ",", ".")) + "€")
$('#totalCosteImpresion').attr('val',totalImpresion.toFixed(2))
$('#margenImpresion').attr('val',margenImpresion.toFixed(2))
}
else{
totalPapel = parseFloat($('#totalCostePapel').text().replace('€', ''))
margenPapel = parseFloat($('#margenPapel').text().replace('€', ''))
totalImpresion = parseFloat($('#totalCosteImpresion').text().replace('€', ''))
margenImpresion = parseFloat($('#margenImpresion').text().replace('€', ''))
totalPapel = parseFloat($('#totalCostePapel').attr('val'))
margenPapel = parseFloat($('#margenPapel').attr('val'))
totalImpresion = parseFloat($('#totalCosteImpresion').attr('val'))
margenImpresion = parseFloat($('#margenImpresion').attr('val'))
}
sumForFactorPonderado = sumForFactor;
@ -126,14 +131,16 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
var porcentajeMargenServicios = margenServicios/(margenServicios+totalServicios)*100
$('#porcentajeMargenServicios').text(isNaN(porcentajeMargenServicios.toFixed(0))?0:porcentajeMargenServicios.toFixed(0) + '%')
$('#totalServicios').text(totalServicios.toFixed(2) + '€')
$('#margenServicios').text(margenServicios.toFixed(2) + '€')
$('#totalServicios').text((addSeparatorsNF(totalServicios.toFixed(2), ".", ",", ".")) + "€")
$('#margenServicios').text((addSeparatorsNF(margenServicios.toFixed(2), ".", ",", ".")) + "€")
$('#totalServicios').attr('val',totalServicios.toFixed(2) + '€')
$('#margenServicios').attr('val',margenServicios.toFixed(2) + '€')
}
else{
totalServicios = parseFloat($('#totalServicios').text().replace('€', ''))
margenServicios = parseFloat($('#margenServicios').text().replace('€', ''))
totalServicios = parseFloat($('#totalServicios').attr('val'))
margenServicios = parseFloat($('#margenServicios').attr('val'))
sumForFactorPonderado += totalServicios;
}
@ -149,18 +156,22 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
}
totalEnvios -= margenEnvios
$('#totalEnvios').text(totalEnvios.toFixed(2) + '€')
$('#margenEnvios').text(margenEnvios.toFixed(2) + '€')
$('#totalEnvios').text((addSeparatorsNF(totalEnvios.toFixed(2), ".", ",", ".")) + "€")
$('#margenEnvios').text((addSeparatorsNF(margenEnvios.toFixed(2), ".", ",", ".")) + "€")
$('#totalEnvios').attr('val',totalEnvios.toFixed(2) + '€')
$('#margenEnvios').attr('val',margenEnvios.toFixed(2) + '€')
}
else{
totalEnvios = parseFloat($('#totalEnvios').text().replace('€', ''))
margenEnvios = parseFloat($('#margenEnvios').text().replace('€', ''))
totalEnvios = parseFloat($('#totalEnvios').attr('val'))
margenEnvios = parseFloat($('#margenEnvios').attr('val'))
}
var totalCostes = totalPapel + totalImpresion + totalServicios + totalEnvios
var totalMargenes = margenPapel + margenImpresion + margenServicios + margenEnvios
$('#totalCostes').text((totalCostes).toFixed(2) + '€')
$('#totalMargenes').text((totalMargenes).toFixed(2) + '€')
$('#totalCostes').text((addSeparatorsNF(totalCostes.toFixed(2), ".", ",", ".")) + "€")
$('#totalMargenes').text((addSeparatorsNF(totalMargenes.toFixed(2), ".", ",", ".")) + "€")
$('#totalCostes').attr('val',(totalCostes).toFixed(2) + '€')
$('#totalMargenes').attr('val',(totalMargenes).toFixed(2) + '€')
if($('#total_descuentoPercent').val()<0){
$('#total_descuentoPercent').val(0)
@ -170,40 +181,64 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
var totalPresupuesto = totalAntesDescuento - totalDescuento
var precioUnidad = totalPresupuesto/parseInt($('#tirada').val())
$('#totalAntesDescuento').text((totalAntesDescuento).toFixed(2) + '€')
$('#descuentoTotal').text((totalDescuento).toFixed(2) + '€')
$('#totalDespuesDecuento').text((totalPresupuesto).toFixed(2) + '€')
$('#precioUnidadPresupuesto').text((precioUnidad).toFixed(2) + '€')
$('#totalAntesDescuento').text((addSeparatorsNF(totalAntesDescuento.toFixed(2), ".", ",", ".")) + "€")
$('#descuentoTotal').text((addSeparatorsNF(totalDescuento.toFixed(2), ".", ",", ".")) + "€")
$('#totalDespuesDecuento').text((addSeparatorsNF(totalPresupuesto.toFixed(2), ".", ",", ".")) + "€")
$('#precioUnidadPresupuesto').text((addSeparatorsNF(precioUnidad.toFixed(4), ".", ",", ".")) + "€")
$('#totalAntesDescuento').attr('val',(totalAntesDescuento).toFixed(2))
$('#descuentoTotal').attr('val',(totalDescuento).toFixed(2))
$('#totalDespuesDecuento').attr('val',(totalPresupuesto).toFixed(2))
$('#precioUnidadPresupuesto').attr('val',(precioUnidad).toFixed(4))
$('#factor').text(((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactor).toFixed(2))
$('#factor_ponderado').text(((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactorPonderado).toFixed(2))
$('#factor').text(addSeparatorsNF(((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactor).toFixed(2), ".", ",", "."))
$('#factor').attr('val', ((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactor).toFixed(2))
$('#factor_ponderado').text(addSeparatorsNF(((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactorPonderado).toFixed(2), ".", ",", "."))
$('#factor_ponderado').attr('val',((totalPresupuesto-totalEnvios-margenEnvios)/sumForFactorPonderado).toFixed(2))
}
function addSeparatorsNF(nStr, inD, outD, sep)
{
nStr += '';
var dpos = nStr.indexOf(inD);
var nStrEnd = '';
if (dpos != -1) {
nStrEnd = outD + nStr.substring(dpos + 1, nStr.length);
nStr = nStr.substring(0, dpos);
}
var rgx = /(\d+)(\d{3})/;
while (rgx.test(nStr)) {
nStr = nStr.replace(rgx, '$1' + sep + '$2');
}
return nStr + nStrEnd;
}
function getValuesResumenForm(){
var formResumen = ""
formResumen += '&total_coste_papel=' + $('#totalCostePapel').text().replace('€', '')
formResumen += '&total_margen_papel=' + $('#margenPapel').text().replace('€', '')
formResumen += '&total_coste_papel=' + $('#totalCostePapel').attr('val')
formResumen += '&total_margen_papel=' + $('#margenPapel').attr('val')
formResumen += '&total_margenPercent_papel=' + $('#porcentajeMargenPapel').text().replace('%', '')
formResumen += '&total_coste_impresion=' + $('#totalCosteImpresion').text().replace('€', '')
formResumen += '&total_margen_impresion=' + $('#margenImpresion').text().replace('€', '')
formResumen += '&total_coste_impresion=' + $('#totalCosteImpresion').attr('val')
formResumen += '&total_margen_impresion=' + $('#margenImpresion').attr('val')
formResumen += '&total_margenPercent_impresion=' + $('#porcentajeMargenImpresion').text().replace('%', '')
formResumen += '&total_coste_servicios=' + $('#totalServicios').text().replace('€', '')
formResumen += '&total_margen_servicios=' + $('#margenServicios').text().replace('€', '')
formResumen += '&total_coste_servicios=' + $('#totalServicios').attr('val')
formResumen += '&total_margen_servicios=' + $('#margenServicios').attr('val')
formResumen += '&total_margenPercent_servicios=' + $('#porcentajeMargenServicios').text().replace('%', '')
formResumen += '&total_coste_envios=' + $('#totalEnvios').text().replace('€', '')
formResumen += '&total_margen_envios=' + $('#margenEnvios').text().replace('€', '')
formResumen += '&total_coste_envios=' + $('#totalEnvios').attr('val')
formResumen += '&total_margen_envios=' + $('#margenEnvios').attr('val')
formResumen += '&total_costes=' + $('#totalCostes').text().replace('€', '')
formResumen += '&total_margenes=' + $('#totalMargenes').text().replace('€', '')
formResumen += '&total_costes=' + $('#totalCostes').attr('val')
formResumen += '&total_margenes=' + $('#totalMargenes').attr('val')
formResumen += '&total_antes_descuento=' + $('#totalAntesDescuento').text().replace('€', '')
formResumen += '&total_descuento=' + $('#descuentoTotal').text().replace('€', '')
formResumen += '&total_antes_descuento=' + $('#totalAntesDescuento').attr('val')
formResumen += '&total_descuento=' + $('#descuentoTotal').attr('val')
formResumen += '&total_descuentoPercent=' + $('#total_descuentoPercent').val()
formResumen += '&total_presupuesto=' + $('#totalDespuesDecuento').text().replace('€', '')
formResumen += '&total_precio_unidad=' + $('#precioUnidadPresupuesto').text().replace('€', '')
formResumen += '&total_presupuesto=' + $('#totalDespuesDecuento').attr('val')
formResumen += '&total_precio_unidad=' + $('#precioUnidadPresupuesto').attr('val')
formResumen += '&total_factor=' + $('#total_factor').text()
formResumen += '&total_factor_ponderado=' + $('#total_factor_ponderado').text()

View File

@ -157,7 +157,7 @@ async function add_tirada_alternativa(tirada_alt) {
coste_envio: coste_envio.toFixed(2),
margen: ((margen_total + margen_servicios + margen_envio)/(coste_total+coste_envio)*100.0).toFixed(2),
total_pedido: (coste_total + costes_servicios + coste_envio).toFixed(2),
precio_unidad: ((coste_total + costes_servicios + coste_envio) / datos.tirada).toFixed(2),
precio_unidad: ((coste_total + costes_servicios + coste_envio) / datos.tirada).toFixed(4),
}).draw(false);
}

View File

@ -17,6 +17,10 @@
value="<?= $presupuestoEntity->id ?>"></input>
<input type="hidden" name="tipo_impresion_id" id="tipo_impresion_id" class="form-control"
value="<?= $tipo_impresion_id ?>"></input>
<input type="hidden" name="lomo_cubierta" id="lomo_cubierta" class="form-control"
value="<?= is_null($presupuestoEntity->lomo_cubierta)?0:$presupuestoEntity->lomo_cubierta ?>"></input>
<input type="hidden" name="lomo_sobrecubierta" id="lomo_sobrecubierta" class="form-control"
value="<?= is_null($presupuestoEntity->lomo_sobrecubierta)?0:$presupuestoEntity->lomo_sobrecubierta ?>"></input>
<input type="hidden" name="isCosido" id="isCosido" class="form-control"
value="<?= $isCosido ?>"></input>
<input type="hidden" name="POD" id="POD" class="form-control"
@ -81,6 +85,13 @@
})
if(gotaNegro){
const domain = window.location.origin
const url = window.location.href;
const url_parts = url.split('/');
var id = -1;
if(url_parts[url_parts.length-2] == 'edit'){
id = url_parts[url_parts.length-1];
}
asyncMessageDialog('<?= lang("Basic.global.Warning") ?>', '<?= lang("Presupuestos.duplicarConTipologias") ?>', function() {
$.ajax({
type: 'post',
@ -291,9 +302,36 @@
<?php endif; ?>
<?php if (str_contains($formAction, 'edit')): ?>
<?= $this->section("additionalInlineJs") ?>
if(<?php echo $presupuestoEntity->is_duplicado?'true':'false'; ?>){
asyncMessageDialog(
'<?= lang("Basic.global.Warning") ?>',
'<?= lang("Presupuestos.presupuestoDuplicadoActualizacion") ?>',
function(){});
}
else if(<?php echo ($presupuestoEntity->cambios_lineas? 'true':'false'); ?> ||
<?php echo ($presupuestoEntity->cambios_servicios? 'true':'false'); ?> ||
<?php echo ($presupuestoEntity->cambios_envios ? 'true':'false'); ?>){
let text = '<?= lang("Presupuestos.actualizacionPrecios") ?>';
if(<?php echo ($presupuestoEntity->cambios_lineas ? 'true':'false'); ?>){
text += '<?= lang("Presupuestos.actualizacionPreciosLP") ?>';
}
else if (<?php echo ($presupuestoEntity->cambios_servicios ? 'true':'false'); ?>){
text += '<?= lang("Presupuestos.actualizacionPreciosServicios") ?>';
}
else if (<?php echo ($presupuestoEntity->cambios_envios ? 'true':'false'); ?>){
text += '<?= lang("Presupuestos.actualizacionPreciosEnvios") ?>';
}
asyncMessageDialog(
'<?= lang("Basic.global.Warning") ?>',
text,
function(){});
}
<?= $this->endSection() ?>
<?php endif; ?>
<!------------------------------------------->
<!-- Variables generales usadas en los ficheros js -->