resuelto problema presupuesto cliente

This commit is contained in:
2025-03-21 18:27:31 +01:00
parent af25237fa5
commit e1d208a4dd
9 changed files with 134 additions and 92 deletions

View File

@ -605,8 +605,16 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
// para el calculo del precio unidad, sólo se tiene en cuenta el envío base
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
}
$envio_base = true;
$coste_envio = 0.0; // se inicializa para calcular los costes de envíos restantes si es que hay
$return_data['coste_envio'] = [];
if (count($direcciones) > 0) {
for ($i = 0; $i < count($tirada); $i++) {
@ -614,8 +622,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($direcciones as $direccion) {
// El primer envio no se calcula ya que se añade el base
if ($envio_base) {
//aporte del envio al precio unidad
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
$envio_base = false;
continue;
}
@ -651,19 +657,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
];
return $return_data;
} else {
//aporte del envio al precio unidad
$coste_envio += ($coste_direccion->coste / $tirada[$i]);
// Se añade a los costes de envío
$coste_envio += $coste_direccion->coste;
}
}
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
$return_data['coste_envio'][$i] = round($coste_envio, 2);
}
} else {
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
}
}
}
if ($this->request) {
if ($this->request->isAJAX())
return $this->respond($return_data);
@ -1158,6 +1162,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0;
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0;
}
// para el calculo del precio unidad, sólo se tiene en cuenta el envío base
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['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
}
$coste_envio = 0.0; // se inicializa para calcular los costes de envíos restantes si es que hay
$resultado_presupuesto['coste_envio'] = [];
if (count($direcciones) > 0) {
for ($i = 0; $i < count($tirada); $i++) {
@ -1168,11 +1184,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($direcciones as $direccion) {
// El primer envio no se calcula ya que se añade el base
if ($envio_base) {
//aporte del envio al precio unidad
$coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]);
$margen_envio += ($resultado_presupuesto['eb_margen'][$i] / $tirada[$i]);
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $resultado_presupuesto['eb_margen'][$i];
$envio_base = false;
continue;
}
@ -1212,18 +1223,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
$resultado_presupuesto['coste_envio'][$i] = round($coste_envio, 2);
}
} else {
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]);
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
}
}
}
$model_presupuesto = new PresupuestoModel();
$tiradas_alternativas = [];
@ -1240,7 +1242,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$resultado_presupuesto['info']['totales'][$i]['margenPapel'] +
$resultado_presupuesto['info']['totales'][$i]['margen_envio']) / ($coste_total + $coste_envio) * 100.0, 2);
$total_pedido = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio), 2);
$precio_u = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio) / $tirada[$i], 4);
$precio_u = round( $resultado_presupuesto['precio_u'][$i], 4);
array_push($tiradas_alternativas, (object) array(
'tirada' => $tirada[$i],
@ -1252,6 +1254,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
));
} else {
$resumen_totales = $resultado_presupuesto['info']['totales'][$i];
$resumen_totales['precio_unidad'] = round($resultado_presupuesto['precio_u'][$i], 4);
}
}
@ -1607,7 +1611,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
if (intval($presupuesto->estado_id) == 2) {
$data['resumen']['base'] = $presupuesto->total_aceptado;
$data['resumen']['base'] = $presupuesto->total_antes_descuento;
$data['resumen']['total_envio'] = round(
floatval($presupuesto->total_coste_envios) +
floatval($presupuesto->total_margen_envios), 2);
$data['resumen']['precio_unidad'] = $presupuesto->total_precio_unidad;
}