terminado. mejorado update de resumenes. quitado bug rotativa color (siempre tarifa negro)

This commit is contained in:
2024-03-05 20:48:58 +01:00
parent eb38a12c6d
commit a7df1975a9
10 changed files with 304 additions and 197 deletions

View File

@ -21,8 +21,6 @@ use App\Models\Presupuestos\PresupuestoPreimpresionesModel;
use App\Services\PresupuestoService;
use App\Models\Configuracion\PapelImpresionModel;
use App\Models\Configuracion\MaquinaModel;
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
use App\Models\Clientes\ClientePreciosModel;
use Exception;
class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
@ -531,8 +529,8 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
} else if ($type == 'interior_rot') {
$paginas = (object)array(
'negro' => intval($reqData['paginas_negro']) ?? 0,
'color' => intval($reqData['paginas_color']) ?? 0,
'negro' => intval($reqData['paginas_negro'] ?? 0),
'color' => intval($reqData['paginas_color'] ?? 0),
);
$datosTipolog = $reqData['negro'] ?? null;
@ -768,7 +766,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$tipo = 'color';
$opciones_papel['color'] = 1;
}
if ($paginas->negro > 0) {
else {
$opciones_papel['bn'] = 1;
$tipo = 'negro';
}
@ -819,93 +817,22 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
$tarifamodel = new MaquinasTarifasImpresionModel();
[$tarifaId, $tarifa, $tarifa_margen] = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo) ? 'color' : $tipo);
if (!is_float($tarifa)) {
$data['uso'] = $uso;
$data['tipo'] = $tipo;
$data['datosPedido'] = $datosPedido;
$data['cliente_id'] = $cliente_id;
$data['papel'] = $papel;
$data['maquina'] = $maquina;
$data['papel_generico'] = $papel_generico;
$data['parametrosRotativa'] = $parametrosRotativa;
$data['paginas'] = $paginas;
$data['gramaje'] = $gramaje;
$linea = PresupuestoService::getLineaPresupuestoRotativa($data);
if(empty($linea))
continue;
}
// precio del pliego de impresion
$linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosRotativa);
[$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas);
$linea['fields']['tarifa_impresion_id'] = $tarifaId;
$linea['fields']['precios_pliegos'] = $precio_pliego_impresion + $margen_pliego_impresion;
$linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $linea['fields']['precios_pliegos'];
// Precio papel pedido
$linea['fields']['precio_pedido'] = $linea['fields']['precio_libro'] * ($datosPedido->tirada + $datosPedido->merma);
$linea['fields']['margen_papel_pedido'] = $linea['fields']['pliegos_libro'] * $margen_pliego_impresion * ($datosPedido->tirada + $datosPedido->merma);;
$linea['fields']['a_favor_fibra'] = $parametrosRotativa->a_favor_fibra;
$linea['fields']['maquina'] = $maquina->maquina;
$linea['fields']['maquina_id'] = $maquina->maquina_id;
$linea['fields']['maquina_velocidad'] = $maquina->velocidad;
$linea['fields']['tipo_maquina'] = 'inkjet';
$linea['fields']['papel_impresion'] = $papel->nombre;
$linea['fields']['papel_impresion_id'] = $papel->id;
$linea['fields']['paginas'] = $datosPedido->paginas;
$linea['fields']['paginas_color'] = $paginas->color;
$linea['fields']['gramaje'] = $gramaje;
$linea['fields']['papel_generico_id'] = $papel_generico['id'];
$linea['fields']['papel_generico'] = $papel_generico['nombre'];
$linea['fields']['posicion_formas'] = $parametrosRotativa->a_favor_fibra ? 'h' : 'v';
$linea['fields']['num_formas_horizontales'] = floor($linea['fields']['factor_anchura']);
$linea['fields']['num_formas_verticales'] = floor($linea['fields']['factor_altura']);
$linea['fields']['datosTipologias'] = $datosTipologias[0];
// impresion
$linea['fields']['precio_click'] = $tarifa * (1 + $tarifa_margen / 100.0);
$linea['fields']['precio_click_margen'] = $tarifa * ($tarifa_margen / 100.0);
$linea['fields']['precio_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click'];
$linea['fields']['margen_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click_margen'];
$linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad
);
$clientePreciosModel = new ClientePreciosModel();
$config = (object)[
"tipo" => $uso,
"tipo_maquina" => 'inkjet',
"tipo_impresion" => $tipo
];
$tiempo = PresupuestoService::getHorasMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad
);
[$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
if (is_null($precio_hora)) {
continue;
}
$linea['fields']['precio_hora'] = $precio_hora * (1 + $margen_precio_hora / 100.0);
$linea['fields']['precio_hora_margen'] = $precio_hora * ($margen_precio_hora / 100.0);
$linea['fields']['horas_maquina'] = $tiempo;
$linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora'] * $tiempo;
$linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen'] * $tiempo;
// total linea rotativa
//$linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + $linea['fields']['precio_click_pedido'] + $linea['fields']['precio_tinta'] +
// $linea['fields']['total_corte'];
$linea['fields']['total_impresion'] =
floatval($linea['fields']['precio_pedido']) + // papel
floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina
floatval($linea['fields']['precio_tinta']) + // tinta
floatval($linea['fields']['total_corte']); // corte
array_push($lineas, $linea);
}
}