Merge branch 'main' into mod/direcciones_ferro_prototipo

This commit is contained in:
2025-07-01 11:55:26 +02:00
4 changed files with 102 additions and 30 deletions

View File

@ -171,8 +171,8 @@ return [
'precioImpresionMargen' => 'Margen horas',
'precioPagNegro' => 'Precio pág. negro',
'precioPagColor' => 'Precio pág. color',
'totalTinta' => 'Total tinta',
'totalCorte' => 'Total corte',
'totalTinta' => 'Total tinta (C+M)',
'totalCorte' => 'Total corte (C+M)',
'total' => 'Total',
'totalLinea' => 'Total Precio Línea',
'aFavorFibra' => 'A favor de fibra',
@ -239,8 +239,6 @@ return [
'gTintaCG' => 'G. tinta CG',
'clicksPedido' => 'Clicks Pedido',
'totalClicks' => 'Total Clicks',
'totalTinta' => 'Total Tinta',
'totalCorte' => 'Total Corte',
'totalImpresion' => 'Total máquina',
'velocidadCorte' => 'Velocidad corte',
'precioHoraCorte' => 'Precio hora corte',

View File

@ -24,14 +24,64 @@
<dd class="col-3 text-end py-1"><span id="margenPapel"
class="autonumeric-resumen-currency"></span></dd>
<dt class="col-5 fw-normal text-end">Coste impresión</dt>
<dt class="col-5 fw-normal text-end">
<a href="javascript:void(0);" data-bs-toggle="collapse" data-bs-target=".costes-impresion" aria-expanded="false" aria-controls="costes-impresion">
<i class="ti ti-list ti-sm mx-2"></i>
</a>
Coste impresión
</dt>
<dd class="col-6 text-end py-1"><span id="totalCosteImpresion"
class="autonumeric-resumen-currency"></span></dd>
<dt class="col-5 py-1 fw-normal text-end">Margen impresión</dt>
<!-- Bloque colapsable, sin <div>, solo usando clases -->
<dt class="col-5 fw-normal text-end collapse costes-impresion">Coste clicks</dt>
<dd class="col-6 text-end py-1 collapse costes-impresion">
<span id="totalCosteClicks" class="autonumeric-resumen-currency"></span>
</dd>
<dt class="col-5 fw-normal text-end collapse costes-impresion">Coste horas</dt>
<dd class="col-6 text-end py-1 collapse costes-impresion">
<span id="totalCosteHoras" class="autonumeric-resumen-currency"></span>
</dd>
<dt class="col-5 fw-normal text-end collapse costes-impresion">Coste tinta</dt>
<dd class="col-6 text-end py-1 collapse costes-impresion">
<span id="totalCosteTinta" class="autonumeric-resumen-currency" ></span>
</dd>
<dt class="col-5 fw-normal text-end collapse costes-impresion">Coste corte</dt>
<dd class="col-6 text-end py-1 collapse costes-impresion">
<span id="totalCosteCorte" class="autonumeric-resumen-currency"></span>
</dd>
<dt class="col-5 py-1 fw-normal text-end">
<a href="javascript:void(0);" data-bs-toggle="collapse" data-bs-target=".margen-impresion" aria-expanded="false" aria-controls="margen-impresion">
<i class="ti ti-list ti-sm mx-2"></i>
</a>
Margen impresión
</dt>
<dd class="col-3 text-end py-1"><span id="porcentajeMargenImpresion"
class="autonumeric-resumen-percent"></span></dd>
<dd class="col-3 text-end py-1"><span id="margenImpresion"
class="autonumeric-resumen-currency"></span></d>
class="autonumeric-resumen-currency"></span></dd>
<!-- Bloque colapsable, sin <div>, solo usando clases -->
<dt class="col-5 fw-normal text-end collapse margen-impresion">Margen clicks</dt>
<dd class="col-6 text-end py-1 collapse margen-impresion">
<span id="totalMargenClicks" class="autonumeric-resumen-currency"></span>
</dd>
<dt class="col-5 fw-normal text-end collapse margen-impresion">Margen horas</dt>
<dd class="col-6 text-end py-1 collapse margen-impresion">
<span id="totalMargenHoras" class="autonumeric-resumen-currency"></span>
</dd>
<dt class="col-5 fw-normal text-end collapse margen-impresion">Margen tinta</dt>
<dd class="col-6 text-end py-1 collapse margen-impresion">
<span id="totalMargenTinta" class="autonumeric-resumen-currency" ></span>
</dd>
<dt class="col-5 fw-normal text-end collapse margen-impresion">Margen corte</dt>
<dd class="col-6 text-end py-1 collapse margen-impresion">
<span id="totalMargenCorte" class="autonumeric-resumen-currency"></span>
</dd>
<dt class="col-5 fw-normal text-end">Coste servicios</dt>
<dd class="col-6 text-end py-1 "><span id="totalServicios"
@ -48,9 +98,6 @@
<dt class="col-5 fw-normal text-end">Margen envío</dt>
<dd class="col-6 text-end py-1 "><span id="margenEnvios"
class="autonumeric-resumen-currency"></span></dd>
<dt class="col-5 fw-normal text-end">Total envío base</dt>
<dd class="col-6 text-end py-1 "><span id="precioEnvios"
class="autonumeric-resumen-currency"></span></dd>
</dl>
<hr class="mx-n4">
@ -64,6 +111,9 @@
class="autonumeric-resumen-percent"></span></dd>
<dd class="col-3 text-end py-1"><span id="totalMargenes"
class="autonumeric-resumen-currency"></span></dd>
<dt class="col-5 fw-normal text-end">Total envío base</dt>
<dd class="col-6 text-end py-1 "><span id="precioEnvios"
class="autonumeric-resumen-currency"></span></dd>
</dl>
<hr class="mx-n4">
@ -152,7 +202,7 @@
class="form-control text-center fs-5 autonumeric-resumen-currency" value="" <?php echo ($tipo_impresion_id == 21) ? ' max=80' : '' ?>>
</div>
</div>
<?php endif; */?>
<?php endif; */ ?>
<div class="row">
<p>
<span id="aprobado_by_at"></span>

View File

@ -1122,7 +1122,7 @@ class LineasPresupuesto {
'</div>' +
'<div class="lp-cell-auto">' +
'<label>' + window.language.Presupuestos.precioImpresion + '</label>' +
'<input readonly id="' + d.row_id + '_precioImpresion" name="' + d.row_id + '_precioImpresion" class="lp-input lp-cell lp-cell-margen ' + d.row_class + '-input" type="text" value="' + (parseFloat(d.precioImpresion) - parseFloat(d.margenImpresion)).toFixed(2) + '">' +
'<input readonly id="' + d.row_id + '_precioImpresion" name="' + d.row_id + '_precioImpresion" class="lp-input lp-cell lp-cell-coste ' + d.row_class + '-input" type="text" value="' + (parseFloat(d.precioImpresion) - parseFloat(d.margenImpresion)).toFixed(2) + '">' +
'</div>' +
'<div class="lp-cell-auto">' +
'<label>' + window.language.Presupuestos.precioImpresionMargen + '</label>' +
@ -1338,11 +1338,11 @@ class LineasPresupuesto {
'</div>' +
'<div class="col-md-12 col-lg-1">' +
window.language.Presupuestos.totalTinta +
'<input readonly type="text" id="' + d.row_id + '_totalTinta" name="' + d.row_id + '_totalTinta" class="lp-cell lp-cell-coste lp-input ' + d.row_class + '-input" readonly value="' + d.totalTinta + '">' +
'<input readonly type="text" id="' + d.row_id + '_totalTinta" name="' + d.row_id + '_totalTinta" class="lp-cell lp-cell-disabled lp-input ' + d.row_class + '-input" readonly value="' + d.totalTinta + '">' +
'</div>' +
(d.row_id.includes('rot') ? '<div class="col-md-12 col-lg-1">' : '<div class="col-md-12 col-lg-1" style="display:none;">') +
window.language.Presupuestos.totalCorte +
'<input readonly type="text" id="' + d.row_id + '_totalCorte" name="' + d.row_id + '_totalCorte" class="lp-cell lp-cell-coste lp-input ' + d.row_class + '-input" readonly value="' + d.totalCorte + '">' +
'<input readonly type="text" id="' + d.row_id + '_totalCorte" name="' + d.row_id + '_totalCorte" class="lp-cell lp-cell-disabled lp-input ' + d.row_class + '-input" readonly value="' + d.totalCorte + '">' +
'</div>' +
'<div class="col-md-12 col-lg-1">' +
window.language.Presupuestos.totalImpresion +

View File

@ -107,6 +107,7 @@ class Resumen {
async updateTotales(data = {}, ajustar = false) {
const self = this;
const MARGEN_TINTA_CORTE = 0.23;
let updateLP = data.updateLP || true;
let updateServicios = data.updateServicios || true;
@ -115,8 +116,15 @@ class Resumen {
let margenPapel = 0;
let totalImpresion = 0;
let totalImpresionforMargen = 0;
let totalCosteClicks = 0;
let totalCosteHoras = 0;
let totalCosteTinta = 0;
let totalCosteCorte = 0;
let margenImpresion = 0;
let totalMargenClicks = 0;
let totalMargenHoras = 0;
let totalMargenTinta = 0;
let totalMargenCorte = 0;
let totalServicios = parseFloat(0);
let margenServicios = parseFloat(0);
@ -129,9 +137,6 @@ class Resumen {
let sumForFactorPonderado = 0.0;
let costeMaquinaHoras = 0.0;
let margenPorHoras = 0.0;
if (updateLP) {
if (typeof $("#tableLineasPresupuesto").DataTable() !== 'undefined') {
@ -148,16 +153,21 @@ class Resumen {
}
if (rowData.check_impresion_total) {
costeMaquinaHoras += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
margenPorHoras += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val())
totalCosteHoras += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
totalMargenHoras += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
totalCosteClicks += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
totalMargenClicks += parseFloat($('#' + rowData.row_id + '_margenClicks').val())
//sumForFactor += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
if (rowData.maquinaTipo == 'inkjet') {
totalImpresion += parseFloat(rowData.totalTinta)
totalImpresion += parseFloat(rowData.totalCorte) ?? 0;
let tinta = parseFloat($('#' + rowData.row_id + '_totalTinta').val()) || 0;
let corte = parseFloat($('#' + rowData.row_id + '_totalCorte').val()) || 0;
totalCosteTinta += tinta/(1+ MARGEN_TINTA_CORTE);
totalCosteCorte += corte/(1+ MARGEN_TINTA_CORTE);
totalMargenTinta += (tinta - tinta/(1+ MARGEN_TINTA_CORTE));
totalMargenCorte += (corte - corte/(1+ MARGEN_TINTA_CORTE));
//sumForFactor += (parseFloat(rowData.totalTinta) + parseFloat(rowData.totalCorte))
}
@ -174,7 +184,8 @@ class Resumen {
//totalImpresion -= parseFloat(margenImpresion);
totalPapel -= parseFloat(margenPapel);
margenImpresion += parseFloat(margenPorHoras) + parseFloat(costeMaquinaHoras);
totalImpresion += totalCosteClicks + totalCosteHoras + totalCosteTinta + totalCosteCorte;
margenImpresion += totalMargenClicks + totalMargenHoras + totalMargenTinta + totalMargenCorte;
sumForFactor += totalImpresion;
sumForFactor += totalPapel;
@ -187,10 +198,18 @@ class Resumen {
$('#margenPapel').val(margenPapel.toFixed(2))
$('#margenPapel').html(margenPapel)
let porcentajeMargenImpresion = isNaN(margenImpresion / (totalImpresion) * 100.0) ? 0 : margenImpresion / (totalImpresion) * 100.0
$('#porcentajeMargenImpresion').html(porcentajeMargenImpresion).val(porcentajeMargenImpresion.toFixed(2))
$('#totalCosteImpresion').html(totalImpresion).val(totalImpresion.toFixed(2))
$('#margenImpresion').html(margenImpresion).val(margenImpresion.toFixed(2))
let porcentajeMargenImpresion = isNaN(margenImpresion / (totalImpresion) * 100.0) ? 0 : margenImpresion / (totalImpresion) * 100.0;
$('#porcentajeMargenImpresion').html(porcentajeMargenImpresion).val(porcentajeMargenImpresion.toFixed(2));
$('#totalCosteImpresion').html(totalImpresion).val(totalImpresion.toFixed(2));
$('#totalCosteClicks').html(totalCosteClicks).val(totalCosteClicks.toFixed(2));
$('#totalCosteHoras').html(totalCosteHoras).val(totalCosteHoras.toFixed(2));
$('#totalCosteTinta').html(totalCosteTinta).val(totalCosteTinta.toFixed(2));
$('#totalCosteCorte').html(totalCosteCorte).val(totalCosteCorte.toFixed(2));
$('#margenImpresion').html(margenImpresion).val(margenImpresion.toFixed(2));
$('#totalMargenClicks').html(totalMargenClicks).val(totalMargenClicks.toFixed(2));
$('#totalMargenHoras').html(totalMargenHoras).val(totalMargenHoras.toFixed(2));
$('#totalMargenTinta').html(totalMargenTinta).val(totalMargenTinta.toFixed(2));
$('#totalMargenCorte').html(totalMargenCorte).val(totalMargenCorte.toFixed(2));
}
@ -364,8 +383,13 @@ class Resumen {
if ($('#total_descuentoPercent').val() < 0) {
$('#total_descuentoPercent').val(0)
}
let totalAntesDescuento = totalCostes + totalMargenes + totalEnvios_base;
let totalDescuento = totalAntesDescuento * parseFloat($('#total_descuentoPercent').val() || 0) / 100
let totalDescuento = totalAntesDescuento * parseFloat($('#total_descuentoPercent').val() || 0) / 100;
if(totalDescuento > totalMargenes){
totalDescuento = totalMargenes;
$('#total_descuentoPercent').val((totalDescuento / totalAntesDescuento * 100).toFixed(0));
}
let totalPresupuesto = totalAntesDescuento - totalDescuento; // para el calculo del precio_u solo se tiene en cuenta el base
let precioUnidad = totalPresupuesto / parseInt($('#tirada').val())