falta actualizar resumen presupuesto

This commit is contained in:
Jaime Jiménez Ortega
2024-03-31 20:37:31 +02:00
parent 8fbf7cf9f1
commit 922c811660
2 changed files with 7804 additions and 24 deletions

View File

@ -971,6 +971,12 @@ class PresupuestoService extends BaseService
}
public static function actualizarResumenPresupuesto($presupuesto_id)
{
$presupuesto = (new PresupuestoModel())->find($presupuesto_id);
$lineas = (new LineaPresupuestoModel())->where('presupuesto_id', $presupuesto_id)->findAll();
}
public static function checkLineasPresupuesto($input_data, $array_lineas)
{
@ -996,28 +1002,30 @@ class PresupuestoService extends BaseService
foreach ($array_lineas as $linea) {
if (PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) {
// Si el papel o la máquina no existen, se utiliza la más barata del comparador
if (!PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) {
if(($input_data['presupuesto'])->papel_formato_personalizado == 0){
$papel_formato = (new PapelFormatoModel())->find(($input_data['presupuesto'])->papel_formato_id);
$ancho = $papel_formato->ancho;
$alto = $papel_formato->alto;
}
else
{
$ancho = ($input_data['presupuesto'])->papel_formato_ancho;
$alto = ($input_data['presupuesto'])->papel_formato_alto;
}
$papel_generico = (new PapelGenericoModel)->find($linea->papel_id);
$papel_generico = [
'id' => $papel_generico->id,
'nombre' => $papel_generico->nombre,
];
// Hay que ver si es rotativa o plana
// Si es rotativa
if(str_contains($linea->tipo, '_rot_')){
if(($input_data['presupuesto'])->papel_formato_personalizado == 0){
$papel_formato = (new PapelFormatoModel())->find(($input_data['presupuesto'])->papel_formato_id);
$ancho = $papel_formato->ancho;
$alto = $papel_formato->alto;
}
else
{
$ancho = ($input_data['presupuesto'])->papel_formato_ancho;
$alto = ($input_data['presupuesto'])->papel_formato_alto;
}
$papel_generico = (new PapelGenericoModel)->find($linea->papel_id);
$papel_generico = [
'id' => $papel_generico->id,
'nombre' => $papel_generico->nombre,
];
$datos = [
'datosPedido' => (object)array(
'paginas' => ($input_data['presupuesto'])->paginas,
@ -1046,17 +1054,82 @@ class PresupuestoService extends BaseService
)]
];
$comp_data = PresupuestoService::obtenerComparadorRotativa($datos);
// se ordena $comp_data usando el campo ['fields]['total_impresion']
usort($comp_data, function($a, $b) {
return $a['fields']['total_impresion'] <=> $b['fields']['total_impresion'];
});
$comp_data = PresupuestoService::obtenerComparadorRotativa($datos);
}
// Si es plana
else{
$datos = [
'tipo_impresion_id' => $data['tipo_impresion_id'],
'datosPedido' => (object)array(
'paginas' => ($input_data['presupuesto'])->paginas,
'tirada' => ($input_data['presupuesto'])->tirada,
'merma' => ($input_data['presupuesto'])->merma,
'ancho' => $ancho,
'alto' => $alto,
'a_favor_fibra' => $linea->rotativa_a_favor_fibra,
'isCosido' => (new TipoPresupuestoModel())->get_isCosido(($input_data['presupuesto'])->tipo_impresion_id),
),
'a_favor_fibra' => $linea->rotativa_a_favor_fibra,
'papel_generico' => $papel_generico,
'gramaje' => $linea->gramaje,
'cliente_id' => ($input_data['presupuesto'])->cliente_id,
'datosTipolog' => [(object)array(
'negro' => $linea->rotativa_negro,
'cyan' => $linea->rotativa_cyan,
'magenta' => $linea->rotativa_magenta,
'amarillo' => $linea->rotativa_amarillo,
'cg' => $linea->rotativa_cg,
'gota_negro' => $linea->rotativa_gota_negro,
'gota_color' => $linea->rotativa_gota_color,
)]
];
// si la línea es cubierta o sobrecubierta, es HQ y color
if( str_contains($linea->tipo, 'cubierta') ){
$datos['isColor'] = true;
$datos['isHq'] = true;
// además se añade los campos de lomo y solapas y el uso
if( str_contains($linea->tipo, 'sobrecubierta') ){
$datos['datosPedido']->solapas = ($input_data['presupuesto'])->solapas_sobrecubierta;
$datos['datosPedido']->solapas_ancho = ($input_data['presupuesto'])->solapas_ancho_sobrecubierta;
$datos['datosPedido']->lomo = ($input_data['presupuesto'])->lomo_sobrecubierta;
$datos['uso'] = 'sobrecubierta';
}
else{
$datos['datosPedido']->solapas = ($input_data['presupuesto'])->solapas;
$datos['datosPedido']->solapas_ancho = ($input_data['presupuesto'])->solapas_ancho;
$datos['datosPedido']->lomo = ($input_data['presupuesto'])->lomo_cubierta;
$datos['uso'] = 'cubierta';
}
}
else{
$datos['isColor'] = str_contains($linea->tipo, '_color') ? true : false;
$datos['isHq'] = str_contains($linea->tipo, 'hq') ? true : false;
$datos['uso'] = 'interior';
}
if( str_contains($linea->tipo, 'guardas') ){
$datos['uso'] = 'guardas';
$datos['datosPedido']->paginas_impresion = linea->paginas_impresion;
}
$comp_data = PresupuestoService::obtenerComparadorPlana($datos);
}
// se ordena $comp_data usando el campo ['fields]['total_impresion']
usort($comp_data, function($a, $b) {
return $a['fields']['total_impresion'] <=> $b['fields']['total_impresion'];
});
(new PresupuestoLineaModel())->updatePreciosLineasPresupuesto($linea->id, $comp_data[0]);
$linea_to_save = (new PresupuestoLineaModel())->find($linea->id);
$cambios = true;
array_push($lineas, $linea_to_save);
}
// Si existe el papel y la máquina, se recalcula el precio con los mismos
// parámetros y se comprueba
else{
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($data, $linea);
if(count($nueva_linea) >0){

7707
xdebug.log

File diff suppressed because one or more lines are too long