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:
@ -4,6 +4,8 @@ namespace App\Services;
|
||||
|
||||
use CodeIgniter\Config\BaseService;
|
||||
|
||||
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
|
||||
use App\Models\Clientes\ClientePreciosModel;
|
||||
|
||||
|
||||
|
||||
@ -174,28 +176,137 @@ class PresupuestoService extends BaseService
|
||||
|
||||
return $linea;
|
||||
}
|
||||
/**
|
||||
* @param mixed $uso
|
||||
* contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta']
|
||||
* @param mixed $tipo
|
||||
* contiene algun parametro de la lista ['negro','color','negrohq','bicolor','colorhq']
|
||||
* @param mixed $datosPedido
|
||||
* objeto con la siguiente extructura:
|
||||
* -> paginas: numero de paginas por libro
|
||||
* -> tirada: numero de unidades a imprimir
|
||||
* -> merma: unidades que se añaden a la tirada
|
||||
*
|
||||
* @param mixed $maquina
|
||||
* objeto con la siguiente estructura:
|
||||
* -> id: el id de la maquina
|
||||
* -> nombre: nombre de la maquina
|
||||
* -> ancho_impresion: valor maximo del ancho para imprimir
|
||||
* -> alto_impresion: valor maximo del alto para imprimir
|
||||
* @param mixed $papel_impresion
|
||||
* @param mixed $tarifa
|
||||
*
|
||||
* @return [type]
|
||||
*/
|
||||
|
||||
|
||||
public static function getLineaPresupuestoRotativa($data)
|
||||
{
|
||||
|
||||
$uso = $data['uso'];
|
||||
$tipo = $data['tipo'];
|
||||
$datosPedido = $data['datosPedido'];
|
||||
$cliente_id = $data['cliente_id'];
|
||||
$papel = $data['papel'];
|
||||
$maquina = $data['maquina'];
|
||||
$papel_generico = $data['papel_generico'];
|
||||
$parametrosRotativa = $data['parametrosRotativa'];
|
||||
$gramaje = $data['gramaje'];
|
||||
$paginas = $data['paginas'];
|
||||
|
||||
$tarifamodel = new MaquinasTarifasImpresionModel();
|
||||
|
||||
$resultado_tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo) ? 'color' : $tipo);
|
||||
if($resultado_tarifa == null){
|
||||
$info = [
|
||||
'maquina_id' => $maquina->maquina_id,
|
||||
'uso' => $uso,
|
||||
'tipo' => is_array($tipo) ? 'color' : $tipo
|
||||
];
|
||||
log_message("error","No se ha encontrado tarifa para la maquina {maquina_id} y el uso {uso} y el tipo {tipo}", $info);
|
||||
return [];
|
||||
}
|
||||
else{
|
||||
$tarifaId = $resultado_tarifa[0];
|
||||
$tarifa = $resultado_tarifa[1];
|
||||
$tarifa_margen = $resultado_tarifa[2];
|
||||
}
|
||||
|
||||
if (!is_float($tarifa)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// 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];
|
||||
(Object)array(
|
||||
'gota_negro' => $parametrosRotativa->rotativa_gota_negro,
|
||||
'gota_color' => $parametrosRotativa->rotativa_gota_color,
|
||||
'negro' => $parametrosRotativa->rotativa_negro,
|
||||
'cyan' => $parametrosRotativa->rotativa_cyan,
|
||||
'magenta' => $parametrosRotativa->rotativa_magenta,
|
||||
'amarillo' => $parametrosRotativa->rotativa_amarillo
|
||||
);
|
||||
|
||||
// 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)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$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
|
||||
|
||||
return $linea;
|
||||
}
|
||||
|
||||
|
||||
public static function getCostesLinea($uso, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa, $tarifa_margen, $forzar_a_favor_fibra = false)
|
||||
{
|
||||
$response['fields'] = [];
|
||||
@ -432,7 +543,10 @@ class PresupuestoService extends BaseService
|
||||
$data = [];
|
||||
|
||||
$data['pulgada'] = 1 / 1000000000000.0;
|
||||
$data['resolucion'] = 600;
|
||||
if($maquina->maquina_id == 91 || $maquina->maquina_id == 99 || $maquina->maquina_id == 114 || $maquina->maquina_id == 98)
|
||||
$data['resolucion'] = 1200;
|
||||
else
|
||||
$data['resolucion'] = 600;
|
||||
$data['superficie'] = round((($datosPedido->ancho / 2.54) / 10) * (($datosPedido->alto / 2.54) / 10), 2);
|
||||
|
||||
$data['num_gotas_negro'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametros->rotativa_negro / 100.0), 0);
|
||||
|
||||
Reference in New Issue
Block a user