Merge branch 'fix/arreglar_resumen_cliente_vs_admin' into 'main'

Fix/arreglar resumen cliente vs admin

See merge request jjimenez/safekat!679
This commit is contained in:
Ignacio Martinez Navajas
2025-04-07 22:44:08 +00:00
4 changed files with 46 additions and 25 deletions

View File

@ -635,8 +635,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$data['resumen']['total_margen_envios'] = $presupuesto->total_margen_envios;
$data['resumen']['total_costes'] = $presupuesto->total_costes;
$data['resumen']['porcentajeMargen'] =
round(($presupuesto->total_costes + $presupuesto->total_margenes) > 0 ?
100 * $presupuesto->total_margenes / ($presupuesto->total_costes + $presupuesto->total_margenes) :
round(($presupuesto->total_costes) > 0 ?
100 * $presupuesto->total_margenes / ($presupuesto->total_costes) :
0, 0);
$data['resumen']['total_margenes'] = $presupuesto->total_margenes;
$data['resumen']['total_antes_descuento'] = $presupuesto->total_antes_descuento;
@ -1843,7 +1843,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$input_data = [];
$input_data['presupuesto_id'] = $presupuestoEntity->id;
$input_data['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id;
$input_data['tirada'] = $presupuestoEntity->tirada;
$input_data['tirada'] = (intval($presupuestoEntity->tirada) + intval($presupuestoEntity->merma));
$input_data['POD'] = $this->getPOD();
$input_data['paginas'] = $presupuestoEntity->paginas;
$input_data['is_duplicado'] = $presupuestoEntity->is_duplicado;

View File

@ -1176,8 +1176,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]);
$resultado_presupuesto['info']['totales'][$i]['envio_base_coste'] = $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['info']['totales'][$i]['envio_base_margen'] = $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['info']['totales'][$i]['envio_base_margen'] =
floatval($resultado_presupuesto['eb'][$i])*(floatval($resultado_presupuesto['eb_margen'][$i])/100.0);
$resultado_presupuesto['info']['totales'][$i]['envio_base_coste'] = $resultado_presupuesto['eb'][$i];
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
}
@ -1354,7 +1356,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($serviciosAcabado as $service) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD);
$servicio = $model->getPrecioTarifa(
intval($service), intval($selected_tirada)+$resultado_presupuesto['info']['merma'], -1, $POD);
if (count($servicio) > 0) {
if ($servicio[0]->total > 0) {
@ -1371,7 +1374,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($serviciosAcabado as $service) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD);
$servicio = $model->getPrecioTarifa(
intval($service),
intval($selected_tirada) + $resultado_presupuesto['info']['merma'], -1, $POD);
if (count($servicio) > 0) {
if ($servicio[0]->total > 0) {
@ -1387,7 +1392,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($serviciosAcabado as $service) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD);
$servicio = $model->getPrecioTarifa(
intval($service),
intval($selected_tirada) + $resultado_presupuesto['info']['merma'], -1, $POD);
if (count($servicio) > 0) {
if ($servicio[0]->total > 0) {
@ -1400,7 +1407,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$tarifa_id = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_lomo_redondo')->value;
$serv_lomo = PresupuestoCLienteService::getServiciosManipulado([
'tarifa_id' => intval($tarifa_id),
'tirada' => $selected_tirada,
'tirada' => $selected_tirada+$resultado_presupuesto['info']['merma'],
'POD' => $POD,
])[0];
@ -3061,16 +3068,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
return;
$totalPapel += round($linea['precio_pedido'], 2);
$totalPapel -= round($linea['margen_papel_pedido'], 2);
$sumForFactor += round($linea['precio_pedido'], 2)
- round($linea['margen_papel_pedido'], 2);
$margenPapel += round($linea['margen_papel_pedido'], 2);
$sumForFactor += round($linea['precio_pedido'], 2);
$sumForFactor -= round($linea['precio_pedido'], 2);
$totalImpresion += round($linea['precio_click_pedido'], 2);
$totalImpresion -= round($linea['margen_click_pedido'], 2);
$sumForFactor += round($linea['precio_click_pedido'], 2);
$sumForFactor += round($linea['precio_click_pedido'], 2)
- round($linea['margen_click_pedido'], 2);
if ($linea['tipo_maquina'] == 'inkjet') {
$totalImpresion += round($linea['precio_tinta'], 2);
$sumForFactor += round($linea['precio_tinta'], 2);
if (array_key_exists('total_corte', $linea)) {
$totalImpresion += round($linea['total_corte'], 2);
$sumForFactor += round($linea['total_corte'], 2);

View File

@ -405,9 +405,9 @@ class PresupuestoModel extends \App\Models\BaseModel
$is_cosido = (new TipoPresupuestoModel())->get_isCosido($data['tipo_impresion_id']);
$totalCostes = $resumen_totales['totalPapel'] + $resumen_totales['totalImpresion'] +
$resumen_totales['totalServicios'] + $resumen_totales['envio_base_coste'];
$resumen_totales['totalServicios']; //+ $resumen_totales['envio_base_coste'];
$totalMargenes = $resumen_totales['margenPapel'] + $resumen_totales['margenImpresion'] +
$resumen_totales['margenServicios'] + $resumen_totales['envio_base_margen'];
$resumen_totales['margenServicios']; //+ $resumen_totales['envio_base_margen'];
$fields = [
'cliente_id' => $data['clienteId'],
@ -483,16 +483,26 @@ class PresupuestoModel extends \App\Models\BaseModel
'total_costes' => round($totalCostes, 2),
'total_margenes' => round($totalMargenes, 2),
'total_antes_descuento' => round($totalCostes + $totalMargenes, 2),
'total_antes_descuento' => round(
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] +
$data['envio_base'], 2),
'total_descuento' => 0,
'total_descuentoPercent' => 0,
'total_precio_unidad' => $resumen_totales['precio_unidad'],
'total_presupuesto' => round($totalCostes + $totalMargenes + $resumen_totales['coste_envio']+$resumen_totales['margen_envio'], 2),
'total_presupuesto' => round(
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] +
$data['envio_base'], 2),
'total_aceptado' => round($totalCostes + $totalMargenes + $resumen_totales['coste_envio']+$resumen_totales['margen_envio'], 2),
'total_factor' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactor'], 2),
'total_factor_ponderado' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactorPonderado'], 2),
'total_factor' => round(
($totalCostes + $totalMargenes ) /
$resumen_totales['sumForFactor'], 2),
'total_factor_ponderado' => round(
($totalCostes + $totalMargenes ) /
$resumen_totales['sumForFactorPonderado'], 2),
'iva_reducido' => $iva_reducido,
'excluir_rotativa' => $excluir_rotativa,

View File

@ -195,6 +195,8 @@ class Resumen {
if (updateServicios) {
const total = parseInt($('#tirada').val()) + parseInt($('#merma').val());
if (typeof $("#tableOfServiciosEncuadernacion").DataTable() !== 'undefined' && $("#tableOfServiciosEncuadernacion").DataTable().rows().count() > 0) {
$('#tableOfServiciosEncuadernacion').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
let rowData = this.data();
@ -202,7 +204,7 @@ class Resumen {
let margen_servicio = parseFloat(rowData.margen);
totalServicios += total_servicio
let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0));
base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val());
base = self.roundToTwoDecimals(base / total) * total;
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
});
}
@ -214,7 +216,7 @@ class Resumen {
let margen_servicio = parseFloat(rowData.margen);
totalServicios += total_servicio
let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0));
base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val());
base = self.roundToTwoDecimals(base / total) * total;
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
});
}
@ -224,7 +226,7 @@ class Resumen {
let rowData = this.data();
let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio));
let base = (parseFloat(rowData.precio / (1 + parseFloat(rowData.margen) / 100.0)).toFixed(2));
base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val());
base = self.roundToTwoDecimals(base / total) * total;
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
totalServicios += total_servicio
});
@ -235,7 +237,7 @@ class Resumen {
let rowData = this.data();
let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio));
let base = (parseFloat(rowData.precio / (1 + parseFloat(rowData.margen) / 100.0)).toFixed(2));
base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val());
base = self.roundToTwoDecimals(base / total) * total;
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
totalServicios += total_servicio;
});
@ -248,7 +250,7 @@ class Resumen {
let margen_servicio = parseFloat(rowData.margen);
totalServicios += total_servicio
let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0));
base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val());
base = self.roundToTwoDecimals(base / total) * total;
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
});
}
@ -338,7 +340,7 @@ class Resumen {
}
}
let porcentajeMargen = totalCostes + totalMargenes > 0 ? (100 * totalMargenes / (totalCostes)).toFixed(0) : 0
let porcentajeMargen = totalCostes > 0 ? (100 * totalMargenes / (totalCostes)).toFixed(0) : 0
$('#totalCostes').html(totalCostes).val(totalCostes.toFixed(2))
$('#totalMargenes').html(totalMargenes).val(totalMargenes.toFixed(2))
$('#porcentajeMargen').html(porcentajeMargen).val(porcentajeMargen)