mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
copiada la rama presu_cliente_v2 en esta para poder hacer el merge al main
This commit is contained in:
@ -15,37 +15,44 @@ class PresupuestoClienteService extends BaseService
|
||||
{
|
||||
|
||||
$rotativa = [];
|
||||
$plana = PresupuestoClienteService::obtenerPresupuestoClienteInterior($data);
|
||||
$plana = [];
|
||||
// no se busca en plana cuando es estándar (no Premium)
|
||||
if ($data['isHq'])
|
||||
$plana = PresupuestoClienteService::obtenerPresupuestoClienteInterior($data);
|
||||
if (!$data['excluirRotativa'] && !$data['isHq'])
|
||||
$rotativa = PresupuestoClienteService::obtenerPresupuestoClienteInteriorRotativa($data);
|
||||
|
||||
$total_plana = -1;
|
||||
$hay_plana = false;
|
||||
if($data['isColor']){
|
||||
if ($data['datosPedido']->paginas == $data['paginas_color'])
|
||||
$total_plana += floatval($plana[1]['total_impresion']);
|
||||
|
||||
elseif(count($plana[0]) > 2 && count($plana[1]) > 2) {
|
||||
$total_plana = 0.0;
|
||||
foreach ($plana as $linea) {
|
||||
if (count($linea) > 0)
|
||||
$total_plana += floatval($linea['total_impresion']);
|
||||
if ($data['isColor']) {
|
||||
if ($data['datosPedido']->paginas == $data['paginas_color']){
|
||||
if(count($plana[1]) > 2)
|
||||
$total_plana += floatval($plana[1]['total_impresion']);
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
elseif (count($plana) > 0) {
|
||||
if (count($plana[0]) > 2 && count($plana[1]) > 2) {
|
||||
$total_plana = 0.0;
|
||||
foreach ($plana as $linea) {
|
||||
if (count($linea) > 0)
|
||||
$total_plana += floatval($linea['total_impresion']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
foreach ($plana as $linea) {
|
||||
if (count($linea) > 0)
|
||||
if($linea['tipo_linea'] == 'lp_bn' || $linea['tipo_linea'] == 'lp_bnhq'){
|
||||
if ($linea['tipo_linea'] == 'lp_bn' || $linea['tipo_linea'] == 'lp_bnhq') {
|
||||
$total_plana = 0.0;
|
||||
$total_plana = floatval($linea['total_impresion']);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$total_rotativa = -1;
|
||||
if (!$data['excluirRotativa'] && count($rotativa) > 0 && $rotativa['num_formas']['posicion_formas'] != 'n/a') {
|
||||
if (!$data['excluirRotativa'] && count($rotativa) > 0 && $rotativa['num_formas']['posicion_formas'] != 'n/a') {
|
||||
$total_rotativa = floatval($rotativa['total_impresion']);
|
||||
}
|
||||
if ($total_plana < 0 && $total_rotativa < 0)
|
||||
@ -70,9 +77,10 @@ class PresupuestoClienteService extends BaseService
|
||||
$isHq = $data['isHq'];
|
||||
$cliente_id = $data['cliente_id'];
|
||||
$paginas_color = $data['paginas_color'];
|
||||
$lomoRedondo = $data['lomoRedondo'];
|
||||
|
||||
$lineas_cubierta = [];
|
||||
|
||||
|
||||
for ($i = 0; $i < 2; $i++) {
|
||||
|
||||
$lineas = PresupuestoService::obtenerComparadorPlana([
|
||||
@ -84,7 +92,8 @@ class PresupuestoClienteService extends BaseService
|
||||
'isColor' => $isColor,
|
||||
'isHq' => $isHq,
|
||||
'cliente_id' => $cliente_id,
|
||||
'a_favor_fibra' => $i
|
||||
'a_favor_fibra' => $i,
|
||||
'lomoRedondo' => $lomoRedondo
|
||||
]);
|
||||
|
||||
if (count($lineas) > 0) {
|
||||
@ -124,7 +133,7 @@ class PresupuestoClienteService extends BaseService
|
||||
$paginas_color = $data['paginas_color'];
|
||||
|
||||
$lineas_sobrecubierta = [];
|
||||
|
||||
|
||||
for ($i = 0; $i < 2; $i++) {
|
||||
|
||||
$lineas = PresupuestoService::obtenerComparadorPlana([
|
||||
@ -175,7 +184,7 @@ class PresupuestoClienteService extends BaseService
|
||||
$cliente_id = $data['cliente_id'];
|
||||
|
||||
$lineas_guardas = [];
|
||||
|
||||
|
||||
for ($i = 0; $i < 2; $i++) {
|
||||
|
||||
$lineas = PresupuestoService::obtenerComparadorPlana([
|
||||
@ -238,11 +247,21 @@ class PresupuestoClienteService extends BaseService
|
||||
$uso = $data['uso'];
|
||||
$tipo_impresion_id = $data['tipo_impresion_id'];
|
||||
$datosPedido = $data['datosPedido'];
|
||||
$papel_generico = $data['papel_generico'];
|
||||
$gramaje = $data['gramaje'];
|
||||
if ($data['papelInteriorDiferente'] == false)
|
||||
$papel_generico = $data['papel_generico'];
|
||||
else {
|
||||
$papel_generico = $data['papel_generico']['negro'];
|
||||
$papel_generico_color = $data['papel_generico']['color'];
|
||||
}
|
||||
if ($data['papelInteriorDiferente'] == false)
|
||||
$gramaje = $data['gramaje'];
|
||||
else {
|
||||
$gramaje = $data['gramaje']['negro'];
|
||||
$gramaje_color = $data['gramaje']['color'];
|
||||
}
|
||||
$isColor = $data['isColor'];
|
||||
$isHq = $data['isHq'];
|
||||
$cliente_id = $data['cliente_id'];
|
||||
$cliente_id = $data['cliente_id'];
|
||||
$paginas_color = $data['paginas_color'];
|
||||
|
||||
$paginas_negro = $datosPedido->paginas - $paginas_color;
|
||||
@ -285,8 +304,6 @@ class PresupuestoClienteService extends BaseService
|
||||
return $result;
|
||||
}
|
||||
);
|
||||
$linea_negro_plana = $linea_negro_plana[0]['fields'];
|
||||
$linea_negro_plana['tipo_linea'] = $isHq ? 'lp_bnhq' : 'lp_bn';
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,6 +313,10 @@ class PresupuestoClienteService extends BaseService
|
||||
$datosPedido->paginas = $paginas_color;
|
||||
for ($i = 0; $i < 2; $i++) {
|
||||
|
||||
if ($data['papelInteriorDiferente'] == true) {
|
||||
$papel_generico = $papel_generico_color;
|
||||
$gramaje = $gramaje_color;
|
||||
}
|
||||
$lineas = PresupuestoService::obtenerComparadorPlana([
|
||||
'uso' => $uso,
|
||||
'tipo_impresion_id' => $tipo_impresion_id,
|
||||
@ -325,14 +346,61 @@ class PresupuestoClienteService extends BaseService
|
||||
return $result;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Si hay negro y color, y se hace con el mismo papel, hay que buscar la combinación
|
||||
// más económica con la misma máquna
|
||||
if (
|
||||
$paginas_negro > 0 && $paginas_color > 0 && $data['papelInteriorDiferente'] == 0 &&
|
||||
count($linea_negro_plana) > 0 && count($linea_color_plana) > 0
|
||||
) {
|
||||
$mejor_combinacion = null;
|
||||
$coste_menor = PHP_INT_MAX;
|
||||
// Iteramos ambos arrays
|
||||
foreach ($linea_color_plana as $color_item) {
|
||||
foreach ($linea_negro_plana as $negro_item) {
|
||||
// Comparar si tienen el mismo 'maquina_id'
|
||||
if ($color_item['fields']['maquina_id'] == $negro_item['fields']['maquina_id']) {
|
||||
// Sumar los 'total_impresion' de ambas líneas
|
||||
$costo_total = $color_item['fields']['total_impresion'] + $negro_item['fields']['total_impresion'];
|
||||
|
||||
// Verificar si es la combinación más barata hasta ahora
|
||||
if ($costo_total < $coste_menor) {
|
||||
$coste_menor = $costo_total;
|
||||
$mejor_combinacion = [
|
||||
'maquina_id' => $color_item['fields']['maquina_id'],
|
||||
'costo_total' => $costo_total,
|
||||
'color_item' => $color_item,
|
||||
'negro_item' => $negro_item,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Retornar la mejor combinación encontrada
|
||||
if ($mejor_combinacion !== null) {
|
||||
return [$mejor_combinacion['negro_item']['fields'], $mejor_combinacion['color_item']['fields']];
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (count($linea_negro_plana) > 0) {
|
||||
$linea_negro_plana = $linea_negro_plana[0]['fields'];
|
||||
$linea_negro_plana['tipo_linea'] = $isHq ? 'lp_bnhq' : 'lp_bn';
|
||||
}
|
||||
if (count($linea_color_plana) > 0) {
|
||||
$linea_color_plana = $linea_color_plana[0]['fields'];
|
||||
$linea_color_plana['tipo_linea'] = $isHq ? 'lp_colorhq' : 'lp_color';
|
||||
}
|
||||
}
|
||||
|
||||
return [$linea_negro_plana, $linea_color_plana];
|
||||
}
|
||||
|
||||
public static function getServiciosEncuadernacionDefault($data){
|
||||
public static function getServiciosEncuadernacionDefault($data)
|
||||
{
|
||||
|
||||
$tipo_impresion_id = $data['tipo_impresion_id'] ?? -1;
|
||||
$tirada = $data['tirada'] ?? -1;
|
||||
@ -348,42 +416,46 @@ class PresupuestoClienteService extends BaseService
|
||||
return $values;
|
||||
}
|
||||
|
||||
public static function getServiciosManipulado($data){
|
||||
public static function getServiciosManipulado($data)
|
||||
{
|
||||
|
||||
$tarifa_id = $data['tarifa_id'] ?? -1;
|
||||
$tirada = $data['tirada'] ?? -1;
|
||||
$POD = $data['POD'] ?? -1;
|
||||
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoManipuladosModel');
|
||||
$values = $model->getPrecioTarifa($tarifa_id, $tirada, $POD);
|
||||
return $values;
|
||||
}
|
||||
|
||||
public static function getServiciosPreimpresion($data){
|
||||
public static function getServiciosPreimpresion($data)
|
||||
{
|
||||
|
||||
$tarifa_id = $data['tarifa_id'] ?? -1;
|
||||
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel');
|
||||
$values = $model->getPrecioTarifa($tarifa_id);
|
||||
return $values;
|
||||
}
|
||||
|
||||
|
||||
public static function getServiciosExtra($data){
|
||||
public static function getServiciosExtra($data)
|
||||
{
|
||||
|
||||
$tarifa_id = $data['tarifa_id'] ?? -1;
|
||||
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel');
|
||||
$values = $model->getPrecioTarifa($tarifa_id);
|
||||
return $values;
|
||||
}
|
||||
|
||||
public static function getServiciosAcabados($data){
|
||||
public static function getServiciosAcabados($data)
|
||||
{
|
||||
|
||||
$tarifa_id = $data['tarifa_id'] ?? -1;
|
||||
$tirada = $data['tirada'] ?? -1;
|
||||
$POD = $data['POD'] ?? -1;
|
||||
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$values = $model->getPrecioTarifa($tarifa_id, $tirada, -1, $POD); // proveedor más barato
|
||||
return $values;
|
||||
|
||||
Reference in New Issue
Block a user