Merge branch 'main' into 'dev/api_il_2'

Main

See merge request jjimenez/safekat!562
This commit is contained in:
Ignacio Martinez Navajas
2025-02-21 13:03:55 +00:00
6 changed files with 62 additions and 44 deletions

View File

@ -2884,7 +2884,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$sumForFactor += round($linea['precio_pedido'], 2); $sumForFactor += round($linea['precio_pedido'], 2);
$sumForFactor -= round($linea['precio_pedido'], 2); $sumForFactor -= round($linea['precio_pedido'], 2);
$totalImpresion += round($linea['precio_impresion_horas'], 2);
$totalImpresion += round($linea['precio_click_pedido'], 2); $totalImpresion += round($linea['precio_click_pedido'], 2);
$sumForFactor += round($linea['precio_click_pedido'], 2); $sumForFactor += round($linea['precio_click_pedido'], 2);
@ -2895,6 +2894,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$sumForFactor += round($linea['total_corte'], 2); $sumForFactor += round($linea['total_corte'], 2);
} }
} }
$margenImpresion += round($linea['precio_impresion_horas'], 2); // coste de maquina y magen son MARGEN, no COSTE
$margenImpresion += round($linea['margen_impresion_horas'], 2); $margenImpresion += round($linea['margen_impresion_horas'], 2);
$margenImpresion += round($linea['margen_click_pedido'], 2); $margenImpresion += round($linea['margen_click_pedido'], 2);
$sumForFactor -= round($linea['margen_click_pedido'], 2); $sumForFactor -= round($linea['margen_click_pedido'], 2);

View File

