Files
safekat/ci4/app/Entities/Presupuestos/PresupuestoLineaEntity.php
2025-04-14 08:05:03 +02:00

233 lines
8.4 KiB
PHP
Executable File

<?php
namespace App\Entities\Presupuestos;
use App\Models\Configuracion\MaquinaModel;
use CodeIgniter\Entity;
use App\Entities\Configuracion\Maquina as MaquinaEntity;
use App\Entities\Configuracion\MaquinasTarifasImpresionEntity;
use App\Entities\Configuracion\PapelGenerico;
use App\Entities\Configuracion\PapelImpresion;
use App\Entities\Tarifas\TarifapreimpresionEntity;
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
use App\Models\Configuracion\PapelGenericoModel;
use App\Models\Configuracion\PapelImpresionModel;
use Config\LogoImpresion;
class PresupuestoLineaEntity extends \CodeIgniter\Entity\Entity
{
protected $attributes = [
"id" => null,
"presupuesto_id" => null,
"tipo" => null,
"paginas" => 0,
"paginas_impresion" => 0, //guardas
"paginas_color_posicion" => null,
"solapas_ancho" => 0.0,
"papel_id" => null,
"papel_impresion_id" => null,
"formas" => null,
"gramaje" => null,
"pliegos_libro" => null,
"pliegos_pedido" => null,
"pliegos_precio" => null,
"libro" => null,
"pedido" => null,
"mano" => null,
"peso" => null,
"maquina_id" => null,
"tarifa_impresion_id" => null,
"click" => null,
"precio" => null,
"total_papel_pedido" => null,
"margen_papel_pedido" => null,
"margen_impresion" => null,
"rotativa_impresion" => null,
"rotativa_pag_color" => 0,
"rotativa_set_values" => false,
"rotativa_negro" => 0.0,
"rotativa_cyan" => 0.0,
"rotativa_magenta" => 0.0,
"rotativa_amarillo" => 0.0,
"rotativa_gota_negro" => 0.0,
"rotativa_gota_color" => 0.0,
"rotativa_saturacion" => 100.0,
"rotativa_a_favor_fibra" => true,
"rotativa_mxm" => null,
"rotativa_area_paginas" => null,
"rotativa_num_gotas_negro" => 0,
"rotativa_num_gotas_cyan" => 0,
"rotativa_num_gotas_magenta" => 0,
"rotativa_num_gotas_amarillo" => 0,
"rotativa_peso_gotas_negro" => 0,
"rotativa_peso_gotas_cyan" => 0,
"rotativa_peso_gotas_magenta" => 0,
"rotativa_peso_gotas_amarillo" => 0,
"rotativa_precio_pag_negro" => null,
"rotativa_precio_pag_color" => null,
"rotativa_factor_altura" => null,
"rotativa_factor_anchura" => null,
"rotativa_pag_por_pliego" => null,
"rotativa_metros_libro" => null,
"rotativa_metros_total" => null,
"rotativa_clicks_libro" => null,
"rotativa_clicks_total" => null,
"rotativa_precio_tinta" => null,
"rotativa_total_impresion" => null,
"rotativa_velocidad_corte" => 0,
"rotativa_tiempo_corte" => 0,
"rotativa_precio_hora_corte" => 0,
"rotativa_total_corte" => 0,
"check_impresion_total" => false,
"check_papel_total" => false,
"maquina" => null,
"papel_impresion" => null,
"maquina_tipo" => 'toner',
"horas_maquina" => 0,
"precio_hora" => 0,
"precio_impresion" => 0,
"total_linea" => 0,
];
protected $casts = [
"presupuesto_id" => "int",
"paginas" => "int",
"paginas_impresion" => "int", // guardas
"solapas_ancho" => "float",
"papel_id" => "?int",
"papel_impresion_id" => "?int",
"gramaje" => "?float",
"pliegos_libro" => "?float",
"pliegos_pedido" => "?float",
"pliegos_precio" => "?float",
"libro" => "?float",
"pedido" => "?float",
"mano" => "?float",
"peso" => "?float",
"maquina_id" => "?int",
"tarifa_impresion_id" => "?int",
"click" => "?float",
"precio" => "?float",
"total_papel_pedido" => "?float",
"margen_papel_pedido" => "?float",
"margen_impresion" => "?float",
"rotativa_pag_color" => "int",
"rotativa_set_values" => "boolean",
"rotativa_negro" => "float",
"rotativa_cyan" => "float",
"rotativa_magenta" => "float",
"rotativa_amarillo" => "float",
"rotativa_gota_negro" => "float",
"rotativa_gota_color" => "float",
"rotativa_saturacion" => "float",
"rotativa_a_favor_fibra" => "boolean",
"rotativa_mxm" => "?float",
"rotativa_area_paginas" => "float",
"rotativa_num_gotas_negro" => "float",
"rotativa_num_gotas_cyan" => "float",
"rotativa_num_gotas_magenta" => "float",
"rotativa_num_gotas_amarillo" => "float",
"rotativa_peso_gotas_negro" => "float",
"rotativa_peso_gotas_cyan" => "float",
"rotativa_peso_gotas_magenta" => "float",
"rotativa_peso_gotas_amarillo" => "float",
"rotativa_precio_pag_negro" => "float",
"rotativa_precio_pag_color" => "float",
"rotativa_factor_altura" => "float",
"rotativa_factor_anchura" => "float",
"rotativa_pag_por_pliego" => "float",
"rotativa_metros_libro" => "float",
"rotativa_metros_total" => "float",
"rotativa_clicks_libro" => "float",
"rotativa_clicks_total" => "float",
"rotativa_precio_tinta" => "float",
"rotativa_total_impresion" => "float",
"rotativa_velocidad_corte" => "float",
"rotativa_tiempo_corte" => "float",
"rotativa_precio_hora_corte" => "float",
"rotativa_total_corte" => "float",
"check_impresion_total" => "boolean",
"check_papel_total" => "boolean",
"horas_maquina" => "double",
"precio_hora" => "double",
"precio_impresion" => "double",
"total_linea" => "double",
];
/**
* Devuelve la entity MaquinaEntity asociada a esta linea de presupuesto
*
* @return MaquinaEntity
*/
public function maquina(): MaquinaEntity
{
$m = model(MaquinaModel::class);
return $m->find($this->attributes["maquina_id"]);
}
/**
* Devuelve la entity PapelImpresion asociada a esta linea de presupuesto.
*
* @return PapelImpresion
*/
public function papel_impresion(): PapelImpresion
{
$m = model(PapelImpresionModel::class);
return $m->find($this->attributes['papel_impresion_id']);
}
/**
* Devuelve la entity PapelGenerico asociada a esta linea de presupuesto.
*
* @return PapelGenerico
*/
public function papel_generico(): PapelGenerico
{
$m = model(PapelGenericoModel::class);
return $m->find($this->attributes['papel_id']);
}
/**
* Devuelve la entity MaquinasTarifasImpresionEntity asociada a esta linea de presupuesto.
*
* @return MaquinasTarifasImpresionEntity
*/
public function tarifa_impresion(): MaquinasTarifasImpresionEntity
{
$m = model(MaquinasTarifasImpresionModel::class);
return $m->find($this->attributes['tarifa_impresion_id']);
}
public function get_impresion_logo(){
$logo = config(LogoImpresion::class);
return $logo->get_logo_path($this->attributes["tipo"]);
}
public function get_nombre_tarea() : ?string
{
$nombre = null;
$impresion_bn = ["lp_bn","lp_bnhq","lp_rot_bn"];
$impresion_color = ["lp_color","lp_colorhq","lp_rot_color"];
$impresion_cubierta = ["lp_cubierta"];
$impresion_guardas = ["lp_guardas"];
$impresion_sobrecubierta = ["lp_sobrecubierta"];
$is_bn = in_array($this->attributes["tipo"],$impresion_bn);
$is_color = in_array($this->attributes["tipo"],$impresion_color);
$is_impresion_cubierta = in_array($this->attributes["tipo"],$impresion_cubierta);
$is_impresion_guarda = in_array($this->attributes["tipo"],$impresion_guardas);
$is_impresion_sobrecubierta = in_array($this->attributes["tipo"],$impresion_sobrecubierta);
if($is_bn) $nombre ="Impresión B/N";
if($is_color) $nombre ="Impresión color";
if($is_impresion_cubierta) $nombre ="Impresión cubierta";
if($is_impresion_guarda) $nombre ="Impresión guarda";
if($is_impresion_sobrecubierta) $nombre ="Impresión sobrecubierta";
return $nombre;
}
public function isRotativa() : bool
{
return in_array($this->attributes['tipo'],['lp_rot_color','lp_rot_bn']);
}
public function isColor():bool {
return in_array($this->attributes['tipo'],['lp_color','lp_colorhq','lp_rot_color']);
}
}