From 55f26c85b8e96a78c508a8e6e74962d93ec43979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= <“jaimejimenezortega@gmail.com”> Date: Sun, 7 Jan 2024 20:19:54 +0100 Subject: [PATCH] modificacion hecha --- .../Controllers/Configuracion/Maquinas.php | 4 +- .../Maquinaspapelesimpresion.php | 5 +- .../Configuracion/Papelesimpresion.php | 12 +- .../Presupuestos/Cosidotapablanda.php | 91 ++++++++- ci4/app/Controllers/Test.php | 14 +- ci4/app/Entities/Configuracion/Maquina.php | 4 +- .../Entities/Configuracion/PapelImpresion.php | 1 + ci4/app/Language/en/Maquinas.php | 2 +- ci4/app/Language/en/PapelImpresion.php | 3 +- ci4/app/Language/es/Maquinas.php | 2 +- ci4/app/Language/es/PapelImpresion.php | 3 +- ci4/app/Models/Configuracion/MaquinaModel.php | 15 +- .../MaquinasPapelesImpresionModel.php | 6 +- .../Configuracion/PapelImpresionModel.php | 9 +- ci4/app/Services/PresupuestoService.php | 130 +++++++++++- .../maquinas/_maquinaFormItems.php | 14 +- .../maquinas/viewMaquinaForm.php | 59 +++--- .../papel/_papelImpresionFormItems.php | 58 +++--- .../papel/viewPapelImpresionForm.php | 14 +- .../papel/viewPapelImpresionList.php | 6 +- .../_lineasPresupuestoItems.php | 192 ++++++++++++++++-- 21 files changed, 537 insertions(+), 107 deletions(-) diff --git a/ci4/app/Controllers/Configuracion/Maquinas.php b/ci4/app/Controllers/Configuracion/Maquinas.php index df472836..48ffcecf 100755 --- a/ci4/app/Controllers/Configuracion/Maquinas.php +++ b/ci4/app/Controllers/Configuracion/Maquinas.php @@ -168,8 +168,8 @@ class Maquinas extends \App\Controllers\GoBaseResourceController if ($this->request->getPost('is_rotativa') == null) { $sanitizedData['is_rotativa'] = false; } - if ($this->request->getPost('is_tinta') == null) { - $sanitizedData['is_tinta'] = false; + if ($this->request->getPost('is_inkjet') == null) { + $sanitizedData['is_inkjet'] = false; } // JJO diff --git a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php index 15cfc882..517fee4f 100755 --- a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php @@ -164,6 +164,7 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController $maquina_id = $reqData['maquina_id'] ?? -1; // Para saber si el papel que se tiene que mostrar es para rotativa $isRotativa= $reqData['isRotativa'] ?? 0; + $isInkjet= $reqData['isInkjet'] ?? 0; // modelos usados $tarifa_model = new MaquinasTarifasImpresionModel(); @@ -172,13 +173,13 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController $tarifas = $tarifa_model->getResource("", $maquina_id)->get()->getResultObject(); // 1- Se obtienen los papeles que hay seleccionados (de la tabla lg_maquina_papel_impresion y que coincidan con las tarifas actuales) - $initData = $this->model->getInitData($isRotativa, $tarifas, $maquina_id); + $initData = $this->model->getInitData($isRotativa, $isInkjet, $tarifas, $maquina_id); // 2- Se cuentan los resultados. Si no hay coincidencias, hay que crear la tabla pivote con todos los papeles que cumplan la // condición de las tarifas y con la columna active a 0. Si hay coincidencias, se guardan los activos en un array $selected_papers = $initData->countAllResults(); $active_values = []; if($selected_papers > 0){ - $active_values = $this->model->getInitData($isRotativa, $tarifas, $maquina_id)->get()->getResult('array'); + $active_values = $this->model->getInitData($isRotativa, $isInkjet, $tarifas, $maquina_id)->get()->getResult('array'); } // Primero se borran las filas con la maquina_id de la tabla pivote $this->model->deleteRows($maquina_id); diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php index 8d06ea4d..9f051a44 100755 --- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php @@ -205,10 +205,13 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController if ($this->request->getPost('rotativa') == null) { $sanitizedData['rotativa'] = false; } + if ($this->request->getPost('inkjet') == null) { + $sanitizedData['inkjet'] = false; + } // Hay que asegurarse de que se quitan los consumos de tintas de rotativa // en caso de que se haya deseleccionado la opción rotativa - if(!$sanitizedData['rotativa']){ + if(!$sanitizedData['rotativa'] && !$sanitizedData['inkjet']){ $this->tpModel->removeForPapelImpresion($id); } @@ -221,8 +224,7 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - + if ($this->canValidate()) : try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); @@ -415,12 +417,12 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController $ma_model = new MaquinaModel(); $ma_pa_model = new MaquinasPapelesImpresionModel(); - $active_values = $ma_pa_model->getInitSelectedMachines($id, $data['rotativa'])->get()->getResult('array'); + $active_values = $ma_pa_model->getInitSelectedMachines($id, $data['rotativa'], $data['inkjet'])->get()->getResult('array'); $ma_pa_model->deleteForPapelImpresion($id); // Se obtienen las máquinas que cumplen las condiciones - $rows = $ma_model->getIdMaquinasForPapelImpresion($id, $data['rotativa'])->get()->getResult('array'); + $rows = $ma_model->getIdMaquinasForPapelImpresion($id, $data['rotativa'], $data['inkjet'])->get()->getResult('array'); $ma_pa_model->insertRows($rows); // Se actualizan los activos que había en caso de que los hubiera diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 23092f5f..51521292 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -444,7 +444,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController if ($type=='interior') { - $resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id); + $datosTipolog = $reqData['negro'] ?? null; + if(!is_null($datosTipolog)){ + $datosTipolog = []; + $data = (object)array( + 'negro' => intval($reqData['negro']) ?? 0, + 'cyan' => intval($reqData['cyan']) ?? 0, + 'magenta' => intval($reqData['magenta']) ?? 0, + 'amarillo' => intval($reqData['amarillo']) ?? 0, + 'gota_negro' => intval($reqData['gota_negro']) ?? 0, + 'gota_color' => intval($reqData['gota_color']) ?? 0, + ); + array_push($datosTipolog, $data); + } + + $resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -560,7 +574,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } - public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id) + public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog = null) { $tipo = $isColor? ($isHq?'colorhq':'color'): ($isHq?'negrohq':'negro'); @@ -615,15 +629,61 @@ 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) { + if($maquina->is_inkjet){ + $parametrosInkjet = (object)array( + 'a_favor_fibra' => 1, // este parametro se cambia para comprobar + // en las dos direcciones (menos en rustica fresada que es siempre 1) + 'bnPages' => $isColor?0:$datosPedido->paginas, + 'colorPages' => $isColor?$datosPedido->paginas:0, + 'rotativa_gota_negro' => 0, + 'rotativa_gota_color' => 0, + ); + + $papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel(); + if(is_null($datosTipolog)){ + $datosTipologias = $papelImpresionTipologiaModel + ->findTipologiasForPapelImpresion($papel->id, $parametrosInkjet->colorPages>0?'color':'negro') + ->get()->getResultObject(); + + + if(count($datosTipologias)==0){ + continue; + } + } + else{ + $datosTipologias = $datosTipolog; + } + + $parametrosInkjet->rotativa_gota_negro = $datosTipologias[0]->gota_negro; + $parametrosInkjet->rotativa_gota_color = $datosTipologias[0]->gota_color; + $parametrosInkjet->rotativa_negro = $datosTipologias[0]->negro; + $parametrosInkjet->rotativa_cyan = $datosTipologias[0]->cyan; + $parametrosInkjet->rotativa_magenta = $datosTipologias[0]->magenta; + $parametrosInkjet->rotativa_amarillo = $datosTipologias[0]->amarillo; + } + $tarifamodel = new MaquinasTarifasImpresionModel(); [$tarifaId, $tarifa] = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); if(!is_float($tarifa)){ continue; } - $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + if($maquina->is_inkjet){ + $linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosInkjet); + [$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas); + $linea['fields']['precios_pliegos'] = $precio_pliego_impresion; + $linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $precio_pliego_impresion; + $linea['fields']['a_favor_fibra'] = $parametrosInkjet->a_favor_fibra; + $linea['fields']['paginas_color'] = $isColor?$datosPedido->paginas:0; + $linea['fields']['datosTipologias'] = $datosTipologias[0]; + } + else{ + $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + } + if(array_key_exists('error', $linea)) continue; + $linea['fields']['tarifa_impresion_id'] = $tarifaId; $linea['fields']['maquina'] = $maquina->maquina; $linea['fields']['maquina_id'] = $maquina->maquina_id; @@ -634,6 +694,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $linea['fields']['gramaje'] = $gramaje; $linea['fields']['papel_generico_id'] = $papel_generico['id']; $linea['fields']['papel_generico'] = $papel_generico['nombre']; + + if($maquina->is_inkjet){ + $linea['fields']['precio_click'] = $tarifa; + $linea['fields']['precio_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click']; + } $linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina( $linea['fields']['precio_click_pedido'], $linea['fields']['precio_click'], @@ -642,7 +707,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $clientePreciosModel = new ClientePreciosModel(); $config = (object)[ "tipo" => $uso, - "tipo_maquina" => $maquina->is_tinta?'inkjet':'toner', + "tipo_maquina" => $maquina->is_inkjet?'inkjet':'toner', "tipo_impresion" => $tipo ]; $tiempo = PresupuestoService::getHorasMaquina( @@ -655,15 +720,27 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController continue; } - $linea['fields']['tipo_maquina'] = $maquina->is_tinta?'inkjet':'toner'; + $linea['fields']['tipo_maquina'] = $maquina->is_inkjet?'inkjet':'toner'; $linea['fields']['precio_hora'] = $precio_hora*$margen_precio_hora/100.0; $linea['fields']['precio_hora_margen'] = $margen_precio_hora; $linea['fields']['horas_maquina'] = $tiempo; $linea['fields']['precio_impresion_horas'] = $precio_hora*$tiempo*1.0; $linea['fields']['margen_impresion_horas'] = $precio_hora*$tiempo*1.0*$margen_precio_hora/100.0; - $linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + // papel - $linea['fields']['precio_impresion_horas']; // impresion + if($maquina->is_inkjet){ + $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']['total_impresion'] = + $linea['fields']['precio_pedido'] + // papel + $linea['fields']['precio_impresion_horas'] + $linea['fields']['margen_impresion_horas'] + // horas de maquina + $linea['fields']['precio_tinta']; // tinta + } + else{ + $linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + // papel + $linea['fields']['precio_impresion_horas']; // impresion + } + + array_push($lineas, $linea); } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 7a2ef553..7dcc5afe 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -18,8 +18,20 @@ class Test extends BaseController public function index() { - $this->asignar_tarifa_defecto_todos_usuarios(); + $maquina_id = 114; + echo '
';
+        $papelimpresion_model = model('App\Models\Configuracion\PapelImpresionModel');
+        $tarifa_model = model('App\Models\Configuracion\MaquinasTarifasImpresionModel');
+        
+        $tarifas = $tarifa_model->getResource("", $maquina_id)->get()->getResultObject();
+        var_dump($tarifas);
+
+        $papeles =  $papelimpresion_model->getIdPapelesImpresion($maquina_id, $tarifas)->get()->getResult('array');
+
+        var_dump($papeles);
+
+        echo '
'; } private function asignar_tarifa_defecto_todos_usuarios() diff --git a/ci4/app/Entities/Configuracion/Maquina.php b/ci4/app/Entities/Configuracion/Maquina.php index 97b3674a..e508f8dc 100755 --- a/ci4/app/Entities/Configuracion/Maquina.php +++ b/ci4/app/Entities/Configuracion/Maquina.php @@ -23,7 +23,7 @@ class Maquina extends \CodeIgniter\Entity\Entity "orden_planning" => 1, "is_rotativa" => false, "precio_tinta_negro" => 0.0, - "is_tinta" => false, + "is_inkjet" => false, "precio_tinta_color" => 0.0, "velocidad_corte" => 0.0, "precio_hora_corte" => 0.0, @@ -52,7 +52,7 @@ class Maquina extends \CodeIgniter\Entity\Entity "orden_planning" => "int", "is_rotativa" => "boolean", "precio_tinta_negro" => "float", - "is_tinta" => "boolean", + "is_inkjet" => "boolean", "precio_tinta_color" => "float", "velocidad_corte" => "float", "precio_hora_corte" => "float", diff --git a/ci4/app/Entities/Configuracion/PapelImpresion.php b/ci4/app/Entities/Configuracion/PapelImpresion.php index 69c898bd..f8b796fa 100755 --- a/ci4/app/Entities/Configuracion/PapelImpresion.php +++ b/ci4/app/Entities/Configuracion/PapelImpresion.php @@ -19,6 +19,7 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity "color" => true, "cubierta" => false, "sobrecubierta" => false, + "inkjet" => false, "rotativa" => false, "is_deleted" => 0, "created_at" => null, diff --git a/ci4/app/Language/en/Maquinas.php b/ci4/app/Language/en/Maquinas.php index 5445dfdf..96f5ee61 100755 --- a/ci4/app/Language/en/Maquinas.php +++ b/ci4/app/Language/en/Maquinas.php @@ -19,7 +19,7 @@ return [ 'isDeleted' => 'Is Deleted', 'isPadre' => 'Use for variant', 'isRotativa' => 'Is Rotary?', - 'isTinta' => 'Is Ink', + 'isTinta' => 'Inkjet', 'manipulado' => 'handling', 'maquina' => 'Machine', 'maquinaList' => 'Maniches List', diff --git a/ci4/app/Language/en/PapelImpresion.php b/ci4/app/Language/en/PapelImpresion.php index cd460766..768d0740 100755 --- a/ci4/app/Language/en/PapelImpresion.php +++ b/ci4/app/Language/en/PapelImpresion.php @@ -30,12 +30,13 @@ return [ 'precioMetro' => 'Meter price', 'precioTonelada' => 'Ton price', 'referencia' => 'Reference', + 'inkjet' => 'Inkjet', 'rotativa' => 'Rotary', 'updatedAt' => 'Updated At', 'activo' => 'Active?', 'userUpdateId' => 'User Update ID', - 'consumo_tintas_rotativas' => 'Rotary ink consumption', + 'consumo_tintas_rotativas' => 'Ink consumption', 'maquinas_papel' => 'Selected machines', 'sureToChangeRotativaTitle' => 'Are you sure to change this option?', 'sureToChangeRotativaText' => 'This operation can\'t undone, the machines list and the rotary ink consumption will change.', diff --git a/ci4/app/Language/es/Maquinas.php b/ci4/app/Language/es/Maquinas.php index 34c932e9..5906df9f 100755 --- a/ci4/app/Language/es/Maquinas.php +++ b/ci4/app/Language/es/Maquinas.php @@ -19,7 +19,7 @@ return [ 'isDeleted' => 'Is Deleted', 'isPadre' => 'Usar para variante?', 'isRotativa' => 'Es Rotativa?', - 'isTinta' => 'Es Tinta?', + 'isTinta' => 'Inkjet', 'manipulado' => 'manipulado', 'maquina' => 'Maquina', 'maquinaList' => 'Lista Máquinas', diff --git a/ci4/app/Language/es/PapelImpresion.php b/ci4/app/Language/es/PapelImpresion.php index c730654d..b2fc1170 100755 --- a/ci4/app/Language/es/PapelImpresion.php +++ b/ci4/app/Language/es/PapelImpresion.php @@ -30,12 +30,13 @@ return [ 'precioMetro' => 'Precio Metro', 'precioTonelada' => 'Precio Tonelada', 'referencia' => 'Referencia', + 'inkjet' => 'Inkjet', 'rotativa' => 'Rotativa', 'updatedAt' => 'Actualizado en', 'activo' => 'Activo?', 'userUpdateId' => 'ID usuario actualización', - 'consumo_tintas_rotativas' => 'Consumo tintas rotativas', + 'consumo_tintas_rotativas' => 'Consumo tintas', 'maquinas_papel' => 'Máquinas seleccionadas', 'sureToChangeRotativaTitle' => '¿Está seguro de cambiar esta opción?', 'sureToChangeRotativaText' => 'Está operación no se puede deshacer, cambiará la lista de máquinas y el consumo de tintas.', diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 25fa6b61..675e4040 100755 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -48,7 +48,7 @@ class MaquinaModel extends \App\Models\GoBaseModel "orden_planning", "is_rotativa", "precio_tinta_negro", - "is_tinta", + "is_inkjet", "precio_tinta_color", "velocidad_corte", "precio_hora_corte", @@ -253,7 +253,7 @@ class MaquinaModel extends \App\Models\GoBaseModel return $result; } - public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa) + public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa , $inkjet) { $builder = $this->db ->table($this->table . " t1") @@ -261,6 +261,7 @@ class MaquinaModel extends \App\Models\GoBaseModel "'" . $papel_impresion_id . "'" . " as papel_impresion_id, t1.id AS maquina_id, '0' as active" ); $builder->where("t1.is_rotativa", $rotativa); + $builder->where("t1.is_inkjet", $inkjet); return $builder; } @@ -294,7 +295,13 @@ class MaquinaModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.nombre AS nombre, t1.is_padre AS is_padre, t1.tipo AS tipo, t1.velocidad AS velocidad, t1.ancho AS ancho, t1.alto AS alto, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.alto_click AS alto_click, t1.min AS min, t1.max AS max, t1.duracion_jornada AS duracion_jornada, t1.orden_planning AS orden_planning, t1.is_rotativa AS is_rotativa, t1.precio_tinta_negro AS precio_tinta_negro, t1.is_tinta AS is_tinta, t1.precio_tinta_color AS precio_tinta_color, t1.velocidad_corte AS velocidad_corte, t1.precio_hora_corte AS precio_hora_corte, t1.metrosxminuto AS metrosxminuto, t1.forzar_num_formas_horizontales_cubierta AS forzar_num_formas_horizontales_cubierta, t1.forzar_num_formas_verticales_cubierta AS forzar_num_formas_verticales_cubierta, t1.observaciones AS observaciones, t2.nombre AS padre" + "t1.id AS id, t1.nombre AS nombre, t1.is_padre AS is_padre, t1.tipo AS tipo, t1.velocidad AS velocidad, t1.ancho AS ancho, t1.alto AS alto, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.alto_click AS alto_click, t1.min AS min, t1.max AS max, t1.duracion_jornada AS duracion_jornada, + t1.orden_planning AS orden_planning, t1.is_rotativa AS is_rotativa, t1.precio_tinta_negro AS precio_tinta_negro, + t1.is_inkjet AS is_inkjet, t1.precio_tinta_color AS precio_tinta_color, t1.velocidad_corte AS velocidad_corte, + t1.precio_hora_corte AS precio_hora_corte, t1.metrosxminuto AS metrosxminuto, + t1.forzar_num_formas_horizontales_cubierta AS forzar_num_formas_horizontales_cubierta, + t1.forzar_num_formas_verticales_cubierta AS forzar_num_formas_verticales_cubierta, + t1.observaciones AS observaciones, t2.nombre AS padre" ); $builder->join("lg_maquinas t2", "t1.padre_id = t2.id", "left"); @@ -367,7 +374,7 @@ class MaquinaModel extends \App\Models\GoBaseModel ->select( "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.ancho AS ancho, t1.alto AS alto, - t1.is_rotativa AS is_rotativa, t1.is_tinta AS is_tinta, t1.alto_click AS alto_click, t1.velocidad AS velocidad, + t1.is_rotativa AS is_rotativa, t1.is_inkjet AS is_inkjet, t1.alto_click AS alto_click, t1.velocidad AS velocidad, t1.precio_tinta_negro AS precio_tinta_negro, t1.precio_tinta_color AS precio_tinta_color, t1.velocidad_corte AS velocidad_corte, t1.precio_hora_corte AS precio_hora_corte, t1.forzar_num_formas_horizontales_cubierta AS forzar_num_formas_horizontales_cubierta, diff --git a/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php b/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php index f75dd5dd..0b96a7b0 100755 --- a/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php +++ b/ci4/app/Models/Configuracion/MaquinasPapelesImpresionModel.php @@ -144,7 +144,7 @@ class MaquinasPapelesImpresionModel extends \App\Models\GoBaseModel } - public function getInitData($isRotativa = 0, $tarifas = [], $maquina_id = -1) + public function getInitData($isRotativa = 0, $isInkjet=0, $tarifas = [], $maquina_id = -1) { $builder = $this->db ->table($this->table . " t1") @@ -158,6 +158,7 @@ class MaquinasPapelesImpresionModel extends \App\Models\GoBaseModel $builder->where("t2.is_deleted", 0); $builder->where("t2.isActivo", 1); $builder->where("t2.rotativa", $isRotativa); + $builder->where("t2.inkjet", $isInkjet); $builder->where("t1.active", 1); $isFirst = true; @@ -195,7 +196,7 @@ class MaquinasPapelesImpresionModel extends \App\Models\GoBaseModel // Funcion para obtener todas las máquinas seleccionadas para un papel - public function getInitSelectedMachines($papel_impresion_id= -1, $isRotativa) + public function getInitSelectedMachines($papel_impresion_id= -1, $isRotativa=false, $isInkjet=false) { $builder = $this->db ->table($this->table . " t1") @@ -210,6 +211,7 @@ class MaquinasPapelesImpresionModel extends \App\Models\GoBaseModel // Se aplican las condiciones que tienen que cumplir $builder->where("t2.is_rotativa", $isRotativa); + $builder->where("t2.is_inkjet", $isInkjet); return $builder; } diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index 44ef9a8d..874ffa71 100755 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -20,8 +20,9 @@ class PapelImpresionModel extends \App\Models\GoBaseModel 4 => "t1.color", 5 => "t1.cubierta", 6 => "t1.sobrecubierta", - 7 => "t1.rotativa", - 8 => "t1.isActivo" + 7 => "t1.inkjet", + 8 => "t1.rotativa", + 9 => "t1.isActivo" ]; @@ -38,6 +39,7 @@ class PapelImpresionModel extends \App\Models\GoBaseModel "color", "cubierta", "sobrecubierta", + "inkjet", "rotativa", "isActivo", "deleted_at", @@ -144,7 +146,8 @@ class PapelImpresionModel extends \App\Models\GoBaseModel ->select( "t1.id AS id, t1.nombre AS nombre, t1.defecto AS defecto, t1.referencia AS referencia, t1.mano AS mano, t1.espesor AS espesor, t1.gramaje AS gramaje, t1.precio_tonelada AS precio_tonelada, - t1.bn AS bn, t1.color AS color, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, t1.rotativa AS rotativa, + t1.bn AS bn, t1.color AS color, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, + t1.inkjet AS inkjet, t1.rotativa AS rotativa, t1.isActivo AS isActivo, t2.nombre AS papel_generico_id" ); diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 0929a5a6..6a5978d7 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -140,6 +140,131 @@ class PresupuestoService extends BaseService } + /** + * Devuelve los calculos para la linea de rotativa. + */ + public static function getCostesLineaInkjet($maquina, $papel_impresion, $datosPedido, $parametrosInkjet) + { + $data = []; + + $data['resolucion'] = 600; + $data['pulgada'] = 1 / 1000000000000.0; + $data['superficie'] = round((($datosPedido->ancho / 2.54) / 10) * (($datosPedido->alto / 2.54) / 10), 2); + + // posicionamos paginas en función de a favor de fibra o no + + $anchoLibro = $datosPedido->ancho; + $altoLibro = $datosPedido->alto; + + $formas = PresupuestoService::getNumFormasPlana('interior', $maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); + $response['fields'] = $formas; + + + if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { + $response['error']['value'] = true; + $response['error']['message'] = 'no_formas_disponibles'; + return $response; + } + + $data['ancho'] = $anchoLibro; + $data['alto'] = $altoLibro; + + // si es cosido ancho x 2 + + if ($datosPedido->isCosido) { + + $data['ancho'] = $data['ancho'] * 2; + } + + // calculo de papel y clicks + $factor_anchura = round($maquina->ancho_impresion / $data['ancho'], 2); + $factor_altura = round($maquina->alto_impresion / ($data['alto'] + self::MARGEN_PAGINAS_ROTATIVA), 2); + $factor_altura_click = round($maquina->alto_click / ($data['alto'] + self::MARGEN_PAGINAS_ROTATIVA), 2); + + $multiplicador_pliego = $datosPedido->isCosido ? 4 : 2; + $paginas_por_pliego = round(floor($factor_anchura) * $factor_altura * $multiplicador_pliego, 2); + $pliegos_libro = round($paginas_por_pliego ? $datosPedido->paginas / $paginas_por_pliego : 0, 2); + $metros_papel_libro = round($pliegos_libro * ($maquina->alto_impresion / 1000.0), 2); + $metros_papel_total = round($metros_papel_libro * ($datosPedido->tirada + $datosPedido->merma), 2); + + $paginas_por_pliego_click = round(floor($factor_anchura) * $factor_altura_click * $multiplicador_pliego, 2); + $pliegos_libro_click = round($paginas_por_pliego_click ? $datosPedido->paginas / $paginas_por_pliego_click : 0, 2); + $clicks_libro = round(ceil($pliegos_libro_click) * 2, 2); + $clicks_pedido = round($clicks_libro * ($datosPedido->tirada + $datosPedido->merma), 2); + + $data['factor_altura'] = $factor_altura; + $data['factor_anchura'] = $factor_anchura; + $data['paginas_por_pliego'] = $paginas_por_pliego; + $data['pliegos_libro'] = $pliegos_libro; + $data['pliegos_pedido'] = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma); + $data['metros_papel_libro'] = $metros_papel_libro; + $data['metros_papel_total'] = $metros_papel_total; + $data['clicks_libro'] = $clicks_libro; + $data['clicks_pedido'] = $clicks_pedido; + + // calculo de tintas + $data['num_gotas_negro'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosInkjet->rotativa_negro / 100.0), 0); + $data['num_gotas_cyan'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosInkjet->rotativa_cyan / 100.0), 0); + $data['num_gotas_magenta'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosInkjet->rotativa_magenta / 100.0), 0); + $data['num_gotas_amarillo'] = round($data['superficie'] * $data['resolucion'] * $data['resolucion'] * ($parametrosInkjet->rotativa_amarillo / 100.0), 0); + + $pag_negro = $parametrosInkjet->bnPages; + $pag_color = 0; + if ($parametrosInkjet->colorPages>0) { + $pag_color = $parametrosInkjet->colorPages; + } + + // peso tintas + $data['peso_gotas_negro'] = round((($data['num_gotas_negro'] * $parametrosInkjet->rotativa_gota_negro * $data['pulgada']) / (17.91 / 20.0)) * $pag_negro * 1000, 6); + $data['peso_gotas_cyan'] = round((($data['num_gotas_cyan'] * $parametrosInkjet->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6); + $data['peso_gotas_magenta'] = round((($data['num_gotas_magenta'] * $parametrosInkjet->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6); + $data['peso_gotas_amarillo'] = round((($data['num_gotas_amarillo'] * $parametrosInkjet->rotativa_gota_color * $data['pulgada']) / (17.65 / 20.0)) * $pag_color * 1000, 6); + + // costes de tintas + $data['peso_gotas_negro_pedido'] = round($data['peso_gotas_negro'], 2) * ($datosPedido->tirada + $datosPedido->merma); + $data['peso_gotas_cyan_pedido'] = round($data['peso_gotas_cyan'], 2) * ($datosPedido->tirada + $datosPedido->merma); + $data['peso_gotas_magenta_pedido'] = round($data['peso_gotas_magenta'], 2) * ($datosPedido->tirada + $datosPedido->merma); + $data['peso_gotas_amarillo_pedido'] = round($data['peso_gotas_amarillo'], 2) * ($datosPedido->tirada + $datosPedido->merma); + + // precio tinta + $data['precio_tinta'] = round( + round(($data['peso_gotas_negro_pedido'] / 1000.0) * $maquina->precio_tinta_negro, 2) + + round(($data['peso_gotas_cyan_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + + round(($data['peso_gotas_magenta_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + + round(($data['peso_gotas_amarillo_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + , 2); + + // precio pagina + $data['precio_pagina_negro'] = round($pag_negro ? $data['precio_tinta'] / ($pag_negro * ($datosPedido->tirada + $datosPedido->merma)) : 0, 6); + $data['precio_pagina_color'] = round($pag_color ? $data['precio_tinta'] / ($pag_color * ($datosPedido->tirada + $datosPedido->merma)) : 0, 6); + + + + $data['mano'] = PresupuestoService::computeLomoInterior($datosPedido->paginas, $papel_impresion->espesor); + // ($paginas / 2.0) * (($gramaje / 1000.0) * $papel_compra->mano); + + // peso + $data['peso'] = PresupuestoService::computePeso( + ancho: $datosPedido->isCosido ? $datosPedido->ancho / 2.0 : $datosPedido->ancho, + alto: $datosPedido->alto, + gramaje: $papel_impresion->gramaje, + paginas: $datosPedido->paginas + ); + + $data['dimensiones_maquina'] = [$maquina->ancho, $maquina->alto]; + $data['dimensiones_maquina_impresion'] = [$maquina->ancho_impresion, $maquina->alto_impresion]; + $data['dimensiones_maquina_click'] = [$maquina->ancho_impresion, $maquina->alto_click]; + $data['dimensiones_libro'] = [$datosPedido->ancho, $datosPedido->alto]; + + $data['alto_click'] = $maquina->alto_click; + + $formas = PresupuestoService::getNumFormasRot($maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); + $data['num_formas'] = $formas; + + return $data; + } + + /** * Devuelve los calculos para la linea de rotativa. */ @@ -262,11 +387,6 @@ class PresupuestoService extends BaseService $formas = PresupuestoService::getNumFormasRot($maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); $data['num_formas'] = $formas; - /*$data['num_formas']['posicion_formas'] = 'n/a'; - $data['num_formas']['num_formas_horizontales'] = 0; - $data['num_formas']['num_formas_verticales'] = 0; - $data['num_formas']['value'] = 0; -*/ return $data; } diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php index 292c590a..55c17415 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaFormItems.php @@ -164,9 +164,9 @@
is_tinta == true ? 'checked' : ''; ?> + class="form-check-input"is_inkjet == true ? 'checked' : ''; ?> >
- is_rotativa == false): ?> + is_rotativa == false && $maquina->is_inkjet == false): ?>