diff --git a/ci4/app/Config/Routes/ConfiguracionRoutes.php b/ci4/app/Config/Routes/ConfiguracionRoutes.php index 2317e10d..b23c61bd 100755 --- a/ci4/app/Config/Routes/ConfiguracionRoutes.php +++ b/ci4/app/Config/Routes/ConfiguracionRoutes.php @@ -36,7 +36,6 @@ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'] $routes->post('allmenuitems', 'Papelesgenericos::allItemsSelect', ['as' => 'select2ItemsOfPapelesGenericos']); $routes->post('menuitems', 'Papelesgenericos::menuItems', ['as' => 'menuItemsOfPapelesGenericos']); $routes->get('getpapelcliente', 'Papelesgenericos::getPapelCliente', ['as' => 'getPapelCliente']); - $routes->get('selectpapelespecial', 'Papelesgenericos::selectPapelEspecial', ['as' => 'selectPapelEspecial']); $routes->get('gettipopapel', 'Papelesgenericos::getTipoPapelCliente'); }); @@ -54,6 +53,7 @@ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'] $routes->post('duplicate/(:num)', 'Papelesimpresion::duplicate/$1', ['as' => 'duplicatePapelImpresion']); $routes->get('select', 'Papelesimpresion::papel_impresion_select', ['as' => 'papelImpresionSelect']); $routes->get('show/(:num)', 'Papelesimpresion::papel_impresion_find/$1', ['as' => 'showPapelImpresion']); + $routes->get('getgramajecliente', 'Papelesimpresion::getGramajeCliente', ['as' => 'getGramajeCliente']); }); /* Maquinas */ diff --git a/ci4/app/Controllers/Configuracion/Papelesgenericos.php b/ci4/app/Controllers/Configuracion/Papelesgenericos.php index 6f3d0361..9414f583 100755 --- a/ci4/app/Controllers/Configuracion/Papelesgenericos.php +++ b/ci4/app/Controllers/Configuracion/Papelesgenericos.php @@ -313,6 +313,9 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController $data_input = $this->request->getGet(); $result = $this->papelService->getTiposPalelGenerico((object)$data_input); + foreach ($result as $key => $value) { + $result[$key]->texto = strtoupper(lang('PapelGenerico.' . $value->nombre)); + } return $this->respond($result); } else { @@ -325,110 +328,13 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController { if ($this->request->isAJAX()) { - $tirada = goSanitize($this->request->getGet('tirada'))[0] ?? null; - $POD = null; - if ($tirada != null) { - $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; - if (intval($tirada) <= intval($POD_value)) { - $POD = true; - } else { - $POD = false; - } - } - $tipo = goSanitize($this->request->getGet('tipo'))[0]; - $selected_papel = goSanitize($this->request->getGet('papel'))[0] ?? null; - $cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0; - $tapa_dura = goSanitize($this->request->getGet('tapa_dura'))[0] ?? null; - $sobrecubierta = goSanitize($this->request->getGet('sobrecubierta'))[0] ?? 0; - $guardas = goSanitize($this->request->getGet('guardas'))[0] ?? 0; - - $ancho = floatval($this->request->getGet('ancho') ?? 0); - $alto = floatval($this->request->getGet('alto') ?? 0); - $solapas = floatval($this->request->getGet('solapas') ?? 0); - $lomo = floatval($this->request->getGet('lomo') ?? 0); - - $forSelect2 = intval($this->request->getGet('forSelect2') ?? 0); - - $anchoLibro = $ancho; - - if(intval($cubierta) == 1 || intval($sobrecubierta) == 1){ - $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo; - } - - $menu = $this->model->getPapelCliente($tipo, $cubierta, $sobrecubierta, $guardas, $selected_papel, $tapa_dura, false, $POD, $anchoLibro, $alto, $tirada); - $menu2 = $this->model->getPapelCliente($tipo, $cubierta, $sobrecubierta, $guardas, $selected_papel, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada); - - if ($forSelect2) { - $menu = array_map(function ($item) { - if (isset($item->id)) { - return [ - 'id' => $item->id, - 'name' => $item->nombre - ]; - } else { - return [ - 'id' => $item->gramaje, - 'name' => $item->gramaje - ]; - } - }, $menu); - - return $this->respond($menu); - } - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'papeles' => $menu, - 'papeles_especiales' => $menu2, - $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); + $data_input = $this->request->getGet(); + $result = $this->papelService->getPapelGenerico((object)$data_input); + + return $this->respond($result); } else { return $this->failUnauthorized('Invalid request', 403); } } - - public function selectPapelEspecial() - { - - if ($this->request->isAJAX()) { - - $tirada = goSanitize($this->request->getGet('tirada'))[0] ?? null; - $POD = null; - if ($tirada != null) { - $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; - if (intval($tirada) <= intval($POD_value)) { - $POD = true; - } else { - $POD = false; - } - } - $tipo = goSanitize($this->request->getGet('tipo'))[0]; - $cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0; - $sobrecubierta = goSanitize($this->request->getGet('sobrecubierta'))[0] ?? 0; - - $ancho = floatval($this->request->getGet('ancho') ?? 0); - $alto = floatval($this->request->getGet('alto') ?? 0); - $solapas = floatval($this->request->getGet('solapas') ?? 0); - $lomo = floatval($this->request->getGet('lomo') ?? 0); - - $tapa_dura = $this->request->getGet('tapa_dura') ?? 0; - - $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo; - - $items = $this->model->getPapelCliente($tipo, $cubierta, $sobrecubierta, false, null, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada); - $items = array_map(function ($item) { - return [ - 'id' => $item->id, - 'name' => $item->nombre - ]; - }, $items); - return $this->response->setJSON($items); - - } else { - return $this->failUnauthorized('Invalid request', 403); - } - } } diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php index 10522f37..f32ff153 100755 --- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php @@ -72,6 +72,8 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController $this->tpModel = new PapelImpresionTipologiaModel(); $this->validation = service("validation"); + $this->papelService = service('papel'); + // Breadcrumbs $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], @@ -473,6 +475,22 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController } } + + + public function getGramajeCliente(){ + + if ($this->request->isAJAX()) { + + $data_input = $this->request->getGet(); + $result = $this->papelService->getGramajes((object)$data_input); + + return $this->respond($result); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function papel_impresion_select() { $q = $this->request->getGet('q'); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 4d3de4c6..0a324a5e 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -3452,31 +3452,37 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $return_data['interior']['negro']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id); $return_data['interior']['negro']['papel']['id'] = $linea->papel_id; $return_data['interior']['negro']['gramaje'] = $linea->gramaje; + $return_data['interior']['negro']['tipo_papel'] = $modelPapelGenerico->find($linea->papel_id)->tipo_papel_generico_id; } else if ($linea->tipo == 'lp_color' || $linea->tipo == 'lp_colorhq' || $linea->tipo == 'lp_rot_color') { $return_data['interior']['color']['tipo'] = $linea->tipo == 'lp_color' || $linea->tipo == 'lp_rot_color' ? 'colorEstandar' : 'colorPremium'; $return_data['interior']['color']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id); $return_data['interior']['color']['papel']['id'] = $linea->papel_id; $return_data['interior']['color']['gramaje'] = $linea->gramaje; + $return_data['interior']['color']['tipo_papel'] = $modelPapelGenerico->find($linea->papel_id)->tipo_papel_generico_id; } else if ($linea->tipo == 'lp_cubierta') { $return_data['cubierta']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id); $return_data['cubierta']['papel']['id'] = $linea->papel_id; $return_data['cubierta']['gramaje'] = $linea->gramaje; $return_data['cubierta']['paginas'] = $linea->paginas; + $return_data['cubierta']['tipo_papel'] = $modelPapelGenerico->find($linea->papel_id)->tipo_papel_generico_id; } else if ($linea->tipo == 'lp_sobrecubierta') { $return_data['sobrecubierta']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id)['nombre']; $return_data['sobrecubierta']['papel_id'] = $linea->papel_id; $return_data['sobrecubierta']['gramaje'] = $linea->gramaje; $return_data['sobrecubierta']['paginas'] = $linea->paginas; + $return_data['sobrecubierta']['tipo_papel'] = $modelPapelGenerico->find($linea->papel_id)->tipo_papel_generico_id; } else if ($linea->tipo == 'lp_faja') { $return_data['faja']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id)['nombre']; $return_data['faja']['papel_id'] = $linea->papel_id; $return_data['faja']['gramaje'] = $linea->gramaje; $return_data['faja']['paginas'] = $linea->paginas; + $return_data['faja']['tipo_papel'] = $modelPapelGenerico->find($linea->papel_id)->tipo_papel_generico_id; } else if ($linea->tipo == 'lp_guardas') { $return_data['guardas']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id)['nombre']; $return_data['guardas']['papel_id'] = $linea->papel_id; $return_data['guardas']['gramaje'] = $linea->gramaje; $return_data['guardas']['paginas'] = $linea->paginas; + $return_data['guardas']['tipo_papel'] = $modelPapelGenerico->find($linea->papel_id)->tipo_papel_generico_id; } } } diff --git a/ci4/app/Entities/Clientes/ClienteEntity.php b/ci4/app/Entities/Clientes/ClienteEntity.php index d97b60b1..9d130cf0 100755 --- a/ci4/app/Entities/Clientes/ClienteEntity.php +++ b/ci4/app/Entities/Clientes/ClienteEntity.php @@ -49,7 +49,7 @@ class ClienteEntity extends \CodeIgniter\Entity\Entity "user_created_id" => 1, "user_update_id" => 1, "no_envio_base" => 0, - "forzar_rotativa_pod" => 0, + "forzar_rotativa_pod" => false, ]; protected $casts = [ "comunidad_autonoma_id" => "?int", diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index d4d83713..43bf2545 100755 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -120,6 +120,7 @@ class PapelGenericoModel extends \App\Models\BaseModel return $data; } + /** * Get resource data. * @@ -572,4 +573,109 @@ class PapelGenericoModel extends \App\Models\BaseModel $query = $this->db->getLastQuery(); return $data; } + + public function getPapelGenericoCliente($data) + { + /* + 1.-> Tipo impresion + 2.-> Maquina + 3.-> Papeles impresion asociados a esa maquina + 4.-> papeles genericos que aparecen en esos papeles impresion + */ + + if ($data->POD == true && ($data->tipo == 'color')) { + if ($data->tipo == 'color') + $data->tipo = 'colorhq'; + else if ($data->tipo == 'negro') + $data->tipo = 'negrohq'; + } + + + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id as id, t1.nombre AS nombre", + // for debug, t2.nombre AS nombre_papel_impresion, t4.nombre AS maquina_nombre, t5.uso AS tarifa_uso, t5.tipo AS tarifa_tipo" + ) + ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "inner") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "inner") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "inner") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "inner") + + ->where("t1.is_deleted", 0) + ->where("t1.show_in_client", 1) + ->where("t1.tipo_papel_generico_id", $data->tipo_papel_generico_id) + ->where("t2.is_deleted", 0) + ->where("t2.isActivo", 1) + ->where("t2.use_in_client", 1) + ->where("t3.active", 1) + ->where("t4.is_deleted", 0) + ->where("t4.min <= ", $data->tirada) + ->where("t4.max >= ", $data->tirada) + ->where("t4.tipo", "impresion") + ->where("t5.is_deleted", 0) + ->where("t5.tipo", $data->tipo) + ->distinct('t1.id'); + + // Validación adicional para asegurar que t1.id esté presente en las combinaciones con t3.active = 1 + $builder->whereIn("t1.id", function ($subQuery) { + $subQuery->select("t1_inner.id") + ->from("lg_papel_generico t1_inner") + ->join("lg_papel_impresion t2_inner", "t2_inner.papel_generico_id = t1_inner.id", "inner") + ->join("lg_maquina_papel_impresion t3_inner", "t3_inner.papel_impresion_id = t2_inner.id", "inner") + ->where("t3_inner.active", 1); + }); + + $builder->groupStart() + ->groupStart() + ->where("t4.ancho_impresion >", $data->ancho) + ->where("t4.alto_impresion >", $data->alto) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $data->alto) + ->where("t4.alto_impresion >", $data->ancho) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $data->alto) + ->where("t4.is_rotativa", 1) + ->groupEnd() + ->groupEnd(); + + if ($data->cubierta == true) { + $builder->where("t2.cubierta", 1); + $builder->where("t5.uso", 'cubierta'); + if ($data->tapa_dura == true) { + $builder->where("t2.use_for_tapa_dura", 1); + } + } else if ($data->sobrecubierta == true) { + $builder->where("t2.sobrecubierta", 1); + $builder->where("t5.uso", 'sobrecubierta'); + } else if ($data->guardas == true) { + $builder->where("t2.guardas", 1); + $builder->where("t5.uso", 'interior'); + } else { + $builder->where("t2.interior", 1); + $builder->where("t5.uso", 'interior'); + if ($data->tipo == 'negro' || $data->tipo == 'negrohq') + $builder->where("t2.bn", 1); + else if ($data->tipo == 'color' || $data->tipo == 'colorhq') + $builder->where("t2.color", 1); + } + + if ($data->tipo == 'colorhq' || $data->tipo == 'negrohq') { + $builder->where("t2.rotativa", 0); + } else { + if ($data->POD == false) { + $builder->where("t2.rotativa", 1); + } else if ($data->POD == true) { + $builder->where("t2.rotativa", 0); + } + } + + $data = $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); + //$query = $this->db->getLastQuery(); // DEBUG + + return $data; + } + } diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index d816b9c6..0bbf7657 100755 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -390,7 +390,7 @@ class PapelImpresionModel extends \App\Models\BaseModel public function querySelect(?string $query) { - $q = $this->builder()->select([ + $q = $this->builder()->select([ "id", "nombre as name", ]); @@ -400,4 +400,104 @@ class PapelImpresionModel extends \App\Models\BaseModel return $q; } + public function getGramajeCliente($data) { + /* + 1.-> Tipo impresion + 2.-> Maquina + 3.-> Papeles impresion asociados a esa maquina + 4.-> papeles genericos que aparecen en esos papeles impresion + */ + + if ($data->POD == true && ($data->tipo == 'color')) { + if ($data->tipo == 'color') + $data->tipo = 'colorhq'; + else if ($data->tipo == 'negro') + $data->tipo = 'negrohq'; + } + + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.gramaje as gramaje", + // for debug, t1.nombre AS nombre_papel_impresion, t4.nombre AS maquina_nombre, t5.uso AS tarifa_uso, t5.tipo AS tarifa_tipo" + ) + ->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "inner") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t1.id", "inner") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "inner") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "inner") + + ->where("t2.is_deleted", 0) + ->where("t2.show_in_client", 1) + ->where("t1.is_deleted", 0) + ->where("t1.isActivo", 1) + ->where("t1.use_in_client", 1) + ->where("t3.active", 1) + ->where("t4.is_deleted", 0) + ->where("t4.min <= ", $data->tirada) + ->where("t4.max >= ", $data->tirada) + ->where("t4.tipo", "impresion") + ->where("t5.is_deleted", 0) + ->where("t5.tipo", $data->tipo) + ->where("t2.id", $data->papel_id ?? null) + ->distinct('t1.id'); + + // Validación adicional para asegurar que t2.id esté presente en las combinaciones con t3.active = 1 + $builder->whereIn("t2.id", function ($subQuery) { + $subQuery->select("t2_inner.id") + ->from("lg_papel_generico t2_inner") + ->join("lg_papel_impresion t1_inner", "t1_inner.papel_generico_id = t2_inner.id", "inner") + ->join("lg_maquina_papel_impresion t3_inner", "t3_inner.papel_impresion_id = t1_inner.id", "inner") + ->where("t3_inner.active", 1); + }); + + $builder->groupStart() + ->groupStart() + ->where("t4.ancho_impresion >", $data->ancho) + ->where("t4.alto_impresion >", $data->alto) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $data->alto) + ->where("t4.alto_impresion >", $data->ancho) + ->groupEnd() + ->orGroupStart() + ->where("t4.ancho_impresion >", $data->alto) + ->where("t4.is_rotativa", 1) + ->groupEnd() + ->groupEnd(); + + if ($data->cubierta == true) { + $builder->where("t1.cubierta", 1); + $builder->where("t5.uso", 'cubierta'); + if ($data->tapa_dura == true) { + $builder->where("t1.use_for_tapa_dura", 1); + } + } else if ($data->sobrecubierta == true) { + $builder->where("t1.sobrecubierta", 1); + $builder->where("t5.uso", 'sobrecubierta'); + } else if ($data->guardas == true) { + $builder->where("t1.guardas", 1); + $builder->where("t5.uso", 'interior'); + } else { + $builder->where("t1.interior", 1); + $builder->where("t5.uso", 'interior'); + if ($data->tipo == 'negro' || $data->tipo == 'negrohq') + $builder->where("t1.bn", 1); + else if ($data->tipo == 'color' || $data->tipo == 'colorhq') + $builder->where("t1.color", 1); + } + + if ($data->tipo == 'colorhq' || $data->tipo == 'negrohq') { + $builder->where("t1.rotativa", 0); + } else { + if ($data->POD == false) { + $builder->where("t1.rotativa", 1); + } else if ($data->POD == true) { + $builder->where("t1.rotativa", 0); + } + } + + $data = $builder->orderBy("t1.gramaje", "asc")->get()->getResultObject(); + $query = $this->db->getLastQuery(); + return $data; + } } diff --git a/ci4/app/Models/Configuracion/TipoPapelGenericoModel.php b/ci4/app/Models/Configuracion/TipoPapelGenericoModel.php index c3a929a2..8f6b7dee 100755 --- a/ci4/app/Models/Configuracion/TipoPapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/TipoPapelGenericoModel.php @@ -97,15 +97,15 @@ class TipoPapelGenericoModel extends \App\Models\BaseModel if ($data->tipo == 'colorhq' || $data->tipo == 'negrohq') { $builder->where("t3.rotativa", 0); } else { - if ($data->POD == false) { + if ($data->POD == false || $data->forzar_rotativa_POD) { $builder->where("t3.rotativa", 1); } else if ($data->POD == true) { $builder->where("t3.rotativa", 0); } } - $return_data = $builder->orderBy("t1.clave", "asc")->get()->getResultObject(); - //$query = $this->db->getLastQuery(); + $return_data = $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + $query = $this->db->getLastQuery(); return $return_data; } diff --git a/ci4/app/Services/PapelService.php b/ci4/app/Services/PapelService.php index 4b0cba6c..f0aa94fd 100644 --- a/ci4/app/Services/PapelService.php +++ b/ci4/app/Services/PapelService.php @@ -2,6 +2,8 @@ namespace App\Services; +use App\Models\Clientes\ClienteModel; +use App\Models\Configuracion\PapelImpresionModel; use CodeIgniter\Config\BaseService; use App\Models\Configuracion\TipoPapelGenericoModel; use App\Models\Configuracion\PapelGenericoModel; @@ -10,11 +12,15 @@ class PapelService extends BaseService { protected TipoPapelGenericoModel $tipoPapelGenericoModel; protected PapelGenericoModel $papelGenericoModel; + protected PapelImpresionModel $papelImpresionModel; + protected ClienteModel $clienteModel; public function __construct() { $this->tipoPapelGenericoModel = model(TipoPapelGenericoModel::class); $this->papelGenericoModel = model(PapelGenericoModel::class); + $this->papelImpresionModel = model(PapelImpresionModel::class); + $this->clienteModel = model(ClienteModel::class); } public function getTipoPapelGenerico() @@ -40,7 +46,7 @@ class PapelService extends BaseService return []; } - $tirada = (int)$data->tirada ?? null; + $tirada = (int) $data->tirada ?? null; $POD = null; if ($tirada != null) { $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; @@ -63,39 +69,176 @@ class PapelService extends BaseService $anchoLibro = $ancho; + $cliente_id = $data->cliente_id ?? null; + $forzar_rotativa_POD = false; + if (isset($cliente_id) && !is_null($cliente_id)) { + $cliente = $this->clienteModel->find($cliente_id); + if ($cliente && isset($cliente->forzar_rotativa_pod)) { + $forzar_rotativa_POD = boolval($cliente->forzar_rotativa_pod); + } + } + if (intval($cubierta) == 1 || intval($sobrecubierta) == 1) { $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo; } - $data_output = (object) - [ - 'tipo' => $tipo, - 'cubierta' => $cubierta, - 'tapa_dura' => $tapa_dura, - 'sobrecubierta' => $sobrecubierta, - 'guardas' => $guardas, - 'ancho' => $anchoLibro, - 'alto' => $alto, - 'solapas' => $solapas, - 'lomo' => $lomo, - 'anchoLibro' => $anchoLibro, - 'tirada' => $tirada, - 'POD' => $POD - ]; + $data_output = (object) + [ + 'tipo' => $tipo, + 'cubierta' => $cubierta, + 'tapa_dura' => $tapa_dura, + 'sobrecubierta' => $sobrecubierta, + 'guardas' => $guardas, + 'ancho' => $anchoLibro, + 'alto' => $alto, + 'solapas' => $solapas, + 'lomo' => $lomo, + 'anchoLibro' => $anchoLibro, + 'tirada' => $tirada, + 'POD' => $POD, + 'forzar_rotativa_POD' => $forzar_rotativa_POD + ]; $list = $this->tipoPapelGenericoModel->getTiposPapelCliente($data_output); return $list; + } + /** + * Obtencion de los tipos de papel genérico dependiendo del uso para un tipo de papel específico + * @param object $data + * @return array + */ + public function getPapelGenerico($data) + { - /* - $values = $this->papelGenericoModel->where('uso', $uso)->findAll(); - $tipoPapelGenericoList = []; - foreach ($values as $value) { - $tipoPapelGenericoList[$value->id] = lang('PapelGenerico.' . $value->clave); + if (!isset($data) || empty($data)) { + return []; } - return $tipoPapelGenericoList; - */ + $tirada = (int) $data->tirada ?? null; + $POD = null; + if ($tirada != null) { + $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + if (intval($tirada) <= intval($POD_value)) { + $POD = true; + } else { + $POD = false; + } + } + $tipo = $data->tipo; + $cubierta = $data->cubierta ?? 0; + $tapa_dura = $data->tapa_dura ?? null; + $sobrecubierta = $data->sobrecubierta ?? 0; + $guardas = $data->guardas ?? 0; + + $ancho = $data->ancho ?? 0; + $alto = $data->alto ?? 0; + $solapas = $data->solapas ?? 0; + $lomo = $data->lomo ?? 0; + + $tipo_papel_generico_id = $data->tipo_papel_generico_id ?? null; + + $anchoLibro = $ancho; + + if (intval($cubierta) == 1 || intval($sobrecubierta) == 1) { + $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo; + } + + $data_output = (object) + [ + 'tipo' => $tipo, + 'tipo_papel_generico_id' => $tipo_papel_generico_id, + 'cubierta' => $cubierta, + 'tapa_dura' => $tapa_dura, + 'sobrecubierta' => $sobrecubierta, + 'guardas' => $guardas, + 'ancho' => $anchoLibro, + 'alto' => $alto, + 'solapas' => $solapas, + 'lomo' => $lomo, + 'anchoLibro' => $anchoLibro, + 'tirada' => $tirada, + 'POD' => $POD + ]; + + if (isset($data->selected_tipo_id)) { + $data_output->selected_tipo_id = $data->selected_tipo_id; + } + + $list = $this->papelGenericoModel->getPapelGenericoCliente($data_output); + + return $list; + } + + /** + * Obtencion de los tipos de papel genérico dependiendo del uso para un tipo de papel específico + * @param object $data + * @return array + */ + public function getGramajes($data) + { + + if (!isset($data) || empty($data)) { + return []; + } + + $tirada = (int) $data->tirada ?? null; + $POD = null; + if ($tirada != null) { + $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + if (intval($tirada) <= intval($POD_value)) { + $POD = true; + } else { + $POD = false; + } + } + $tipo = $data->tipo; + $cubierta = $data->cubierta ?? 0; + $tapa_dura = $data->tapa_dura ?? null; + $sobrecubierta = $data->sobrecubierta ?? 0; + $guardas = $data->guardas ?? 0; + + $ancho = $data->ancho ?? 0; + $alto = $data->alto ?? 0; + $solapas = $data->solapas ?? 0; + $lomo = $data->lomo ?? 0; + + + $forzar_rotativa_POD = $data->forzar_rotativa_POD ?? false; + + + $papel_id = $data->papel_id ?? null; + + $anchoLibro = $ancho; + + if (intval($cubierta) == 1 || intval($sobrecubierta) == 1) { + $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo; + } + + $data_output = (object) + [ + 'tipo' => $tipo, + 'papel_id' => $papel_id, + 'cubierta' => $cubierta, + 'tapa_dura' => $tapa_dura, + 'sobrecubierta' => $sobrecubierta, + 'guardas' => $guardas, + 'ancho' => $anchoLibro, + 'alto' => $alto, + 'solapas' => $solapas, + 'lomo' => $lomo, + 'anchoLibro' => $anchoLibro, + 'tirada' => $tirada, + 'POD' => $POD + ]; + + if (isset($data->selected_tipo_id)) { + $data_output->selected_tipo_id = $data->selected_tipo_id; + } + + $list = $this->papelImpresionModel->getGramajeCliente($data_output); + + return $list; } } \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php index 53de120a..815c2a7a 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php @@ -240,34 +240,34 @@
- " + " alt="Fresado"> -
Fresado (a partir de 32 páginas)
+
A partir de 32 páginas
- " + " alt="Cosido"> -
Cosido (a partir de 32 páginas)
+
A partir de 32 páginas
- " + " alt="Grapado"> -
Grapado (entre 12 y 40 páginas)
+
Entre 12 y 40 páginas
- " + " alt="Espiral"> -
Espiral (a partir de 20 páginas)
+
A partir de 20 páginas
- " + " alt="Wire-O"> -
Wire-O (a partir de 20 páginas)
+
A partir de 20 páginas
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioInterior.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioInterior.php index 600e4686..0d4427d3 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioInterior.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_disenioInterior.php @@ -49,27 +49,23 @@ -
+

