mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
425 lines
19 KiB
PHP
425 lines
19 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\Presupuestos;
|
|
|
|
use App\Models\Presupuestos\ImportadorModel;
|
|
use App\Models\Clientes\ClienteModel;
|
|
use stdClass;
|
|
|
|
class Importadorpresupuestos extends \App\Controllers\BaseResourceController
|
|
{
|
|
protected $modelName = "ImportadorModel";
|
|
protected $format = 'json';
|
|
|
|
protected static $singularObjectName = 'Importadorpresupuesto';
|
|
protected static $singularObjectNameCc = 'Importadorpresupuesto';
|
|
protected static $pluralObjectName = 'ImportadorPresupuestos';
|
|
protected static $pluralObjectNameCc = 'Importadorpresupuestos';
|
|
|
|
protected static $controllerSlug = 'importadorpresupuestos';
|
|
|
|
protected static $viewPath = 'themes/vuexy/form/presupuestos/importador/';
|
|
|
|
protected $indexRoute = 'listaPresupuestos';
|
|
|
|
|
|
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
|
{
|
|
|
|
$this->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,
|
|
];
|
|
}
|
|
|
|
} |