'; var_dump($linea); // Se obtienen los valores de cada linea para el calculo del precio $datosPedido = (object)array( 'paginas' => intval($linea['paginas']) ?? 0, 'tirada' => intval($tirada) ?? 0, 'merma' => intval($merma) ?? 0, 'ancho' => intval($ancho) ?? 100000, 'alto' => intval($alto) ?? 100000, 'a_favor_fibra' => $linea['aFavorFibra'] ?? 1, 'isCosido' => (new \App\Models\Configuracion\TipoPresupuestoModel())->get_isCosido($tipo_impresion_id), // JJO esto es custom por cada tipo de presupuesto ); if ($linea['row_id'] == 'lp_guardas') { $datosPedido->paginas_impresion = intval($linea['paginas_impresion']) ?? 0; // Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico // y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral // o wire-o tapa dura, las guardas se imprimen como hojas sueltas if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { $datosPedido->isCosido = true; } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { $datosPedido->isCosido = false; } } else if ($linea['row_id'] == 'lp_sobrecubierta' || $linea['row_id'] == 'lp_cubierta') { $datosPedido->solapas = $linea['row_id'] == 'lp_cubierta' ? $solapas_cubierta : $solapas_sobrecubierta; $datosPedido->solapas_ancho = $linea['row_id'] == 'lp_cubierta' ? $solapas_ancho_cubierta : $solapas_ancho_sobrecubierta; $datosPedido->lomo = $lomo; $type = $linea['row_id'] == 'lp_cubierta' ? 'cubierta' : 'sobrecubierta'; $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido); $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido); } $maquina = (new \App\Models\Configuracion\MaquinaModel())->find($linea['maquina_id']); $papel = (new \App\Models\Configuracion\PapelImpresionModel())->find($linea['papel_impresion_id']); $pg = (new \App\Models\Configuracion\PapelGenericoModel())->find($linea['papel']); $papel_generico['id'] = $pg->id; $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'; $tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color'; break; case 'lp_cubierta': $uso = 'cubierta'; break; case 'lp_sobrecubierta': $uso = 'sobrecubierta'; break; case 'lp_guardas': $uso = 'guardas'; break; default: $uso = 'interior'; $isHq = strpos($linea['row_id'], "hq") !== false ? true : false; $isColor = strpos($linea['row_id'], "_color") !== false ? true : false; $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); break; } if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'guardas') { $isColor = true; $isHq = true; $tipo = 'colorhq'; } $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, ); array_push($datosTipolog, $data); } $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'] = (array)$papel_generico; $data['isColor'] = $isColor; $data['a_favor_fibra'] = $linea['aFavorFibra'] ?? null; $data['datosTipolog'] = $datosTipolog; $data['gramaje'] = $linea['gramaje'] ?? 0; if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') { $linea_coste = PresupuestoService::getLineaPresupuestoPlana($data); var_dump($linea_coste); } if (empty($linea)) continue; array_push($values, $linea_coste); } } else { $values = []; } } private function asignar_tarifa_defecto_todos_usuarios() { // Previo a ejecutar, vaciar la tabla clientes_precios (ojo si hay customizaciones) $db = \Config\Database::connect(); $builder = $db->table('cliente_precios'); $plantillaDefectoId = 5; $clienteModel = model('App\Models\Clientes\ClienteModel'); $platillaModel = model('App\Models\Clientes\ClientePlantillaPreciosLineasModel'); $plantillaDefecto = $platillaModel->getResource($plantillaDefectoId)->get()->getResultObject(); $clientes = $clienteModel->getResource()->get()->getResultObject(); foreach ($clientes as $cliente) { foreach ($plantillaDefecto as $plantillaDefectoLinea) { $data = [ 'plantilla_id' => $plantillaDefectoId, 'cliente_id' => $cliente->id, 'tipo' => $plantillaDefectoLinea->tipo, 'tipo_maquina' => $plantillaDefectoLinea->tipo_maquina, 'tipo_impresion' => $plantillaDefectoLinea->tipo_impresion, 'tiempo_min' => $plantillaDefectoLinea->tiempo_min, 'tiempo_max' => $plantillaDefectoLinea->tiempo_max, 'precio_hora' => $plantillaDefectoLinea->precio_hora, 'margen' => $plantillaDefectoLinea->margen, 'user_created_id' => 2, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]; /*echo '
';
var_dump($data);
echo '';*/
$builder->insert($data);
}
//break;
}
}
public function init_presupuesto_encuadernacion($tipo_presupuesto, $solapas, $paginas, $tirada, $ancho, $alto, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->initPresupuesto($tipo_presupuesto, $solapas, $paginas, $tirada, $ancho, $alto, $POD);
}
public function get_precio_tarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD);
}
public function get_precio_tarifa_acabado($tarifa_id, $tirada, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
return $model->getPrecioTarifa($tarifa_id, $tirada, $POD);
}
public function get_precio_tarifa_horas($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD);
}
public function get_tarifa_enc($tarifa_id, $paginas, $tirada, $ancho, $alto)
{
$model = model('App\Models\Tarifas\TarifaEncuadernacionModel');
return $model->getTarifaPresupuestoEncuadernacion($tarifa_id, $paginas, $tirada, $ancho, $alto);
}
public function getProveedoresForSelector_enc($tarifa_id, $paginas, $tirada, $ancho, $alto)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->getProveedoresForSelector($tarifa_id, $paginas, $tirada, $ancho, $alto);
}
public function get_dimensiones_enc()
{
$dimensionModel = model('App\Models\Tarifas\TarifaEncuadernacionDimensionesModel');
$dimensiones = $dimensionModel->getDimensiones();
var_dump($dimensiones);
foreach ($dimensiones as $dim) {
$dim->label = lang("TarifaEncuadernacionLineas." . $dim->label);
}
var_dump($dimensiones);
}
public function get_tarifas_encuadernacion($tipo_presupuesto, $solapas)
{
$model = model('App\Models\Presupuestos\TipoPresupuestoTarifaEncuadernacionModel');
return $model->get_tarifas($tipo_presupuesto, $solapas);
}
public function timeToSeconds()
{
$time = '99:59:59';
$time_parts = explode(":", $time);
$seconds = $time_parts[2] + $time_parts[1] * 60 + $time_parts[0] * 3600;
echo "Time in seconds: " . $seconds;
}
public function getLP()
{
$lp_model = model('App\Models\Presupuestos\PresupuestoLineaModel');
$data = $lp_model->getLineasPresupuesto(8);
$papel_imp_model = model('App\Models\Configuracion\PapelImpresionModel');
$maquina_model = model('App\Models\Configuracion\MaquinaModel');
foreach ($data as $linea) {
//$linea->papel_impresion_id = $papel_imp_model->getValue_Nombre($linea->papel_impresion_id)[0];
//$linea->maquina_id = $maquina_model->getValue_Nombre($linea->maquina_id)[0];
var_dump($linea->papel_impresion_id);
var_dump($linea->maquina_id);
}
}
public function createLP()
{
$lp_model = model('App\Models\Presupuestos\PresupuestoLineaModel');
$lp_model->createForPresupuesto(8);
}
public function getPapelesHQ()
{
$model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('colorhq', false, false);
var_dump($data);
}
public function getPapelesCubierta()
{
$model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('colorhq', true, false);
var_dump($data);
}
public function getPapelesSobrecubierta()
{
$model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('colorhq', false, true, false);
var_dump($data);
}
public function getPapelesGuardas()
{
$model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('color', false, false, false, true);
var_dump($data);
}
public function getGramaje()
{
$model = new PapelGenericoModel();
$data = $model->getGramajeComparador("AHUESADO OFFSET", "bnhq");
var_dump($data);
}
public function testGetPrecioPliegoRotativa()
{
$paginas = 240;
$papel_impresion = (object)array(
'id' => 198,
'gramaje' => 90,
'precio_tonelada' => 1600
);
$maquina = (object)array(
//'id' => 48,
'alto' => 800,
'ancho' => 520,
);
$precio = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $paginas);
var_dump($precio);
}
public function testGetMaquinasFromTarifas()
{
$maquinamodel = new MaquinaModel();
//$tarifa_tipo = ['negro', 'color'];
//$tarifa_tipo = 'color';
$tarifa_tipo = 'negro';
$papel_impresion_id = 5;
$maquina = $maquinamodel->getMaquinaImpresionForPresupuesto(1, $tarifa_tipo, 100, $papel_impresion_id);
echo '';
var_dump($maquina);
echo '';
}
public static function testLineasIntPlana()
{
$uso = 'interior';
$tipo = 'negro';
$datosPedido = (object)array(
'paginas' => 200,
'tirada' => 500,
'merma' => 10,
'merma_portada' => 10,
'ancho' => 150,
'alto' => 210,
'isCosido' => true,
);
$maquina_model = new \App\Models\Configuracion\MaquinaModel();
$opciones_papel = array(
'bn' => 1,
'rotativa' => 0,
);
$papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: 4,
gramaje: 80,
options: $opciones_papel
);
foreach ($papeles as $papel) {
echo '-------------------------------';
$maquinas = $maquina_model->getMaquinaImpresionForPresupuesto(
is_rotativa: $papel->rotativa,
tarifa_tipo: 'negro',
uso_tarifa: 'interior',
tirada: $datosPedido->tirada + $datosPedido->merma,
papel_impresion_id: $papel->id,
);
foreach ($maquinas as $maquina) {
echo '----------------------------';
var_dump($linea);
echo '';
}
}
}
public static function testLineasIntPlanaCubierta()
{
echo '';
$uso = 'cubierta';
$tipo = 'color';
$datosPedido = (object)array(
'paginas' => 200,
'tirada' => 500,
'merma' => 10,
'merma_portada' => 10,
'ancho' => 165,
'alto' => 148,
'isCosido' => true,
'solapas' => 0,
'solapas_ancho' => 0,
);
$maquina_model = new \App\Models\Configuracion\MaquinaModel();
$opciones_papel = array(
'color' => 1,
'cubierta' => 1,
'sobrecubierta' => 0,
'rotativa' => 0,
);
$papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: 3,
gramaje: 100,
options: $opciones_papel
);
foreach ($papeles as $papel) {
echo '-------------------------------';
var_dump($papel);
$maquinas = $maquina_model->getMaquinaImpresionForPresupuesto(
is_rotativa: $papel->rotativa,
tarifa_tipo: 'color',
tirada: $datosPedido->tirada + $datosPedido->merma_portada,
papel_impresion_id: $papel->id,
);
foreach ($maquinas as $maquina) {
echo '----------------------------
';
var_dump($maquina->maquina);
var_dump($papel->nombre);
$tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa($maquina->maquina_id, $uso, $tipo);
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
var_dump($linea);
}
}
echo '';
}
public static function testLineasIntRotativa()
{
$uso = 'interior';
$tipo = 'negro';
$datosPedido = (object)array(
'paginas' => 240,
'tirada' => 100,
'merma' => 10,
'merma_portada' => 10,
'ancho' => 150,
'alto' => 210,
'isCosido' => true,
);
$parametrosRotativa = (object)array(
'a_favor_fibra' => 0,
'bnPages' => 240,
'colorPages' => 0,
'rotativa_gota_negro' => 0,
'rotativa_gota_color' => 0,
);
$maquina_model = new \App\Models\Configuracion\MaquinaModel();
$opciones_papel = array(
'bn' => 1,
'cubierta' => 0,
'sobrecubierta' => 0,
'rotativa' => 1,
);
$papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: 4,
gramaje: 90,
options: $opciones_papel
);
foreach ($papeles as $papel) {
$papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel();
$datosTipologias = $papelImpresionTipologiaModel
->findTipologiasForPapelImpresion($papel->id, $parametrosRotativa->colorPages > 0 ? 'color' : 'negro')
->get()->getResultObject();
echo '';
var_dump($papel->id);
var_dump($datosTipologias);
echo '';
$parametrosRotativa->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
$parametrosRotativa->rotativa_gota_color = $datosTipologias[0]->gota_color;
$parametrosRotativa->rotativa_negro = $datosTipologias[0]->negro;
$parametrosRotativa->rotativa_cyan = $datosTipologias[0]->cyan;
$parametrosRotativa->rotativa_magenta = $datosTipologias[0]->magenta;
$parametrosRotativa->rotativa_amarillo = $datosTipologias[0]->amarillo;
echo '-------------------------------';
$maquinas = $maquina_model->getMaquinaImpresionForPresupuesto(
is_rotativa: $papel->rotativa,
tarifa_tipo: 'negro',
uso_tarifa: 'interiro',
tirada: $datosPedido->tirada + $datosPedido->merma,
papel_impresion_id: $papel->id,
);
foreach ($maquinas as $maquina) {
echo '----------------------------';
var_dump($linea);
echo '';
}
}
}
public static function testLineasCubierta()
{
$uso = 'cubierta';
$tipo = 'color';
$datosPedido = (object)array(
'paginas' => 240,
'tirada' => 100,
'merma' => 10,
'merma_portada' => 10,
'ancho' => 150,
'alto' => 210,
'isCosido' => true,
'solapas' => false,
);
$opciones_papel = array(
'color' => 1,
'cubierta' => 1,
);
// Se obtienen los papeles disponibles
$papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: 3, // Blanco offset
gramaje: 100,
options: $opciones_papel
);
echo '';
var_dump($papeles);
echo '';
$lineas = array();
// Para cada papel, se obtienen las maquinas disponibles
foreach ($papeles as $papel) {
$maquinamodel = new \App\Models\Configuracion\MaquinaModel();
$maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto(
is_rotativa: 0,
tarifa_tipo: $tipo,
tirada: $datosPedido->tirada + $datosPedido->merma,
papel_impresion_id: $papel->id,
);
echo '';
echo '-------------------------------';
echo '';
echo '';
var_dump($maquinas);
echo '';
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
echo '';
echo '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$';
echo '';
$tarifamodel = new \App\Models\Configuracion\MaquinasTarifasImpresionModel();
$tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo);
echo '';
var_dump($tarifa);
echo '';
if (!is_float($tarifa)) {
continue;
}
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
$linea['fields']['maquina'] = $maquina->maquina;
$linea['fields']['maquina_id'] = $maquina->maquina_id;
$linea['fields']['papel_impresion'] = $papel->nombre;
$linea['fields']['papel_impresion_id'] = $papel->id;
$linea['fields']['paginas'] = $datosPedido->paginas;
$linea['fields']['gramaje'] = 100;
$linea['fields']['papel_generico_id'] = 3;
$linea['fields']['papel_generico'] = 'Blanco offset';
array_push($lineas, $linea);
}
}
echo '';
var_dump($lineas);
echo '';
}
public static function testLineasSobrecubierta()
{
$uso = 'sobrecubierta';
$tipo = 'colorhq';
$datosPedido = (object)array(
'paginas' => 240,
'tirada' => 100,
'merma' => 10,
'merma_portada' => 10,
'ancho' => 150,
'alto' => 210,
'isCosido' => true,
'solapas' => false,
);
$opciones_papel = array(
'sobrecubierta' => 1,
'rotativa' => 0,
);
// Se obtienen los papeles disponibles
$papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: 1, // Blanco offset
gramaje: 200,
options: $opciones_papel
);
echo '';
var_dump($papeles);
echo '';
$lineas = array();
// Para cada papel, se obtienen las maquinas disponibles
foreach ($papeles as $papel) {
$maquinamodel = new \App\Models\Configuracion\MaquinaModel();
$maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto(
is_rotativa: 0,
tarifa_tipo: $tipo,
uso_tarifa: 'sobrecubierta',
tirada: $datosPedido->tirada + $datosPedido->merma,
papel_impresion_id: $papel->id,
);
echo '';
echo '-------------------------------';
echo '';
echo '';
var_dump($maquinas);
echo '';
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
echo '';
echo '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$';
echo '';
$tarifamodel = new \App\Models\Configuracion\MaquinasTarifasImpresionModel();
$tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo);
echo '';
var_dump($tarifa);
echo '';
if (!is_float($tarifa)) {
continue;
}
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
$linea['fields']['maquina'] = $maquina->maquina;
$linea['fields']['maquina_id'] = $maquina->maquina_id;
$linea['fields']['papel_impresion'] = $papel->nombre;
$linea['fields']['papel_impresion_id'] = $papel->id;
$linea['fields']['paginas'] = $datosPedido->paginas;
$linea['fields']['gramaje'] = 100;
$linea['fields']['papel_generico_id'] = 3;
$linea['fields']['papel_generico'] = 'Blanco offset';
array_push($lineas, $linea);
}
}
echo '';
var_dump($lineas);
echo '';
}
}