From b62a5d1b9a2e644bcb9d6d0ad6797392fc4748be Mon Sep 17 00:00:00 2001 From: imnavajas Date: Mon, 15 Jan 2024 22:09:18 +0100 Subject: [PATCH 01/13] Inciado link presupuesto PDF con backend --- ci4/app/Controllers/Pdf/PrintPresupuestos.php | 11 ++-- .../Models/Presupuestos/PresupuestoModel.php | 53 ++++++++++++++++--- .../themes/backend/vuexy/pdfs/presupuesto.php | 29 +++++----- 3 files changed, 67 insertions(+), 26 deletions(-) diff --git a/ci4/app/Controllers/Pdf/PrintPresupuestos.php b/ci4/app/Controllers/Pdf/PrintPresupuestos.php index 4469e9dd..46e48b08 100755 --- a/ci4/app/Controllers/Pdf/PrintPresupuestos.php +++ b/ci4/app/Controllers/Pdf/PrintPresupuestos.php @@ -13,13 +13,18 @@ class PrintPresupuestos extends BaseController public function index() { - //return view('pdf_view'); - return view(getenv('theme.path').'pdfs/presupuesto'); + $presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel'); + + $data['presupuesto'] = $presupuestoModel->getResourceForPdf(8)->get()->getRow(); + + + return view(getenv('theme.path').'pdfs/presupuesto', $data); } public function generar(){ $dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]); //$dompdf->loadHtml(view('pdf_view')); - $dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto')); + //$dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto')); + $dompdf->loadHtml($this->index()); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); $dompdf->stream('presupuesto-demo.pdf'); diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index aa34dc7c..9c3ae2b4 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -1,4 +1,5 @@ [ "integer" => "Presupuestos.validation.integer", - + ], "coleccion" => [ "max_length" => "Presupuestos.validation.max_length", @@ -277,8 +278,9 @@ class PresupuestoModel extends \App\Models\GoBaseModel ], "referencia_cliente" => [ "max_length" => "Presupuestos.validation.max_length", - ], + ], ]; + public function findAllWithAllRelations(string $selcols = "*", int $limit = null, int $offset = 0) { $sql = @@ -324,14 +326,14 @@ class PresupuestoModel extends \App\Models\GoBaseModel $builder->where("t1.is_deleted", 0); - if(empty($search)) + if (empty($search)) return $builder; - else{ + else { $builder->groupStart(); - foreach($search as $col_search){ - if($col_search[0] != 1) + foreach ($search as $col_search) { + if ($col_search[0] != 1) $builder->like(self::SORTABLE[$col_search[0]], $col_search[2]); - else{ + else { $dates = explode(" ", $col_search[2]); $builder->where(self::SORTABLE[$col_search[0]] . ">=", $dates[0]); $builder->where(self::SORTABLE[$col_search[0]] . "<=", $dates[1]); @@ -340,6 +342,41 @@ class PresupuestoModel extends \App\Models\GoBaseModel $builder->groupEnd(); return $builder; } - + } + + + /** + * Get resource data. + * + * @param string $search + * + * @return \CodeIgniter\Database\BaseBuilder + */ + public function getResourceForPdf($presupuesto_id = -1) + { + $builder = $this->db + ->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.solapas_ancho AS solapas_ancho, t1.paginas AS paginas, t1.tirada AS tirada, t1.coleccion AS coleccion, + t1.total_presupuesto AS total_presupuesto, t1.total_precio_unidad AS total_precio_unidad, + t2.nombre AS cliente, + CONCAT(t3.first_name, ' ', t3.last_name) AS comercial, t3.email AS email_comercial, + t1.inc_rei AS inc_rei, + t6.estado AS estado" + ); + $builder->join("clientes t2", "t1.cliente_id = t2.id", "left"); + $builder->join("auth_user t3", "t1.user_update_id = t3.id_user", "left"); + $builder->join("presupuesto_estados t6", "t1.estado_id = t6.id", "left"); + + $builder->where("t1.is_deleted", 0); + $builder->where("t1.id", $presupuesto_id); + + return $builder; + + + } + } diff --git a/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php b/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php index 00241c88..2deccf92 100755 --- a/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php +++ b/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php @@ -37,34 +37,34 @@ PRESUPUESTO Nº: - id" ?> + id ?> CLIENTE: - customer->name" ?> + cliente ?> FECHA: - + fecha ?> - Título: titulo" ?> + Título: titulo ?> - Colección: coleccion" ?> + Colección: coleccion ?> - Autor: autor" ?> + Autor: autor ?> @@ -83,11 +83,11 @@ Ferro - TBD + ferro == 1) ? "SI" : "NO"); ?> Prototipo - SI + prototipo == 1) ? "SI" : "NO"); ?> Ferro Digital - SI + ferro_digital == 1) ? "SI" : "NO"); ?> Formato @@ -97,7 +97,7 @@ Nº de páginas totales - paginas" ?> + paginas ?> Nº de páginas ByN @@ -169,9 +169,9 @@ Tipo Solapas - + solapas == 1) ? "SI" : "NO"); ?> Ancho - TBD cm + solapas_ancho ?> cm @@ -252,7 +252,7 @@ - TBD uds. + tirada ?> uds. TBD € TBD € TBD € @@ -277,8 +277,7 @@ comercial el día que se oficialice el pedido, dado que pueda darse la situación de que no haya stock disponible o que su precio haya variado considerablemente, para así poder ofrecerle alternativas.

Esperando que los precios se ajusten a sus necesidades,
- customer->salesman->name" ?> customer->salesman->lastname" ?> • - email: customer->salesman->email" ?>

+ comercial ?> • email: email_comercial ?>

(*) En el formato de desarrollo de cubierta están contemplados los 3 mm. de vuelta de solapas en caso de llevarlas.
(**) Estos precios están sujetos a análisis de cobertura de tinta del archivo PDF de interior.

From 8e70ebba0b1c162e2e9c42104c4f91d15c97eea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Tue, 16 Jan 2024 12:26:15 +0100 Subject: [PATCH 02/13] resuelto el bug. tampoco funcionaba el comparador para rotativa color y esta arreglado --- .../Presupuestos/Cosidotapablanda.php | 180 +++++++++--------- ci4/app/Services/PresupuestoService.php | 1 + .../_datosPresupuestoClienteItems.php | 6 +- .../_lineasPresupuestoItems.php | 38 ++-- 4 files changed, 117 insertions(+), 108 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 31f68100..0360fb58 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -425,6 +425,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'merma' => intval($reqData['merma']) ?? 0, 'ancho' => intval($reqData['ancho']) ?? 100000, 'alto' => intval($reqData['alto']) ?? 100000, + 'a_favor_fibra' => $reqData['a_favor_fibra'] ?? 1, 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto ); @@ -752,15 +753,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController public function getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog = null) { - $uso = 'interior'; $tipo = $paginas->color>0? 'color': 'negro'; $parametrosRotativa = (object)array( - 'a_favor_fibra' => 0, // este parametro se cambia para comprobar - // en las dos direcciones (menos en rustica fresada que es siempre 1) + 'a_favor_fibra' => $datosPedido->a_favor_fibra, 'bnPages' => $paginas->negro, 'colorPages' => $paginas->color, 'rotativa_gota_negro' => 0, @@ -773,12 +772,12 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $tipo = array(); if( $paginas->color > 0 ){ - $tipo[] = 'color'; + $tipo = 'color'; $opciones_papel['color'] = 1; } if( $paginas->negro > 0 ){ $opciones_papel['bn'] = 1; - $tipo[] = 'negro'; + $tipo = 'negro'; } // Se obtienen los papeles disponibles @@ -828,95 +827,90 @@ 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) { - for ($i = 1; $i <= 1; $i++) { // Para que por defecto salga sólo a favor de fibra - - $parametrosRotativa->a_favor_fibra = $i; - - $tarifamodel = new MaquinasTarifasImpresionModel(); - [$tarifaId, $tarifa] = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo)?'color':$tipo); - if(!is_float($tarifa)){ - continue; - } - - // 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; - - $linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $precio_pliego_impresion; - // 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]; - - // impresion - $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'], - $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)){ - continue; - } - - $linea['fields']['precio_hora'] = $precio_hora*(1+$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*(1+$margen_precio_hora/100.0)*$tiempo; - $linea['fields']['margen_impresion_horas'] = $precio_hora*($margen_precio_hora/100.0)*$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'] = - $linea['fields']['precio_pedido'] + // papel - $linea['fields']['precio_click_pedido'] + // precio clicks del pedido - $linea['fields']['precio_impresion_horas'] + // horas de maquina - $linea['fields']['precio_tinta'] + // tinta - $linea['fields']['total_corte']; // corte - - array_push($lineas, $linea); + $tarifamodel = new MaquinasTarifasImpresionModel(); + [$tarifaId, $tarifa] = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo)?'color':$tipo); + if(!is_float($tarifa)){ + continue; } + + // 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; + + $linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $precio_pliego_impresion; + // 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]; + + // impresion + $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'], + $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)){ + continue; + } + + $linea['fields']['precio_hora'] = $precio_hora*(1+$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*(1+$margen_precio_hora/100.0)*$tiempo; + $linea['fields']['margen_impresion_horas'] = $precio_hora*($margen_precio_hora/100.0)*$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'] = + $linea['fields']['precio_pedido'] + // papel + $linea['fields']['precio_click_pedido'] + // precio clicks del pedido + $linea['fields']['precio_impresion_horas'] + // horas de maquina + $linea['fields']['precio_tinta'] + // tinta + $linea['fields']['total_corte']; // corte + + array_push($lineas, $linea); } } return $lineas; diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index fa031f48..e28c3ab8 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -280,6 +280,7 @@ class PresupuestoService extends BaseService $anchoLibro = $datosPedido->ancho; $altoLibro = $datosPedido->alto; + if (!$parametrosRotativa->a_favor_fibra) { $anchoLibro = $datosPedido->alto; $altoLibro = $datosPedido->ancho; diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index 4107e5a4..8110a9f8 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -1130,7 +1130,7 @@ if ($(''+ elementos.papel).select2('data').length > 0 && $(''+ elementos.gramaje).select2('data').length > 0 && - parseInt($(''+ elementos.paginas).val()) > 0 && + parseInt($(''+ elementos.paginas).val()) >= 0 && checkDatosPedidoForComp()) { @@ -1143,8 +1143,8 @@ else { if(!is_hq){ - if ($('#compPapelNegro').select2('data')>0 && $('#compPapelColor').select2('data')>0 && - $('#compGramajeNegro').select2('data')>0 && $('#compGramajeColor').select2('data')>0) + if ($('#compPapelNegro').select2('data').length>0 && $('#compPapelColor').select2('data').length>0 && + $('#compGramajeNegro').select2('data').length>0 && $('#compGramajeColor').select2('data').length>0) { if(($('#compPapelNegro').select2('data')[0].id == $('#compPapelColor').select2('data')[0].id && $('#compGramajeNegro').select2('data')[0].text.trim() == $('#compGramajeColor').select2('data')[0].text.trim())) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 089e5750..803ff635 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -158,7 +158,7 @@ function format(d) { ''+ '
' + '' + - '' + + '' + '
' + '
' + '' + @@ -2268,7 +2268,7 @@ function clear_lp_rot_bn(clear_selectors){ function change_lp_rot_bn_maquina(){ if(parseInt($('#lp_rot_bn_paginas').val())>0){ - calcularPresupuesto_rot_bn(); + calcularPresupuesto_rot_bn(true,false); } } @@ -2294,6 +2294,10 @@ function change_lp_rot_bn_aFavorFibra(){ $('#lp_rot_bn_gramaje option:selected').text().length>0 && parseInt($('#lp_rot_bn_papelImpresion option:selected').val())>0 ){ + var rowData = tableLineasPresupuesto.row('#lp_rot_bn').data() + rowData.aFavorFibra = $('#lp_rot_bn_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_rot_bn').data(rowData).draw(false) + calcularPresupuesto_rot_bn(false, true); } @@ -2313,7 +2317,7 @@ function calcularPresupuesto_rot_bn(fromComparador=false, updatedTipologias=fals gramaje: $('#lp_rot_bn_gramaje option:selected').text().trim(), maquina_id: $('#lp_rot_bn_maquina option:selected').val(), papel_impresion_id: $('#lp_rot_bn_papelImpresion option:selected').val(), - fibra: $('#lp_rot_bn_aFavorFibra').prop('checked') + fibra: fromComparador==false? ($('#lp_rot_bn_aFavorFibra').prop('checked')?1:0):1 } } @@ -2332,6 +2336,7 @@ function calcularPresupuesto_rot_bn(fromComparador=false, updatedTipologias=fals papel_generico: input_data.papel_generico, gramaje: input_data.gramaje, cliente_id: $('#clienteId').find(":selected").val(), + a_favor_fibra: fromComparador==false? ($('#lp_rot_bn_aFavorFibra').prop('checked')?1:0):1, : v }; @@ -2429,7 +2434,7 @@ function fill_lp_rot_bn(row, fromComparador=false){ gramaje: row.gramaje, papel_impresion_id: row.papelImpresionId, maquina_id: row.maquinaId, - fibra: row.aFavorFibra=='no'?false:true + fibra: row.aFavorFibra=='no'?0:1 } calcularPresupuesto_rot_bn(true, false, input_data); @@ -2592,7 +2597,8 @@ function clear_lp_rot_color(clear_selectors){ function change_lp_rot_color_maquina(){ if(parseInt($('#lp_rot_color_paginas').val())>0){ - calcularPresupuesto_rot_color(); + + calcularPresupuesto_rot_color(true,false); } } @@ -2617,7 +2623,10 @@ function change_lp_rot_color_aFavorFibra(){ $('#lp_rot_color_gramaje option:selected').text().length>0 && parseInt($('#lp_rot_color_papelImpresion option:selected').val())>0 ){ - + var rowData = tableLineasPresupuesto.row('#lp_rot_color').data() + rowData.aFavorFibra = $('#lp_rot_color_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_rot_color').data(rowData).draw(false) + calcularPresupuesto_rot_color(false, true); } } @@ -2636,17 +2645,19 @@ function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=f gramaje: $('#lp_rot_color_gramaje option:selected').text().trim(), maquina_id: $('#lp_rot_color_maquina option:selected').val(), papel_impresion_id: $('#lp_rot_color_papelImpresion option:selected').val(), - fibra: $('#lp_rot_bn_aFavorFibra').prop('checked') + fibra: fromComparador==false? ($('#lp_rot_color_aFavorFibra').prop('checked')?1:0):1 } } + paginas_color = isNaN(parseInt($('#lp_rot_color_numPagColor').val()))?input_data.paginas:parseInt($('#lp_rot_color_numPagColor').val()) + let datos = { type: 'interior_rot', color: 1, - hq: 0, + hq: 0, paginas: input_data.paginas, - paginas_negro: input_data.paginas-parseInt($('#lp_rot_color_numPagColor').val()), - paginas_color: parseInt($('#lp_rot_color_numPagColor').val()), + paginas_negro: input_data.paginas-paginas_color, + paginas_color: paginas_color, tirada: parseInt($('#tirada').val()), merma: parseInt($('#merma').val()), ancho: dimension.ancho, @@ -2655,6 +2666,7 @@ function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=f papel_generico: input_data.papel_generico, gramaje: input_data.gramaje, cliente_id: $('#clienteId').find(":selected").val(), + a_favor_fibra: fromComparador==false? ($('#lp_rot_color_aFavorFibra').prop('checked')?1:0):1, : v }; @@ -2699,7 +2711,7 @@ function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=f value.fields.a_favor_fibra == input_data.fibra) { value.fields.check_papel_total = $('#lp_rot_color' + '_checkPapel').is(":checked")?1:0 - value.fields.check_impresion_total = $('#lp_rot_bn' + '_checkClicks').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_rot_color' + '_checkClicks').is(":checked")?1:0 fill_lp_rot_color(value.fields); return false; @@ -2756,7 +2768,7 @@ function fill_lp_rot_color(row, fromComparador=false){ gramaje: row.gramaje, papel_impresion_id: row.papelImpresionId, maquina_id: row.maquinaId, - fibra: row.aFavorFibra=='no'?false:true + fibra: row.aFavorFibra=='no'?0:1 } calcularPresupuesto_rot_color(true, false, input_data); @@ -2795,6 +2807,7 @@ function eventos_lp_rot_color(){ $('#lp_rot_color_maquina').bind("focus", set_lp_rot_color_maquina); $('#lp_rot_color_maquina').bind("change", change_lp_rot_color_maquina); $('#lp_rot_color_paginas').bind("change", change_lp_rot_color_paginas); + $('#lp_rot_color_numPagColor').bind("change", change_lp_rot_color_paginas); $('#lp_rot_color_vercalculos').bind("click", {rowId: 'lp_rot_color'}, verCalculosInkjet); $('#lp_rot_color_aFavorFibra').bind("change", change_lp_rot_color_aFavorFibra); $('.lp-rot-color-tipologia').bind("change", change_lp_rot_color_tipologia); @@ -3314,6 +3327,7 @@ async function fill_bbdd_from_lp(presupuesto_id){ linea_data.rotativa_precio_hora_corte = rowData.precioHoraCorte linea_data.rotativa_tiempo_corte = rowData.tiempoCorte linea_data.rotativa_total_corte = rowData.totalCorte + linea_data.rotativa_a_favor_fibra = rowData.aFavorFibra==true?1:0 } data.push(linea_data) From 3f5a6288bd3ea21c97aa9dec575c9e74be88734d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Thu, 18 Jan 2024 08:42:58 +0100 Subject: [PATCH 03/13] Arreglado el bug --- .../_datosPresupuestoClienteItems.php | 17 +++++++++---- .../_lineasPresupuestoItems.php | 24 +++++++++---------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index 72b38d35..8a3d29a9 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -1082,6 +1082,10 @@ $('#compPaginasNegrohq').val('0'); $('#compPaginasNegro').val($('#paginas').val()) + if($('#tipoImpresion').select2('data')[0].id == 'negro'){ + $('#compGramajeColor').val('').trigger('change') + $('#compPapelColor').val(0).trigger('change') + } if( $('#tableCompIntPlana').DataTable().rows().count() > 0 && $('#tableCompIntPlana').DataTable().cell(0, 0).data().includes('hq')) { @@ -1101,6 +1105,11 @@ $('#compPaginasColor').val('0') $('#compPaginasNegro').val('0') $('#compPaginasNegrohq').val($('#paginas').val()) + + if($('#tipoImpresion').select2('data')[0].id == 'negrohq'){ + $('#compGramajeColorhq').val('').trigger('change') + $('#compPapelColorhq').val(0).trigger('change') + } if($('#tableCompIntPlana').DataTable().rows().count() > 0 && !$('#tableCompIntPlana').DataTable().cell(0, 0).data().includes('hq')) { @@ -1117,7 +1126,7 @@ }) - function checkComparadorInt(is_color, is_hq, actualizarLinea=false) { + function checkComparadorInt(is_color, is_hq, actualizarLineaPlana=false, actualizarLineaRot=false) { try{ @@ -1134,11 +1143,11 @@ checkDatosPedidoForComp()) { - getLineasIntPlana(is_color, is_hq, actualizarLinea).then((result) =>{ + getLineasIntPlana(is_color, is_hq, actualizarLineaPlana).then((result) =>{ // Para rotativa, si es color el papel y el gramaje tiene que ser igual if(!is_color) { - getLineasIntRot(is_hq, actualizarLinea); + getLineasIntRot(is_hq, actualizarLineaRot); } else { @@ -1149,7 +1158,7 @@ if(($('#compPapelNegro').select2('data')[0].id == $('#compPapelColor').select2('data')[0].id && $('#compGramajeNegro').select2('data')[0].text.trim() == $('#compGramajeColor').select2('data')[0].text.trim())) { - getLineasIntRot(is_hq, actualizarLinea); + getLineasIntRot(is_hq, actualizarLineaRot); } else { diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 3e98dcde..2506fb6c 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -3361,23 +3361,23 @@ function updateLineasPresupuesto(){ $('#tableLineasPresupuesto tbody tr:visible ').each(function(){ - if(this.id.endsWith('_bn')){ - checkComparadorInt(false, false, true); + if(this.id.endsWith('lp_bn')){ + checkComparadorInt(false, false, true, false); } - else if(this.id.endsWith('_bnhq')){ - checkComparadorInt(false, true, true); + else if(this.id.endsWith('lp_bnhq')){ + checkComparadorInt(false, true, true, false); } - else if(this.id.endsWith('_color')){ - checkComparadorInt(true, false, true); + else if(this.id.endsWith('lp_color')){ + checkComparadorInt(true, false, true, false); } - else if(this.id.endsWith('_colorhq')){ - checkComparadorInt(true, true, true); + else if(this.id.endsWith('lp_colorhq')){ + checkComparadorInt(true, true, true, false); } - else if(this.id.endsWith('_rot_bn')){ - checkComparadorInt(false, false, true) + else if(this.id.endsWith('lp_rot_bn')){ + checkComparadorInt(false, false, false, true) } - else if(this.id.endsWith('_rot_color')){ - checkComparadorInt(false,true, true); + else if(this.id.endsWith('lp_rot_color')){ + checkComparadorInt(false,true, false, true); } else if(this.id.endsWith('_cubierta')){ checkComparadorCubierta(true) From b6871b75fd4cbe10c1a3a46c5f10f4b293714eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Thu, 18 Jan 2024 11:21:58 +0100 Subject: [PATCH 04/13] bug solucionado --- .../_lineasPresupuestoItems.php | 185 +++++++++++------- 1 file changed, 116 insertions(+), 69 deletions(-) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 2506fb6c..68883764 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -861,7 +861,7 @@ $('.insertarLinea').on("click", function (e) { $('#addLineasPresupuesto').on("change", function (e) { - var data = tableLineasPresupuesto + var dataRows = tableLineasPresupuesto .rows() .data(); @@ -870,101 +870,148 @@ $('#addLineasPresupuesto').on("change", function (e) { // (solo una de cada en interior) case 'lp_bn': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_bn').length>0 || - data.filter(x => x.row_id === 'lp_bnhq').length>0 || - data.filter(x => x.row_id === 'lp_rot_bn').length>0 ) - - popErrorAlert('', 'divAlarmasLineasPresupuesto'); + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); + break } + var data = processRowData({tipo_maquina: 'toner'}, 'lp_bn', 'lp-bn'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_bn() break + case 'lp_bnhq': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_bn').length>0 || - data.filter(x => x.row_id === 'lp_bnhq').length>0 || - data.filter(x => x.row_id === 'lp_rot_bn').length>0 ) + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); - } - else{ - var data = processRowData({tipo_maquina: 'toner'}, 'lp_bnhq', 'lp-bnhq'); - tableLineasPresupuesto.row.add(data).draw(true) - eventos_lp_bnhq() + if(hayLinea){ + popErrorAlert('', 'divAlarmasLineasPresupuesto'); + break } + + var data = processRowData({tipo_maquina: 'toner'}, 'lp_bnhq', 'lp-bnhq'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_bnhq() break + case 'lp_color': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_color').length>0 || - data.filter(x => x.row_id === 'lp_colorhq').length>0 || - data.filter(x => x.row_id === 'lp_rot_color').length>0 ) + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); - } - else{ - var data = processRowData({tipo_maquina: 'toner'}, 'lp_color', 'lp-color'); - tableLineasPresupuesto.row.add(data).draw(true) - eventos_lp_color() + if(hayLinea){ + popErrorAlert('', 'divAlarmasLineasPresupuesto'); + break } + + var data = processRowData({tipo_maquina: 'toner'}, 'lp_color', 'lp-color'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_color() break + case 'lp_colorhq': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_color').length>0 || - data.filter(x => x.row_id === 'lp_colorhq').length>0 || - data.filter(x => x.row_id === 'lp_rot_color').length>0 ) + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); - } - else{ - var data = processRowData({tipo_maquina: 'toner'}, 'lp_colorhq', 'lp-colorhq'); - tableLineasPresupuesto.row.add(data).draw(true) - eventos_lp_colorhq() + if(hayLinea){ + popErrorAlert('', 'divAlarmasLineasPresupuesto'); + break } + + var data = processRowData({tipo_maquina: 'toner'}, 'lp_colorhq', 'lp-colorhq'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_colorhq() break + case 'lp_rot_bn': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_bn').length>0 || - data.filter(x => x.row_id === 'lp_bnhq').length>0 || - data.filter(x => x.row_id === 'lp_rot_bn').length>0 ) + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); - } - else{ - var data = processRowData({tipo_maquina: 'toner'}, 'lp_rot_bn', 'lp-rot-bn'); - tableLineasPresupuesto.row.add(data).draw(true) - eventos_lp_rot_bn() + if(hayLinea){ + popErrorAlert('', 'divAlarmasLineasPresupuesto'); + break } + + var data = processRowData({tipo_maquina: 'toner'}, 'lp_rot_bn', 'lp-rot-bn'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_rot_bn() break + case 'lp_rot_color': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_color').length>0 || - data.filter(x => x.row_id === 'lp_colorhq').length>0 || - data.filter(x => x.row_id === 'lp_rot_color').length>0 ) + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); - } - else{ - var data = processRowData({tipo_maquina: 'toner'}, 'lp_rot_color', 'lp-rot-color'); - tableLineasPresupuesto.row.add(data).draw(true) - eventos_lp_rot_color() + if(hayLinea){ + popErrorAlert('', 'divAlarmasLineasPresupuesto'); + break } + + var data = processRowData({tipo_maquina: 'toner'}, 'lp_rot_color', 'lp-rot-color'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_rot_color() break - case 'lp_cubierta': - if(data.length>0){ - if( data.filter(x => x.row_id === 'lp_cubierta').length>0) - popErrorAlert('', 'divAlarmasLineasPresupuesto'); + case 'lp_cubierta': + var hayLinea = false + for(let number=0;number', 'divAlarmasLineasPresupuesto'); + break } + + var data = processRowData({tipo_maquina: 'toner'}, 'lp_cubierta', 'lp-cubierta'); + tableLineasPresupuesto.row.add(data).draw(true) + eventos_lp_cubierta() break default: break From bbea1465afd7134a80591dbd14484f621e0e1df3 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Thu, 18 Jan 2024 19:41:46 +0100 Subject: [PATCH 05/13] Puliendo presupuesto --- ci4/app/Config/Routes.php | 2 +- ci4/app/Controllers/Pdf/PrintPresupuestos.php | 51 +++++++++++++++---- .../Presupuestos/Cosidotapablanda.php | 1 + .../Models/Presupuestos/PresupuestoModel.php | 3 +- .../viewCosidotapablandaForm.php | 2 +- .../themes/backend/vuexy/pdfs/presupuesto.php | 32 ++++++------ 6 files changed, 62 insertions(+), 29 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 6668f74a..a6f21f81 100755 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -557,7 +557,7 @@ $routes->group('presupuestodirecciones', ['namespace' => 'App\Controllers\Presup $routes->group('printpresupuestos', ['namespace' => 'App\Controllers\Pdf'], function ($routes) { $routes->get('', 'PrintPresupuestos::index', ['as' => 'viewPresupuesto']); - $routes->get('generar', 'PrintPresupuestos::generar', ['as' => 'presupuestoToPdf']); + $routes->get('generar/(:num)', 'PrintPresupuestos::generar/$1', ['as' => 'presupuestoToPdf']); }); diff --git a/ci4/app/Controllers/Pdf/PrintPresupuestos.php b/ci4/app/Controllers/Pdf/PrintPresupuestos.php index 46e48b08..c3e76ea3 100755 --- a/ci4/app/Controllers/Pdf/PrintPresupuestos.php +++ b/ci4/app/Controllers/Pdf/PrintPresupuestos.php @@ -1,4 +1,5 @@ getResourceForPdf(8)->get()->getRow(); - return view(getenv('theme.path').'pdfs/presupuesto', $data); + return view(getenv('theme.path') . 'pdfs/presupuesto', $data); } - public function generar(){ - $dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]); - //$dompdf->loadHtml(view('pdf_view')); - //$dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto')); - $dompdf->loadHtml($this->index()); + + public function generar($presupuesto_id) + { + + // Cargar modelos + $presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel'); + + // Get budget information + $data['presupuesto'] = $presupuestoModel->getResourceForPdf($presupuesto_id)->get()->getRow(); + + // Crear una instancia de Dompdf + $options = new \Dompdf\Options(); + $options->set('isHtml5ParserEnabled', true); + $options->set('isPhpEnabled', true); + $options->set('isRemoteEnabled', true); + $dompdf = new \Dompdf\Dompdf($options); + + // Contenido HTML del documento + $dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto', $data)); + + // Establecer el tamaño del papel $dompdf->setPaper('A4', 'portrait'); + + // Renderizar el PDF $dompdf->render(); - $dompdf->stream('presupuesto-demo.pdf'); + + // Obtener el contenido generado + $output = $dompdf->output(); + + // Establecer las cabeceras para visualizar en lugar de descargar + $file_name = "presupuesto-$presupuesto_id.pdf"; + return $this->response + ->setStatusCode(200) + ->setHeader('Content-Type', 'application/pdf') + ->setHeader('Content-Disposition', 'inline; filename="' . $file_name . '"') + ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') + ->setHeader('Pragma', 'public') + ->setHeader('Content-Length', strlen($output)) + ->setBody($output); } } \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 31f68100..7cd8ee21 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -279,6 +279,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController endif; // ($requestMethod === 'post') + $this->viewData['presupuestoId'] = $id; $this->viewData['presupuestoEntity'] = $presupuestoEntity; $this->viewData['isCosido'] = (new TipoPresupuestoModel())->get_isCosido($presupuestoEntity->tipo_impresion_id); diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 9c3ae2b4..3ca59c7d 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -361,10 +361,11 @@ class PresupuestoModel extends \App\Models\GoBaseModel "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.solapas_ancho AS solapas_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.total_presupuesto AS total_presupuesto, t1.total_precio_unidad AS total_precio_unidad, t2.nombre AS cliente, CONCAT(t3.first_name, ' ', t3.last_name) AS comercial, t3.email AS email_comercial, - t1.inc_rei AS inc_rei, t6.estado AS estado" ); $builder->join("clientes t2", "t1.cliente_id = t2.id", "left"); 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 6ffc3931..bc9a8b71 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 @@ -37,7 +37,7 @@ value="" /> - "btn btn-dark float-start me-sm-3 me-1",]) ?> + "btn btn-dark float-start me-sm-3 me-1",'target' => '_blank']) ?> "btn btn-info float-start me-sm-3 me-1",]) ?> "btn btn-secondary float-start",]) ?> diff --git a/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php b/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php index 2deccf92..a74f48ec 100755 --- a/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php +++ b/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php @@ -4,17 +4,16 @@ - <?= "Presupuesto " . "TBC" ?> @@ -49,7 +48,7 @@ FECHA: - fecha ?> + fecha)); ?> @@ -83,11 +82,11 @@ Ferro - ferro == 1) ? "SI" : "NO"); ?> + ferro == 1) ? "SI" : "NO"); ?> Prototipo - prototipo == 1) ? "SI" : "NO"); ?> + prototipo == 1) ? "SI" : "NO"); ?> Ferro Digital - ferro_digital == 1) ? "SI" : "NO"); ?> + ferro_digital == 1) ? "SI" : "NO"); ?> Formato @@ -169,7 +168,7 @@ Tipo Solapas - solapas == 1) ? "SI" : "NO"); ?> + solapas == 1) ? "SI" : "NO"); ?> Ancho solapas_ancho ?> cm @@ -185,15 +184,15 @@ Retractilado - NO + retractilado == 1) ? "SI" : "NO"); ?> Guardas - NO + guardas == 1) ? "SI" : "NO"); ?> Marcapáginas - NO + marcapaginas == 1) ? "SI" : "NO"); ?> @@ -210,7 +209,8 @@ El pedido será recogido por el cliente - + @@ -267,12 +267,14 @@ - comentarios_pdf)) { ?> + comentarios_pdf)) { ?>
OBSERVACIONES
-
{!! nl2br($obj->comentarios_pdf) !!}
+
+ comentarios_pdf); ?> +
-