viewData['usingSweetAlert'] = true; $this->viewData = ['usingServerSideDataTable' => true]; // JJO // Breadcrumbs $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_presupuestos"), 'route' => "javascript:void(0);", 'active' => false], ['title' => "Listado", 'route' => site_url('presupuestocliente/list'), 'active' => true] ]; $this->messageService = service('messages'); parent::initController($request, $response, $logger); $this->model = new ImportadorModel(); } public function index() { $viewData = [ 'currentModule' => static::$controllerSlug, '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); } public function getClientList() { $search = ""; if ($this->request->getGet("q")) { $search = $this->request->getGet("q"); } $dataOld = (new ImportadorModel())->getClientList(); $dataNew = (new ClienteModel())->getIdName($search); $newKeys = array_map(fn($item) => $item->id . '_' . $item->name, $dataNew); // Filtrar $dataOld para obtener solo los elementos comunes $commonData = array_filter($dataOld, fn($item) => in_array($item->id . '_' . $item->name, $newKeys)); return $this->response->setJSON(array_values($commonData)); } public function getPresupuestosList() { $search = ""; if ($this->request->getGet("q")) { $search = $this->request->getGet("q"); } $clienteId = $this->request->getGet("clienteId"); $data = (new ImportadorModel())->getPresupuestosList($clienteId, $search); 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, ]; } }