mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
terminado. mejorado update de resumenes. quitado bug rotativa color (siempre tarifa negro)
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,13 +137,31 @@ class Presupuestotiradasalternativas extends \App\Controllers\GoBaseResourceCont
|
||||
$papel_generico['nombre'] = $pg->nombre;
|
||||
|
||||
$maquina->maquina_id = $maquina->id;
|
||||
unset($maquina->id);
|
||||
|
||||
switch ($linea['row_id']) {
|
||||
case 'lp_rot_bn':
|
||||
case 'lp_rot_color':
|
||||
$uso = 'rotativa';
|
||||
$uso = 'interior';
|
||||
$tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color';
|
||||
$paginas_negro = isset($linea['numPagColor']) ? intval($datosPedido->paginas) - intval($linea['numPagColor']) : 0;
|
||||
$paginas_color = $linea['numPagColor'] ?? 0;
|
||||
$paginas = (object)array(
|
||||
'negro' => $paginas_negro,
|
||||
'color' => $paginas_color,
|
||||
);
|
||||
$parametrosRotativa = (object)array(
|
||||
'a_favor_fibra' => $datosPedido->a_favor_fibra,
|
||||
'bnPages' => $paginas->negro,
|
||||
'colorPages' => $paginas->color,
|
||||
'rotativa_gota_negro' => 0,
|
||||
'rotativa_gota_color' => 0,
|
||||
);
|
||||
$parametrosRotativa->rotativa_gota_negro = intval($linea['gotaNegro']?? 0);
|
||||
$parametrosRotativa->rotativa_gota_color = intval($linea['gotaColor']?? 0);
|
||||
$parametrosRotativa->rotativa_negro = intval($linea['cobNegro'] ?? 0);
|
||||
$parametrosRotativa->rotativa_cyan = intval($linea['cobCyan'] ?? 0);
|
||||
$parametrosRotativa->rotativa_magenta = intval($linea['cobMagenta']?? 0);
|
||||
$parametrosRotativa->rotativa_amarillo = intval($linea['cobAmarillo']?? 0);
|
||||
break;
|
||||
case 'lp_cubierta':
|
||||
$uso = 'cubierta';
|
||||
@ -168,42 +186,51 @@ class Presupuestotiradasalternativas extends \App\Controllers\GoBaseResourceCont
|
||||
$tipo = 'colorhq';
|
||||
}
|
||||
|
||||
|
||||
|
||||
$opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
|
||||
if (strpos($linea['row_id'], 'lp_rot') !== 0) {
|
||||
// The string does not start with the prefix
|
||||
$opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
|
||||
}
|
||||
|
||||
$datosTipolog = $linea['gotaNegro'] ?? null;
|
||||
if (!is_null($datosTipolog)) {
|
||||
$datosTipolog = [];
|
||||
$data = (object)array(
|
||||
'negro' => intval($linea['cobNegro']) ?? 0,
|
||||
'cyan' => intval($linea['cobCyan']) ?? 0,
|
||||
'magenta' => intval($linea['cobMagenta']) ?? 0,
|
||||
'amarillo' => intval($linea['cobAmarillo']) ?? 0,
|
||||
'cg' => intval($linea['cobCG']) ?? 0,
|
||||
'gota_negro' => intval($linea['gotaNegro']) ?? 0,
|
||||
'gota_color' => intval($linea['gotaColor']) ?? 0,
|
||||
$data_temp = (object)array(
|
||||
'negro' => intval($linea['cobNegro'] ?? 0),
|
||||
'cyan' => intval($linea['cobCyan'] ?? 0),
|
||||
'magenta' => intval($linea['cobMagenta']?? 0),
|
||||
'amarillo' => intval($linea['cobAmarillo']?? 0),
|
||||
'cg' => intval($linea['cobCG'] ?? 0),
|
||||
'gota_negro' => intval($linea['gotaNegro']?? 0),
|
||||
'gota_color' => intval($linea['gotaColor']?? 0),
|
||||
);
|
||||
array_push($datosTipolog, $data);
|
||||
array_push($datosTipolog, $data_temp);
|
||||
}
|
||||
|
||||
$data['uso'] = $uso;
|
||||
$data['tipo'] = $tipo;
|
||||
$data['datosPedido'] = $datosPedido;
|
||||
$data['cliente_id'] = $cliente_id;
|
||||
$data['papel'] = $papel;
|
||||
$data['opciones_papel'] = $opciones_papel;
|
||||
$data['maquina'] = $maquina;
|
||||
$data['papel_generico'] = $papel_generico;
|
||||
$data['isColor'] = $isColor;
|
||||
$data['a_favor_fibra'] = $linea['aFavorFibra'] ?? null;
|
||||
$data['datosTipolog'] = $datosTipolog;
|
||||
$data['gramaje'] = $linea['gramaje'] ?? 0;
|
||||
$datosLinea = array();
|
||||
|
||||
$datosLinea['uso'] = $uso;
|
||||
$datosLinea['tipo'] = $tipo;
|
||||
$datosLinea['datosPedido'] = $datosPedido;
|
||||
$datosLinea['cliente_id'] = $cliente_id;
|
||||
$datosLinea['papel'] = $papel;
|
||||
if(isset($isColor))
|
||||
$datosLinea['isColor'] = $isColor;
|
||||
if(isset($opciones_papel))
|
||||
$datosLinea['opciones_papel'] = $opciones_papel;
|
||||
if(isset($parametrosRotativa))
|
||||
$datosLinea['parametrosRotativa'] = $parametrosRotativa;
|
||||
if(isset($paginas))
|
||||
$datosLinea['paginas'] = $paginas;
|
||||
$datosLinea['maquina'] = $maquina;
|
||||
$datosLinea['papel_generico'] = $papel_generico;
|
||||
$datosLinea['a_favor_fibra'] = $linea['aFavorFibra'] ?? null;
|
||||
$datosLinea['datosTipolog'] = $datosTipolog;
|
||||
$datosLinea['gramaje'] = $linea['gramaje'] ?? 0;
|
||||
|
||||
if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') {
|
||||
$linea_coste = PresupuestoService::getLineaPresupuestoPlana($data);
|
||||
$linea_coste = PresupuestoService::getLineaPresupuestoPlana($datosLinea);
|
||||
} else {
|
||||
$linea_coste = [0];
|
||||
$linea_coste = PresupuestoService::getLineaPresupuestoRotativa($datosLinea);
|
||||
}
|
||||
|
||||
if (empty($linea))
|
||||
@ -217,17 +244,24 @@ class Presupuestotiradasalternativas extends \App\Controllers\GoBaseResourceCont
|
||||
$linea_coste['fields']['precio_click_pedido'] = 0;
|
||||
if ($linea_coste['fields']['tipo_maquina'] == 'inkjet') {
|
||||
$linea_coste['fields']['precio_tinta'] = 0;
|
||||
$linea_coste['fields']['totalCorte'] = 0;
|
||||
if (strpos($linea['row_id'], 'lp_rot') === 0) {
|
||||
$linea_coste['fields']['total_corte'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
$linea_coste['total_coste'] = $linea_coste['fields']['precio_pedido'] +
|
||||
$linea_coste['fields']['precio_impresion_horas'] +
|
||||
$linea_coste['fields']['precio_click_pedido'];
|
||||
if ($linea_coste['fields']['tipo_maquina'] == 'inkjet') {
|
||||
|
||||
$linea_coste['total_coste'] +=
|
||||
$linea_coste['fields']['precio_tinta'] +
|
||||
$linea_coste['fields']['totalCorte'];
|
||||
$linea_coste['fields']['precio_tinta'];
|
||||
if (strpos($linea['row_id'], 'lp_rot') === 0) {
|
||||
$linea_coste['total_coste'] +=
|
||||
$linea_coste['fields']['total_corte'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$linea_coste['total_margen'] = $linea_coste['fields']['margen_papel_pedido'] +
|
||||
$linea_coste['fields']['margen_impresion_horas'] +
|
||||
|
||||
Reference in New Issue
Block a user