@ -155,7 +155,7 @@ return [
'totalClicks' => 'Total clicks', 'totalClicks' => 'Total clicks',
'horas' => 'Horas máquina', 'horas' => 'Horas máquina',
'precioHora' => 'Precio hora', 'precioHora' => 'Precio hora',
'precioImpresion' => 'Precio impresión', 'precioImpresion' => 'Total horas',
'precioPagNegro' => 'Precio pág. negro', 'precioPagNegro' => 'Precio pág. negro',
'precioPagColor' => 'Precio pág. color', 'precioPagColor' => 'Precio pág. color',
'totalTinta' => 'Total tinta', 'totalTinta' => 'Total tinta',
@ -228,7 +228,7 @@ return [
'totalClicks' => 'Total Clicks', 'totalClicks' => 'Total Clicks',
'totalTinta' => 'Total Tinta', 'totalTinta' => 'Total Tinta',
'totalCorte' => 'Total Corte', 'totalCorte' => 'Total Corte',
'totalImpresion' => 'TOTAL IMPRES.', 'totalImpresion' => 'Total máquina',
'velocidadCorte' => 'Velocidad corte', 'velocidadCorte' => 'Velocidad corte',
'precioHoraCorte' => 'Precio hora corte', 'precioHoraCorte' => 'Precio hora corte',
'tiempoCorte' => 'Tiempo corte', 'tiempoCorte' => 'Tiempo corte',

View File

@ -154,7 +154,7 @@ class PresupuestoServiciosExtraModel extends \App\Models\BaseModel
$builder = $this->db $builder = $this->db
->table($this->table . " t1") ->table($this->table . " t1")
->select( ->select(
"t1.id AS id, t1.tarifa_extra_id AS tarifa_extra_id, t1.precio AS precio, t1.margen AS margen, t2.nombre AS nombre" "t1.id AS id, t1.tarifa_extra_id AS tarifa_extra_id, t1.tarifa_extra_id AS tarifa_id, t1.precio AS precio, t1.margen AS margen, t2.nombre AS nombre"
); );
$builder->where('t1.presupuesto_id', $presupuesto_id); $builder->where('t1.presupuesto_id', $presupuesto_id);

View File

@ -404,7 +404,9 @@ class PresupuestoAdminEdit {
} }
// Funciones para detectar cambios en el formulario // Funciones para detectar cambios en el formulario
this.#checkChangesPresupuesto(); setTimeout(() => {
this.#checkChangesPresupuesto();
}, 500);
$('#bc-save').on("click", function () { $('#bc-save').on("click", function () {
showBreadCrumbSaveButton(false); showBreadCrumbSaveButton(false);
$('#saveForm').trigger('click'); $('#saveForm').trigger('click');
@ -530,45 +532,57 @@ class PresupuestoAdminEdit {
#checkChangesPresupuesto() { #checkChangesPresupuesto() {
const self = this;
// Detectar cambios en inputs de texto // Detectar cambios en inputs de texto
$('input[type="text"]').on('change', function () { $('input[type="text"]').on('change', function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
// Detectar cambios en inputs de texto // Detectar cambios en inputs de texto
$('input[type="number"]').on('change', function () { $('input[type="number"]').on('change', function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
// Detectar cambios en select // Detectar cambios en select
$('select').on('change', function () { $('select').on('change', function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
$('.select2bs').on('change', function (e) { $('.select2bs').on('change', function (e) {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
// Detectar cambios en checkboxes // Detectar cambios en checkboxes
$('input[type="checkbox"]').change(function () { $('input[type="checkbox"]').change(function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
// Detectar cambios en textareas // Detectar cambios en textareas
$('textarea').on('input', function () { $('textarea').on('input', function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
// Detectar cambios en otros tipos de input // Detectar cambios en otros tipos de input
$('input[type="radio"]').change(function () { $('input[type="radio"]').change(function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
// Detectar cambios en otros tipos de input // Detectar cambios en otros tipos de input
$('input:not([type])').on('input', function () { $('input:not([type])').on('input', function () {
showBreadCrumbSaveButton(true); if (!self.cargandoPresupuesto)
showBreadCrumbSaveButton(true);
}); });
} }
downloadPreviewImage() { downloadPreviewImage() {
$(document).on("click", ".download-shape", (event) => { $(document).on("click", ".download-shape", (event) => {
let parentDiv = $(event.currentTarget).parent().parent(); let parentDiv = $(event.currentTarget).parent().parent();

View File

@ -1045,7 +1045,7 @@ class LineasPresupuesto {
data.totalClicksPedido = isNaN(parseFloat(row.precio_click_pedido)) ? "" : parseFloat(row.precio_click_pedido).toFixed(2) data.totalClicksPedido = isNaN(parseFloat(row.precio_click_pedido)) ? "" : parseFloat(row.precio_click_pedido).toFixed(2)
data.totalTinta = isNaN(parseFloat(row.precio_tinta)) ? "" : parseFloat(row.precio_tinta).toFixed(2) data.totalTinta = isNaN(parseFloat(row.precio_tinta)) ? "" : parseFloat(row.precio_tinta).toFixed(2)
data.totalImpresion = isNaN(parseFloat(row.precio_click_pedido + row.precio_tinta + data.totalCorte)) ? "" : parseFloat(row.precio_click_pedido + row.precio_tinta + data.totalCorte).toFixed(2) data.totalImpresion = isNaN(parseFloat(row.precio_click_pedido) + parseFloat(row.precio_tinta) + parseFloat(row.total_corte)) ? "" : (parseFloat(row.precio_click_pedido) + parseFloat(row.precio_tinta) + parseFloat(row.total_corte)).toFixed(2)
data.gTintaNegroPed = isNaN(parseFloat(row.peso_gotas_negro_pedido)) ? "" : parseFloat(row.peso_gotas_negro_pedido).toFixed(2) data.gTintaNegroPed = isNaN(parseFloat(row.peso_gotas_negro_pedido)) ? "" : parseFloat(row.peso_gotas_negro_pedido).toFixed(2)
data.gTintaCyanPed = isNaN(parseFloat(row.peso_gotas_cyan_pedido)) ? "" : parseFloat(row.peso_gotas_cyan_pedido).toFixed(2) data.gTintaCyanPed = isNaN(parseFloat(row.peso_gotas_cyan_pedido)) ? "" : parseFloat(row.peso_gotas_cyan_pedido).toFixed(2)

View File

@ -104,6 +104,7 @@ class Resumen {
let sumForFactorPonderado = 0.0; let sumForFactorPonderado = 0.0;
let costeMaquinaHoras = 0.0;
let margenPorHoras = 0.0; let margenPorHoras = 0.0;
if (updateLP) { if (updateLP) {
@ -116,31 +117,31 @@ class Resumen {
totalPapel += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val()) totalPapel += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val())
margenPapel += parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val()) margenPapel += parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val())
sumForFactor += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val()) //sumForFactor += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val())
sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val()) //sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val())
} }
if (rowData.check_impresion_total) { if (rowData.check_impresion_total) {
totalImpresion += parseFloat($('#' + rowData.row_id + '_precioImpresion').val()) costeMaquinaHoras += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
margenPorHoras += parseFloat($('#' + rowData.row_id + '_margenImpresion').val()) margenPorHoras += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val()) totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val()) margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val())
sumForFactor += parseFloat($('#' + rowData.row_id + '_totalClicks').val()) //sumForFactor += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
if (rowData.maquinaTipo == 'inkjet') { if (rowData.maquinaTipo == 'inkjet') {
totalImpresion += parseFloat(rowData.totalTinta) totalImpresion += parseFloat(rowData.totalTinta)
totalImpresion += parseFloat(rowData.totalCorte)?? 0; totalImpresion += parseFloat(rowData.totalCorte)?? 0;
sumForFactor += (parseFloat(rowData.totalTinta) + parseFloat(rowData.totalCorte)) //sumForFactor += (parseFloat(rowData.totalTinta) + parseFloat(rowData.totalCorte))
} }
sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenClicks').val()) //sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenClicks').val())
if (!isNaN(parseFloat($('#' + rowData.row_id + '_totalTinta').val()))) { /*if (!isNaN(parseFloat($('#' + rowData.row_id + '_totalTinta').val()))) {
totalImpresion += parseFloat($('#' + rowData.row_id + '_totalTinta').val()) totalImpresion += parseFloat($('#' + rowData.row_id + '_totalTinta').val())
sumForFactor += parseFloat($('#' + rowData.row_id + '_totalTinta').val()) sumForFactor += parseFloat($('#' + rowData.row_id + '_totalTinta').val())
} }*/
} }
}) })
} }
@ -148,7 +149,10 @@ class Resumen {
totalImpresion -= parseFloat(margenImpresion); totalImpresion -= parseFloat(margenImpresion);
totalPapel -= parseFloat(margenPapel); totalPapel -= parseFloat(margenPapel);
margenImpresion += parseFloat(margenPorHoras); margenImpresion += parseFloat(margenPorHoras) + parseFloat(costeMaquinaHoras);
sumForFactor += totalImpresion;
sumForFactor += totalPapel;
let porcentajeMargenPapel = isNaN(margenPapel / (totalPapel) * 100.0) ? 0 : margenPapel / (totalPapel) * 100.0 let porcentajeMargenPapel = isNaN(margenPapel / (totalPapel) * 100.0) ? 0 : margenPapel / (totalPapel) * 100.0
$('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%') $('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%')
@ -214,7 +218,7 @@ class Resumen {
$('#tableOfServiciosExtra').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { $('#tableOfServiciosExtra').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
let rowData = this.data(); let rowData = this.data();
let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio)); let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio));
let coste_servicio = self.roundToTwoDecimals(parseFloat(rowData.coste)); let coste_servicio = self.roundToTwoDecimals(parseFloat(rowData.margen));
totalServicios += total_servicio totalServicios += total_servicio
margenServicios += total_servicio - coste_servicio; margenServicios += total_servicio - coste_servicio;
}); });
@ -316,37 +320,37 @@ class Resumen {
getData(){ getData(){
let data = { let data = {
'total_coste_papel': $('#totalCostePapel').text().replace('€', ''), 'total_coste_papel': $('#totalCostePapel').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margen_papel': $('#margenPapel').text().replace('€', ''), 'total_margen_papel': $('#margenPapel').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margenPercent_papel': $('#porcentajeMargenPapel').text().replace('%', ''), 'total_margenPercent_papel': $('#porcentajeMargenPapel').text().replace('%', '').replace('.', '').replace(',', '.'),
'total_coste_impresion': $('#totalCosteImpresion').text().replace('€', ''), 'total_coste_impresion': $('#totalCosteImpresion').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margen_impresion': $('#margenImpresion').text().replace('€', ''), 'total_margen_impresion': $('#margenImpresion').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margenPercent_impresion': $('#porcentajeMargenImpresion').text().replace('%', ''), 'total_margenPercent_impresion': $('#porcentajeMargenImpresion').text().replace('%', '').replace('.', '').replace(',', '.'),
'total_coste_servicios': $('#totalServicios').text().replace('€', ''), 'total_coste_servicios': $('#totalServicios').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margen_servicios': $('#margenServicios').text().replace('€', ''), 'total_margen_servicios': $('#margenServicios').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margenPercent_servicios': $('#porcentajeMargenServicios').text().replace('%', ''), 'total_margenPercent_servicios': $('#porcentajeMargenServicios').text().replace('%', '').replace('.', '').replace(',', '.'),
'total_coste_envios': $('#totalEnvios').text().replace('€', ''), 'total_coste_envios': $('#totalEnvios').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margen_envios': $('#margenEnvios').text().replace('€', ''), 'total_margen_envios': $('#margenEnvios').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_costes': $('#totalCostes').text().replace('€', ''), 'total_costes': $('#totalCostes').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_margenes': $('#totalMargenes').text().replace('€', ''), 'total_margenes': $('#totalMargenes').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_antes_descuento': $('#totalAntesDescuento').text().replace('€', ''), 'total_antes_descuento': $('#totalAntesDescuento').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_descuento': $('#descuentoTotal').text().replace('€', ''), 'total_descuento': $('#descuentoTotal').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_descuentoPercent': $('#total_descuentoPercent').val().replace('€', ''), 'total_descuentoPercent': $('#total_descuentoPercent').val().replace('€', '').replace('.', '').replace(',', '.'),
'total_presupuesto': $('#totalDespuesDecuento').text().replace('€', ''), 'total_presupuesto': $('#totalDespuesDecuento').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_precio_unidad': $('#precioUnidadPresupuesto').text().replace('€', ''), 'total_precio_unidad': $('#precioUnidadPresupuesto').text().replace('€', '').replace('.', '').replace(',', '.'),
'total_factor': $('#factor').text().replace(/,/g, '.'), 'total_factor': $('#factor').text().replace(/,/g, '.'),
'total_factor_ponderado': $('#factor_ponderado').text().replace(/,/g, '.'), 'total_factor_ponderado': $('#factor_ponderado').text().replace(/,/g, '.')
}; };
if($('#confirmar_presupuesto').prop('checked')){ if($('#confirmar_presupuesto').prop('checked')){
data.confirmar = '1'; data.confirmar = '1';
data.total_aceptado = $('#totalDespuesDecuento').text().replace('€', ''); data.total_aceptado = $('#totalDespuesDecuento').text().replace('€', '').replace('.', '').replace(',', '.');
} }
return data; return data;