Papel interior

+
Tipo
+
+
+ +
Papel
-
-
- - -
-
+ +
Gramaje
@@ -102,34 +98,4 @@
- -
-

Papel interior color

-
- - -
- -
- -
-
- - -
-
- -
- - - -
- \ No newline at end of file diff --git a/httpdocs/assets/img/presupuestoCliente/cosido.png b/httpdocs/assets/img/presupuestoCliente/cosido.png deleted file mode 100644 index 03bf99de..00000000 Binary files a/httpdocs/assets/img/presupuestoCliente/cosido.png and /dev/null differ diff --git a/httpdocs/assets/img/presupuestoCliente/espiral.png b/httpdocs/assets/img/presupuestoCliente/espiral.png deleted file mode 100644 index 3177ab2d..00000000 Binary files a/httpdocs/assets/img/presupuestoCliente/espiral.png and /dev/null differ diff --git a/httpdocs/assets/img/presupuestoCliente/fresado.png b/httpdocs/assets/img/presupuestoCliente/fresado.png deleted file mode 100644 index 33c40405..00000000 Binary files a/httpdocs/assets/img/presupuestoCliente/fresado.png and /dev/null differ diff --git a/httpdocs/assets/img/presupuestoCliente/grapado.png b/httpdocs/assets/img/presupuestoCliente/grapado.png deleted file mode 100644 index fc6c407f..00000000 Binary files a/httpdocs/assets/img/presupuestoCliente/grapado.png and /dev/null differ diff --git a/httpdocs/assets/img/presupuestoCliente/wire-o.png b/httpdocs/assets/img/presupuestoCliente/wire-o.png deleted file mode 100644 index 98c44586..00000000 Binary files a/httpdocs/assets/img/presupuestoCliente/wire-o.png and /dev/null differ diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioCubierta.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioCubierta.js index da6df22b..e970d279 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioCubierta.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioCubierta.js @@ -1062,14 +1062,14 @@ class DisenioCubierta { this.divGramajeCubierta.removeClass('is-invalid'); this.divPapelEspecial.removeClass('is-invalid'); - if (response.papeles.length > 0) { + if (response.length > 0) { this.textoPapelCubierta.removeClass('d-none'); } else { this.textoPapelCubierta.addClass("d-none"); } - response.papeles.forEach(papel => { + response.forEach(papel => { var container = $('
', { class: 'custom-selector custom-selector-papel-cubierta d-flex flex-column align-items-center justify-content-center' }); @@ -1102,7 +1102,7 @@ class DisenioCubierta { } }); - if (response.papeles_especiales.length > 0) { + if (response.length > 0) { this.divPapelCubierta.removeClass('d-none'); var container = $('
', { @@ -1124,7 +1124,7 @@ class DisenioCubierta { radioButton.on('click', this.#handleGramajeCubierta.bind(this)); - response.papeles_especiales.forEach(papel => { + response.forEach(papel => { if (papel.id == this.papelCubierta) { radioButton.prop('checked', true); radioButton.trigger('click'); @@ -1201,11 +1201,11 @@ class DisenioCubierta { this.divGramajeCubierta.empty() let showGramaje = false; - if (response.papeles.length <= 0 && response.papeles_especiales.length <= 0) { + if (response.length <= 0 && response.length <= 0) { return; } - let papel = response.papeles.length > 0 ? response.papeles : response.papeles_especiales; + let papel = response.length > 0 ? response : response; papel.forEach(valor => { diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioInterior.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioInterior.js index 16063987..80ad3330 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioInterior.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/disenioInterior.js @@ -18,15 +18,12 @@ class DisenioInterior { this.validatorStepper = validatorStepper; this.disenioInterior = this.domItem.find(".disenio-interior"); + this.divTipoPapelInterior = this.domItem.find("#divTipoPapelInterior"); + this.textoTipoPapelInterior = this.domItem.find("#textoTipoPapelInterior"); this.divPapelInterior = this.domItem.find("#divPapelInterior"); - this.textoPapelInterior = this.domItem.find("#textoPapelInterior"); - this.textoPapelInteriorColor = this.domItem.find("#textoPapelInteriorColor"); - this.divPapelInteriorColor = this.domItem.find("#divPapelInteriorColor"); - this.divPapelEspecialInterior = this.domItem.find("#divPapelEspecialInterior"); - this.divPapelEspecialInteriorColor = this.domItem.find("#divPapelEspecialInteriorColor"); - this.papelEspecialInterior = this.domItem.find("#papelEspecialInterior"); + this.textoPapelInterior = this.domItem.find(".texto-papel-interior"); this.divGramajeInterior = this.domItem.find("#divGramajeInterior"); - this.divGramajeInteriorColor = this.domItem.find("#divGramajeInteriorColor"); + this.textoGramajeInterior = this.domItem.find("#textoGramajeInterior"); this.negroEstandar = this.domItem.find("#negroEstandar"); this.negroPremium = this.domItem.find("#negroPremium"); @@ -49,42 +46,10 @@ class DisenioInterior { this.rl_papel_interior = $("#rl_papel_interior"); this.rl_papel_interior_color = $("#rl_papel_interior_color"); - this.papelEspecial = new ClassSelect($("#papelEspecialInterior"), - '/configuracion/papelesgenericos/selectpapelespecial', - window.translations["selectPapel"], - false, - { - [this.csrf_token]: this.csrf_hash, - tipo: () => { return this.getTipoImpresion() }, - tirada: () => { { return this.presupuestoCliente.datosGenerales.getTiradas()[0] } }, - ancho: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho }, - alto: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().alto }, - solapas: 0, - lomo: 0, - cubierta: 0, - } - ); - this.papelEspecialColor = new ClassSelect($("#papelEspecialInteriorColor"), - '/configuracion/papelesgenericos/selectpapelespecial', - window.translations["selectPapel"], - false, - { - [this.csrf_token]: this.csrf_hash, - tipo: () => { return this.getTipoImpresion() }, - tirada: () => { { return this.presupuestoCliente.datosGenerales.getTiradas()[0] } }, - ancho: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho }, - alto: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().alto }, - solapas: 0, - lomo: 0, - cubierta: 0, - } - ); - this.papelInteriorDiferente = false; + this.tipoPapel = null; this.papelInterior = null; this.gramaje = null; - this.papelInteriorColor = null; - this.gramajeColor = null; this.cargando = true; @@ -102,98 +67,75 @@ class DisenioInterior { const self = this; - this.papelEspecial.init(); - $('#papelEspecialInterior').on("change", this.#handlePapelInteriorEspecial.bind(this)); - this.papelEspecialColor.init(); - $('#papelEspecialInteriorColor').on("change", this.#handlePapelInteriorEspecialColor.bind(this)); - // Eventos this.disenioInterior.on('click', this.#handleDisenioInterior.bind(this)); this.disenioInterior_color.on('click', this.#handleDisenioInterior.bind(this)); - - // test - $(document).on('keydown', function (e) { - if (e.ctrlKey && e.key === '.') { - e.preventDefault(); // Evita comportamiento por defecto si es necesario - console.log('Se pulsó Control + .'); - new Ajax('/configuracion/papelesgenericos/gettipopapel', - { - [self.csrf_token]: self.csrf_hash, - tirada: $('#tirada').val(), - tipo: () => self.getTipoImpresion(), - ancho: self.presupuestoCliente.datosGenerales.getDimensionLibro().ancho, - alto: self.presupuestoCliente.datosGenerales.getDimensionLibro().alto, - solapas: 0, - lomo: 0, - cubierta: 0, - }, - {}, - (response) => { console.log(response); }, - (response) => { console.error(response); } - ).get(); - } - }); - } + updateTiposPapeles() { - updatePapeles(papeles = null) { + this.textoTipoPapelInterior.addClass('d-none'); + this.divTipoPapelInterior.empty(); + this.divGramajeInterior.empty(); + this.textoGramajeInterior.addClass("d-none"); + this.textoPapelInterior.addClass("d-none"); + + new Ajax('/configuracion/papelesgenericos/gettipopapel', + { + [this.csrf_token]: this.csrf_hash, + tirada: $('#tirada').val(), + tipo: () => this.getTipoImpresion(), + cliente_id: () => this.presupuestoCliente.datosGenerales.getCliente(), + ancho: this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho, + alto: this.presupuestoCliente.datosGenerales.getDimensionLibro().alto, + solapas: 0, + lomo: 0, + cubierta: 0, + }, + {}, + (response) => { this.fillTiposPapeles(response); }, + (response) => { console.log(response); } + ).get(); + } + + updatePapeles() { const context = this; - if (papeles == 'color') { - this.divGramajeInteriorColor.empty(); - new Ajax('/configuracion/papelesgenericos/getpapelcliente', - { - [this.csrf_token]: this.csrf_hash, - tirada: $('#tirada').val(), - tipo: () => this.getTipoImpresion(), - ancho: this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho, - alto: this.presupuestoCliente.datosGenerales.getDimensionLibro().alto, - solapas: 0, - lomo: 0, - cubierta: 0, - }, - {}, - (response) => { this.fillPapelesColor(response); }, - (response) => { console.log(response); } - ).get(); - } - - if (papeles == 'negro' || papeles == null) { - this.divGramajeInterior.empty(); - new Ajax('/configuracion/papelesgenericos/getpapelcliente', - { - [this.csrf_token]: this.csrf_hash, - tirada: $('#tirada').val(), - tipo: () => this.getTipoImpresion(), - ancho: this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho, - alto: this.presupuestoCliente.datosGenerales.getDimensionLibro().alto, - solapas: 0, - lomo: 0, - cubierta: 0, - }, - {}, - (response) => { this.fillPapeles(response); }, - (response) => { console.log(response); } - ).get(); - } + this.divGramajeInterior.empty(); + this.textoGramajeInterior.addClass("d-none"); + new Ajax('/configuracion/papelesgenericos/getpapelcliente', + { + [this.csrf_token]: this.csrf_hash, + tirada: $('#tirada').val(), + tipo: () => this.getTipoImpresion(), + ancho: this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho, + alto: this.presupuestoCliente.datosGenerales.getDimensionLibro().alto, + solapas: 0, + lomo: 0, + cubierta: 0, + }, + {}, + (response) => { this.fillPapeles(response); }, + (response) => { console.log(response); } + ).get(); } + fillPapeles(response) { this.divPapelInterior.empty(); this.divGramajeInterior.empty(); - if (response.papeles.length > 0) { + if (response.length > 0) { this.textoPapelInterior.removeClass('d-none'); } else { this.textoPapelInterior.addClass("d-none"); } - response.papeles.forEach(papel => { + response.forEach(papel => { var container = $('
', { class: 'custom-selector custom-selector-papel d-flex flex-column align-items-center justify-content-center' }); @@ -222,117 +164,50 @@ class DisenioInterior { } }); - if (response.papeles_especiales.length > 0) { - this.divPapelInterior.removeClass('d-none'); - var container = $('
', { - class: 'custom-selector custom-selector-papel d-flex flex-column align-items-center justify-content-center' - }); - - var radioButton = $('', { - type: 'radio', - name: 'calcular-presupuesto papel-interior', - id: 'papelEspecialInterior', - value: 'option1' - }); - - // Crear una etiqueta para el radio button - var label = $('