From 0f00649f99d2f771d908b7857a7af9cab27db50a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Thu, 24 Oct 2024 08:50:13 +0200 Subject: [PATCH] corregidos errores --- .../Maquinastarifasimpresion.php | 112 ++-- ci4/app/Services/PresupuestoService.php | 534 +++++++++--------- .../cliente/viewPresupuestoclienteForm.php | 4 +- .../presupuestoCliente/presupuestoCliente.js | 22 +- 4 files changed, 371 insertions(+), 301 deletions(-) diff --git a/ci4/app/Controllers/Configuracion/Maquinastarifasimpresion.php b/ci4/app/Controllers/Configuracion/Maquinastarifasimpresion.php index d7fe1bbc..4d090cb4 100755 --- a/ci4/app/Controllers/Configuracion/Maquinastarifasimpresion.php +++ b/ci4/app/Controllers/Configuracion/Maquinastarifasimpresion.php @@ -1,4 +1,5 @@ -request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -81,10 +82,10 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate()) : + if ($this->canValidate()): try { $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); } catch (\Exception $e) { @@ -98,14 +99,14 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission endif; - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $this->model->db->insertID(); $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: return $this->redirect2listView('sweet-success', $message); @@ -129,25 +130,25 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController return $this->displayForm(__METHOD__); } // end function add() - + public function edit($requestedId = null) { - if ($requestedId == null) : + if ($requestedId == null): return $this->redirect2listView(); endif; $id = filter_var($requestedId, FILTER_SANITIZE_URL); $maquinasTarifasImpresion = $this->model->find($id); - if ($maquinasTarifasImpresion == false) : + if ($maquinasTarifasImpresion == false): $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifaImpresion')), $id]); return $this->redirect2listView('sweet-error', $message); endif; - - if ($this->request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -160,10 +161,10 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate()) : + if ($this->canValidate()): try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); } catch (\Exception $e) { @@ -180,12 +181,12 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController $thenRedirect = false; endif; - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $maquinasTarifasImpresion->id ?? $id; $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: return $this->redirect2listView('sweet-success', $message); @@ -220,30 +221,48 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController $response = Editor::inst($db, 'lg_maquinas_tarifas_impresion') ->fields( Field::inst('uso') - ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasTarifasImpresions.validation.uso.required')) + ->validator( + 'Validate::notEmpty', + array( + 'message' => lang('MaquinasTarifasImpresions.validation.uso.required') + ) ), Field::inst('tipo') - ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasTarifasImpresions.validation.tipo.required')) + ->validator( + 'Validate::notEmpty', + array( + 'message' => lang('MaquinasTarifasImpresions.validation.tipo.required') + ) ), Field::inst('precio') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::numeric', array( + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal')) + 'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal') + ) ) - ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasTarifasImpresions.validation.tipo.required')) + ->validator( + 'Validate::notEmpty', + array( + 'message' => lang('MaquinasTarifasImpresions.validation.tipo.required') + ) ), Field::inst('margen') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::numeric', array( + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal')) + 'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal') + ) ) - ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasTarifasImpresions.validation.tipo.required')) + ->validator( + 'Validate::notEmpty', + array( + 'message' => lang('MaquinasTarifasImpresions.validation.tipo.required') + ) ), Field::inst('maquina_id'), Field::inst('user_created_id'), @@ -269,16 +288,21 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController 'maquina_id' => $values['maquina_id'], 'tipo' => $values['tipo'], 'uso' => $values['uso'], - 'is_deleted' => 0)); + 'is_deleted' => 0 + )); - $id = $builder->get()->getFirstRow()->id; + $id = $builder->get()->getFirstRow(); + if ($id) { + $id = $id->id; + // No se pueden duplicar valores al crear o al editar + if ($builder->countAllResults() >= 1) { + if ( + ($action === Editor::ACTION_EDIT && $id != $pkey) + || $action === Editor::ACTION_CREATE + ) { - // No se pueden duplicar valores al crear o al editar - if ($builder->countAllResults() >= 1) { - if (($action === Editor::ACTION_EDIT && $id != $pkey) - || $action === Editor::ACTION_CREATE) { - - return lang('MaquinasTarifasImpresions.validation.duplicated_uso_tipo'); + return lang('MaquinasTarifasImpresions.validation.duplicated_uso_tipo'); + } } } } @@ -413,11 +437,11 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController protected function getMaquinaListItems($selId = null) { $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : + if (!empty($selId)): $maquinaModel = model('App\Models\Configuracion\MaquinaModel'); $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : + if (!empty($selOption)): $data[$selId] = $selOption[0]; endif; endif; diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index dcf1fa87..df045c24 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -33,7 +33,7 @@ class PresupuestoService extends BaseService const SANGRE_FORMAS = 5.0; const SANGRE_FORMAS_CUBIERTA = 20.0; - + public static function getLineaPresupuestoPlana($data) { @@ -52,10 +52,10 @@ class PresupuestoService extends BaseService if ($maquina->is_inkjet) { - $parametrosInkjet = (object)array( + $parametrosInkjet = (object) array( 'a_favor_fibra' => $a_favor_fibra, // este parametro se cambia para comprobar // en las dos direcciones (menos en rustica fresada que es siempre 1) - 'bnPages' => $isColor ? 0 : $datosPedido->paginas, + 'bnPages' => $isColor ? 0 : $datosPedido->paginas, 'colorPages' => ($uso == 'guardas') ? $datosPedido->paginas_impresion : ($isColor ? $datosPedido->paginas : 0), 'rotativa_gota_negro' => 0, 'rotativa_gota_color' => 0, @@ -74,13 +74,13 @@ class PresupuestoService extends BaseService } 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; - $parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg; + $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; + $parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg; } $tarifamodel = new \App\Models\Configuracion\MaquinasTarifasImpresionModel(); @@ -127,7 +127,7 @@ class PresupuestoService extends BaseService ); $clientePreciosModel = new \App\Models\Clientes\ClientePreciosModel(); - $config = (object)[ + $config = (object) [ "tipo" => ($uso == 'guardas') ? 'interior' : $uso, "tipo_maquina" => $maquina->is_inkjet ? 'inkjet' : 'toner', "tipo_impresion" => $tipo @@ -137,7 +137,7 @@ class PresupuestoService extends BaseService $linea['fields']['precio_click'], $maquina->velocidad ); - [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); + [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); if (is_null($precio_hora)) { @@ -190,7 +190,7 @@ class PresupuestoService extends BaseService return $linea; } - + public static function getLineaPresupuestoRotativa($data) { @@ -207,9 +207,9 @@ class PresupuestoService extends BaseService $paginas = $data['paginas']; $tarifamodel = new MaquinasTarifasImpresionModel(); - + $resultado_tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, is_array($tipo) ? 'color' : $tipo); - if($resultado_tarifa == null){ + if ($resultado_tarifa == null) { /* $info = [ 'maquina_id' => $maquina->maquina_id, @@ -219,20 +219,19 @@ class PresupuestoService extends BaseService log_message("error","No se ha encontrado tarifa para la maquina {maquina_id} y el uso {uso} y el tipo {tipo}", $info); */ return []; - } - else{ + } else { $tarifaId = $resultado_tarifa[0]; $tarifa = $resultado_tarifa[1]; $tarifa_margen = $resultado_tarifa[2]; } - + if (!is_float($tarifa)) { return []; } // precio del pliego de impresion - $linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosRotativa); - if(count($linea['fields']) == 0){ + $linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosRotativa); + if (count($linea['fields']) == 0) { return []; } @@ -245,7 +244,8 @@ class PresupuestoService extends BaseService $linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $linea['fields']['precios_pliegos']; // 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']['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; @@ -267,13 +267,13 @@ class PresupuestoService extends BaseService $linea['fields']['datosTipologias'] = //$datosTipologias[0]; - (Object)array( + (Object) array( 'gota_negro' => $parametrosRotativa->rotativa_gota_negro, 'gota_color' => $parametrosRotativa->rotativa_gota_color, 'negro' => $parametrosRotativa->rotativa_negro, 'cyan' => $parametrosRotativa->rotativa_cyan, 'magenta' => $parametrosRotativa->rotativa_magenta, - 'amarillo' => $parametrosRotativa->rotativa_amarillo + 'amarillo' => $parametrosRotativa->rotativa_amarillo ); // impresion @@ -290,7 +290,7 @@ class PresupuestoService extends BaseService $clientePreciosModel = new ClientePreciosModel(); - $config = (object)[ + $config = (object) [ "tipo" => $uso, "tipo_maquina" => 'inkjet', "tipo_impresion" => $tipo @@ -300,7 +300,7 @@ class PresupuestoService extends BaseService $linea['fields']['precio_click'], $maquina->velocidad ); - [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); + [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); if (is_null($precio_hora)) { return []; @@ -324,7 +324,7 @@ class PresupuestoService extends BaseService return $linea; } - + public static function getCostesLinea($uso, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa, $tarifa_margen, $forzar_a_favor_fibra = false) { @@ -335,7 +335,7 @@ class PresupuestoService extends BaseService $ancho_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta') ? $datosPedido->anchoExteriores : $datosPedido->ancho; $alto_calculo = ($uso == 'cubierta' || $uso == 'sobrecubierta') ? $datosPedido->altoExteriores : $datosPedido->alto; $formas = PresupuestoService::getNumFormasPlana($uso, $maquina, $ancho_calculo, $alto_calculo, $datosPedido->isCosido, $forzar_a_favor_fibra); - $response['fields'] = $formas; + $response['fields'] = $formas; } @@ -358,8 +358,8 @@ class PresupuestoService extends BaseService $rotativa = array_key_exists('rotativa', $opciones_papel) ? $opciones_papel['rotativa'] : 0; - $precio_click = $tarifa * (1 + $tarifa_margen / 100.0); - $margen_click = $tarifa * ($tarifa_margen / 100.0); + $precio_click = $tarifa * (1 + $tarifa_margen / 100.0); + $margen_click = $tarifa * ($tarifa_margen / 100.0); //interior (bn o color) if ($cubierta == 0 && $sobrecubierta == 0 && $rotativa == 0) { @@ -466,7 +466,7 @@ class PresupuestoService extends BaseService $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); - if(floor($factor_anchura) == 0){ + if (floor($factor_anchura) == 0) { return []; } @@ -566,7 +566,7 @@ class PresupuestoService extends BaseService $data = []; $data['pulgada'] = 1 / 1000000000000.0; - if($maquina->maquina_id == 91 || $maquina->maquina_id == 99 || $maquina->maquina_id == 114 || $maquina->maquina_id == 98) + if ($maquina->maquina_id == 91 || $maquina->maquina_id == 99 || $maquina->maquina_id == 114 || $maquina->maquina_id == 98) $data['resolucion'] = 1200; else $data['resolucion'] = 600; @@ -599,9 +599,9 @@ class PresupuestoService extends BaseService // 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), + 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 ); @@ -698,7 +698,7 @@ class PresupuestoService extends BaseService if ( !is_null($maquina->forzar_num_formas_horizontales_cubierta) && !is_null($maquina->forzar_num_formas_verticales_cubierta) - + ) { if ( @@ -842,7 +842,7 @@ class PresupuestoService extends BaseService { $ancho_total = 0; $sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA; - if($datosPedido->ancho > 210 || $datosPedido->alto > 297){ + if ($datosPedido->ancho >= 210) { $sangre_cubierta = 15; } @@ -865,31 +865,33 @@ class PresupuestoService extends BaseService // si es cubierta // se añade 7mm del ancho del cartón (2*3.5mm) por cada lado del lomo // más 7mm de vuelo+cajo por cada lado. Por último, 20mm de sangre por cada lado - if ($uso == "cubierta"){ + if ($uso == "cubierta") { $ancho_total += (2 * 7 + 2 * $sangre_cubierta + 6); - if($lomoRedondo){ + if ($lomoRedondo) { $ancho_total += 6; } } - + // si es sobrecubierta // Se añaden 5mm de sangre por cada lado + 2 * 7mm de vuelo portada y contraportada -> total 52 else $ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS) + 7; } // Wire-o y espiral (tapa blanda y tapa dura) - else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 6 || - $tipo_impresion_id == 7 || $tipo_impresion_id == 8) { + else if ( + $tipo_impresion_id == 5 || $tipo_impresion_id == 6 || + $tipo_impresion_id == 7 || $tipo_impresion_id == 8 + ) { // En este caso, la cubierta se imprime como dos formas separadas, pero hay que dejar un // espacio entre ellas para poder cortarlas $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina_id, 2); $ancho_total = floatval($datosPedido->ancho) * 2; - + if (count($calles) > 0) $ancho_total += $calles[0]->internas; // Tapa blanda - if($tipo_impresion_id == 7 || $tipo_impresion_id == 8){ + if ($tipo_impresion_id == 7 || $tipo_impresion_id == 8) { // añadimos ancho de las solapas // si se añaden solapas hay que sumar 3mm de los dobleces if ($datosPedido->solapas) { @@ -900,12 +902,11 @@ class PresupuestoService extends BaseService $ancho_total += (4 * self::SANGRE_FORMAS); } // Tapa dura - else{ + else { // Se le suma 20mm de sangre por cada lado. Como son 2 hojas independientes, se multiplica por 4 $ancho_total += (4 * $sangre_cubierta); } - } - else { + } else { // En cualquier otro caso se le suma 5mm de sangre por cada lado $ancho_total += (2 * self::SANGRE_FORMAS); } @@ -922,11 +923,15 @@ class PresupuestoService extends BaseService if ($datosPedido) { $alto_total = floatval($datosPedido->alto); + $sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA; + if ($datosPedido->alto >= 297) { + $sangre_cubierta = 15; + } // Tapa dura (cosido y fresado) if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { // Se añaden 20mm de sangre por cada lado + 3.5mm extra por cada lado de vuelo if ($uso == "cubierta") - $alto_total += (2*3.5 + 2 * self::SANGRE_FORMAS_CUBIERTA); + $alto_total += (2 * 3.5 + 2 * $sangre_cubierta); // si es sobrecubierta // Se añaden 5mm de sangre por cada lado + 7mm de vuelo else @@ -994,7 +999,7 @@ class PresupuestoService extends BaseService public static function checkLineasPresupuesto($input_data, $array_lineas) { - + $data['tipo_impresion_id'] = ($input_data['presupuesto'])->tipo_impresion_id; $data['tirada'] = ($input_data['presupuesto'])->tirada; $data['merma'] = ($input_data['presupuesto'])->merma; @@ -1009,23 +1014,21 @@ class PresupuestoService extends BaseService $data['solapas_ancho_sobrecubierta'] = ($input_data['presupuesto'])->solapas_ancho_sobrecubierta; $data['lomo_cubierta'] = ($input_data['presupuesto'])->lomo_cubierta; $data['lomo_sobrecubierta'] = ($input_data['presupuesto'])->lomo_sobrecubierta; - + $cambios = false; $lineas = []; foreach ($array_lineas as $linea) { - + // Si el papel o la máquina no existen, se utiliza la más barata del comparador if (!PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) { - - if(($input_data['presupuesto'])->papel_formato_personalizado == 0){ + + if (($input_data['presupuesto'])->papel_formato_personalizado == 0) { $papel_formato = (new PapelFormatoModel())->find(($input_data['presupuesto'])->papel_formato_id); $ancho = $papel_formato->ancho; $alto = $papel_formato->alto; - } - else - { + } else { $ancho = ($input_data['presupuesto'])->papel_formato_ancho; $alto = ($input_data['presupuesto'])->papel_formato_alto; } @@ -1038,10 +1041,10 @@ class PresupuestoService extends BaseService // Hay que ver si es rotativa o plana // Si es rotativa - if(str_contains($linea->tipo, '_rot_')){ + if (str_contains($linea->tipo, '_rot_')) { $datos = [ - 'datosPedido' => (object)array( + 'datosPedido' => (object) array( 'paginas' => ($input_data['presupuesto'])->paginas, 'tirada' => ($input_data['presupuesto'])->tirada, 'merma' => ($input_data['presupuesto'])->merma, @@ -1052,30 +1055,32 @@ class PresupuestoService extends BaseService ), 'papel_generico' => $papel_generico, 'gramaje' => $linea->gramaje, - 'paginas' => (object)array( + 'paginas' => (object) array( 'negro' => ($input_data['presupuesto'])->paginas - $linea->rotativa_pag_color, 'color' => $linea->rotativa_pag_color, - ), + ), 'cliente_id' => ($input_data['presupuesto'])->cliente_id, - '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, - )] + '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, + ) + ] ]; - $comp_data = PresupuestoService::obtenerComparadorRotativa($datos); + $comp_data = PresupuestoService::obtenerComparadorRotativa($datos); } // Si es plana - else{ + else { $datos = [ 'tipo_impresion_id' => $data['tipo_impresion_id'], - 'datosPedido' => (object)array( + 'datosPedido' => (object) array( 'paginas' => ($input_data['presupuesto'])->paginas, 'tirada' => ($input_data['presupuesto'])->tirada, 'merma' => ($input_data['presupuesto'])->merma, @@ -1088,53 +1093,53 @@ class PresupuestoService extends BaseService 'papel_generico' => $papel_generico, 'gramaje' => $linea->gramaje, 'cliente_id' => ($input_data['presupuesto'])->cliente_id, - '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, - )] + '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, + ) + ] ]; // si la línea es cubierta o sobrecubierta, es HQ y color - if( str_contains($linea->tipo, 'cubierta') ){ + if (str_contains($linea->tipo, 'cubierta')) { $datos['isColor'] = true; $datos['isHq'] = true; - + // además se añade los campos de lomo y solapas y el uso - if( str_contains($linea->tipo, 'sobrecubierta') ){ + if (str_contains($linea->tipo, 'sobrecubierta')) { $datos['datosPedido']->solapas = ($input_data['presupuesto'])->solapas_sobrecubierta; $datos['datosPedido']->solapas_ancho = ($input_data['presupuesto'])->solapas_ancho_sobrecubierta; $datos['datosPedido']->lomo = ($input_data['presupuesto'])->lomo_sobrecubierta; $datos['uso'] = 'sobrecubierta'; - } - else{ + } else { $datos['datosPedido']->solapas = ($input_data['presupuesto'])->solapas; $datos['datosPedido']->solapas_ancho = ($input_data['presupuesto'])->solapas_ancho; $datos['datosPedido']->lomo = ($input_data['presupuesto'])->lomo_cubierta; $datos['uso'] = 'cubierta'; } - } - else{ + } else { $datos['isColor'] = str_contains($linea->tipo, '_color') ? true : false; $datos['isHq'] = str_contains($linea->tipo, 'hq') ? true : false; $datos['uso'] = 'interior'; } - if( str_contains($linea->tipo, 'guardas') ){ + if (str_contains($linea->tipo, 'guardas')) { $datos['uso'] = 'guardas'; $datos['datosPedido']->paginas_impresion = $linea->paginas_impresion; } $comp_data = PresupuestoService::obtenerComparadorPlana($datos); - + } - // se ordena $comp_data usando el campo ['fields]['total_impresion'] - usort($comp_data, function($a, $b) { + // se ordena $comp_data usando el campo ['fields]['total_impresion'] + usort($comp_data, function ($a, $b) { return $a['fields']['total_impresion'] <=> $b['fields']['total_impresion']; }); (new PresupuestoLineaModel())->updatePreciosLineasPresupuesto($linea->id, $comp_data[0]); @@ -1144,29 +1149,29 @@ class PresupuestoService extends BaseService } // Si existe el papel y la máquina, se recalcula el precio con los mismos // parámetros y se comprueba - else{ + else { $nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($data, $linea); - if(count($nueva_linea) >0){ - if(round($nueva_linea['fields']['total_impresion'],2) != round($linea->total_linea, 2)){ + if (count($nueva_linea) > 0) { + if (round($nueva_linea['fields']['total_impresion'], 2) != round($linea->total_linea, 2)) { (new PresupuestoLineaModel())->updatePreciosLineasPresupuesto($linea->id, $nueva_linea); $linea_to_save = (new PresupuestoLineaModel())->find($linea->id); $cambios = true; array_push($lineas, $linea_to_save); - } - else{ + } else { array_push($lineas, $linea); } } - + } } return [$cambios, $lineas]; } - - private static function obtenerValorLineaPresupuesto($input_data, $linea){ + + private static function obtenerValorLineaPresupuesto($input_data, $linea) + { $tipo_impresion_id = $input_data['tipo_impresion_id']; $tirada = $input_data['tirada']; @@ -1183,7 +1188,7 @@ class PresupuestoService extends BaseService $lomo_cubierta = $input_data['lomo_cubierta']; $lomo_sobrecubierta = $input_data['lomo_sobrecubierta']; - if($papel_formato_personalizado == 0){ + if ($papel_formato_personalizado == 0) { $papel_formato = (new PapelFormatoModel())->find($papel_formato_id); $ancho = $papel_formato->ancho; $alto = $papel_formato->alto; @@ -1201,33 +1206,35 @@ class PresupuestoService extends BaseService 'id' => $papel_generico->id, 'nombre' => $papel_generico->nombre, ); - - $data['datosPedido'] = (object)array( + + $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), + '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['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){ + switch ($linea->tipo) { case 'lp_bn': case 'lp_bnhq': @@ -1240,7 +1247,7 @@ class PresupuestoService extends BaseService $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); $opciones_papel = PresupuestoService::get_opciones_papel('interior', $isColor); - if($linea->tipo == 'lp_guardas'){ + if ($linea->tipo == 'lp_guardas') { $data['uso'] = 'guardas'; $tipo = 'colorhq'; $data['datosPedido']->paginas_impresion = $linea->paginas_impresion; @@ -1265,17 +1272,17 @@ class PresupuestoService extends BaseService 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, + $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( + $data['parametrosRotativa'] = (object) array( 'a_favor_fibra' => $linea->rotativa_a_favor_fibra, - 'bnPages' => $data['paginas']->negro, - 'colorPages' => $data['paginas']->color, + 'bnPages' => $data['paginas']->negro, + 'colorPages' => $data['paginas']->color, 'rotativa_negro' => $linea->rotativa_negro, 'rotativa_cyan' => $linea->rotativa_cyan, 'rotativa_magenta' => $linea->rotativa_magenta, @@ -1286,64 +1293,67 @@ class PresupuestoService extends BaseService $output_data = PresupuestoService::getLineaPresupuestoRotativa($data); break; - + case 'lp_cubierta': case 'lp_sobrecubierta': - $data['uso'] = ($linea->tipo == 'lp_cubierta')? 'cubierta':'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; + $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['opciones_papel'] = $opciones_papel; $data['datosPedido']->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($data['uso'], $tipo_impresion_id, $data['datosPedido'], $maquina->maquina_id); $data['datosPedido']->altoExteriores = PresupuestoService::getAltoTotalExteriores($data['uso'], $tipo_impresion_id, $data['datosPedido']); - + $output_data = PresupuestoService::getLineaPresupuestoPlana($data); - if ($tipo_impresion_id == 5 || $tipo_impresion_id == 6 || - $tipo_impresion_id == 7 || $tipo_impresion_id == 8) { - + if ( + $tipo_impresion_id == 5 || $tipo_impresion_id == 6 || + $tipo_impresion_id == 7 || $tipo_impresion_id == 8 + ) { + $output_data['fields']['num_formas']['num_formas_horizontales'] *= 2; $output_data['fields']['num_formas']['value'] *= 2; } break; } - return $output_data; + return $output_data; } // Funcion que procesa los servicios y actualiza los precios en caso de cambio - public static function checkLineasServicios($input_data, $servicios){ - + public static function checkLineasServicios($input_data, $servicios) + { + $cambio_en_servicios = false; $cambio = false; - if(count($servicios->serviciosAcabado)>0){ - - [$cambio, $servicios->serviciosAcabado] = + if (count($servicios->serviciosAcabado) > 0) { + + [$cambio, $servicios->serviciosAcabado] = PresupuestoService::procesarServiciosAcabado($input_data, $servicios->serviciosAcabado); - $cambio_en_servicios = $cambio_en_servicios? $cambio_en_servicios: $cambio; + $cambio_en_servicios = $cambio_en_servicios ? $cambio_en_servicios : $cambio; } - if(count($servicios->serviciosManipulado)>0){ - - [$cambio, $servicios->serviciosManipulado] = + if (count($servicios->serviciosManipulado) > 0) { + + [$cambio, $servicios->serviciosManipulado] = PresupuestoService::procesarServiciosManipulado($input_data, $servicios->serviciosManipulado); - $cambio_en_servicios = $cambio_en_servicios? $cambio_en_servicios: $cambio; + $cambio_en_servicios = $cambio_en_servicios ? $cambio_en_servicios : $cambio; } - if(count($servicios->serviciosEncuadernacion)>0){ - - [$cambio, $servicios->serviciosEncuadernacion] = + if (count($servicios->serviciosEncuadernacion) > 0) { + + [$cambio, $servicios->serviciosEncuadernacion] = PresupuestoService::procesarServiciosEncuadernacion($input_data, $servicios->serviciosEncuadernacion); - $cambio_en_servicios = $cambio_en_servicios? $cambio_en_servicios: $cambio; + $cambio_en_servicios = $cambio_en_servicios ? $cambio_en_servicios : $cambio; } // Los servicios de preimpresion y los extra se dejan tal y como esten @@ -1354,25 +1364,27 @@ class PresupuestoService extends BaseService // Funcion que procesa los servicios de acabado del presupuesto // y actualiza los precios en caso de cambio de valor en precio_unidad - private static function procesarServiciosAcabado($input_data, $servicios){ + private static function procesarServiciosAcabado($input_data, $servicios) + { $serviciosUpdated = []; $cambio = false; $model = new PresupuestoAcabadosModel(); foreach ($servicios as $servicio) { - + // Si es un presupuesto duplicado hay que buscar el proveedor más barato - if($input_data['is_duplicado']){ + if ($input_data['is_duplicado']) { $nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], -1, $input_data['POD']); - } - else{ + } else { $nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], $servicio->proveedor_id, $input_data['POD']); - } - - if($nueva_tarifa && count($nueva_tarifa)>0){ - if(round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad,2) || - $nueva_tarifa[0]->margen != $servicio->margen){ + } + + if ($nueva_tarifa && count($nueva_tarifa) > 0) { + if ( + round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad, 2) || + $nueva_tarifa[0]->margen != $servicio->margen + ) { $servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2); $servicio->precio_total = round($nueva_tarifa[0]->total, 2); @@ -1383,7 +1395,7 @@ class PresupuestoService extends BaseService $servicio_temp = $servicio; $servicio_temp->tarifa_id = $servicio_temp->tarifa_acabado_id; $model->updateTarifas($input_data['presupuesto_id'], array($servicio_temp)); - + } } @@ -1392,7 +1404,8 @@ class PresupuestoService extends BaseService // Funcion que procesa los servicios de manipulado del presupuesto // y actualiza los precios en caso de cambio de valor en precio_unidad - private static function procesarServiciosManipulado($input_data, $servicios){ + private static function procesarServiciosManipulado($input_data, $servicios) + { $serviciosUpdated = []; $cambio = false; @@ -1401,9 +1414,11 @@ class PresupuestoService extends BaseService foreach ($servicios as $servicio) { $count = 0; $nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_manipulado_id, $input_data['tirada'], $input_data['POD']); - if($nueva_tarifa && count($nueva_tarifa)>0){ - if(round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad,2) || - $nueva_tarifa[0]->margen != $servicio->margen){ + if ($nueva_tarifa && count($nueva_tarifa) > 0) { + if ( + round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad, 2) || + $nueva_tarifa[0]->margen != $servicio->margen + ) { $servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2); $servicio->precio_total = round($nueva_tarifa[0]->total, 2); @@ -1414,7 +1429,7 @@ class PresupuestoService extends BaseService $servicio_temp = $servicio; $servicio_temp->tarifa_id = $servicio_temp->tarifa_manipulado_id; $model->updateTarifas($input_data['presupuesto_id'], array($servicio_temp)); - + } } @@ -1424,7 +1439,8 @@ class PresupuestoService extends BaseService // Funcion que procesa los servicios de encuadernacion del presupuesto // y actualiza los precios en caso de cambio de valor en precio_unidad - private static function procesarServiciosEncuadernacion($input_data, $servicios){ + private static function procesarServiciosEncuadernacion($input_data, $servicios) + { $serviciosUpdated = []; $cambio = false; @@ -1433,78 +1449,83 @@ class PresupuestoService extends BaseService $tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel'); foreach ($servicios as $servicio) { - + // Si es un presupuesto duplicado hay que buscar el proveedor más barato - if($input_data['is_duplicado']){ - if($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)){ - $paginas_cuadernillo = $servicio->paginas_por_cuadernillo??null; + if ($input_data['is_duplicado']) { + if ($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)) { + $paginas_cuadernillo = $servicio->paginas_por_cuadernillo ?? null; $nueva_tarifa = $model->getPrecioTarifaHoras( $servicio->tarifa_encuadernado_id, - $input_data['paginas'], + $input_data['paginas'], $input_data['tirada'], - -1, + -1, $input_data['POD'], - $paginas_cuadernillo); - }else{ + $paginas_cuadernillo + ); + } else { $nueva_tarifa = $model->getPrecioTarifa( $servicio->tarifa_encuadernado_id, - $input_data['paginas'], + $input_data['paginas'], $input_data['tirada'], - $input_data['ancho'], + $input_data['ancho'], $input_data['alto'], - -1, - $input_data['POD']); + -1, + $input_data['POD'] + ); } - + } // En caso de que el presupuesto no sea duplicado, recalcular la tarifa // con el mismo proveedor - else{ - if($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)){ - $paginas_cuadernillo = $servicio->paginas_por_cuadernillo??null; + else { + if ($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)) { + $paginas_cuadernillo = $servicio->paginas_por_cuadernillo ?? null; $nueva_tarifa = $model->getPrecioTarifaHoras( $servicio->tarifa_encuadernado_id, - $input_data['paginas'], + $input_data['paginas'], $input_data['tirada'], - $servicio->proveedor_id, + $servicio->proveedor_id, $input_data['POD'], - $paginas_cuadernillo); - }else{ + $paginas_cuadernillo + ); + } else { $nueva_tarifa = $model->getPrecioTarifa( - $servicio->tarifa_encuadernado_id, - $input_data['paginas'], + $servicio->tarifa_encuadernado_id, + $input_data['paginas'], $input_data['tirada'], - $input_data['ancho'], + $input_data['ancho'], $input_data['alto'], - $servicio->proveedor_id, - $input_data['POD']); + $servicio->proveedor_id, + $input_data['POD'] + ); } } - - if($nueva_tarifa && count($nueva_tarifa)>0){ - if(!isset($nueva_tarifa[0]->proveedor_id)){ + + if ($nueva_tarifa && count($nueva_tarifa) > 0) { + if (!isset($nueva_tarifa[0]->proveedor_id)) { $nueva_tarifa[0]->proveedor_id = null; } // Si el presupuesto no es duplicado, se comprueba que // no ha cambiado el precio unidad - if($nueva_tarifa[0]->tiempo==null) + if ($nueva_tarifa[0]->tiempo == null) $nueva_tarifa[0]->tiempo = 0; - if($servicio->tiempo == null) + if ($servicio->tiempo == null) $servicio->tiempo = 0; - if(round($nueva_tarifa[0]->precio_unidad, 2) != round(floatval($servicio->precio_unidad),2) || + if ( + round($nueva_tarifa[0]->precio_unidad, 2) != round(floatval($servicio->precio_unidad), 2) || $nueva_tarifa[0]->margen != floatval($servicio->margen) || - $nueva_tarifa[0]->tiempo != floatval($servicio->tiempo)){ + $nueva_tarifa[0]->tiempo != floatval($servicio->tiempo) + ) { $servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2); - $servicio->tiempo = $nueva_tarifa[0]->tiempo==null?0: round($nueva_tarifa[0]->tiempo, 2); + $servicio->tiempo = $nueva_tarifa[0]->tiempo == null ? 0 : round($nueva_tarifa[0]->tiempo, 2); $servicio->precio_total = round($nueva_tarifa[0]->total, 2); $servicio->margen = round($nueva_tarifa[0]->margen); $cambio = true; - } - else if($input_data['is_duplicado'] && $nueva_tarifa[0]->proveedor_id != $servicio->proveedor_id){ + } else if ($input_data['is_duplicado'] && $nueva_tarifa[0]->proveedor_id != $servicio->proveedor_id) { $servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2); - $servicio->tiempo = $nueva_tarifa[0]->tiempo==null?"": round($nueva_tarifa[0]->tiempo, 2); + $servicio->tiempo = $nueva_tarifa[0]->tiempo == null ? "" : round($nueva_tarifa[0]->tiempo, 2); $servicio->precio_total = round($nueva_tarifa[0]->total, 2); $servicio->margen = round($nueva_tarifa[0]->margen); $servicio->proveedor = $nueva_tarifa[0]->proveedor; @@ -1522,37 +1543,40 @@ class PresupuestoService extends BaseService } - public static function checkLineasEnvios($envios){ - + public static function checkLineasEnvios($envios) + { + $cambio = false; - if(count($envios)>0){ + if (count($envios) > 0) { $model = new TarifaEnvioModel(); foreach ($envios as $envio) { $paisId = $envio->pais_id; - $cp= $envio->cp; - $peso= $envio->peso; - $tipo_envio= $envio->entregaPieCalle==1?'palets':'cajas'; + $cp = $envio->cp; + $peso = $envio->peso; + $tipo_envio = $envio->entregaPieCalle == 1 ? 'palets' : 'cajas'; $nueva_tarifa = $model->getTarifaEnvio($paisId, $cp, $peso, $tipo_envio); - if($nueva_tarifa && count($nueva_tarifa)>0){ + if ($nueva_tarifa && count($nueva_tarifa) > 0) { $coste = 0; $margen = 0; - if($peso>$nueva_tarifa[0]->peso_max){ - $coste += floatval($nueva_tarifa[0]->peso_min) + ($peso-floatval($nueva_tarifa[0]->peso_min))*floatval($nueva_tarifa[0]->precio_adicional); + if ($peso > $nueva_tarifa[0]->peso_max) { + $coste += floatval($nueva_tarifa[0]->peso_min) + ($peso - floatval($nueva_tarifa[0]->peso_min)) * floatval($nueva_tarifa[0]->precio_adicional); } // si no se calcula linealmente - else{ - $m=(floatval($nueva_tarifa[0]->precio_max)-floatval($nueva_tarifa[0]->precio_min)) / ((floatval($nueva_tarifa[0]->peso_max)-floatval($nueva_tarifa[0]->peso_min))); - $b=floatval($nueva_tarifa[0]->precio_max)-$m*floatval($nueva_tarifa[0]->peso_max); - $coste += floatval($m*$peso+$b); + else { + $m = (floatval($nueva_tarifa[0]->precio_max) - floatval($nueva_tarifa[0]->precio_min)) / ((floatval($nueva_tarifa[0]->peso_max) - floatval($nueva_tarifa[0]->peso_min))); + $b = floatval($nueva_tarifa[0]->precio_max) - $m * floatval($nueva_tarifa[0]->peso_max); + $coste += floatval($m * $peso + $b); } - $margen += $coste*floatval($nueva_tarifa[0]->margen)/100.0; + $margen += $coste * floatval($nueva_tarifa[0]->margen) / 100.0; - if(round($coste, 2) != $envio->precio || - $margen != $envio->margen || $nueva_tarifa[0]->id != $envio->tarifa_id){ + if ( + round($coste, 2) != $envio->precio || + $margen != $envio->margen || $nueva_tarifa[0]->id != $envio->tarifa_id + ) { $envio->precio = round($coste, 2); $envio->margen = $margen; @@ -1562,9 +1586,9 @@ class PresupuestoService extends BaseService $presupuestoDirecciones = new PresupuestoDireccionesModel(); $presupuestoDirecciones->updateLineaEnvio($envio); } - + } - + } } @@ -1588,8 +1612,9 @@ class PresupuestoService extends BaseService // - gramaje: gramaje del papel seleccionado // - cliente_id: id del cliente al que va destinado el presupuesto // - datosTipolog: datos referentes a las tintas - public static function obtenerComparadorRotativa($input_data){ - + public static function obtenerComparadorRotativa($input_data) + { + $paginas = $input_data['paginas']; $datosPedido = $input_data['datosPedido']; $gramaje = $input_data['gramaje']; @@ -1600,10 +1625,10 @@ class PresupuestoService extends BaseService $tipo = $paginas->color > 0 ? 'color' : 'negro'; $uso = 'interior'; - $parametrosRotativa = (object)array( + $parametrosRotativa = (object) array( 'a_favor_fibra' => $datosPedido->a_favor_fibra, - 'bnPages' => $paginas->negro, - 'colorPages' => $paginas->color, + 'bnPages' => $paginas->negro, + 'colorPages' => $paginas->color, 'rotativa_gota_negro' => 0, 'rotativa_gota_color' => 0, ); @@ -1616,8 +1641,7 @@ class PresupuestoService extends BaseService if ($paginas->color > 0) { $tipo = 'color'; $opciones_papel['color'] = 1; - } - else { + } else { $opciones_papel['bn'] = 1; $tipo = 'negro'; } @@ -1648,12 +1672,12 @@ class PresupuestoService extends BaseService $datosTipologias = $datosTipolog; } - $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; + $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; $maquinamodel = new MaquinaModel(); @@ -1682,9 +1706,9 @@ class PresupuestoService extends BaseService $linea = PresupuestoService::getLineaPresupuestoRotativa($data); - if(empty($linea)) + if (empty($linea)) continue; - + array_push($lineas, $linea); } } @@ -1713,7 +1737,8 @@ class PresupuestoService extends BaseService // - cliente_id: id del cliente al que va destinado el presupuesto // - datosTipolog: datos referentes a las tintas (opcional) // - a_favor_fibra: dirección de la impresión - public static function obtenerComparadorPlana($input_data){ + public static function obtenerComparadorPlana($input_data) + { $uso = $input_data['uso']; $tipo_impresion_id = $input_data['tipo_impresion_id']; @@ -1726,7 +1751,7 @@ class PresupuestoService extends BaseService $datosTipolog = $input_data['datosTipolog'] ?? null; $a_favor_fibra = $datosPedido->a_favor_fibra ?? false; $lomoRedondo = $input_data['lomoRedondo'] ?? 0; - + $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); $opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor); @@ -1776,27 +1801,28 @@ class PresupuestoService extends BaseService $linea = PresupuestoService::getLineaPresupuestoPlana($data); - if ($tipo_impresion_id == 5 || $tipo_impresion_id == 6 || - $tipo_impresion_id == 7 || $tipo_impresion_id == 8) { + if ( + $tipo_impresion_id == 5 || $tipo_impresion_id == 6 || + $tipo_impresion_id == 7 || $tipo_impresion_id == 8 + ) { - if ($uso == 'cubierta'){ + if ($uso == 'cubierta') { $linea['fields']['num_formas']['num_formas_horizontales'] *= 2; $linea['fields']['num_formas']['value'] *= 2; } } - if(empty($linea)) + if (empty($linea)) continue; - if(!array_key_exists('tipo_linea', $linea['fields'])){ - if($isColor){ - if($isHq) + if (!array_key_exists('tipo_linea', $linea['fields'])) { + if ($isColor) { + if ($isHq) $linea['fields']['tipo_linea'] = 'lp_colorhq'; else $linea['fields']['tipo_linea'] = 'lp_color'; - } - else{ - if($isHq) + } else { + if ($isHq) $linea['fields']['tipo_linea'] = 'lp_bnhq'; else $linea['fields']['tipo_linea'] = 'lp_bn'; @@ -1815,12 +1841,12 @@ class PresupuestoService extends BaseService $model_pedido = model('App\Models\Pedidos\PedidoModel'); $model_pedido_linea = model('App\Models\Pedidos\PedidoLineaModel'); $model_cliente = model('App\Models\Clientes\ClienteModel'); - + $model_presupuesto = model('App\Models\Presupuestos\PresupuestoModel'); $datos_presupuesto = $model_presupuesto->find($presupuesto_id); $id_linea = 0; - + $data_pedido = [ 'total_precio' => $datos_presupuesto->total_aceptado, 'total_tirada' => $datos_presupuesto->tirada, @@ -1830,19 +1856,19 @@ class PresupuestoService extends BaseService ]; $pedido_id = $model_pedido->insert($data_pedido); - if($pedido_id){ + if ($pedido_id) { $data_pedido_linea = [ - "pedido_id" => $pedido_id, - "presupuesto_id" => $presupuesto_id, + "pedido_id" => $pedido_id, + "presupuesto_id" => $presupuesto_id, "ubicacion_id" => 1, // safetak por defecto "user_created_id" => auth()->user()->id, - "user_updated_id" => auth()->user()->id, + "user_updated_id" => auth()->user()->id, ]; $id_linea = $model_pedido_linea->insert($data_pedido_linea); PedidoXMLService::generate_xml($pedido_id); } - - if($id_linea != 0 && $pedido_id != 0){ + + if ($id_linea != 0 && $pedido_id != 0) { return true; } return false; @@ -1853,7 +1879,8 @@ class PresupuestoService extends BaseService *******************************/ // Funcion que comprueba si existe una maquina - private static function checkMaquina($maquina_id){ + private static function checkMaquina($maquina_id) + { $maquina = (new MaquinaModel())->find($maquina_id); if (!$maquina) { @@ -1864,7 +1891,8 @@ class PresupuestoService extends BaseService // Funcion que comprueba si existe un papel de impresion - private static function checkPapelImpresion($papel_impresion_id){ + private static function checkPapelImpresion($papel_impresion_id) + { $papel = (new PapelImpresionModel())->find($papel_impresion_id); if (!$papel) { diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php index 0e059585..76999017 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/viewPresupuestoclienteForm.php @@ -132,7 +132,9 @@ - $presupuestoId,"type" => "presupuesto"]) ?> + + $presupuestoId,"type" => "presupuesto"]) ?> + diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index 11861c1e..c49157ec 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -79,6 +79,7 @@ class PresupuestoCliente { } $(".calcular-presupuesto").on('change', this.checkForm.bind(this)); + } @@ -145,9 +146,21 @@ class PresupuestoCliente { if (datos_to_check.direcciones) { delete datos_to_check.direcciones; } - if (datos_to_check.posPaginasColor) { + if (datos_to_check.posPaginasColor == "" || datos_to_check.posPaginasColor == null) { delete datos_to_check.posPaginasColor; } + if(datos_to_check.cubierta.acabados.barniz == undefined){ + delete datos_to_check.cubierta.acabados.barniz; + } + if(datos_to_check.cubierta.acabados.plastificado == undefined){ + delete datos_to_check.cubierta.acabados.plastificado; + } + if(datos_to_check.cubierta.acabados.estampado == undefined){ + delete datos_to_check.cubierta.acabados.estampado; + } + if(datos_to_check.sobrecubierta.plastificado == undefined){ + delete datos_to_check.sobrecubierta.plastificado; + } if (Object.values(datos_to_check).every(this.#isValidDataForm)) { try { @@ -352,7 +365,7 @@ class PresupuestoCliente { $(`#containerTiradasEnvios .tirada-envio input[tirada="${response.tiradas[0]}"]`).trigger('click'); }, 0); } - + $('#loader').modal('hide'); // DEBUG //console.log(response); } @@ -420,7 +433,6 @@ class PresupuestoCliente { cubierta: { tipoCubierta: this.disenioCubierta.disenioCubierta.filter('.selected').attr('id'), - lomoRedondo: this.disenioCubierta.disenioCubierta.filter('.selected').attr('id').includes('Redondo') ? 1 : 0, papelCubierta: this.disenioCubierta.getPapel(), gramajeCubierta: this.disenioCubierta.getGramaje(), cabezada: this.disenioCubierta.getCabezada(), @@ -438,6 +450,10 @@ class PresupuestoCliente { 'prototipo': this.datosGenerales.prototipo.is(':checked') ? 1 : 0, }, }; + let lomoRedondo = 0; + if(this.disenioCubierta.disenioCubierta.filter('.selected').length > 0) + lomoRedondo = this.disenioCubierta.disenioCubierta.filter('.selected').attr('id').includes('Redondo') ? 1 : 0; + this.datos.cubierta.lomoRedondo = lomoRedondo; if (this.datos.tipo == "cosido") { this.datos.paginasCuadernillo = this.datosGenerales.paginasCuadernillo.val();