From a231bd9c1b317e9b53dc02bf319ab9c782ad058c Mon Sep 17 00:00:00 2001 From: jaimejimenezortega Date: Tue, 19 Mar 2024 08:20:55 +0100 Subject: [PATCH] trabajando en checkear las lineas de presupuesto --- .gitignore | 2 + .../Presupuestos/Cosidotapablanda.php | 24 ++- ci4/app/Controllers/Test.php | 15 +- .../Presupuestos/PresupuestoEntity.php | 6 +- .../Models/Presupuestos/PresupuestoModel.php | 8 +- ci4/app/Services/PresupuestoService.php | 194 +++++++++++++++++- .../_lineasPresupuestoItems.js | 4 +- .../viewCosidotapablandaForm.php | 4 + 8 files changed, 235 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index d6117b2a..08e5f6c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ ci4/.env +.vscode/ + diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 22d5d6eb..1733ced5 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -346,7 +346,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['acabadosSobrecubierta'] = $this->getAcabadosSobrecubierta(); // Lineas Presupuesto - $this->viewData['lineasPresupuesto'] = (new PresupuestoLineaModel())->getLineasPresupuesto($id); + $this->viewData['lineasPresupuesto'] = $this->getLineasPresupuesto($presupuestoEntity); // Tarifas $this->viewData['serviciosAcabado'] = $this->getServiciosAcabado(); @@ -1302,4 +1302,26 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); return $model->where('presupuesto_id', $presupuesto_id)->findAll(); } + + protected function getLineasPresupuesto($presupuestoEntity){ + $lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id); + + $input_data = []; + $input_data['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id; + $input_data['tirada'] = $presupuestoEntity->tirada; + $input_data['merma'] = $presupuestoEntity->merma; + $input_data['papel_formato_id'] = $presupuestoEntity->papel_formato_id; + $input_data['papel_formato_personalizado'] = $presupuestoEntity->papel_formato_personalizado; + $input_data['papel_formato_ancho'] = $presupuestoEntity->papel_formato_ancho; + $input_data['papel_formato_alto'] = $presupuestoEntity->papel_formato_alto; + $input_data['cliente_id'] = $presupuestoEntity->cliente_id; + $input_data['solapas'] = $presupuestoEntity->solapas; + $input_data['solapas_ancho'] = $presupuestoEntity->solapas_ancho; + $input_data['solapas_sobrecubierta'] = $presupuestoEntity->solapas_sobrecubierta; + $input_data['solapas_ancho_sobrecubierta'] = $presupuestoEntity->solapas_ancho_sobrecubierta; + $input_data['lomo_cubierta'] = $presupuestoEntity->lomo_cubierta; + $input_data['lomo_sobrecubierta'] = $presupuestoEntity->lomo_sobrecubierta; + + return PresupuestoService::checkLineasPresupuesto($input_data, $lineas); + } } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 9b7e760b..898d4c55 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -17,19 +17,8 @@ class Test extends BaseController public function index() { - $presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel'); - $presupuesto = $presupuestoModel->find(44); - - $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - - echo '
';
-        $presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
-        $presupuestoLineaModel->duplicateLineasPresupuesto(48, 75);
-        echo '
'; - - - - + $status = PresupuestoService::checkMaquina(1995); + var_dump($status); } diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index 1d4616b0..99350fbc 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -51,7 +51,8 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "comentarios_pdf" => null, "comentarios_tarifa" => null, "comentarios_produccion" => null, - "lomo" => null, + "lomo_cubierta" => null, + "lomo_sobrecubierta" => null, "total_presupuesto" => null, "envios_recoge_cliente" => false, "tirada_alternativa_json_data" => null, @@ -120,7 +121,8 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "sobrecubiertas_ancho" => "float", "merma" => "float", "merma_cubierta" => "float", - "lomo" => "?int", + "lomo_cubierta" => "?float", + "lomo_sobrecubierta" => "?float", "total_presupuesto" => "?float", "envios_recoge_cliente" => "boolean", "aprobado_user_id" => "?int", diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 6d9f593d..5b588d92 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -72,7 +72,8 @@ class PresupuestoModel extends \App\Models\GoBaseModel "comentarios_pdf", "comentarios_tarifa", "comentarios_produccion", - "lomo", + "lomo_cubierta", + "lomo_sobrecubierta", "total_presupuesto", "envios_recoge_cliente", "tirada_alternativa_json_data", @@ -277,8 +278,9 @@ class PresupuestoModel extends \App\Models\GoBaseModel ->table($this->table . " t1") ->select( "t1.id AS id, t1.created_at AS fecha, t1.titulo AS titulo, t1.autor AS autor, t1.ferro AS ferro, - t1.ferro_digital AS ferro_digital, t1.prototipo AS prototipo, t1.solapas AS solapas, t1.lomo AS lomo, - t1.solapas_ancho AS solapas_ancho, t1.paginas AS paginas, t1.tirada AS tirada, t1.coleccion AS coleccion, + t1.ferro_digital AS ferro_digital, t1.prototipo AS prototipo, t1.solapas AS solapas, t1.solapas_sobrecubierta AS solapas_sobrecubierta, + t1.lomo_cubierta AS lomo_cubierta, t1.lomo_sobrecubierta AS lomo_sobrecubierta, + t1.solapas_ancho AS solapas_ancho, t1.solapas_sobrecubierta_ancho AS solapas_sobrecubierta_ancho, t1.paginas AS paginas, t1.tirada AS tirada, t1.coleccion AS coleccion, t1.retractilado AS retractilado, t1.guardas AS guardas, t1.marcapaginas AS marcapaginas, t1.comentarios_pdf AS comentarios_pdf, t1.tirada_alternativa_json_data AS tiradas_alternativas, t1.total_presupuesto AS total_presupuesto, t1.total_precio_unidad AS total_precio_unidad, diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index e2b865e4..2f3f949d 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -6,8 +6,11 @@ use CodeIgniter\Config\BaseService; use App\Models\Configuracion\MaquinasTarifasImpresionModel; use App\Models\Clientes\ClientePreciosModel; - - +use App\Models\Configuracion\MaquinaModel; +use App\Models\Configuracion\PapelImpresionModel; +use App\Models\Configuracion\PapelGenericoModel; +use App\Models\Configuracion\TipoPresupuestoModel; +use App\Models\Configuracion\PapelFormatoModel; class PresupuestoService extends BaseService { @@ -949,6 +952,193 @@ class PresupuestoService extends BaseService return $opciones_papel; } + + + public static function checkLineasPresupuesto($input_data, $array_lineas) + { + foreach ($array_lineas as $linea) { + + if (!PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) { + // Generar linea con comparador + } + else{ + $nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($input_data, $linea); + if(count($nueva_linea) >0){ + if(round($nueva_linea['fields']['total_impresion'],2) != $linea->total_linea){ + // Generar linea con comparador + } + } + + } + } + + return $array_lineas; + } + + private static function obtenerValorLineaPresupuesto($input_data, $linea){ + + $tipo_impresion_id = $input_data['tipo_impresion_id']; + $tirada = $input_data['tirada']; + $merma = $input_data['merma']; + $papel_formato_id = $input_data['papel_formato_id']; + $papel_formato_personalizado = $input_data['papel_formato_personalizado']; + $ancho = $input_data['papel_formato_ancho']; + $alto = $input_data['papel_formato_alto']; + $cliente_id = $input_data['cliente_id']; + $solapas = $input_data['solapas']; + $solapas_sobrecubierta = $input_data['solapas_sobrecubierta']; + $solapas_ancho_cubierta = $input_data['solapas_ancho']; + $solapas_ancho_sobrecubierta = $input_data['solapas_ancho_sobrecubierta']; + $lomo_cubierta = $input_data['lomo_cubierta']; + $lomo_sobrecubierta = $input_data['lomo_sobrecubierta']; + + if($papel_formato_personalizado == 0){ + $papel_formato = (new PapelFormatoModel())->find($papel_formato_id); + $ancho = $papel_formato->ancho; + $alto = $papel_formato->alto; + } + + $data = []; + $output_data = []; + + $papel_impresion = (new PapelImpresionModel())->find($linea->papel_impresion_id); + $maquina = (new MaquinaModel())->find($linea->maquina_id); + $maquina->maquina_id = $maquina->id; + $maquina->maquina = $maquina->nombre; + $papel_generico = (new PapelGenericoModel())->find($linea->papel_id); + $papel_generico = array( + 'id' => $papel_generico->id, + 'nombre' => $papel_generico->nombre, + ); + + $data['datosPedido'] = (object)array( + 'paginas' => $linea->paginas, + 'tirada' => $tirada, + 'merma' => $merma, + 'ancho' => $ancho, + 'alto' => $alto, + 'a_favor_fibra' => $linea->rotativa_a_favor_fibra, + 'isCosido' => (new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id), + ); + $data['cliente_id'] = $cliente_id; + $data['papel'] = $papel_impresion; + $data['maquina'] = $maquina; + $data['papel_generico'] = $papel_generico; + $data['a_favor_fibra'] = $linea->rotativa_a_favor_fibra; + $data['datosTipolog'] = [(object)array( + 'negro' => $linea->rotativa_negro, + 'cyan' => $linea->rotativa_cyan, + 'magenta' => $linea->rotativa_magenta, + 'amarillo' => $linea->rotativa_amarillo, + 'cg' => $linea->rotativa_cg, + 'gota_negro' => $linea->rotativa_gota_negro, + 'gota_color' => $linea->rotativa_gota_color, + )]; + $data['gramaje'] = $linea->gramaje; + + switch($linea->tipo){ + + case 'lp_bn': + case 'lp_bnhq': + case 'lp_color': + case 'lp_colorhq': + case 'lp_guardas': + $data['uso'] = 'interior'; + $isColor = strpos($linea->tipo, 'color') !== false; + $isHq = strpos($linea->tipo, 'hq') !== false; + $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); + $opciones_papel = PresupuestoService::get_opciones_papel('interior', $isColor); + + if($linea->tipo == 'lp_guardas'){ + $data['datosPedido']->paginas_impresion = $linea->paginas_impresion; + // 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) { + $data['datosPedido']->isCosido = true; + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + $data['datosPedido']->isCosido = false; + } + } + + $data['tipo'] = $tipo; + $data['isColor'] = $isColor; + $data['opciones_papel'] = $opciones_papel; + + $output_data = PresupuestoService::getLineaPresupuestoPlana($data); + break; + + + case 'lp_rot_color': + case 'lp_rot_bn': + $data['uso'] = 'interior'; + $tipo = $linea->rotativa_pag_color>0 ? 'color' : 'negro'; + $data['paginas'] = (object)array( + 'negro' => $linea->paginas-$linea->rotativa_pag_color, + 'color' => $linea->rotativa_pag_color, + ); + + $data['tipo'] = $tipo; + $data['parametrosRotativa'] = (object)array( + 'a_favor_fibra' => $linea->rotativa_a_favor_fibra, + 'bnPages' => $data['paginas']->negro, + 'colorPages' => $data['paginas']->color, + 'rotativa_negro' => $linea->rotativa_negro, + 'rotativa_cyan' => $linea->rotativa_cyan, + 'rotativa_magenta' => $linea->rotativa_magenta, + 'rotativa_amarillo' => $linea->rotativa_amarillo, + 'rotativa_gota_negro' => $linea->rotativa_gota_negro, + 'rotativa_gota_color' => $linea->rotativa_gota_color, + ); + + $output_data = PresupuestoService::getLineaPresupuestoRotativa($data); + break; + + case 'lp_cubierta': + case 'lp_sobrecubierta': + + $data['uso'] = ($linea->tipo == 'lp cubierta')? 'cubierta':'sobrecubierta'; + $data['tipo'] = 'colorhq'; + $data['isColor'] = true; + $data['datosPedido']->solapas = ($linea->tipo == 'lp cubierta')? $solapas : $solapas_sobrecubierta; + $data['datosPedido']->solapas_ancho = ($linea->tipo == 'lp cubierta')? $solapas_ancho_cubierta : $solapas_ancho_sobrecubierta; + $data['datosPedido']->lomo = ($linea->tipo == 'lp cubierta')? $lomo_cubierta : $lomo_sobrecubierta; + + $opciones_papel = PresupuestoService::get_opciones_papel($data['uso'], true); + $data['opciones_papel'] = $opciones_papel; + + $data['datosPedido']->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($data['uso'], $tipo_impresion_id, $data['datosPedido']); + $data['datosPedido']->altoExteriores = PresupuestoService::getAltoTotalExteriores($data['uso'], $tipo_impresion_id, $data['datosPedido']); + + $output_data = PresupuestoService::getLineaPresupuestoPlana($data); + break; + } + return $output_data; + } + + + // Funcion que comprueba si existe una maquina + private static function checkMaquina($maquina_id){ + + $maquina = (new MaquinaModel())->find($maquina_id); + if (!$maquina) { + return false; + } + return true; + } + + + // Funcion que comprueba si existe un papel de impresion + private static function checkPapelImpresion($papel_impresion_id){ + + $papel = (new PapelImpresionModel())->find($papel_impresion_id); + if (!$papel) { + return false; + } + return true; + } + + /** * Devuelve la dimensión del lomo interior. */ diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js index 22ed5382..adadad68 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js @@ -4001,7 +4001,7 @@ async function calcularPresupuesto_sobrecubierta(fromComparador=false, input_dat merma: parseInt($('#mermacubierta').val()), ancho: dimension.ancho, alto: dimension.alto, - lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto, + lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto(), papel_generico_id: input_data.papel_generico_id, papel_generico: input_data.papel_generico, gramaje: input_data.gramaje, @@ -4137,6 +4137,7 @@ function getLomoLineasPresupuesto(){ catch(error){ lomoTotal = 0 } + $('#lomo_cubierta').val(lomoTotal) return lomoTotal } @@ -4152,6 +4153,7 @@ function getLomoCubiertaLineasPresupuesto(){ catch(error){ lomoTotal = 0 } + $('#lomo_sobrecubierta').val(lomoTotal+parseFloat($('#lomo_cubierta').val())) return lomoTotal } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 5970f92a..30011d1f 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -17,6 +17,10 @@ value="id ?>"> + +