diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index f7b07bb6..58673a18 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -679,6 +679,8 @@ $routes->group('importador', ['namespace' => 'App\Controllers\Presupuestos'], fu $routes->get('', 'Importadorpresupuestos::index', ['as' => 'importadorPresupuestos']); $routes->get('clientlist', 'Importadorpresupuestos::getClientList', ['as' => 'clientList']); $routes->get('presupuestoslist', 'Importadorpresupuestos::getPresupuestosList', ['as' => 'presupuestosList']); + $routes->get('getencuadernacion', 'Importadorpresupuestos::getEncuadernacionList'); + $routes->get('getpresupuestodata', 'Importadorpresupuestos::getPresupuesto', ['as' => 'getPresupuesto']); }); $routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); diff --git a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php index 640e8945..48c594ee 100644 --- a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php +++ b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php @@ -4,6 +4,7 @@ namespace App\Controllers\Presupuestos; use App\Models\Presupuestos\ImportadorModel; use App\Models\Clientes\ClienteModel; +use stdClass; class Importadorpresupuestos extends \App\Controllers\BaseResourceController { @@ -47,6 +48,12 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Presupuestos.moduleName')]), ]; + $this->viewData['serviciosAutomaticos'] = [ + 'ferro' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro')->value, + 'prototipo' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_prototipo')->value, + 'ferro_digital' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro_digital')->value, + ]; + $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class return view(static::$viewPath . 'viewImportadorPresupuestos', $viewData); @@ -72,7 +79,8 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController return $this->response->setJSON(array_values($commonData)); } - public function getPresupuestosList(){ + public function getPresupuestosList() + { $search = ""; @@ -85,4 +93,333 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController return $this->response->setJSON($data); } + + + public function getEncuadernacionList() + { + + $search = ""; + + if ($this->request->getGet("q")) { + $search = $this->request->getGet("q"); + } + + $model = model('App\Models\Configuracion\TipoPresupuestoModel'); + $data = $model->getLibros($search); + + return $this->response->setJSON($data); + } + + public function getPresupuesto() + { + + if ($this->request->isAJAX()) { + + $id = $this->request->getGet("id") ?? 0; + + if ($id == 0) { + return $this->failUnauthorized('Invalid request', 403); + } + + $data = (new ImportadorModel())->getPresupuestoForImport($id); + + $model_papel_formato = model('App\Models\Configuracion\PapelFormatoModel'); + $papel_formato = $model_papel_formato->where('is_deleted', 0)->where('ancho>', 0)->findAll(); + + $papel_formato_id = null; + $papel_formato_texto = null; + + foreach ($papel_formato as $formato) { + if ($data['datosGenerales']->papel_formato_personalizado) { + if ($formato->ancho == $data['datosGenerales']->papel_formato_personalizado_ancho && $formato->alto == $data['datosGenerales']->papel_formato_personalizado_alto) { + $papel_formato_id = $formato->id; + $papel_formato_texto = $formato->ancho . 'x' . $formato->alto; + break; + } + } else { + if ($formato->ancho == $data['datosGenerales']->papel_formato_ancho && $formato->alto == $data['datosGenerales']->papel_formato_alto) { + $papel_formato_id = $formato->id; + $papel_formato_texto = $formato->ancho . 'x' . $formato->alto; + break; + } + } + } + + $datosGenerales = new \stdClass(); + $datosGenerales->tirada = $data['datosGenerales']->tirada; + $datosGenerales->paginas = $data['datosGenerales']->paginas; + + if ($papel_formato_id != null) { + + $datosGenerales->papel_formato_personalizado = 0; + $datosGenerales->papel_formato_id = $papel_formato_id; + $datosGenerales->papel_formato_texto = $papel_formato_texto; + } else { + $datosGenerales->papel_formato_personalizado = 1; + if ($data['datosGenerales']->papel_formato_personalizado) { + $datosGenerales->papel_formato_ancho = $data['datosGenerales']->papel_formato_personalizado_ancho; + $datosGenerales->papel_formato_alto = $data['datosGenerales']->papel_formato_personalizado_alto; + } else { + $datosGenerales->papel_formato_ancho = $data['datosGenerales']->papel_formato_ancho; + $datosGenerales->papel_formato_alto = $data['datosGenerales']->papel_formato_alto; + } + } + + $data['manipulados'] = array_map(fn($item) => $item->nombre, $data['manipulados']); + $data['acabados'] = array_map(fn($item) => $item->nombre, $data['acabados']); + + $encuadernacion = $this->getEncuadernacion($data['manipulados']); + $lineas = $this->getLineasPresupuesto($data['lineas']); + $acabados = $this->getAcabados($data['acabados']); + + $returnData = [ + 'success' => true, + 'data' => [ + 'datosGenerales' => $datosGenerales, + 'encuadernacion' => $encuadernacion, + 'lineas' => $lineas, + 'acabados' => $acabados, + 'servicios' => [ + 'ferro' => $data['datosGenerales']->ferro, + 'ferroDigital' => $data['datosGenerales']->ferro_digital, + 'marcapaginas' => $data['datosGenerales']->marcapaginas, + 'prototipo' => $data['datosGenerales']->prototipo + ] + ] + + ]; + + return $this->response->setJSON($returnData); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + private function getEncuadernacion($manipulados) + { + + $encuadernacion_values = [ + 'libroFresadoTapaDura' => 'Tapa Dura al Cromo Fresada', + 'libroFresadoTapaBlanda' => 'Rústica Fresada', + 'libroCosidoTapaDura' => 'Tapa Dura al Cromo Cosida Hilo', + 'libroCosidoTapaBlanda' => 'Rústica Cosida Hilo vegetal', + 'libroEspiralTapaDura' => 'Espiral', + 'libroGrapado' => 'Cosido a caballete 2 grapas' + ]; + + $encuadernacionOld = ""; + $encuadernacion = new stdClass(); + + foreach ($manipulados as $manipulado) { + // check if manipulado is like strlower encuadernacion_values values + foreach ($encuadernacion_values as $valor) { + if (strpos(strtolower($manipulado), strtolower($valor)) !== false) { + $encuadernacionOld = $manipulado; + $key = array_search(strtolower($valor), array_map('strtolower', $encuadernacion_values)); + $model = model('App\Models\Configuracion\TipoPresupuestoModel'); + $encuadernacion = $model->select('id, codigo, encuadernacion')->where('codigo', $key)->first(); + break; + } + } + } + + return [ + 'encuadernacion' => $encuadernacion, + 'encuadernacionOld' => $encuadernacionOld + ]; + } + + private function getLineasPresupuesto($lineas) + { + + $isHq = false; + foreach ($lineas as $linea) { + if ($linea->tipo == 'bn' || $linea->tipo == 'color' || $linea->tipo == 'rotativa') { + if ($linea->hq == 1) { + $isHq = true; + break; + } + } + } + + $model_papelGenerico = model('App\Models\Configuracion\PapelGenericoModel'); + + + $bn = new stdClass(); + $color = new stdClass(); + $cubierta = new stdClass(); + $sobrecubierta = new stdClass(); + + foreach ($lineas as $linea) { + + $newPapel = $model_papelGenerico->where('code', $linea->papel_code)->where('deleted_at', NULL)->first(); + + if ($linea->tipo == 'bn') { + $bn->papel_id = $linea->papel_id; + $bn->papel_nombre = $linea->papel_nombre; + $bn->papel_code = $linea->papel_code; + $bn->gramaje = $linea->gramaje; + $bn->paginas = $linea->paginas; + $bn->new_papel_id = $newPapel->id; + $bn->new_papel_nombre = $newPapel->nombre; + } + + else if ($linea->tipo == 'color') { + $color->papel_id = $linea->papel_id; + $color->papel_nombre = $linea->papel_nombre; + $color->papel_code = $linea->papel_code; + $color->gramaje = $linea->gramaje; + $color->paginas = $linea->paginas; + $color->new_papel_id = $newPapel->id; + $color->new_papel_nombre = $newPapel->nombre; + } + + else if ($linea->tipo == 'portada') { + $cubierta->papel_id = $linea->papel_id; + $cubierta->papel_nombre = $linea->papel_nombre; + $cubierta->papel_code = $linea->papel_code; + $cubierta->gramaje = $linea->gramaje; + $cubierta->paginas = $linea->paginas; + $cubierta->new_papel_id = $newPapel->id; + $cubierta->new_papel_nombre = $newPapel->nombre; + $cubierta->solapas = $linea->solapas_ancho; + } + + else if ($linea->tipo == 'cubierta') { + $sobrecubierta->papel_id = $linea->papel_id; + $sobrecubierta->papel_nombre = $linea->papel_nombre; + $sobrecubierta->papel_code = $linea->papel_code; + $sobrecubierta->gramaje = $linea->gramaje; + $sobrecubierta->paginas = $linea->paginas; + $sobrecubierta->new_papel_id = $newPapel->id; + $sobrecubierta->new_papel_nombre = $newPapel->nombre; + $sobrecubierta->solapas = $linea->solapas_ancho; + } + + else if ($linea->tipo == 'rotativa') { + + if ($linea->rotativa_impresion == 'negro') { + $bn->papel_id = $linea->papel_id; + $bn->papel_nombre = $linea->papel_nombre; + $bn->papel_code = $linea->papel_code; + $bn->gramaje = $linea->gramaje; + $bn->paginas = $linea->paginas; + $bn->new_papel_id = $newPapel->id; + $bn->new_papel_nombre = $newPapel->nombre; + } else { + if ($linea->paginas == $linea->rotativa_pag_color) { + $color->papel_id = $linea->papel_id; + $color->papel_nombre = $linea->papel_nombre; + $color->papel_code = $linea->papel_code; + $color->gramaje = $linea->gramaje; + $color->paginas = $linea->paginas; + $color->new_papel_id = $newPapel->id; + $color->new_papel_nombre = $newPapel->nombre; + } else { + + $bn->papel_id = $color->papel_id = $linea->papel_id; + $bn->papel_nombre = $color->papel_nombre = $linea->papel_nombre; + $bn->papel_code = $color->papel_code = $linea->papel_code; + $bn->gramaje = $color->gramaje = $linea->gramaje; + $color->paginas = $linea->rotativa_pag_color; + $bn->paginas = intval($linea->paginas) - intval($linea->rotativa_pag_color); + $bn->new_papel_id = $color->new_papel_id = $newPapel->id; + $bn->new_papel_nombre = $color->new_papel_nombre = $newPapel->nombre; + } + } + } + } + return [ + 'bn' => $bn, + 'color' => $color, + 'cubierta' => $cubierta, + 'sobrecubierta' => $sobrecubierta, + 'isHq' => $isHq + ]; + } + + private function getAcabados($acabados){ + + $acabadoCubierta = ""; + $reservaUVICubierta = false; + $acabadoSobrecubierta = ""; + $reservaUVISobrecubierta = false; + + $acabadoCubiertaOld = ""; + $acabadoSobrecubiertaOld = ""; + + // por defecto, si pone portada o no pone ni portada ni cubierta, se asigna a la cubierta (portada en el antiguo) + foreach ($acabados as $acabado) { + if (strpos(strtolower($acabado), 'portada') !== false || + (strpos(strtolower($acabado), 'portada') === false && + strpos(strtolower($acabado), 'sobre cubierta') === false)) { + // palabras clave: brillo, mate, gofrado, antirayado, antirrayado, sandy, uvi para buscar en acabado + if(strpos(strtolower($acabado), 'brillo') !== false){ + $acabadoCubierta = 1; + $acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'gofrado') !== false){ + $acabadoCubierta = 6; + $acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'antirayado') !== false || strpos(strtolower($acabado), 'antirrayado') !== false){ + $acabadoCubierta = 8; + $acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'sandy') !== false){ + $acabadoCubierta = 9; + $acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'uvi') !== false){ + $reservaUVICubierta = true; + $acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'mate') !== false){ + $acabadoCubierta = 5; + $acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado; + } + } + else if (strpos(strtolower($acabado), 'sobre cubierta') !== false) { + // palabras clave: brillo, mate, gofrado, antirayado, antirrayado, sandy, uvi para buscar en acabado + if(strpos(strtolower($acabado), 'brillo') !== false){ + $acabadoSobrecubierta = 1; + $acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'gofrado') !== false){ + $acabadoSobrecubierta = 6; + $acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'antirayado') !== false || strpos(strtolower($acabado), 'antirrayado') !== false){ + $acabadoSobrecubierta = 8; + $acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'sandy') !== false){ + $acabadoSobrecubierta = 9; + $acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'uvi') !== false){ + $reservaUVISobrecubierta = true; + $acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado; + } else if(strpos(strtolower($acabado), 'mate') !== false){ + $acabadoSobrecubierta = 5; + $acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado; + } + } + } + + // Si es mate y lleva UVI, se cambia al servicio correspondiente + if($acabadoCubierta == 5 && $reservaUVICubierta){ + $acabadoCubierta = 2; + } + if($acabadoSobrecubierta == 5 && $reservaUVISobrecubierta){ + $acabadoSobrecubierta = 2; + } + + $model = model('App\Models\Tarifas\Acabados\ServicioAcabadoModel'); + + $cubierta = new stdClass(); + $cubierta->acabadoOld = $acabadoCubiertaOld; + $cubierta->acabado = $model->select('id as id, nombre as name')->where('id', $acabadoCubierta)->first(); + + $sobrecubierta = new stdClass(); + $sobrecubierta->acabadoOld = $acabadoSobrecubiertaOld; + $sobrecubierta->acabado = $model->select('id as id, nombre as name')->where('id', $acabadoSobrecubierta)->first(); + + return [ + 'cubierta' => $cubierta, + 'sobrecubierta' => $sobrecubierta, + ]; + } + } \ No newline at end of file diff --git a/ci4/app/Models/Configuracion/TipoPresupuestoModel.php b/ci4/app/Models/Configuracion/TipoPresupuestoModel.php index 5b914f88..ca231603 100755 --- a/ci4/app/Models/Configuracion/TipoPresupuestoModel.php +++ b/ci4/app/Models/Configuracion/TipoPresupuestoModel.php @@ -49,6 +49,18 @@ class TipoPresupuestoModel extends \App\Models\BaseModel } + public function getLibros($search = ""){ + $builder = $this->db + ->table($this->table . " t1") + ->select("t1.id as id, t1.encuadernacion as name") + ->where('t1.codigo LIKE', 'libro%') + ->where('t1.is_deleted', 0); + return empty($search) ? + $builder->get()->getResultObject() : + $builder->groupStart()-> + like('t1.codigo', $search)-> + groupEnd()->get()->getResultObject(); + } } diff --git a/ci4/app/Models/Presupuestos/ImportadorModel.php b/ci4/app/Models/Presupuestos/ImportadorModel.php index aecc99e7..3380fca5 100644 --- a/ci4/app/Models/Presupuestos/ImportadorModel.php +++ b/ci4/app/Models/Presupuestos/ImportadorModel.php @@ -6,9 +6,6 @@ class ImportadorModel extends \App\Models\BaseModel { protected $table = 'pedido_libro'; protected $primaryKey = 'id'; - //protected $allowedFields = ['ticket_number', 'order_id', 'created_at', 'updated_at', 'deleted_at', 'check_in']; - - // Define the alternative connection group protected $DBGroup = 'old_erp'; public function getClientList(){ @@ -28,8 +25,9 @@ class ImportadorModel extends \App\Models\BaseModel $builder = $db->table('pedido_libro'); $builder->select('id as id, CONCAT(id, " - ", titulo) as name'); $builder->where('customer_id', $clienteId); - $builder->where('estado', 'finalizado'); + $builder->whereIn('estado', ['finalizado', 'validado']); $builder->where('deleted_at', NULL); + $builder->orderBy('updated_at', 'DESC'); return empty($search) ? $builder->get()->getResultObject() : @@ -39,6 +37,61 @@ class ImportadorModel extends \App\Models\BaseModel groupEnd()->get()->getResultObject(); } + public function getPresupuestoForImport($id){ + + $db = \Config\Database::connect($this->DBGroup); // Conectar a olderp + $builder = $db->table('pedido_libro t1') + ->select('t1.paginas, t1.tirada, t1.papel_formato_personalizado, + t1.papel_formato_ancho as papel_formato_personalizado_ancho, + t1.papel_formato_alto as papel_formato_personalizado_alto, + t2.ancho as papel_formato_ancho, t2.alto as papel_formato_alto, + t1.ferro as ferro,t1.ferro_digital as ferro_digital, t1.marcapaginas as marcapaginas') + ->join('papel_formato t2', 't1.papel_formato_id = t2.id', 'left') + ->where('t1.id', $id) + ->where('t1.deleted_at', NULL); + $query = $builder->get(); + $datosGenerales = $query->getRow(); + + $builder = $db->table('pedido_libro_manipulado') + ->select('nombre') + ->where('pedido_libro_id', $id); + $query = $builder->get(); + $manipulados = $query->getResultObject(); + + $builder = $db->table('pedido_libro_acabado') + ->select('nombre') + ->where('pedido_libro_id', $id); + $query = $builder->get(); + $acabados = $query->getResultObject(); + + $builder = $db->table('pedido_libro_preimpresion') + ->select('nombre') + ->where('pedido_libro_id', $id) + ->where('nombre', 'Prototipo'); + $query = $builder->countAllResults(); + if($query > 0){ + $datosGenerales->prototipo = 1; + } + + $builder = $db->table('pedido_libro_linea t1') + ->select('t1.tipo as tipo, t1.hq as hq, t1.paginas as paginas, t1.papel_id as papel_id, + t2.nombre as papel_nombre, t2.code as papel_code, t1.gramaje as gramaje, t1.rotativa_pag_color as rotativa_pag_color, + t1.rotativa_impresion as rotativa_impresion, t1.solapas_ancho as solapas_ancho') + ->join('papel_generico t2', 't1.papel_id = t2.id', 'left') + ->where('pedido_libro_id', $id); + $query = $builder->get(); + $lineas = $query->getResultObject(); + + + return [ + 'datosGenerales' => $datosGenerales, + 'manipulados' => $manipulados, + 'acabados' => $acabados, + 'lineas' => $lineas + ]; + + } + } diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php b/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php index 1add0fc7..959fb31a 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php @@ -16,7 +16,8 @@
-
+
+
-
-
- Abrir original -
+
+ +
+ +
+
-
- -
-
- +
+
+

Detalle presupuesto

+
-endSection() ?> +
+
+ +
+ + +
+ +
+ + +
+ +
+ + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
Encuadernación
+
+
+ + +
+ +
+ + +
+
+ +
Interior
+ + +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Papel Genérico originalPapel Genérico propuesto
+ + + + + + + + +
+ + + + + + + + +
+
+ + +
Exteriores
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OpcionesSolapasPapel Genérico originalPapel Genérico propuesto
Cubierta + + + + + + + + + + +
Sobrecubierta + + + + + + + + + +
+
+ +
Acabados
+
+ + + + + + + + + + + + + + + + + + + + +
Acabado originalAcabado propuesto
Cubierta + + + +
Sobrecubierta + + + +
+ +
+ +
Servicios
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+ +
+ + + + + + + + endSection() ?> -section('css') ?> + section('css') ?> -endSection() ?> + endSection() ?> -section('additionalExternalJs') ?> - -endSection() ?> \ No newline at end of file + section('additionalExternalJs') ?> + + endSection() ?> \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js index f13e952e..9748b7f5 100644 --- a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js +++ b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js @@ -1,25 +1,290 @@ import ClassSelect from '../../components/select2.js'; +import Ajax from '../../components/ajax.js'; -class Importador{ +class Importador { - constructor(){ + constructor() { this.cliente = new ClassSelect($("#clienteId"), '/importador/clientlist', "Seleccione un cliente"); - this.presupuesto = new ClassSelect($("#presupuesto"), '/importador/presupuestoslist', "Seleccione un presupuesto", false, {clienteId: ()=>$("#clienteId").val()}); + this.presupuesto = new ClassSelect($("#presupuesto"), '/importador/presupuestoslist', "Seleccione un presupuesto", false, { clienteId: () => $("#clienteId").val() }); + this.encuadernacion = new ClassSelect($("#encuadernacion"), '/importador/getencuadernacion', "Seleccione una encuadernación"); + + this.compPapelNegroSelected = new ClassSelect($("#compPapelNegroSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false, + { + + tipo_impresion: () => this.encuadernacion.getVal(), + tirada: () => $('#tirada').val(), + ancho: () => this.getDimensionLibro().ancho, + alto: () => this.getDimensionLibro().alto, + sopalas: 0, + lomo: 0, + tipo: () => $('#hq').val() ? 'negrohq' : 'negro', + }); + this.compPapelColorSelected = new ClassSelect($("#compPapelColorSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false, + { + tipo_impresion: () => this.encuadernacion.getVal(), + tirada: () => $('#tirada').val(), + ancho: () => this.getDimensionLibro().ancho, + alto: () => this.getDimensionLibro().alto, + sopalas: 0, + lomo: 0, + tipo: () => $('#hq').val() ? 'colorhq' : 'color', + }); + this.compPapelCubiertaSelected = new ClassSelect($("#compPapelCubiertaSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false, + { + tipo_impresion: this.encuadernacion.getVal(), + tirada: () => $('#tirada').val(), + ancho: () => this.getDimensionLibro().ancho, + alto: () => this.getDimensionLibro().alto, + sopalas: () => $('#compSolapasCubierta').val(), + lomo: () => 0, + tipo: 'colorhq', + uso: 'cubierta', + }); + this.compSobrecubiertaSelected = new ClassSelect($("#compPapelSobrecubiertaSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false, + { + tipo_impresion: this.encuadernacion.getVal(), + tirada: () => $('#tirada').val(), + ancho: () => this.getDimensionLibro().ancho, + alto: () => this.getDimensionLibro().alto, + sopalas: () => $('#compSolapasSobrecubierta').val(), + lomo: () => 0, + tipo: 'colorhq', + uso: 'sobrecubierta', + }); + + this.compAcabadoCubiertaSelected = new ClassSelect($("#compAcabadoCubiertaSelected"), '/importador/getacabado', "Seleccione un acabado"); + this.compAcabadoSobrecubiertaSelected = new ClassSelect($("#compAcabadoSobrecubiertaSelected"), '/importador/getacabado', "Seleccione un acabado"); + this.openBtn = $('#openOld'); + this.initImport = $('#initImport'); } - init(){ + init() { this.cliente.init(); this.presupuesto.init(); + this.encuadernacion.init(); - this.openBtn.on('click', function(){ - if($("#clienteId").val() != '' && $("#presupuesto").val() != ''){ - - window.open('https://gestion.safekat.es/presupuesto/edit/'+$("#presupuesto").val()); + this.compPapelNegroSelected.init(); + this.compPapelColorSelected.init(); + this.compPapelCubiertaSelected.init(); + this.compSobrecubiertaSelected.init(); + + this.compAcabadoCubiertaSelected.init(); + this.compAcabadoSobrecubiertaSelected.init(); + + this.cliente.item.on('change', () => { + this.presupuesto.item.val('').trigger('change'); + this.presupuesto.item.prop('disabled', false); + this.openBtn.prop('disabled', true); + this.initImport.prop('disabled', true); + }); + + + this.presupuesto.item.on('change', () => { + this.openBtn.prop('disabled', false); + this.initImport.prop('disabled', false); + }); + + + this.openBtn.on('click', function () { + if ($("#clienteId").val() != '' && $("#presupuesto").val() != '') { + + window.open('https://gestion.safekat.es/presupuesto/edit/' + $("#presupuesto").val()); + } + }); + + this.initImport.on('click', () => { + if ($("#clienteId").val() != '' && $("#presupuesto").val() != '') { + this.getPresupuestoData.bind(this)(); } }); } + + + getPresupuestoData() { + + new Ajax( + '/importador/getpresupuestodata', + { id: $("#presupuesto").val() }, + {}, + (response) => { + if (response.success) { + + this.fillInitialData(response.data); + } + }, + (error) => { + console.error(error); + } + ).get(); + } + + + getDimensionLibro() { + let ancho = 0; + let alto = 0; + if ($('#papelFormatoPersonalizado').prop('checked')) { + ancho = $('#papelFormatoAncho').val(); + alto = $('#papelFormatoAlto').val(); + } + else { + const text = $('#tamanio').text(); + ancho = text.split('x')[0]; + alto = text.split('x')[1]; + } + return { ancho, alto }; + } + + + fillInitialData(data) { + + console.log(data); + $('#paginas').val(data.datosGenerales.paginas); + $('#tirada').val(data.datosGenerales.tirada); + if (data.datosGenerales.papel_formato_personalizado) { + $('#papelFormatoPersonalizado').prop('checked', true); + $('#tamanio').addClass('d-none'); + $('#formatoPersonalizado').removeClass('d-none'); + $('#papelFormatoAncho').val(data.datosGenerales.papel_formato_ancho); + $('#papelFormatoAlto').val(data.datosGenerales.papel_formato_alto); + } + else { + $('#tamanio').removeClass('d-none'); + $('#formatoPersonalizado').addClass('d-none'); + $('#papelFormatoPersonalizado').prop('checked', false); + $('#tamanio').append(''); + $('#tamanio').val(data.datosGenerales.papel_formato_id).trigger('change'); + } + + if (data.encuadernacion) { + $('#encuadernacion_old').val(data.encuadernacion.encuadernacionOld); + // check if data.encuadernacion.encuadernacion exists and is not empty + if (data.encuadernacion.encuadernacion) { + this.encuadernacion.setOption(data.encuadernacion.encuadernacion.id, data.encuadernacion.encuadernacion.encuadernacion); + } + } + + if (data.lineas) { + if (data.lineas.isHq) { + $('#hq').val(data.lineas.hq); + } + + if (data.lineas.bn && data.lineas.bn.paginas) { + $('#compPaginasNegro').val(data.lineas.bn.paginas); + $('#compPapelNegroOrigen').val(data.lineas.bn.papel_nombre); + $('#compGramajeNegro').val(parseFloat(data.lineas.bn.gramaje).toFixed(0)); + this.compPapelNegroSelected.item.prop('disabled', false); + this.compPapelNegroSelected.setOption(data.lineas.bn.new_papel_id, data.lineas.bn.new_papel_nombre); + } + else { + $('#compPaginasNegro').val(0); + $('#compPapelNegroOrigen').val(""); + $('#compGramajeNegro').val(""); + this.compPapelNegroSelected.empty(); + this.compPapelNegroSelected.item.prop('disabled', true); + } + + if (data.lineas.color && data.lineas.color.paginas) { + $('#compPaginasColor').val(data.lineas.color.paginas); + $('#compPapelColorOrigen').val(data.lineas.color.papel_nombre); + $('#compGramajeColor').val(parseFloat(data.lineas.color.gramaje).toFixed(0)); + this.compPapelColorSelected.item.prop('disabled', false); + this.compPapelColorSelected.setOption(data.lineas.color.new_papel_id, data.lineas.color.new_papel_nombre); + } + else { + $('#compPaginasColor').val(0); + $('#compPapelColorOrigen').val(""); + $('#compGramajeColor').val(""); + this.compPapelColorSelected.empty(); + this.compPapelColorSelected.item.prop('disabled', true); + } + + if (data.lineas.cubierta && data.lineas.cubierta.paginas) { + $('#compPaginasCubierta').val(data.lineas.cubierta.paginas); + $('#compPapelCubiertaOrigen').val(data.lineas.cubierta.papel_nombre); + $('#compGramajeCubierta').val(parseFloat(data.lineas.cubierta.gramaje).toFixed(0)); + $('#compSolapasCubierta').val(parseFloat(data.lineas.cubierta.solapas).toFixed(0)); + this.compPapelCubiertaSelected.item.prop('disabled', false); + this.compPapelCubiertaSelected.setOption(data.lineas.cubierta.new_papel_id, data.lineas.cubierta.new_papel_nombre); + } + else { + $('#compPaginasCubierta').val(0); + $('#compPapelCubiertaOrigen').val(""); + $('#compGramajeCubierta').val(""); + $('#compSolapasCubierta').val(""); + this.compPapelCubiertaSelected.empty(); + this.compPapelCubiertaSelected.item.prop('disabled', true); + } + + if (data.lineas.sobrecubierta && data.lineas.sobrecubierta.paginas) { + $('#compSobrecubierta').val(1); + $('#compPapelSobrecubiertaOrigen').val(data.lineas.sobrecubierta.papel_nombre); + $('#compGramajeSobrecubierta').val(parseFloat(data.lineas.sobrecubierta.gramaje).toFixed(0)); + $('#compSolapasSobrecubierta').val(parseFloat(data.lineas.sobrecubierta.solapas).toFixed(0)); + this.compSobrecubiertaSelected.item.prop('disabled', false); + this.compSobrecubiertaSelected.setOption(data.lineas.sobrecubierta.new_papel_id, data.lineas.sobrecubierta.new_papel_nombre); + } + else { + $('#compSobrecubierta').val(0); + $('#compPapelSobrecubiertaOrigen').val(""); + $('#compGramajeSobrecubierta').val(""); + $('#compSolapasSobrecubierta').val(""); + this.compSobrecubiertaSelected.empty(); + this.compSobrecubiertaSelected.item.prop('disabled', true); + } + + if (data.acabados) { + if (data.acabados.cubierta && data.acabados.cubierta.acabadoOld) { + $('#compAcabadoCubiertaOrigen').val(data.acabados.cubierta.acabadoOld); + this.compAcabadoCubiertaSelected.setOption(data.acabados.cubierta.acabado.id, data.acabados.cubierta.acabado.name); + this.compAcabadoCubiertaSelected.item.prop('disabled', false); + } + else { + $('#compAcabadoCubiertaOrigen').val(""); + this.compAcabadoCubiertaSelected.empty(); + this.compAcabadoCubiertaSelected.item.prop('disabled', true); + } + + if (data.acabados.sobrecubierta && data.acabados.sobrecubierta.acabadoOld) { + $('#compAcabadoSobrecubiertaOrigen').val(data.acabados.sobrecubierta.acabadoOld); + this.compAcabadoSobrecubiertaSelected.setOption(data.acabados.sobrecubierta.acabado.id, data.acabados.sobrecubierta.acabado.name); + this.compAcabadoSobrecubiertaSelected.item.prop('disabled', false); + } + else { + $('#compAcabadoSobrecubiertaOrigen').val(""); + this.compAcabadoSobrecubiertaSelected.empty(); + this.compAcabadoSobrecubiertaSelected.item.prop('disabled', true); + } + } + + if(data.servicios.ferro == 1){ + $('#ferro').prop('checked', true); + } + else{ + $('#ferro').prop('checked', false); + } + if(data.servicios.ferroDigital == 1){ + $('#ferroDigital').prop('checked', true); + } + else{ + $('#ferroDigital').prop('checked', false); + } + if(data.servicios.marcapaginas == 1){ + $('#marcapaginas').prop('checked', true); + } + else{ + $('#marcapaginas').prop('checked', false); + } + if(data.servicios.prototipo == 1){ + $('#prototipo').prop('checked', true); + } + else{ + $('#prototipo').prop('checked', false); + } + } + } + } document.addEventListener('DOMContentLoaded', function () {