From 8dca0936c580c3bab7995449af099fd8b477b969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Wed, 18 Dec 2024 22:32:23 +0100 Subject: [PATCH] trabajando en cubierta --- ci4/app/Config/Routes.php | 3 +- .../Presupuestos/Presupuestoadmin.php | 461 ++++++++------- .../Services/PresupuestoClienteService.php | 61 +- .../form/presupuestos/admin/comparador.js | 425 -------------- .../presupuestoAdmin/sections/comparador.js | 527 +++++++++++++++--- 5 files changed, 768 insertions(+), 709 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index d9c91ec9..ff28a98c 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -580,7 +580,8 @@ $routes->group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos $routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']); $routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1'); - $routes->post('comparadorplana', 'Presupuestoadmin::obtenerComparadorPlana'); + $routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior'); + $routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores'); $routes->get('papelgenerico', 'Presupuestoadmin::getPapelGenerico'); $routes->get('papelgramaje', 'Presupuestoadmin::getGramaje'); }); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index 4a40f096..cd73620d 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -82,9 +82,9 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController { - - if ($this->request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -104,36 +104,36 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } $noException = true; - if ($successfulResult = $this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($successfulResult = $this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)): // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)) : + if ($this->canValidate($this->model->validationRulesAdd, $this->model->validationMessagesAdd)): try { $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); } catch (\Exception $e) { $noException = false; $this->dealWithException($e); } - else : + else: $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Presupuestos.presupuesto'))]); $this->session->setFlashdata('formErrors', $this->model->errors()); endif; $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); return redirect()->to(site_url('presupuestoadmin/edit/' . $id))->with('sweet-success', $message); - else : + else: return $this->redirect2listView('sweet-success', $message); endif; - else : + else: $this->session->setFlashData('sweet-success', $message); endif; @@ -167,20 +167,20 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController public function edit($requestedId = null) { - if ($requestedId == null) : + if ($requestedId == null): return $this->redirect2listView(); endif; $id = filter_var($requestedId, FILTER_SANITIZE_URL); $presupuestoEntity = $this->model->find($id); - if ($presupuestoEntity == false) : + if ($presupuestoEntity == false): $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Presupuestos.presupuesto')), $id]); return $this->redirect2listView('sweet-error', $message); endif; - - if ($this->request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -252,16 +252,16 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $successfulResult = false; } else { - 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) { $noException = false; $this->dealWithException($e); } - else : + else: $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Presupuestos.presupuesto'))]); $this->session->setFlashdata('formErrors', $this->model->errors()); @@ -273,16 +273,16 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController endif; } - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $presupuestoEntity->id ?? $id; $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('Presupuestos.presupuesto'))]) . '.'; // $message .= anchor("admin/presupuestos/{$id}/edit", lang('Basic.global.continueEditing') . '?'); //$message = ucfirst(str_replace("'", "\'", $message)); - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); - else : + else: if ($this->request->isAJAX()) { $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -296,14 +296,14 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } endif; - else : + else: if ($this->request->isAJAX()) { - if($presupuestoEntity->estado_id==1 && $presupuestoEntity->confirmar==1){ + if ($presupuestoEntity->estado_id == 1 && $presupuestoEntity->confirmar == 1) { $this->model->confirmarPresupuesto($id); PresupuestoService::crearPedido($id); } - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ @@ -345,7 +345,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController // Lineas Presupuesto [$cambios_lineas, $this->viewData['lineasPresupuesto']] = $this->getLineasPresupuesto($presupuestoEntity); - $this->viewData['presupuestoEntity']->cambios_lineas=$cambios_lineas; + $this->viewData['presupuestoEntity']->cambios_lineas = $cambios_lineas; // Servicios $this->viewData['serviciosPreimpresion'] = $this->getServiciosPreimpresion(); @@ -353,10 +353,10 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $this->viewData['serviciosManipulado'] = $this->getServiciosManipulado(); $this->viewData['serviciosAcabado'] = $this->getServiciosAcabado(); $this->viewData['serviciosExtra'] = $this->getServiciosExtra(); - + [$cambios_en_servicios, $servicios] = $this->getLineasServicios($presupuestoEntity); - $this->viewData['presupuestoEntity']->cambios_servicios=$cambios_en_servicios; - + $this->viewData['presupuestoEntity']->cambios_servicios = $cambios_en_servicios; + $this->viewData['serviciosEncuadernacionList'] = $servicios->serviciosEncuadernacion; $this->viewData['serviciosAcabadosList'] = $servicios->serviciosAcabado; $this->viewData['serviciosManipuladoList'] = $servicios->serviciosManipulado; @@ -365,8 +365,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController // Direciones presupuesto [$cambios_en_direcciones, $this->viewData['direccionesList']] = $this->getLineasDirecciones($presupuestoEntity); - $this->viewData['presupuestoEntity']->cambios_direcciones=$cambios_en_direcciones; - + $this->viewData['presupuestoEntity']->cambios_direcciones = $cambios_en_direcciones; + $this->viewData['POD'] = $this->getPOD(); $this->viewData['serviciosAutomaticos'] = [ @@ -386,7 +386,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController // Si se ha llamado a esta funcion porque se ha duplicado el presupuesto // se actualiza la bbdd para que sólo ejecute algunas funciones una vez - if($presupuestoEntity->is_duplicado){ + if ($presupuestoEntity->is_duplicado) { $this->model->removeIsDuplicado($presupuestoEntity->id); } @@ -406,22 +406,23 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController public function delete($id = null) { if (!empty(static::$pluralObjectNameCc) && !empty(static::$singularObjectNameCc)) { - $objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc).'.'.static::$singularObjectNameCc)); + $objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc) . '.' . static::$singularObjectNameCc)); } else { $objName = lang('Basic.global.record'); } - - if (!$this->soft_delete){ + + if (!$this->soft_delete) { if (!$this->model->delete($id)) { return $this->failNotFound(lang('Basic.global.deleteError', [$objName])); } - } - else{ + } else { $datetime = (new \CodeIgniter\I18n\Time("now")); - $rawResult = $this->model->where('id',$id) - ->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'), - 'is_deleted' => $this->delete_flag]) + $rawResult = $this->model->where('id', $id) + ->set([ + 'deleted_at' => $datetime->format('Y-m-d H:i:s'), + 'is_deleted' => $this->delete_flag + ]) ->update(); if (!$rawResult) { return $this->failNotFound(lang('Basic.global.deleteError', [$objName])); @@ -463,7 +464,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return $response; } - public function cargar($id){ + public function cargar($id) + { if ($this->request->isAJAX()) { $modelPapelFormato = new PapelFormatoModel(); @@ -474,12 +476,12 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $presupuesto = $this->model->find($id); $data = []; if ($presupuesto) { - + $data['lc'] = $presupuesto->lomo_cubierta; $data['lsc'] = $presupuesto->lomo_sobrecubierta; $data['tipo_impresion'] = $presupuesto->tipo_impresion_id; $data['cosido'] = $presupuesto->cosido; - + $data['datosGenerales']['id'] = $presupuesto->id; $data['datosGenerales']['state'] = intval($presupuesto->estado_id); $data['datosGenerales']['updated_at'] = date('d/m/Y', strtotime($presupuesto->updated_at)); @@ -495,7 +497,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['datosGenerales']['cliente']['nombre'] = $modelCliente->getNombre($presupuesto->cliente_id); $data['datosGenerales']['referenciaCliente'] = $presupuesto->referencia_cliente; - + $data['datosLibro']['papelFormatoId'] = $presupuesto->papel_formato_id; $data['datosLibro']['papelFormatoNombre'] = $modelPapelFormato->getNombre($presupuesto->papel_formato_id); $data['datosLibro']['papelFormatoPersonalizado'] = $presupuesto->papel_formato_personalizado; @@ -536,7 +538,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $item['papel_nombre'] = $modelPapelGenerico->getNombre($item['papel_id'])['nombre']; } $data['comparador']['posPagColor'] = $presupuesto->comp_pos_paginas_color; - + /* @@ -609,9 +611,10 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } - public function obtenerComparadorPlana(){ + public function obtenerComparadorInterior() + { - if($this->request->isAJAX()){ + if ($this->request->isAJAX()) { $cliente_id = $this->request->getPost('cliente_id'); $datosPedido = $this->request->getPost('datosPedido'); @@ -623,9 +626,11 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $tipo_impresion_id = $this->request->getPost('tipo_impresion_id'); $uso = $this->request->getPost('uso'); + $tipo_maquina = $this->request->getPost('tipo_maquina'); + $data = array( 'cliente_id' => $cliente_id, - 'datosPedido' => (object)$datosPedido, + 'datosPedido' => (object) $datosPedido, 'papel_generico' => $papel_generico, 'gramaje' => $gramaje, 'papelInteriorDiferente' => true, @@ -636,15 +641,94 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController 'uso' => $uso ); - $data = PresupuestoClienteService::obtenerPresupuestoClienteInterior($data, true); + if ($tipo_maquina == 'rotativa') { + $data['papelInteriorDiferente'] = false; + $lineas = PresupuestoClienteService::obtenerPresupuestoClienteInteriorRotativa($data, true); + } else + $lineas = PresupuestoClienteService::obtenerPresupuestoClienteInterior($data, true); return $this->respond( [ 'status' => 1, - 'data' => $data + 'data' => $lineas ] ); + } else { + return $this->failUnauthorized('Invalid request', 403); } - else{ + } + + public function obtenerComparadorExteriores() + { + + $resultado = []; + if ($this->request->isAJAX()) { + + $cubierta = $this->request->getPost('cubierta') ?? false; + $sobrecubierta = $this->request->getPost('sobrecubierta') ?? false; + + // cubierta y sobrecubierta siempre colorhq + $isColor = true; + $isHq = true; + + if ($cubierta) { + + $cliente_id = $cubierta['cliente_id']; + $datosPedido = $cubierta['datosPedido']; + $papel_generico = $cubierta['papel_generico']; + $gramaje = $cubierta['gramaje']; + $paginas_color = $this->request->getPost('paginas_color') ?? 0; + $tipo_impresion_id = $this->request->getPost('tipo_impresion_id'); + $uso = $this->request->getPost('uso'); + $lomoRedondo = $cubierta['lomoRedondo'] ?? false; + + $data = array( + 'cliente_id' => $cliente_id, + 'datosPedido' => (object) $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'paginas_color' => $paginas_color, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'tipo_impresion_id' => $tipo_impresion_id, + 'uso' => $uso, + 'lomoRedondo' => $lomoRedondo + ); + $lineas = PresupuestoClienteService::obtenerCubierta($data, true); + $resultado['cubierta'] = $lineas; + } + + if ($sobrecubierta) { + + $cliente_id = $sobrecubierta['cliente_id']; + $datosPedido = $sobrecubierta['datosPedido']; + $papel_generico = $sobrecubierta['papel_generico']; + $gramaje = $sobrecubierta['gramaje']; + $paginas_color = $this->request->getPost('paginas_color') ?? 0; + $tipo_impresion_id = $this->request->getPost('tipo_impresion_id'); + $uso = $this->request->getPost('uso'); + + $data = array( + 'cliente_id' => $cliente_id, + 'datosPedido' => (object) $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'paginas_color' => $paginas_color, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'tipo_impresion_id' => $tipo_impresion_id, + 'uso' => $uso + ); + $lineas = PresupuestoClienteService::obtenerSobrecubierta($data, true); + $resultado['sobrecubierta'] = $lineas; + } + + return $this->respond( + [ + 'status' => 1, + 'data' => $resultado + ] + ); + } else { return $this->failUnauthorized('Invalid request', 403); } } @@ -687,41 +771,41 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $resourceData = $this->model->getResource($searchValues, $tipo_impresion_id)->orderBy($order1, $dir1)->orderBy($order2, $dir2) ->orderBy($order3, $dir3)->limit($length, $start)->get()->getResultObject(); - foreach ($resourceData as $item) : - if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : + foreach ($resourceData as $item): + if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100): $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); endif; - if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : + if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100): $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); endif; - if (isset($item->comentarios_cliente) && strlen($item->comentarios_cliente) > 100) : + if (isset($item->comentarios_cliente) && strlen($item->comentarios_cliente) > 100): $item->comentarios_cliente = character_limiter($item->comentarios_cliente, 100); endif; - if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : + if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100): $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); endif; - if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : + if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100): $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); endif; - if (isset($item->comentarios_produccion) && strlen($item->comentarios_produccion) > 100) : + if (isset($item->comentarios_produccion) && strlen($item->comentarios_produccion) > 100): $item->comentarios_produccion = character_limiter($item->comentarios_produccion, 100); endif; - if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : + if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100): $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); endif; - if (isset($item->titulo) && strlen($item->titulo) > 100) : + if (isset($item->titulo) && strlen($item->titulo) > 100): $item->titulo = character_limiter($item->titulo, 100); endif; - if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : + if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100): $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); endif; - if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : + if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100): $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); endif; - if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : + if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100): $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); endif; - if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : + if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100): $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); endif; endforeach; @@ -731,7 +815,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $isColor = $reqData['color'] ?? false; $isHq = $reqData['hq'] ?? false; - $datosPedido = (object)array( + $datosPedido = (object) array( 'paginas' => intval($reqData['paginas']) ?? 0, 'tirada' => intval($reqData['tirada']) ?? 0, 'merma' => intval($reqData['merma']) ?? 0, @@ -757,7 +841,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $datosTipolog = $reqData['negro'] ?? null; if (!is_null($datosTipolog)) { $datosTipolog = []; - $data = (object)array( + $data = (object) array( 'negro' => floatval($reqData['negro']) ?? 0, 'cyan' => floatval($reqData['cyan']) ?? 0, 'magenta' => floatval($reqData['magenta']) ?? 0, @@ -801,7 +885,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } else if ($type == 'interior_rot') { - $paginas = (object)array( + $paginas = (object) array( 'negro' => intval($reqData['paginas_negro'] ?? 0), 'color' => intval($reqData['paginas_color'] ?? 0), ); @@ -809,7 +893,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $datosTipolog = $reqData['negro'] ?? null; if (!is_null($datosTipolog)) { $datosTipolog = []; - $data = (object)array( + $data = (object) array( 'negro' => floatval($reqData['negro']) ?? 0, 'cyan' => floatval($reqData['cyan']) ?? 0, 'magenta' => floatval($reqData['magenta']) ?? 0, @@ -828,7 +912,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController 'cliente_id' => $cliente_id, 'datosTipolog' => $datosTipolog ]; - + $resourceData = PresupuestoService::obtenerComparadorRotativa($input_data); } else if ($type == 'cubierta' || $type == 'sobrecubierta') { @@ -844,10 +928,10 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController 'papel_generico' => $papel_generico, 'gramaje' => $gramaje, 'isColor' => 1, // Cubierta y sobrecubierta siempre color HQ - 'isHq' => 1, + 'isHq' => 1, 'cliente_id' => $cliente_id, ); - + $resourceData = PresupuestoService::obtenerComparadorPlana($input_data); } @@ -900,25 +984,22 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController ]; return $this->respond($data); - } - - else if ($tipo == 'duplicar'){ + } else if ($tipo == 'duplicar') { $presupuesto_id = $reqData['presupuesto_id'] ?? -1; $result = $this->duplicarPresupuesto($presupuesto_id); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); - if($result['success']){ + if ($result['success']) { $data = [ 'id' => $result['id'], $csrfTokenName => $newTokenHash - ]; + ]; return $this->respond($data); - } - else{ + } else { $data = [ 'error' => $result['message'], $csrfTokenName => $newTokenHash - ]; + ]; return $this->respond($data); } } @@ -942,7 +1023,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController switch ($tipo_impresion_id) { - // Fresado tapa dura + // Fresado tapa dura case 1: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleFresadoTD'); $viewData['isCosido'] = 0; @@ -950,7 +1031,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_fresasdo_tapa_dura"); break; - // Fresado tapa blanda + // Fresado tapa blanda case 2: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleFresadoTB'); $viewData['isCosido'] = 0; @@ -958,7 +1039,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_fresasdo_tapa_blanda"); break; - // Cosido tapa dura + // Cosido tapa dura case 3: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleCosidoTD'); $viewData['isCosido'] = 1; @@ -966,7 +1047,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_cosido_tapa_dura"); break; - // Cosido tapa blanda + // Cosido tapa blanda case 4: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleCosidoTB'); $viewData['isCosido'] = 1; @@ -974,7 +1055,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_cosido_tapa_blanda"); break; - // Espiral tapa dura + // Espiral tapa dura case 5: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleEspiralTD'); $viewData['isCosido'] = 0; @@ -982,7 +1063,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_espiral_tapa_dura"); break; - // Espiral tapa blanda + // Espiral tapa blanda case 6: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleEspiralTB'); $viewData['isCosido'] = 0; @@ -990,7 +1071,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_espiral_tapa_blanda"); break; - // Wire-o tapa dura + // Wire-o tapa dura case 7: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleWireoTD'); $viewData['isCosido'] = 0; @@ -998,7 +1079,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_wireo_tapa_dura"); break; - // Wire-o tapa blanda + // Wire-o tapa blanda case 8: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleWireoTB'); $viewData['isCosido'] = 0; @@ -1006,7 +1087,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $breadcrumbTitle = lang("App.menu_libros_wireo_tapa_blanda"); break; - // Grapado + // Grapado case 21: $viewData['pageTitle'] = lang('Presupuestos.moduleTitleGrapado'); $viewData['isCosido'] = 0; @@ -1026,7 +1107,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return $viewData; } - + /** * Duplica un presupuesto dado por su ID. @@ -1041,67 +1122,68 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController * Si ocurre una excepción, la clave 'success' será false y una clave 'message' contendrá el mensaje de la excepción. * @throws \Exception Si ocurre un error durante la operación. */ - private function duplicarPresupuesto($id){ + private function duplicarPresupuesto($id) + { - try{ - - $presupuesto = $this->model->find($id); - $presupuesto->titulo = $presupuesto->titulo .' - ' . lang('Presupuestos.duplicado'); - $presupuesto->is_duplicado = 1; - $presupuesto->estado_id = 1; - $new_id = $this->model->insert($presupuesto); - - $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) { - $acabado->presupuesto_id = $new_id; - $presupuestoAcabadosModel->insert($acabado); - } - - $presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); - foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) { - $encuadernacion->presupuesto_id = $new_id; - $presupuestoEncuadernacionesModel->insert($encuadernacion); - } - - $presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel'); - foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) { - $manipulado->presupuesto_id = $new_id; - $presupuestoManipuladosModel->insert($manipulado); - } - - $presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel'); - foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) { - $preimpresion->presupuesto_id = $new_id; - $presupuestoPreimpresionesModel->insert($preimpresion); - } + try { - $presupuestoServiciosExtraModel = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel'); - foreach ($presupuestoServiciosExtraModel->where('presupuesto_id', $presupuesto->id)->findAll() as $servicioExtra) { - $servicioExtra->presupuesto_id = $new_id; - $presupuestoServiciosExtraModel->insert($preimpresion); - } - - $presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); - foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) { - $direccion->presupuesto_id = $new_id; - $presupuestoDireccionesModel->insert($direccion); - } - - $presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel'); - $presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id); - - return [ - 'success' => true, - 'id' => $new_id - ]; - - }catch(\Exception $e){ - return [ - 'success' => false, - 'message' => $e->getMessage() - ]; - } - } + $presupuesto = $this->model->find($id); + $presupuesto->titulo = $presupuesto->titulo . ' - ' . lang('Presupuestos.duplicado'); + $presupuesto->is_duplicado = 1; + $presupuesto->estado_id = 1; + $new_id = $this->model->insert($presupuesto); + + $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) { + $acabado->presupuesto_id = $new_id; + $presupuestoAcabadosModel->insert($acabado); + } + + $presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); + foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) { + $encuadernacion->presupuesto_id = $new_id; + $presupuestoEncuadernacionesModel->insert($encuadernacion); + } + + $presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel'); + foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) { + $manipulado->presupuesto_id = $new_id; + $presupuestoManipuladosModel->insert($manipulado); + } + + $presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel'); + foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) { + $preimpresion->presupuesto_id = $new_id; + $presupuestoPreimpresionesModel->insert($preimpresion); + } + + $presupuestoServiciosExtraModel = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel'); + foreach ($presupuestoServiciosExtraModel->where('presupuesto_id', $presupuesto->id)->findAll() as $servicioExtra) { + $servicioExtra->presupuesto_id = $new_id; + $presupuestoServiciosExtraModel->insert($preimpresion); + } + + $presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); + foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) { + $direccion->presupuesto_id = $new_id; + $presupuestoDireccionesModel->insert($direccion); + } + + $presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel'); + $presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id); + + return [ + 'success' => true, + 'id' => $new_id + ]; + + } catch (\Exception $e) { + return [ + 'success' => false, + 'message' => $e->getMessage() + ]; + } + } public function allItemsSelect() { @@ -1223,11 +1305,11 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController protected function getClienteListItems($selId = null) { $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Clientes.cliente'))])]; - if (!empty($selId)) : + if (!empty($selId)): $clienteModel = model('App\Models\Clientes\ClienteModel'); $selOption = $clienteModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : + if (!empty($selOption)): $data[$selId] = $selOption[0]; endif; endif; @@ -1257,7 +1339,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController { $model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel'); $data = $model->getServiciosAcabadoCubierta(); - array_unshift($data, (object)['id' => '', 'label' => lang('Basic.global.None')]); + array_unshift($data, (object) ['id' => '', 'label' => lang('Basic.global.None')]); return $data; } @@ -1265,38 +1347,39 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController { $model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel'); $data = $model->getServiciosAcabadoSobrecubierta(); - array_unshift($data, (object)['id' => '', 'label' => lang('Basic.global.None')]); + array_unshift($data, (object) ['id' => '', 'label' => lang('Basic.global.None')]); return $data; } - public function getPapelGenerico(){ + public function getPapelGenerico() + { if ($this->request->isAJAX()) { $POD_value = $this->getPOD(); $tirada = $this->request->getGet("tirada"); - $isPOD = intval($tirada)<=intval($POD_value); + $isPOD = intval($tirada) <= intval($POD_value); $tipo_impresion_id = $this->request->getGet("tipo_impresion"); $tapa_dura = model('App\Models\Configuracion\TipoPresupuestoModel')->get_isTapaDura(intval($tipo_impresion_id)); $tipo = $this->request->getGet("tipo"); - + $uso = $this->request->getGet("uso") ?? 'interior'; $cubierta = false; - if($uso=='cubierta'){ + if ($uso == 'cubierta') { $cubierta = true; } $sobrecubierta = false; - if($uso=='sobrecubierta'){ + if ($uso == 'sobrecubierta') { $sobrecubierta = true; } $guardas = false; - if($uso=='guardas'){ + if ($uso == 'guardas') { $guardas = true; } $rotativa = false; - if($uso=='rotativa'){ + if ($uso == 'rotativa') { $rotativa = true; } @@ -1314,35 +1397,36 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } } - public function getGramaje(){ + public function getGramaje() + { if ($this->request->isAJAX()) { $papel_generico_id = $this->request->getGet("papel_generico"); $POD_value = $this->getPOD(); $tirada = $this->request->getGet("tirada"); - $isPOD = intval($tirada)<=intval($POD_value); + $isPOD = intval($tirada) <= intval($POD_value); $tipo_impresion_id = $this->request->getGet("tipo_impresion"); $tapa_dura = model('App\Models\Configuracion\TipoPresupuestoModel')->get_isTapaDura(intval($tipo_impresion_id)); $tipo = $this->request->getGet("tipo"); - + $uso = $this->request->getGet("uso") ?? 'interior'; $cubierta = false; - if($uso=='cubierta'){ + if ($uso == 'cubierta') { $cubierta = true; } $sobrecubierta = false; - if($uso=='sobrecubierta'){ + if ($uso == 'sobrecubierta') { $sobrecubierta = true; } $guardas = false; - if($uso=='guardas'){ + if ($uso == 'guardas') { $guardas = true; } $rotativa = false; - if($uso=='rotativa'){ + if ($uso == 'rotativa') { $rotativa = true; } @@ -1361,13 +1445,13 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } - + protected function getServiciosPreimpresion() { $model = model('App\Models\Tarifas\TarifapreimpresionModel'); $data = $model->getServiciosPreimpresionSelector(); - array_unshift($data, (object)array( + array_unshift($data, (object) array( "value" => 0, "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioPreimpresion'))]) )); @@ -1378,7 +1462,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController { $model = model('App\Models\Tarifas\TarifaextraModel'); $data = $model->getServiciosExtraSelector(); - array_unshift($data, (object)array( + array_unshift($data, (object) array( "value" => 0, "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioExtra'))]) )); @@ -1397,7 +1481,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $papelFormatoModel = model('App\Models\Configuracion\PapelFormatoModel'); $data = $papelFormatoModel->getElementsForMenu(); array_shift($data); - array_unshift($data, (object)['id' => '', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); + array_unshift($data, (object) ['id' => '', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); return $data; } @@ -1412,7 +1496,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController { $model = model('App\Models\Tarifas\TarifaManipuladoModel'); $data = $model->getServiciosManipuladoSelector(); - array_unshift($data, (object)array( + array_unshift($data, (object) array( "value" => 0, "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioManipulado'))]) )); @@ -1425,25 +1509,27 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return $model->getPOD(); } - protected function getLineasPresupuesto($presupuestoEntity){ + protected function getLineasPresupuesto($presupuestoEntity) + { $lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id); - + $input_data = []; $input_data['presupuesto'] = $presupuestoEntity; - + return PresupuestoService::checkLineasPresupuesto($input_data, $lineas); } - protected function getLineasServicios($presupuestoEntity){ - - $serviciosPresupuesto = (object)array(); + protected function getLineasServicios($presupuestoEntity) + { + + $serviciosPresupuesto = (object) array(); $serviciosPresupuesto->serviciosAcabado = (new PresupuestoAcabadosModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosPreimpresion = (new PresupuestoPreimpresionesModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosEncuadernacion = (new PresupuestoEncuadernacionesModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosManipulado = (new PresupuestoManipuladosModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); $serviciosPresupuesto->serviciosExtra = (new PresupuestoServiciosExtraModel())->getResource($presupuestoEntity->id)->get()->getResultObject(); - + $input_data = []; $input_data['presupuesto_id'] = $presupuestoEntity->id; $input_data['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id; @@ -1451,19 +1537,17 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $input_data['POD'] = $this->getPOD(); $input_data['paginas'] = $presupuestoEntity->paginas; $input_data['is_duplicado'] = $presupuestoEntity->is_duplicado; - - if($presupuestoEntity->papel_formato_personalizado){ - $input_data['ancho'] = $presupuestoEntity->papel_formato_ancho ; - $input_data['alto'] = $presupuestoEntity->papel_formato_alto ; - } - else{ + + if ($presupuestoEntity->papel_formato_personalizado) { + $input_data['ancho'] = $presupuestoEntity->papel_formato_ancho; + $input_data['alto'] = $presupuestoEntity->papel_formato_alto; + } else { $model = model("App\Models\Configuracion\PapelFormatoModel"); $papel = $model->find($presupuestoEntity->papel_formato_id); - if($papel){ + if ($papel) { $input_data['ancho'] = $papel->ancho; $input_data['alto'] = $papel->alto; - } - else{ + } else { $input_data['ancho'] = 0; $input_data['alto'] = 0; } @@ -1472,11 +1556,12 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return PresupuestoService::checkLineasServicios($input_data, $serviciosPresupuesto); } - protected function getLineasDirecciones($presupuestoEntity){ + protected function getLineasDirecciones($presupuestoEntity) + { $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); $direccionesEnvio = $model->where('presupuesto_id', $presupuestoEntity->id)->findAll(); - + return PresupuestoService::checkLineasEnvios($direccionesEnvio); } } diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php index c181d990..8064173f 100644 --- a/ci4/app/Services/PresupuestoClienteService.php +++ b/ci4/app/Services/PresupuestoClienteService.php @@ -65,7 +65,7 @@ class PresupuestoClienteService extends BaseService } } - public static function obtenerCubierta($data) + public static function obtenerCubierta($data, $return_raw=false) { $uso = $data['uso']; @@ -76,7 +76,6 @@ class PresupuestoClienteService extends BaseService $isColor = $data['isColor']; $isHq = $data['isHq']; $cliente_id = $data['cliente_id']; - $paginas_color = $data['paginas_color']; $lomoRedondo = $data['lomoRedondo']; $lineas_cubierta = []; @@ -102,6 +101,14 @@ class PresupuestoClienteService extends BaseService } if (count($lineas_cubierta) > 0) { + if($return_raw){ + $lineas_cubierta = array_values(array_unique($lineas_cubierta, SORT_REGULAR)); + + return[ + 'cubierta' => $lineas_cubierta + ]; + } + usort( $lineas_cubierta, function ($a, $b) { @@ -119,7 +126,7 @@ class PresupuestoClienteService extends BaseService return $lineas_cubierta; } - public static function obtenerSobrecubierta($data) + public static function obtenerSobrecubierta($data, $return_raw=false) { $uso = $data['uso']; @@ -154,6 +161,14 @@ class PresupuestoClienteService extends BaseService } if (count($lineas_sobrecubierta) > 0) { + if($return_raw){ + $lineas_sobrecubierta = array_values(array_unique($lineas_sobrecubierta, SORT_REGULAR)); + + return[ + 'cubierta' => $lineas_sobrecubierta + ]; + } + usort( $lineas_sobrecubierta, function ($a, $b) { @@ -247,22 +262,25 @@ class PresupuestoClienteService extends BaseService $uso = $data['uso']; $tipo_impresion_id = $data['tipo_impresion_id']; $datosPedido = $data['datosPedido']; + $paginas_color = $data['paginas_color']; if ($data['papelInteriorDiferente'] == false) $papel_generico = $data['papel_generico']; else { $papel_generico = $data['papel_generico']['negro']; - $papel_generico_color = $data['papel_generico']['color']; + if($paginas_color>0) + $papel_generico_color = $data['papel_generico']['color']; } if ($data['papelInteriorDiferente'] == false) $gramaje = $data['gramaje']; else { $gramaje = $data['gramaje']['negro']; - $gramaje_color = $data['gramaje']['color']; + if($paginas_color>0) + $gramaje_color = $data['gramaje']['color']; } $isColor = $data['isColor']; $isHq = $data['isHq']; $cliente_id = $data['cliente_id']; - $paginas_color = $data['paginas_color']; + $paginas_negro = $datosPedido->paginas - $paginas_color; @@ -293,6 +311,14 @@ class PresupuestoClienteService extends BaseService } if (count($linea_negro_plana) > 0) { + /*if($return_raw){ + $linea_negro_plana = array_values(array_unique($linea_color_plana, SORT_REGULAR)); + + return[ + 'negro' => $linea_negro_plana + ]; + }*/ + usort( $linea_negro_plana, function ($a, $b) { @@ -335,6 +361,14 @@ class PresupuestoClienteService extends BaseService } if (count($linea_color_plana) > 0) { + /*if($return_raw){ + $linea_color_plana = array_values(array_unique($linea_color_plana, SORT_REGULAR)); + + return[ + 'color' => $linea_color_plana + ]; + }*/ + usort( $linea_color_plana, function ($a, $b) { @@ -349,8 +383,7 @@ class PresupuestoClienteService extends BaseService } } - // Si hay negro y color, y se hace con el mismo papel, hay que buscar la combinación - // más económica con la misma máquna + if($return_raw){ $linea_negro_plana = array_values(array_unique($linea_negro_plana, SORT_REGULAR)); $linea_color_plana = array_values(array_unique($linea_color_plana, SORT_REGULAR)); @@ -360,6 +393,8 @@ class PresupuestoClienteService extends BaseService 'color' => $linea_color_plana ]; } + // Si hay negro y color, y se hace con el mismo papel, hay que buscar la combinación + // más económica con la misma máquna if ( $paginas_negro > 0 && $paginas_color > 0 && $data['papelInteriorDiferente'] == 0 && count($linea_negro_plana) > 0 && count($linea_color_plana) > 0 @@ -500,7 +535,7 @@ class PresupuestoClienteService extends BaseService * - isHq: si es alta calidad * - paginas_color: número de páginas a color */ - private static function obtenerPresupuestoClienteInteriorRotativa($data) + public static function obtenerPresupuestoClienteInteriorRotativa($data, $return_raw = false) { $datosPedido = $data['datosPedido']; $papel_generico = $data['papel_generico']; @@ -539,6 +574,14 @@ class PresupuestoClienteService extends BaseService if (count($linea_rotativa) > 0) { + if($return_raw){ + $linea_rotativa = array_values(array_unique($linea_rotativa, SORT_REGULAR)); + + return[ + 'rotativa' => $linea_rotativa, + ]; + } + usort( $linea_rotativa, function ($a, $b) { diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js index 0a71c2c5..bb1e770f 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/comparador.js @@ -1,18 +1,3 @@ -/******************************* - * Eventos asociados a elementos HTML - *******************************/ - - - - - - - - -$('#compPosPaginasColor').on("keyup", function () { - computarPaginasColor(this.value); -}); - @@ -23,163 +8,6 @@ $('#compPosPaginasColor').on("keyup", function () { *******************************/ -function getRowFromLineaRot(linea) { - - $precio_impresion = isNaN(parseFloat(linea.fields.precio_impresion_horas + linea.fields.precio_click_pedido)) ? "" : - parseFloat(linea.fields.precio_impresion_horas + linea.fields.precio_click_pedido).toFixed(2); - - return { - 'tipo': 'rotativa', - 'paginas': linea.fields.paginas, - 'papel': linea.fields.papel_generico, - 'gramaje': linea.fields.gramaje, - 'marca': linea.fields.papel_impresion, - 'aFavorFibra': linea.fields.a_favor_fibra == 1 ? 'si' : 'no', - 'maquina': linea.fields.maquina, - 'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2), - 'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2), - 'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6), - 'libro': isNaN(parseFloat(linea.fields.precio_libro)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2), - 'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2), - 'lomo': isNaN(parseFloat(linea.fields.mano)) ? "" : parseFloat(linea.fields.mano).toFixed(2), - 'peso': isNaN(parseFloat(linea.fields.peso)) ? "" : parseFloat(linea.fields.peso).toFixed(2), - 'horasMaquina': isNaN(parseFloat(linea.fields.horas_maquina)) ? "" : parseFloat(linea.fields.horas_maquina).toFixed(2), - 'precioImpresion': $precio_impresion, - 'precioPagNegro': isNaN(parseFloat(linea.fields.precio_pagina_negro)) ? "" : parseFloat(linea.fields.precio_pagina_negro).toFixed(6), - 'precioPagColor': isNaN(parseFloat(linea.fields.precio_pagina_color)) ? "" : parseFloat(linea.fields.precio_pagina_color).toFixed(6), - 'totalTinta': isNaN(parseFloat(linea.fields.precio_tinta)) ? "" : parseFloat(linea.fields.precio_tinta).toFixed(2), - 'totalCorte': isNaN(parseFloat(linea.fields.total_corte)) ? "" : parseFloat(linea.fields.total_corte).toFixed(2), - 'total': isNaN(parseFloat(linea.fields.total_impresion)) ? "" : (parseFloat(linea.fields.total_impresion)).toFixed(2), - 'maquinaId': linea.fields.maquina_id, - 'maquinaVelocidad': linea.fields.maquina_velocidad, - 'tiempoMaquina': linea.fields.tiempo_maquina, - 'papelGenericoId': linea.fields.papel_generico_id, - 'papelImpresionId': linea.fields.papel_impresion_id, - 'paginasColor': linea.fields.paginas_color, - 'tarifa_impresion_id': linea.fields.tarifa_impresion_id, - } -} - - - - - - - - - - - - - -function clearIntLineas(is_color) { - //$("#tableCompIntPlana").DataTable().rows( '.selected' ).deselect(); - var tabla = $('#tableCompIntPlana').DataTable(); - tabla - .rows(function (idx, data, node) { - return data['tipo'].includes(is_color ? 'color' : 'bn'); - }) - .remove() - .draw(); - //$('#tableCompIntPlana').DataTable().clear().draw(); - $('#insertarPlanaBtn').css('display', 'none'); -} - - -function clearCubierta() { - - var tabla = $('#tableCompCubierta').DataTable(); - tabla - .rows(function (idx, data, node) { - return data['tipo'] === 'cubierta'; - }) - .remove() - .draw(); - if(tabla.rows().count()==0) - $('#insertarCubiertaBtn').css('display', 'none'); -} - -function clearSobrecubierta() { - - - var tabla = $('#tableCompCubierta').DataTable(); - tabla - .rows(function (idx, data, node) { - return data['tipo'] === 'sobrecubierta'; - }) - .remove() - .draw(); - if(tabla.rows().count()==0) - $('#insertarCubiertaBtn').css('display', 'none'); -} - -function clearGuardas() { - - $('#tableCompGuardas').DataTable().clear().draw(); - $('#insertarGuardasBtn').css('display', 'none'); -} - -function clearIntRot() { - - $('#errorComRot').html(''); - $('#tableCompIntRotativa').DataTable().clear().draw(); - $('#insertarRotativaBtn').css('display', 'none'); -} - - - - -function selectIntRotLineas() { - - $("#tableCompIntRotativa").DataTable().rows('.selected').deselect(); - - let value_total = 0.00; - - if ($("#tableCompIntRotativa").DataTable().rows().count() > 0) { - - $("#tableCompIntRotativa").DataTable().row(0).nodes().to$().toggleClass('selected'); - value_total = parseFloat($("#tableCompIntRotativa").DataTable().rows(0).data()[0]['total']) - }; - - - $('#total_comp_rot').html(value_total.toFixed(2)); -} - -function selectCubiertaLineas() { - - $("#tableCompCubierta").DataTable().rows('.selected').deselect(); - - cubierta_selected = false; - sobrecubierta_selected = false; - - if ($("#tableCompCubierta").DataTable().rows().count() > 0) { - - $("#tableCompCubierta").DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { - if (!cubierta_selected && $('#tableCompCubierta').DataTable().cell(rowIdx, 0).data() === 'cubierta') { - $("#tableCompCubierta").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - cubierta_selected = true; - } - if (!sobrecubierta_selected && $('#tableCompCubierta').DataTable().cell(rowIdx, 0).data() === 'sobrecubierta') { - $("#tableCompCubierta").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - sobrecubierta_selected = true; - } - }); - } - - var table = $("#tableCompCubierta").DataTable(); - var rows = table.rows('.selected').indexes(); - var data = table.rows(rows).data(); - - var value_total = 0.00; - - for (let i = 0; i < data.length; i++) { - - value_total += parseFloat(data[i]['total']) - } - - - $('#total_comp_cubierta').html(value_total.toFixed(2)); -} function selectGuardasLineas() { @@ -197,140 +25,12 @@ function selectGuardasLineas() { $('#total_comp_guardas').html(value_total.toFixed(2)); } -function getIDsComparador(is_color, is_hq) { - - if (!is_color) { - if (is_hq) { - var papel = '#compPapelNegrohq'; - var gramaje = '#compGramajeNegrohq'; - var paginas = '#compPaginasNegrohq'; - } - else { - var papel = '#compPapelNegro'; - var gramaje = '#compGramajeNegro'; - var paginas = '#compPaginasNegro'; - } - } - else { - if (is_hq) { - var papel = '#compPapelColorhq'; - var gramaje = '#compGramajeColorhq'; - var paginas = '#compPaginasColorhq'; - } - else { - var papel = '#compPapelColor'; - var gramaje = '#compGramajeColor'; - var paginas = '#compPaginasColor'; - } - } - return { - papel: papel, - gramaje: gramaje, - paginas: paginas, - } -} - -function getDimensionLibro() { - var ancho = 0; - var alto = 0; - - // TO-DO - if (!document.getElementById('papelFormatoPersonalizado').checked) { - ancho = 170//parseFloat($('#papelFormatoId').getText().trim().split(" x ")[0]); - alto = 240//parseFloat($('#papelFormatoId').getText().trim().split(" x ")[1]); - - } - - else if (document.getElementById('papelFormatoPersonalizado').checked) { - ancho = parseFloat(document.getElementById('papelFormatoAncho').value); - alto = parseFloat(document.getElementById('papelFormatoAlto').value); - } - return { - ancho: ancho, - alto: alto - } -} - -function checkInputsForRotativa() { - - // Si es color, el gramaje y el papel tiene que ser el mismo - try { - - if ($('#tipoImpresion').select2('data')[0].id == 'color') { - if ($('#compPapelNegro').select2('data')[0].id == $('#compPapelColor').select2('data')[0].id && - $('#compGramajeNegro').select2('data')[0].text.trim() == $('#compGramajeColor').select2('data')[0].text.trim()) { - - return true; - } - } - else if ($('#tipoImpresion').select2('data')[0].id == 'negro') { - if ($('#compPapelNegro').select2('data')[0].id.length > 0 && - $('#compGramajeNegro').select2('data')[0].text.length > 0) { - return true; - } - } - } - catch (error) { - - return false; - } - - return false; -} -function fillIntPlana(data, is_color, is_hq) { - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompIntPlana').DataTable().row - .add(getRowFromLineaInt(is_color ? (is_hq ? 'colorhq' : 'color') : (is_hq ? 'bnhq' : 'bn'), linea)) - .draw() - }) -} -function fillIntRot(data) { - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") { - $('#tableCompIntRotativa').DataTable().row - .add(getRowFromLineaRot(linea)) - .draw() - } - }) -} -function fillCubierta(data) { - - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompCubierta').DataTable().row - .add(getRowFromLineaInt('cubierta', linea)) - .draw() - }) -} - -function fillSobrecubierta(data) { - - let sorted = data.lineas.sort( - (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? - -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); - sorted.forEach(function (linea) { - if (typeof linea.error == "undefined") - $('#tableCompCubierta').DataTable().row - .add(getRowFromLineaInt('sobrecubierta', linea)) - .draw() - }) -} function fillGuardas(data) { @@ -345,130 +45,5 @@ function fillGuardas(data) { }) } -function clearCompTable() { - - $('#insertarPlanaBtn').addClass('d-none') - $('#insertarRotativaBtn').addClass('d-none') - $('#total_comp_plana').html('0.00') - $('#total_comp_rot').html('0.00') -} - -function generateCompJSON() { - - data = {} - - if ($('#tipoImpresion').select2('data')[0].id == 'negro' || $('#tipoImpresion').select2('data')[0].id == 'color') { - try { - bn_obj = { - "bn": { - 'paginas': $('#compPaginasNegro').val(), - 'papel_id': $('#compPapelNegro').select2('data')[0].id, - 'gramaje': $('#compGramajeNegro').select2('data')[0].text.trim(), - } - } - } - catch (e) { - bn_obj = {} - } - $.extend(data, bn_obj); - } - - if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' || $('#tipoImpresion').select2('data')[0].id == 'colorhq') { - try { - bnhq_obj = { - "bnhq": { - 'paginas': $('#compPaginasNegrohq').val(), - 'papel_id': $('#compPapelNegrohq').select2('data')[0].id, - 'gramaje': $('#compGramajeNegrohq').select2('data')[0].text.trim(), - } - } - } - catch (e) { - bnhq_obj = {} - } - $.extend(data, bnhq_obj); - } - - if ($('#tipoImpresion').select2('data')[0].id == 'color') { - try { - color_obj = { - "color": { - 'paginas': $('#compPaginasColor').val(), - 'papel_id': $('#compPapelColor').select2('data')[0].id, - 'gramaje': $('#compGramajeColor').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - color_obj = {} - } - $.extend(data, color_obj); - - } - if ($('#tipoImpresion').select2('data')[0].id == 'colorhq') { - try { - colorhq_obj = { - "colorhq": { - 'paginas': $('#compPaginasColorhq').val(), - 'papel_id': $('#compPapelColorhq').select2('data')[0].id, - 'gramaje': $('#compGramajeColorhq').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - colorhq_obj = {} - } - $.extend(data, colorhq_obj); - } - - - try { - cubierta_obj = { - "cubierta": { - 'paginas': $('#compCarasCubierta option:selected').val(), - 'papel_id': $('#compPapelCubierta').select2('data')[0].id, - 'gramaje': $('#compGramajeCubierta').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - cubierta_obj = {} - } - $.extend(data, cubierta_obj); - - try { - sobrecubierta_obj = { - "sobrecubierta": { - 'imprimir': $('#compSobrecubierta option:selected').val(), - 'papel_id': $('#compPapelSobrecubierta').select2('data')[0].id, - 'gramaje': $('#compGramajeSobrecubierta').select2('data')[0].text.trim(), - }, - } - } - catch (e) { - sobrecubierta_obj = {} - } - $.extend(data, sobrecubierta_obj); - - if($('#compCarasGuardas').length>0){ - try { - guardas_obj = { - "guardas": { - 'paginas_impresion': $('#compCarasGuardas option:selected').val(), - 'papel_id': $('#compPapelGuardas').select2('data')[0].id, - }, - } - } - catch (e) { - guardas_obj = {} - } - $.extend(data, guardas_obj); - - } - - data_str = JSON.stringify(data) - $('#comparador_json_data').val(data_str) -} - diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/comparador.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/comparador.js index 9cc3a2a1..005a9395 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/comparador.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/comparador.js @@ -164,6 +164,7 @@ class Comparador { this.btnInsertarCubierta = $('#insertarCubiertaBtn'); this.cargando = false; + this.comparadorPlanaRunning = false; } init() { @@ -179,18 +180,19 @@ class Comparador { initSelect2() { + this.paginasCubierta.select2({ + allowClear: false, + minimumResultsForSearch: Infinity, + }); + if ($('#tipo_impresion_id').val() == 1 || $('#tipo_impresion_id').val() == 3 || $('#tipo_impresion_id').val() == 5 || $('#tipo_impresion_id').val() == 7) { - $('#compCarasCubierta').select2({ - allowClear: false, - minimumResultsForSearch: Infinity, - }); - $('#compPapelGuardas').select2({ + this.papelGuardas.select2({ allowClear: false, }); - $('#compCarasGuardas').select2({ + this.carasGuardas.select2({ allowClear: false, minimumResultsForSearch: Infinity, }); @@ -206,6 +208,11 @@ class Comparador { this.papelCubierta.init(); this.gramajeCubierta.init(); if (this.tipo_impresion_id != 5 && this.tipo_impresion_id != 6 && this.tipo_impresion_id != 7 && this.tipo_impresion_id != 8 && this.tipo_impresion_id != 21) { + + this.sobrecubierta.select2({ + allowClear: false, + minimumResultsForSearch: Infinity, + }); this.papelSobrecubierta.init(); this.gramajeSobrecubierta.init(); this.papelSobrecubierta.onChange(() => this.gramajeSobrecubierta.setVal(0)) @@ -268,6 +275,12 @@ class Comparador { $('.comp_negrohq_items').on('change', this.obtenerComparadorInterior.bind(this)); $('.comp_color_items').on('change', this.obtenerComparadorInterior.bind(this)); $('.comp_colorhq_items').on('change', this.obtenerComparadorInterior.bind(this)); + + $('.comp_cubierta_items').on('change', this.obtenerComparadorExteriores.bind(this)); + if (this.tipo_impresion_id != 5 && this.tipo_impresion_id != 6 && this.tipo_impresion_id != 7 && this.tipo_impresion_id != 8 && this.tipo_impresion_id != 21) { + $('.comp_sobrecubierta_items').on('change', this.obtenerComparadorExteriores.bind(this)); + } + } #changePaginasComparador(element) { @@ -343,6 +356,7 @@ class Comparador { this.cargando = false; this.paginasNegro.trigger('change'); + this.paginasCubierta.trigger('change'); } @@ -580,6 +594,14 @@ class Comparador { updateOpcionesComparador() { + $('.comp_negro_items').off('change'); + $('.comp_negrohq_items').off('change'); + $('.comp_color_items').off('change'); + $('.comp_colorhq_items').off('change'); + + this.tableCompIntPlana.clear().draw(); + this.tableCompIntRotativa.clear().draw(); + const selValue = this.tipo_impresion.val(); const elements_negro = $('.comp-negro-selected'); const elements_negrohq = $('.comp-negrohq-selected'); @@ -597,6 +619,11 @@ class Comparador { $(element).removeClass('d-none'); }); } + else { + Array.from(elements_colorhq).forEach(element => { + $(element).addClass('d-none'); + }); + } Array.from(elements_negrohq).forEach(element => { $(element).removeClass('d-none'); }); @@ -613,11 +640,21 @@ class Comparador { $(element).removeClass('d-none'); }); } + else { + Array.from(elements_color).forEach(element => { + $(element).addClass('d-none'); + }); + } Array.from(elements_negro).forEach(element => { $(element).removeClass('d-none'); }); } + $('.comp_negro_items').on('change', this.obtenerComparadorInterior.bind(this)); + $('.comp_negrohq_items').on('change', this.obtenerComparadorInterior.bind(this)); + $('.comp_color_items').on('change', this.obtenerComparadorInterior.bind(this)); + $('.comp_colorhq_items').on('change', this.obtenerComparadorInterior.bind(this)); + if (selValue.includes('color')) { $('.pos-paginas-color').removeClass('d-none'); } @@ -714,6 +751,7 @@ class Comparador { let papel_generico = {}; let gramaje = {}; let paginasColor = 0; + let paginas = parseInt($('#paginas').val()); if (!$('#papelFormatoPersonalizado').prop('checked')) { const selectedFormat = $('#papelFormatoId').select2('data')[0].text; @@ -780,27 +818,63 @@ class Comparador { }; if (this.tipo_impresion.val().includes('color')) { + if (this.tipo_impresion.val().includes('hq')) { papel_generico.color = { id: this.papelColorhq.getVal(), nombre: this.papelColorhq.getText() }; gramaje.color = this.gramajeColorhq.getVal(); paginasColor = this.paginasColorhq.val(); } - papel_generico.negro = { id: this.papelNegrohq.getVal(), nombre: this.papelNegrohq.getText() }; - gramaje.negro = this.gramajeNegrohq.getVal(); - } - else { - if (this.tipo_impresion.val().includes('hq')) { + else { papel_generico.color = { id: this.papelColor.getVal(), nombre: this.papelColor.getText() }; gramaje.color = this.gramajeColor.getVal(); paginasColor = this.paginasColor.val(); } + + } + if (this.tipo_impresion.val().includes('hq')) { + papel_generico.negro = { id: this.papelNegrohq.getVal(), nombre: this.papelNegrohq.getText() }; + gramaje.negro = this.gramajeNegrohq.getVal(); + } + else { papel_generico.negro = { id: this.papelNegro.getVal(), nombre: this.papelNegro.getText() }; gramaje.negro = this.gramajeNegro.getVal(); } + + } + else if (uso = 'cubierta') { + if (this.papelCubierta.getVal() == 0 || this.papelCubierta.getVal() == null) { + popErrorAlert(window.language.Presupuestos.errores.seleccionePapel, 'divAlarmasComparador'); + return { error: true, data: {} }; + } + if (this.gramajeCubierta.getVal() == 0 || this.gramajeCubierta.getVal() == null) { + popErrorAlert(window.language.Presupuestos.errores.seleccioneGramaje, 'divAlarmasComparador'); + return { error: true, data: {} }; + } + + + papel_generico = { id: this.papelCubierta.getVal(), nombre: this.papelCubierta.getText() }; + gramaje = this.gramajeCubierta.getVal(); + paginas = this.paginasCubierta.select2('data')[0].id + } + + else if (uso = 'sobrecubierta') { + if (this.papelSobrecubierta.getVal() == 0 || this.papelSobrecubierta.getVal() == null) { + popErrorAlert(window.language.Presupuestos.errores.seleccionePapel, 'divAlarmasComparador'); + return { error: true, data: {} }; + } + if (this.gramajeSobrecubierta.getVal() == 0 || this.gramajeSobrecubierta.getVal() == null) { + popErrorAlert(window.language.Presupuestos.errores.seleccioneGramaje, 'divAlarmasComparador'); + return { error: true, data: {} }; + } + + papel_generico = { id: this.papelSobrecubierta.getVal(), nombre: this.papelSobrecubierta.getText() }; + gramaje = this.gramajeSobrecubierta.getVal(); + paginas = 4; + } const datosPedido = { - paginas: $('#paginas').val(), + paginas: paginas, tirada: $('#tirada').val(), merma: $('#merma').val(), ancho: ancho, @@ -826,6 +900,10 @@ class Comparador { isHq: this.tipo_impresion.val().includes('hq'), paginas_color: paginasColor } + // TO-DO + if(uso == 'cubierta'){ + datos.lomoRedondo = false; + } return { error: false, data: datos }; @@ -837,9 +915,10 @@ class Comparador { const self = this; - if (this.cargando) { + if (this.cargando || this.comparadorPlanaRunning) { return } + this.comparadorPlanaRunning = true; if (event.currentTarget.id.includes('Paginas')) { this.#changePaginasComparador(event.currentTarget.id); @@ -848,113 +927,249 @@ class Comparador { this.tableCompIntPlana.clear().draw(); this.tableCompIntRotativa.clear().draw(); this.btnInsertarPlana.addClass('d-none'); + this.btnInsertarRotativa.addClass('d-none'); $('#title_int_rot').html(window.language.Presupuestos.compInteriorRotativa); $('#title_int_plana').html(window.language.Presupuestos.compInteriorPlana); const datosComp = this.getDataForComp('interior'); if (datosComp.error) { + this.comparadorPlanaRunning = false; return; } else { + const isHq = this.tipo_impresion.val().includes('hq'); + const isColor = this.tipo_impresion.val().includes('color'); + + datosComp.data['tipo_maquina'] = 'plana'; datosComp.data[this.csrf_token] = this.csrf_hash; - new Ajax('/presupuestoadmin/comparadorplana', + new Ajax('/presupuestoadmin/comparadorinterior', datosComp.data, {}, (response) => { if (response.data.negro.length > 0) { - const isHq = response.data.negro[0].fields.tipo_linea.includes('hq'); let sorted = response.data.negro.sort( (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); sorted.forEach(function (linea) { if (typeof linea.error == "undefined") - $('#tableCompIntPlana').DataTable().row - .add(self.getRowFromLineaInt(isHq ? 'bnhq' : 'bn', linea)) + self.tableCompIntPlana.row + .add(self.getRowFromLinea(isHq ? 'bnhq' : 'bn', linea)) .draw() }); } if (response.data.color.length > 0) { - const isHq = response.data.color[0].fields.tipo_linea.includes('hq'); let sorted = response.data.color.sort( (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); sorted.forEach(function (linea) { if (typeof linea.error == "undefined") - $('#tableCompIntPlana').DataTable().row - .add(self.getRowFromLineaInt(isHq ? 'colorhq' : 'color', linea)) + self.tableCompIntPlana.row + .add(self.getRowFromLinea(isHq ? 'colorhq' : 'color', linea)) .draw() }); } - this.selectIntLineas(); + + self.selectLineas('plana'); if ($('#tableCompIntPlana').DataTable().rows().count() > 0) { $('#title_int_plana').html(window.language.Presupuestos.compInteriorPlana + ' (' + self.tableCompIntPlana.rows().count() + ')'); $('#insertarPlanaBtn').removeClass('d-none'); } - else{ + else { $('#title_int_plana').html(window.language.Presupuestos.compInteriorPlana); $('#insertarPlanaBtn').addClass('d-none'); } + + // Rotativa + if (!isHq) { + if (!isColor || (isColor && datosComp.data.papel_generico.negro.id == datosComp.data.papel_generico.color.id && + datosComp.data.gramaje.negro == datosComp.data.gramaje.color)) { + + datosComp.data['tipo_maquina'] = 'rotativa'; + datosComp.data.papel_generico.id = datosComp.data.papel_generico.negro.id; + datosComp.data.papel_generico.nombre = datosComp.data.papel_generico.negro.nombre; + datosComp.data.gramaje = datosComp.data.gramaje.negro; + new Ajax('/presupuestoadmin/comparadorinterior', + datosComp.data, + {}, + (response) => { + if (response.data.rotativa.length > 0) { + let sorted = response.data.rotativa.sort( + (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? + -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); + sorted.forEach(function (linea) { + if (typeof linea.error == "undefined") + self.tableCompIntRotativa.row + .add(self.getRowFromLineaRot(linea)) + .draw() + }); + } + self.selectLineas('rotativa'); + if (self.tableCompIntRotativa.rows().count() > 0) { + self.btnInsertarRotativa.removeClass('d-none'); + $('#title_int_rot').html(window.language.Presupuestos.compInteriorRotativa + ' (' + self.tableCompIntRotativa.rows().count() + ')'); + } + else { + $('#title_int_rot').html(window.language.Presupuestos.compInteriorRotativa); + } + + self.comparadorPlanaRunning = false; + }, + (error) => { + console.log(error); + self.comparadorPlanaRunning = false; + } + ).post(); + } + else { + self.comparadorPlanaRunning = false; + } + } + else { + self.comparadorPlanaRunning = false; + } }, (error) => { console.log(error); + self.comparadorPlanaRunning = false; } ).post(); } - /* - elementos = getIDsComparador(is_color, is_hq) - - - if ($('' + elementos.papel).select2('data').length > 0 && - $('' + elementos.gramaje).select2('data').length > 0 && - parseInt($('' + elementos.paginas).val()) >= 0 && - checkDatosPedidoForComp()) { - - - 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, actualizarLineaRot); - } - else { - if (!is_hq) { - 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())) { - getLineasIntRot(is_hq, actualizarLineaRot); - } - else { - $('#errorComRot').html(''); - } - } - } - } - }); - }*/ + } catch (e) { + console.log(e); + this.comparadorPlanaRunning = false; + } + } + + obtenerComparadorExteriores(event, actualizarLineaPlana = false, actualizarLineaRot = false) { + + try { + + const self = this; + + if (this.cargando) { + return + } + + this.tableCompCubierta.clear().draw(); + this.btnInsertarCubierta.addClass('d-none'); + $('#title_cubierta').html(window.language.Presupuestos.compCubiertaSobrecubierta); + + let datosComp = {}; + datosComp.cubierta = this.getDataForComp('cubierta'); + if (datosComp.cubierta.error) { + return; + } + if (this.tipo_impresion_id != 5 && this.tipo_impresion_id != 6 && this.tipo_impresion_id != 7 && this.tipo_impresion_id != 8 && this.tipo_impresion_id != 21) { + if (this.sobrecubierta.select2('data')[0].id == 1) { + datosComp.sobrecubierta = this.getDataForComp('sobrecubierta'); + if (datosComp.sobrecubierta.error) { + return; + } + } + else{ + datosComp.sobrecubierta = {}; + } + } + else{ + datosComp.sobrecubierta = {}; + } + datosComp.cubierta.data[this.csrf_token] = this.csrf_hash; + if(Object.keys(datosComp.sobrecubierta).length > 0){ + datosComp.sobrecubierta.data[this.csrf_token] = this.csrf_hash; + } + new Ajax('/presupuestoadmin/comparadorexteriores', + { + cubierta: datosComp.cubierta.data, + sobrecubierta: datosComp.sobrecubierta.data + }, + {}, + (response) => { + if (response.data.cubierta.length > 0) { + let sorted = response.data.cubierta.sort( + (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? + -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); + sorted.forEach(function (linea) { + if (typeof linea.error == "undefined") + self.tableCompCubierta.row + add(self.getRowFromLinea('cubierta', linea)) + .draw() + }); + } + if (response.data.sobrecubierta) { + let sorted = response.data.sobrecubierta.sort( + (p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? + -1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0); + sorted.forEach(function (linea) { + if (typeof linea.error == "undefined") + self.tableCompCubierta.row + .add(self.getRowFromLinea('sobrecubierta', linea)) + .draw() + }); + } + + self.selectLineas('cubierta'); + if (self.tableCompCubierta.rows().count() > 0) { + $('#title_cubierta').html(window.language.Presupuestos.compCubiertaSobrecubierta + + (' (' + self.tableCompCubierta.rows().count() + ')')); + self.btnInsertarCubierta.removeClass('d-none'); + } + else { + $('#title_cubierta').html(window.language.Presupuestos.compCubiertaSobrecubierta); + self.btnInsertarCubierta.addClass('d-none'); + } + }, + (error) => { + console.log(error); + } + ).post(); + } catch (e) { console.log(e) } - - } - selectIntLineas() { - var negro_selected = false; - var color_selected = false; - $("#tableCompIntPlana").DataTable().rows('.selected').deselect(); - $("#tableCompIntPlana").DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { - if (!negro_selected && $('#tableCompIntPlana').DataTable().cell(rowIdx, 0).data().includes('bn')) { - $("#tableCompIntPlana").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - negro_selected = true; - } - if (!color_selected && $('#tableCompIntPlana').DataTable().cell(rowIdx, 0).data().includes('color')) { - $("#tableCompIntPlana").DataTable().row(rowIdx).nodes().to$().toggleClass('selected'); - color_selected = true; + + selectLineas(tabla) { + + let table = this.tableCompIntPlana; + let select1 = false; + let select2 = false; + let tipo1 = 'bn'; + let tipo2 = 'color'; + let total_label = '#total_comp_plana' + switch (tabla) { + case 'cubierta': + table = this.tableCompCubierta; + tipo1 = 'lp_cubierta'; + tipo2 = 'lp_sobrecubierta'; + total_label = '#total_comp_cubierta'; + break; + + case 'rotativa': + table = this.tableCompIntRotativa; + tipo1 = 'rotativa'; + total_label = '#total_comp_rot'; + break; + + default: + break; + + } + + table.rows('.selected').deselect(); + table.rows().every(function (rowIdx, tableLoop, rowLoop) { + if (!select1 && table.cell(rowIdx, 0).data().includes(tipo1)) { + table.row(rowIdx).nodes().to$().toggleClass('selected'); + select1 = true; } + if (tabla == 'plana' || tabla == 'cubierta') + if (!select2 && table.cell(rowIdx, 0).data().includes(tipo2)) { + table.row(rowIdx).nodes().to$().toggleClass('selected'); + select2 = true; + } }); - var table = $("#tableCompIntPlana").DataTable(); var rows = table.rows('.selected').indexes(); var data = table.rows(rows).data(); @@ -965,10 +1180,10 @@ class Comparador { value_total += parseFloat(data[i]['total']) } - $('#total_comp_plana').html(value_total.toFixed(2)); + $(total_label).html(value_total.toFixed(2)); } - getRowFromLineaInt(tipo, linea) { + getRowFromLinea(tipo, linea) { const precio_impresion = isNaN(parseFloat(linea.fields.precio_impresion_horas + linea.fields.margen_impresion_horas + linea.fields.precio_click_pedido)) ? "" : parseFloat(linea.fields.precio_impresion_horas + linea.fields.margen_impresion_horas + linea.fields.precio_click_pedido).toFixed(2); @@ -1002,25 +1217,165 @@ class Comparador { data['paginas_impresion'] = linea.fields.paginas_impresion; return data; } + + getRowFromLineaRot(linea) { + + const precio_impresion = isNaN(parseFloat(linea.fields.precio_impresion_horas + linea.fields.precio_click_pedido)) ? "" : + parseFloat(linea.fields.precio_impresion_horas + linea.fields.precio_click_pedido).toFixed(2); + + return { + 'tipo': 'rotativa', + 'paginas': linea.fields.paginas, + 'papel': linea.fields.papel_generico, + 'gramaje': linea.fields.gramaje, + 'marca': linea.fields.papel_impresion, + 'aFavorFibra': linea.fields.a_favor_fibra == 1 ? 'si' : 'no', + 'maquina': linea.fields.maquina, + 'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2), + 'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2), + 'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6), + 'libro': isNaN(parseFloat(linea.fields.precio_libro)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2), + 'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2), + 'lomo': isNaN(parseFloat(linea.fields.mano)) ? "" : parseFloat(linea.fields.mano).toFixed(2), + 'peso': isNaN(parseFloat(linea.fields.peso)) ? "" : parseFloat(linea.fields.peso).toFixed(2), + 'horasMaquina': isNaN(parseFloat(linea.fields.horas_maquina)) ? "" : parseFloat(linea.fields.horas_maquina).toFixed(2), + 'precioImpresion': precio_impresion, + 'precioPagNegro': isNaN(parseFloat(linea.fields.precio_pagina_negro)) ? "" : parseFloat(linea.fields.precio_pagina_negro).toFixed(6), + 'precioPagColor': isNaN(parseFloat(linea.fields.precio_pagina_color)) ? "" : parseFloat(linea.fields.precio_pagina_color).toFixed(6), + 'totalTinta': isNaN(parseFloat(linea.fields.precio_tinta)) ? "" : parseFloat(linea.fields.precio_tinta).toFixed(2), + 'totalCorte': isNaN(parseFloat(linea.fields.total_corte)) ? "" : parseFloat(linea.fields.total_corte).toFixed(2), + 'total': isNaN(parseFloat(linea.fields.total_impresion)) ? "" : (parseFloat(linea.fields.total_impresion)).toFixed(2), + 'maquinaId': linea.fields.maquina_id, + 'maquinaVelocidad': linea.fields.maquina_velocidad, + 'tiempoMaquina': linea.fields.tiempo_maquina, + 'papelGenericoId': linea.fields.papel_generico_id, + 'papelImpresionId': linea.fields.papel_impresion_id, + 'paginasColor': linea.fields.paginas_color, + 'tarifa_impresion_id': linea.fields.tarifa_impresion_id, + } + } + + generateCompJSON() { + + data = {} + + if ($('#tipoImpresion').select2('data')[0].id == 'negro' || $('#tipoImpresion').select2('data')[0].id == 'color') { + try { + bn_obj = { + "bn": { + 'paginas': $('#compPaginasNegro').val(), + 'papel_id': $('#compPapelNegro').select2('data')[0].id, + 'gramaje': $('#compGramajeNegro').select2('data')[0].text.trim(), + } + } + } + catch (e) { + bn_obj = {} + } + $.extend(data, bn_obj); + } + + if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' || $('#tipoImpresion').select2('data')[0].id == 'colorhq') { + try { + bnhq_obj = { + "bnhq": { + 'paginas': $('#compPaginasNegrohq').val(), + 'papel_id': $('#compPapelNegrohq').select2('data')[0].id, + 'gramaje': $('#compGramajeNegrohq').select2('data')[0].text.trim(), + } + } + } + catch (e) { + bnhq_obj = {} + } + $.extend(data, bnhq_obj); + } + + if ($('#tipoImpresion').select2('data')[0].id == 'color') { + try { + color_obj = { + "color": { + 'paginas': $('#compPaginasColor').val(), + 'papel_id': $('#compPapelColor').select2('data')[0].id, + 'gramaje': $('#compGramajeColor').select2('data')[0].text.trim(), + }, + } + } + catch (e) { + color_obj = {} + } + $.extend(data, color_obj); + + } + + + if ($('#tipoImpresion').select2('data')[0].id == 'colorhq') { + try { + colorhq_obj = { + "colorhq": { + 'paginas': $('#compPaginasColorhq').val(), + 'papel_id': $('#compPapelColorhq').select2('data')[0].id, + 'gramaje': $('#compGramajeColorhq').select2('data')[0].text.trim(), + }, + } + } + catch (e) { + colorhq_obj = {} + } + $.extend(data, colorhq_obj); + } + + + try { + cubierta_obj = { + "cubierta": { + 'paginas': $('#compCarasCubierta option:selected').val(), + 'papel_id': $('#compPapelCubierta').select2('data')[0].id, + 'gramaje': $('#compGramajeCubierta').select2('data')[0].text.trim(), + }, + } + } + catch (e) { + cubierta_obj = {} + } + $.extend(data, cubierta_obj); + + try { + sobrecubierta_obj = { + "sobrecubierta": { + 'imprimir': $('#compSobrecubierta option:selected').val(), + 'papel_id': $('#compPapelSobrecubierta').select2('data')[0].id, + 'gramaje': $('#compGramajeSobrecubierta').select2('data')[0].text.trim(), + }, + } + } + catch (e) { + sobrecubierta_obj = {} + } + $.extend(data, sobrecubierta_obj); + + if ($('#compCarasGuardas').length > 0) { + try { + guardas_obj = { + "guardas": { + 'paginas_impresion': $('#compCarasGuardas option:selected').val(), + 'papel_id': $('#compPapelGuardas').select2('data')[0].id, + }, + } + } + catch (e) { + guardas_obj = {} + } + $.extend(data, guardas_obj); + + } + + data_str = JSON.stringify(data) + $('#comparador_json_data').val(data_str) + } } /* - $('#compSobrecubierta').on('change', function(){ - if ($('#compSobrecubierta').val()==1){ - value = false - } - else{ - value = 'disabled' - $('#compPapelSobrecubierta').val(0) - $('#compGramajeSobrecubierta').val('') - $('#compGramajeSobrecubierta').select2("destroy") - $('#compGramajeSobrecubierta').select2({allowClear: false, minimumResultsForSearch: Infinity}) - - } - $('#compPapelSobrecubierta').prop('disabled', value); - $('#compGramajeSobrecubierta').prop('disabled', value); - }) -