From 02596457d84f6abbb5f333a0f3c6ddab50664672 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Thu, 13 Mar 2025 15:30:12 +0100 Subject: [PATCH 1/8] Configuracion para acceso a bbdd remota --- ci4/app/Config/Database.php | 26 ++++++++ .../Presupuestos/Presupuestocliente.php | 62 ++++++++++++++----- ci4/app/Controllers/Test.php | 10 +-- .../Models/Presupuestos/ImportadorModel.php | 16 +++++ 4 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 ci4/app/Models/Presupuestos/ImportadorModel.php diff --git a/ci4/app/Config/Database.php b/ci4/app/Config/Database.php index e2450ec1..01d66526 100755 --- a/ci4/app/Config/Database.php +++ b/ci4/app/Config/Database.php @@ -71,6 +71,32 @@ class Database extends Config 'busyTimeout' => 1000, ]; + public array $olderp = [ + 'DSN' => '', + 'hostname' => 'localhost', + 'username' => '', + 'password' => '', + 'database' => '', + 'DBDriver' => 'MySQLi', + 'DBPrefix' => '', + 'pConnect' => false, + 'DBDebug' => true, + 'charset' => 'utf8mb4', + 'DBCollat' => 'utf8mb4_general_ci', + 'swapPre' => '', + 'encrypt' => false, + 'compress' => false, + 'strictOn' => false, + 'failover' => [], + 'port' => 3306, + 'numberNative' => false, + 'dateFormat' => [ + 'date' => 'Y-m-d', + 'datetime' => 'Y-m-d H:i:s', + 'time' => 'H:i:s', + ], + ]; + public function __construct() { parent::__construct(); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index d0403473..a6a573e0 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1262,16 +1262,13 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ]; - if(isset($resultado_presupuesto['values']['servicios_extra'])) - { + if (isset($resultado_presupuesto['values']['servicios_extra'])) { foreach ($resultado_presupuesto['values']['servicios_extra'] as $servicio) { - if($servicio->tarifa_id == $servicio_ferro->id){ + if ($servicio->tarifa_id == $servicio_ferro->id) { $ferro = 1; - } - else if($servicio->tarifa_id == $servicio_ferro_digital->id){ + } else if ($servicio->tarifa_id == $servicio_ferro_digital->id) { $ferroDigital = 1; - } - else if($servicio->tarifa_id == $servicio_prototipo->id){ + } else if ($servicio->tarifa_id == $servicio_prototipo->id) { $prototipo = 1; } } @@ -1435,7 +1432,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } else if ($servicio->tarifa_id == $servicio_ferro->id || $servicio->tarifa_id == $servicio_prototipo->id) { // Servicios extra $this->guardarServicio($id, $servicio, 'extra'); - }else if ( + } else if ( $servicio->tarifa_id == $servicio_solapas_cubierta->id || $servicio->tarifa_id == $servicio_solapas_sobrecubierta->id || $servicio->tarifa_id == $servicio_solapas_faja->id || @@ -2779,10 +2776,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $serviciosExtra = []; // funcionalidad para los servicios extra añadidos por el usuario - if($datos_entrada['servicios'] !== [] && isset($datos_entrada['servicios']['serviciosExtra']) && - $datos_entrada['servicios']['serviciosExtra'] !== []){ + if ( + $datos_entrada['servicios'] !== [] && isset($datos_entrada['servicios']['serviciosExtra']) && + $datos_entrada['servicios']['serviciosExtra'] !== [] + ) { - foreach($datos_entrada['servicios']['serviciosExtra'] as $servicio){ + foreach ($datos_entrada['servicios']['serviciosExtra'] as $servicio) { $resultado = PresupuestoCLienteService::getServiciosExtra([ 'tarifa_id' => intval($servicio), ]); @@ -3495,7 +3494,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController return [$paginasNegro, $paginasColor]; } - private function getServiciosExtra(){ + private function getServiciosExtra() + { $servicios = []; @@ -3504,12 +3504,44 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController foreach ($data as $servicio) { $id = "service_extra_" . $servicio->id; - array_push($servicios, - "id}\" data-tarifa-tipo=\"extra\" data-tarifa-nombre=\"{$servicio->nombre}\"> - "); + " + ); } return $servicios; } + + + + public function testRemoteDB() + { + + /* Añadir en .env + + database.old_erp.hostname = 82.223.102.252 + database.old_erp.database = safekat + database.old_erp.username = safekatdb + database.old_erp.password = 0$Va3t8e + database.old_erp.DBDriver = MySQLi + database.old_erp.DBPrefix = + database.old_erp.port = 3306 + + */ + + $model = model('App\Models\Presupuestos\ImportadorModel'); + + + var_dump($model->where('id', 522314)->findAll()); + + + } + + + + + } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 54de9694..f3108d92 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -3,6 +3,7 @@ namespace App\Controllers; use App\Controllers\BaseController; +use App\Controllers\Presupuestos\Presupuestocliente; use App\Models\Configuracion\MaquinasTarifasImpresionModel; use App\Models\Configuracion\PapelGenericoModel; use App\Models\Configuracion\MaquinaModel; @@ -26,13 +27,8 @@ class Test extends BaseController public function index() { - /*$model = model("\App\Models\Clientes\ClientePreciosModel"); - $model->debug_all_clientes_to_defecto(); - echo '
';
-        echo 'OK';
-        echo '
';*/ - - xdebug_info(); + + (new Presupuestocliente())->testRemoteDB(); diff --git a/ci4/app/Models/Presupuestos/ImportadorModel.php b/ci4/app/Models/Presupuestos/ImportadorModel.php new file mode 100644 index 00000000..72947ab0 --- /dev/null +++ b/ci4/app/Models/Presupuestos/ImportadorModel.php @@ -0,0 +1,16 @@ + Date: Thu, 13 Mar 2025 22:17:20 +0100 Subject: [PATCH 2/8] trabajando en el importador --- ci4/app/Config/Database.php | 2 +- ci4/app/Config/Routes.php | 7 ++ .../Presupuestos/Importadorpresupuestos.php | 88 +++++++++++++++++++ .../Presupuestos/Presupuestocliente.php | 29 ------ ci4/app/Controllers/Test.php | 5 +- ci4/app/Models/Clientes/ClienteModel.php | 17 ++++ .../Models/Presupuestos/ImportadorModel.php | 30 ++++++- .../importador/viewImportadorPresupuestos.php | 66 ++++++++++++++ .../importadorPresupuestos/importador.js | 31 +++++++ 9 files changed, 243 insertions(+), 32 deletions(-) create mode 100644 ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php create mode 100644 httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js diff --git a/ci4/app/Config/Database.php b/ci4/app/Config/Database.php index 01d66526..fa411043 100755 --- a/ci4/app/Config/Database.php +++ b/ci4/app/Config/Database.php @@ -71,7 +71,7 @@ class Database extends Config 'busyTimeout' => 1000, ]; - public array $olderp = [ + public array $old_erp = [ 'DSN' => '', 'hostname' => 'localhost', 'username' => '', diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index b4f6144b..f7b07bb6 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -675,6 +675,13 @@ $routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuest }); $routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); +$routes->group('importador', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->get('', 'Importadorpresupuestos::index', ['as' => 'importadorPresupuestos']); + $routes->get('clientlist', 'Importadorpresupuestos::getClientList', ['as' => 'clientList']); + $routes->get('presupuestoslist', 'Importadorpresupuestos::getPresupuestosList', ['as' => 'presupuestosList']); +}); +$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); + $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->get('getacabados', 'Presupuestoacabados::getAcabados'); $routes->post('getvalues', 'Presupuestoacabados::getRowValues'); diff --git a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php new file mode 100644 index 00000000..640e8945 --- /dev/null +++ b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php @@ -0,0 +1,88 @@ +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')]), + ]; + + $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); + } +} \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index a6a573e0..5051af87 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -3515,33 +3515,4 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController return $servicios; } - - - public function testRemoteDB() - { - - /* Añadir en .env - - database.old_erp.hostname = 82.223.102.252 - database.old_erp.database = safekat - database.old_erp.username = safekatdb - database.old_erp.password = 0$Va3t8e - database.old_erp.DBDriver = MySQLi - database.old_erp.DBPrefix = - database.old_erp.port = 3306 - - */ - - $model = model('App\Models\Presupuestos\ImportadorModel'); - - - var_dump($model->where('id', 522314)->findAll()); - - - } - - - - - } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index f3108d92..9e73792d 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -3,10 +3,12 @@ namespace App\Controllers; use App\Controllers\BaseController; +use App\Controllers\Presupuestos\Importadorpresupuestos; use App\Controllers\Presupuestos\Presupuestocliente; use App\Models\Configuracion\MaquinasTarifasImpresionModel; use App\Models\Configuracion\PapelGenericoModel; use App\Models\Configuracion\MaquinaModel; +use App\Models\Presupuestos\ImportadorModel; use App\Models\Presupuestos\PresupuestoModel; use App\Models\Usuarios\GroupModel; use App\Models\Usuarios\PermisosModel; @@ -28,7 +30,8 @@ class Test extends BaseController public function index() { - (new Presupuestocliente())->testRemoteDB(); + // (new Presupuestocliente())->testRemoteDB(); + (new Importadorpresupuestos())->getClientList(); diff --git a/ci4/app/Models/Clientes/ClienteModel.php b/ci4/app/Models/Clientes/ClienteModel.php index ccc7f509..79af78df 100755 --- a/ci4/app/Models/Clientes/ClienteModel.php +++ b/ci4/app/Models/Clientes/ClienteModel.php @@ -385,4 +385,21 @@ class ClienteModel extends \App\Models\BaseModel return null; } } + + public function getIdName($search = "") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id AS id, t1.nombre AS name" + ) + ->where("is_deleted", 0); + return empty($search) + ? $builder->get()->getResultObject() + : $builder + ->groupStart() + ->like("t1.nombre", $search) + ->groupEnd()->get()->getResultObject(); + + } } diff --git a/ci4/app/Models/Presupuestos/ImportadorModel.php b/ci4/app/Models/Presupuestos/ImportadorModel.php index 72947ab0..aecc99e7 100644 --- a/ci4/app/Models/Presupuestos/ImportadorModel.php +++ b/ci4/app/Models/Presupuestos/ImportadorModel.php @@ -9,7 +9,35 @@ class ImportadorModel extends \App\Models\BaseModel //protected $allowedFields = ['ticket_number', 'order_id', 'created_at', 'updated_at', 'deleted_at', 'check_in']; // Define the alternative connection group - protected $DBGroup = 'olderp'; + protected $DBGroup = 'old_erp'; + + public function getClientList(){ + + $db = \Config\Database::connect($this->DBGroup); // Conectar a olderp + $builder = $db->table('customers'); + $builder->select('id, name'); + $builder->where('deleted_at', NULL); + $query = $builder->get(); + return $query->getResultObject(); + } + + + public function getPresupuestosList($clienteId, $search = ""){ + + $db = \Config\Database::connect($this->DBGroup); // Conectar a olderp + $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->where('deleted_at', NULL); + + return empty($search) ? + $builder->get()->getResultObject() : + $builder->groupStart()-> + like('titulo', $search)-> + orLike('id', $search)-> + groupEnd()->get()->getResultObject(); + } diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php b/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php new file mode 100644 index 00000000..1add0fc7 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php @@ -0,0 +1,66 @@ +include('themes/_commonPartialsBs/datatables') ?> +include("themes/_commonPartialsBs/select2bs5") ?> +include("themes/_commonPartialsBs/sweetalert") ?> + +extend('themes/vuexy/main/defaultlayout') ?> + + +section("content") ?> +
+
+ +
+
+

+
+
+ + +
+
+ + +
+ +
+ + +
+ + +
+
+ Abrir original +
+
+ +
+ + +
+ +
+
+
+ +endSection() ?> + + + +section('css') ?> + +endSection() ?> + + +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 new file mode 100644 index 00000000..f13e952e --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js @@ -0,0 +1,31 @@ +import ClassSelect from '../../components/select2.js'; + +class Importador{ + + 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.openBtn = $('#openOld'); + } + + init(){ + this.cliente.init(); + this.presupuesto.init(); + + this.openBtn.on('click', function(){ + if($("#clienteId").val() != '' && $("#presupuesto").val() != ''){ + + window.open('https://gestion.safekat.es/presupuesto/edit/'+$("#presupuesto").val()); + } + }); + } +} + +document.addEventListener('DOMContentLoaded', function () { + + let importador = new Importador(); + importador.init(); +}); + +export default Importador; \ No newline at end of file From e71dd46a485664e9c6fe9444a4b762240c0cf241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sun, 16 Mar 2025 21:13:22 +0100 Subject: [PATCH 3/8] terminada la recogida de datos fundamentales --- ci4/app/Config/Routes.php | 2 + .../Presupuestos/Importadorpresupuestos.php | 339 +++++++++++++++- .../Configuracion/TipoPresupuestoModel.php | 12 + .../Models/Presupuestos/ImportadorModel.php | 61 ++- .../importador/viewImportadorPresupuestos.php | 368 +++++++++++++++++- .../importadorPresupuestos/importador.js | 281 ++++++++++++- 6 files changed, 1030 insertions(+), 33 deletions(-) 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 () { From b627146dc4e5768e3a0c77f2107fb4f4cc3e7c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sun, 16 Mar 2025 21:21:04 +0100 Subject: [PATCH 4/8] =?UTF-8?q?a=C3=B1adido=20el=20select2=20de=20los=20ac?= =?UTF-8?q?abados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../importadorPresupuestos/importador.js | 61 +++++++++++++------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js index 9748b7f5..ce098e26 100644 --- a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js +++ b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js @@ -53,14 +53,35 @@ class Importador { uso: 'sobrecubierta', }); - this.compAcabadoCubiertaSelected = new ClassSelect($("#compAcabadoCubiertaSelected"), '/importador/getacabado', "Seleccione un acabado"); - this.compAcabadoSobrecubiertaSelected = new ClassSelect($("#compAcabadoSobrecubiertaSelected"), '/importador/getacabado', "Seleccione un acabado"); + this.acabadoCubierta = new ClassSelect($("#compAcabadoCubiertaSelected"), + '/serviciosacabados/getacabados', + '', + false, + { + "cubierta": 1 + } + ); + this.acabadosSobrecubierta = new ClassSelect($("#compAcabadoSobrecubiertaSelected"), + '/serviciosacabados/getacabados', + '', + false, + { + "sobrecubierta": 1 + } + ); + this.openBtn = $('#openOld'); this.initImport = $('#initImport'); } init() { + + // Fuerza el foco en el campo de búsqueda de select2 + $(document).on('select2:open', () => { + document.querySelector('.select2-search__field').focus(); + }); + this.cliente.init(); this.presupuesto.init(); this.encuadernacion.init(); @@ -70,8 +91,8 @@ class Importador { this.compPapelCubiertaSelected.init(); this.compSobrecubiertaSelected.init(); - this.compAcabadoCubiertaSelected.init(); - this.compAcabadoSobrecubiertaSelected.init(); + this.acabadoCubierta.init(); + this.acabadosSobrecubierta.init(); this.cliente.item.on('change', () => { this.presupuesto.item.val('').trigger('change'); @@ -237,49 +258,49 @@ class Importador { 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); + this.acabadoCubierta.setOption(data.acabados.cubierta.acabado.id, data.acabados.cubierta.acabado.name); + this.acabadoCubierta.item.prop('disabled', false); } else { $('#compAcabadoCubiertaOrigen').val(""); - this.compAcabadoCubiertaSelected.empty(); - this.compAcabadoCubiertaSelected.item.prop('disabled', true); + this.acabadoCubierta.empty(); + this.acabadoCubierta.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); + this.acabadosSobrecubierta.setOption(data.acabados.sobrecubierta.acabado.id, data.acabados.sobrecubierta.acabado.name); + this.acabadosSobrecubierta.item.prop('disabled', false); } else { $('#compAcabadoSobrecubiertaOrigen').val(""); - this.compAcabadoSobrecubiertaSelected.empty(); - this.compAcabadoSobrecubiertaSelected.item.prop('disabled', true); + this.acabadosSobrecubierta.empty(); + this.acabadosSobrecubierta.item.prop('disabled', true); } } - if(data.servicios.ferro == 1){ + if (data.servicios.ferro == 1) { $('#ferro').prop('checked', true); } - else{ + else { $('#ferro').prop('checked', false); } - if(data.servicios.ferroDigital == 1){ + if (data.servicios.ferroDigital == 1) { $('#ferroDigital').prop('checked', true); } - else{ + else { $('#ferroDigital').prop('checked', false); } - if(data.servicios.marcapaginas == 1){ + if (data.servicios.marcapaginas == 1) { $('#marcapaginas').prop('checked', true); } - else{ + else { $('#marcapaginas').prop('checked', false); } - if(data.servicios.prototipo == 1){ + if (data.servicios.prototipo == 1) { $('#prototipo').prop('checked', true); } - else{ + else { $('#prototipo').prop('checked', false); } } From ac2d93eb7a790fc528d982497f65c2e91d5d9026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 18 Mar 2025 10:20:42 +0100 Subject: [PATCH 5/8] trabajando en el envio de datos --- ci4/app/Config/Routes.php | 1 + .../Presupuestos/Importadorpresupuestos.php | 139 +++++++++++++++++- .../Presupuestos/Presupuestocliente.php | 5 +- .../importador/viewImportadorPresupuestos.php | 36 +++-- .../importadorPresupuestos/importador.js | 68 +++++++++ 5 files changed, 232 insertions(+), 17 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 58673a18..77d018b3 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -681,6 +681,7 @@ $routes->group('importador', ['namespace' => 'App\Controllers\Presupuestos'], fu $routes->get('presupuestoslist', 'Importadorpresupuestos::getPresupuestosList', ['as' => 'presupuestosList']); $routes->get('getencuadernacion', 'Importadorpresupuestos::getEncuadernacionList'); $routes->get('getpresupuestodata', 'Importadorpresupuestos::getPresupuesto', ['as' => 'getPresupuesto']); + $routes->post('importar', 'Importadorpresupuestos::importarPresupuesto'); }); $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 48c594ee..42101624 100644 --- a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php +++ b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php @@ -183,7 +183,7 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController 'ferro' => $data['datosGenerales']->ferro, 'ferroDigital' => $data['datosGenerales']->ferro_digital, 'marcapaginas' => $data['datosGenerales']->marcapaginas, - 'prototipo' => $data['datosGenerales']->prototipo + //'prototipo' => $data['datosGenerales']->prototipo ] ] @@ -422,4 +422,141 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController ]; } + + public function importarPresupuesto(){ + + if($this->request->isAJAX()){ + + $presupuesto_id = $this->request->getPost('id'); + + $tipo_presupuesto_id = intval($this->request->getPost('encuadernacion') ?? 0); + + $papel_formato_id = $this->request->getPost('papel_formato_id'); + $papel_formato_personalizado = intval($this->request->getPost('papel_formato_personalizado') ?? 0); + $papel_formato_ancho = intval($this->request->getPost('papel_formato_ancho') ?? 0); + $papel_formato_alto = intval($this->request->getPost('papel_formato_alto') ?? 0); + + if($papel_formato_personalizado){ + $tamanio = array( + "ancho" => $papel_formato_ancho, + "alto" => $papel_formato_alto + ); + } + else{ + $medidas = model('App\Models\Configuracion\PapelFormatoModel')->select('ancho, alto')->where('id', $papel_formato_id)->first(); + $tamanio = array( + "ancho" => $medidas->ancho, + "alto" => $medidas->alto + ); + } + + $isHq = intval($this->request->getPost('isHq') ?? 0); + $paginas_bn = intval($this->request->getPost('paginas_bn') ?? 0); + $paginas_color = intval($this->request->getPost('paginas_color') ?? 0); + $gramaje_bn = intval($this->request->getPost('gramaje_bn') ?? 0); + $gramaje_color = intval($this->request->getPost('gramaje_color') ?? 0); + $papel_bn = intval($this->request->getPost('papel_bn') ?? 0); + $papel_color = intval($this->request->getPost('papel_color') ?? 0); + + $papel_interior_diferente = false; + if($papel_bn != $papel_color && $papel_bn != 0 && $papel_color != 0){ + $papel_interior_diferente = true; + $papel_interior = array( + "negro" => $papel_bn, + "color" => $papel_color + ); + $gramaje_interior = array( + "negro" => $gramaje_bn, + "color" => $gramaje_color + ); + } + else{ + $papel_interior = $papel_bn == 0 ? $papel_color : $papel_bn; + $gramaje_interior = $gramaje_bn == 0 ? $gramaje_color : $gramaje_bn; + } + + $interior = array( + "papelInterior" => $papel_interior, + "gramajeInterior" => $gramaje_interior + ); + + $isColor = false; + if(intval($paginas_color)>0){ + $isColor = true; + } + + $tapaCubierta = model('App\Models\Configuracion\TipoPresupuestoModel')-> + select("is_tapa_dura")->where('id', $tipo_presupuesto_id)->first(); + $tapaCubierta = $tapaCubierta->is_tapa_dura == 0 ? "tapaBlanda" : "tapaDura"; + $cubierta = array( + "carasImpresion" => intval($this->request->getPost('paginas_cubierta') ?? 0), + "tipoCubierta" => $tapaCubierta, + "papelCubierta" => intval($this->request->getPost('papel_cubierta') ?? 0), + "gramajeCubierta" => intval($this->request->getPost('gramaje_cubierta') ?? 0), + "acabado" => intval($this->request->getPost('acabado_cubierta') ?? 0), + ); + + $solapas_cubierta = intval($this->request->getPost('solapas_cubierta') ?? 0); + if($solapas_cubierta>0){ + $cubierta["solapas"] = 1; + $cubierta["tamanioSolapas"] = $solapas_cubierta; + } + else{ + $cubierta["solapas"] = 0; + } + + $sobrecubierta = intval($this->request->getPost('sobrecubierta') ?? 0); + if($sobrecubierta>0){ + $sobrecubierta = array( + "papel" => intval($this->request->getPost('papel_sobrecubierta') ?? 0), + "gramaje" => intval($this->request->getPost('gramaje_sobrecubierta') ?? 0), + "solapas" => intval($this->request->getPost('solapas_sobrecubierta') ?? 0), + "acabado" => intval($this->request->getPost('acabado_sobrecubierta') ?? 0), + ); + + // para corregir el fallo de un presupuesto sin solapas en sobrecubierta + if($sobrecubierta["solapas"] == 0){ + $sobrecubierta["solapas"] = 80; + } + } + else{ + $sobrecubierta = false; + } + + $datos = array( + "tirada" => array(intval($this->request->getPost('tirada') ?? 0)), + "paginas" => intval($this->request->getPost('paginas') ?? 0), + "tamanio" => $tamanio, + "tipo_presupuesto_id" => $tipo_presupuesto_id, + "clienteId" => intval($this->request->getPost('cliente_id') ?? 0), + "isColor" => $isColor, + "isHq" => $isHq, + "papelDiferente" => $papel_interior_diferente, + "paginasColor" => $paginas_color, + "paginasCuadernillo" => 32, + + "interior" => $interior, + + "cubierta" => $cubierta, + + "sobrecubierta" => $sobrecubierta, + "guardas" => false, + ); + + $value = (new Presupuestocliente())->calcular($datos); + + $returnData = [ + 'success' => true, + 'data' => $value + ]; + + return $this->response->setJSON($returnData); + + } + else{ + + return $this->failUnauthorized('Invalid request', 403); + } + } + } \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 5051af87..f594db7a 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -460,7 +460,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $tamanio = $reqData['tamanio']; $paginas = $reqData['paginas'] ?? 0; $paginas_color = $reqData['paginasColor'] ?? 0; - $tipo = $reqData['tipo']; + $tipo = $reqData['tipo'] ?? 'cosido'; $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; $papelInteriorDiferente = intval($reqData['papelInteriorDiferente'] ?? null); @@ -478,7 +478,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $direcciones = $reqData['direcciones'] ?? []; - $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + $tipo_impresion_id = intval($reqData['tipo_presupuesto_id'] ?? 0) == 0? + $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']) : intval($reqData['tipo_presupuesto_id']); $lomoRedondo = $cubierta['lomoRedondo'] ?? 0; if ($papelInteriorDiferente) { 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 959fb31a..e00d8c92 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/importador/viewImportadorPresupuestos.php @@ -368,27 +368,35 @@ - +
+
+ +
+
- + - + - - - + - endSection() ?> + + + + + 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 ce098e26..49d42c94 100644 --- a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js +++ b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js @@ -73,6 +73,8 @@ class Importador { this.openBtn = $('#openOld'); this.initImport = $('#initImport'); + this.makeImport = $('#makeImport'); + } init() { @@ -120,8 +122,74 @@ class Importador { this.getPresupuestoData.bind(this)(); } }); + + this.makeImport.on('click', this.importPresupuesto.bind(this)); } + importPresupuesto(){ + + if ($("#clienteId").val() != '' && $("#presupuesto").val() != '') { + let data = this.collectData(); + new Ajax( + '/importador/importar', + data, + {}, + (response) => { + if (response.success) { + alert('Presupuesto importado correctamente'); + console.log(response); + } + }, + (error) => { + console.error(error); + } + ).post(); + } + + } + + collectData() { + + let data = {}; + + data.id = $("#presupuesto").val(); + data.cliente_id = $("#clienteId").val(); + + data.paginas = $('#paginas').val(); + data.tirada = $('#tirada').val(); + data.papel_formato_id = $('#tamanio').val(); + data.papel_formato_personalizado = $('#papelFormatoPersonalizado').prop('checked')?1:0; + data.papel_formato_ancho = $('#papelFormatoAncho').val(); + data.papel_formato_alto = $('#papelFormatoAlto').val(); + + data.encuadernacion = this.encuadernacion.getVal(); + data.isHq = $('#hq').val(); + + data.paginas_bn = $('#compPaginasNegro').val(); + data.papel_bn = this.compPapelNegroSelected.getVal(); + data.gramaje_bn = $('#compGramajeNegro').val(); + + data.paginas_color = $('#compPaginasColor').val(); + data.papel_color = this.compPapelColorSelected.getVal(); + data.gramaje_color = $('#compGramajeColor').val(); + + data.paginas_cubierta = $('#compCarasCubierta').val(); + data.papel_cubierta = this.compPapelCubiertaSelected.getVal(); + data.gramaje_cubierta = $('#compGramajeCubierta').val(); + data.solapas_cubierta = $('#compSolapasCubierta').val(); + data.acabado_cubierta = this.acabadoCubierta.getVal(); + + data.sobrecubierta = $('#compSobrecubierta').val(); + data.papel_sobrecubierta = this.compSobrecubiertaSelected.getVal(); + data.gramaje_sobrecubierta = $('#compGramajeSobrecubierta').val(); + data.solapas_sobrecubierta = $('#compSolapasSobrecubierta').val(); + data.acabado_sobrecubierta = this.acabadosSobrecubierta.getVal(); + + + return data; + } + + getPresupuestoData() { From daafdf2d5aaa4ffd20caee598ddae6ae351bf05d Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 18 Mar 2025 15:58:03 +0100 Subject: [PATCH 6/8] faltan las direcciones --- .../Presupuestos/Importadorpresupuestos.php | 35 +++++++++++++++++-- .../Presupuestos/Presupuestocliente.php | 7 ++-- .../Models/Presupuestos/ImportadorModel.php | 31 ++++++++++++++++ .../importadorPresupuestos/importador.js | 14 ++++++++ 4 files changed, 82 insertions(+), 5 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php index 42101624..a91e8163 100644 --- a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php +++ b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php @@ -167,7 +167,7 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController $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']); @@ -183,7 +183,7 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController 'ferro' => $data['datosGenerales']->ferro, 'ferroDigital' => $data['datosGenerales']->ferro_digital, 'marcapaginas' => $data['datosGenerales']->marcapaginas, - //'prototipo' => $data['datosGenerales']->prototipo + 'prototipo' => $data['datosGenerales']->prototipo ] ] @@ -523,8 +523,25 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController $sobrecubierta = false; } + $datosSave = model('App\Models\Presupuestos\ImportadorModel')->getDatosGuardar($presupuesto_id); + $direcciones = model('App\Models\Presupuestos\ImportadorModel')->getDirecciones($presupuesto_id); + + $direcciones = (array) $direcciones; + $direcciones = array_map(fn($item) => (array) $item, $direcciones); + $direccionesToSend = []; + foreach($direcciones as $direccion){ + $direccion['pais_id'] = + model('App\Models\Configuracion\PaisModel')->select('id')->like('nombre', $direccion['pais'])->first()->id; + $tempData = []; + $tempData['direccion'] = $direccion; + $tempData['entregaPalets'] = false; + $tempData['unidades'] = $direccion['unidades']; + array_push($direccionesToSend, $tempData); + } + $datos = array( "tirada" => array(intval($this->request->getPost('tirada') ?? 0)), + "selectedTirada" => intval($this->request->getPost('tirada') ?? 0), "paginas" => intval($this->request->getPost('paginas') ?? 0), "tamanio" => $tamanio, "tipo_presupuesto_id" => $tipo_presupuesto_id, @@ -541,9 +558,21 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController "sobrecubierta" => $sobrecubierta, "guardas" => false, + + "servicios" => $this->request->getPost('servicios') ?? [], + + "datosCabecera" => [ + "titulo" => $datosSave->titulo ?? "", + "autor" => $datosSave->autor ?? "", + "coleccion" => $datosSave->coleccion ?? "", + "isbn" => $datosSave->isbn ?? "", + "referenciaCliente" => $datosSave->referenciaCliente ?? "" + ], + 'entrega_taller' => $datosSave->entrega_taller, + 'direcciones' => $direccionesToSend ); - $value = (new Presupuestocliente())->calcular($datos); + $value = (new Presupuestocliente())->guardar($datos); $returnData = [ 'success' => true, diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index f594db7a..d5679113 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -976,7 +976,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $paginasColorConsecutivas = $reqData['pagColorConsecutivas'] ?? 0; $papelInteriorDiferente = $reqData['papelInteriorDiferente'] ?? 0; - $tipo = $reqData['tipo']; + $tipo = $reqData['tipo'] ?? ""; $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? 32; $papelInteriorDiferente = intval($reqData['papelInteriorDiferente'] ?? null); @@ -1002,7 +1002,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $direcciones = $reqData['direcciones'] ?? []; - $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + if($tipo != "") + $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + else + $tipo_impresion_id = $reqData['tipo_presupuesto_id'] ?? 0; if ($papelInteriorDiferente) { $papel['negro'] = $modelPapelGenerico->where('id', $interior['papelInterior']['negro'])->first()->toArray(); diff --git a/ci4/app/Models/Presupuestos/ImportadorModel.php b/ci4/app/Models/Presupuestos/ImportadorModel.php index 3380fca5..1c71f070 100644 --- a/ci4/app/Models/Presupuestos/ImportadorModel.php +++ b/ci4/app/Models/Presupuestos/ImportadorModel.php @@ -72,6 +72,9 @@ class ImportadorModel extends \App\Models\BaseModel if($query > 0){ $datosGenerales->prototipo = 1; } + else{ + $datosGenerales->prototipo = 0; + } $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, @@ -92,6 +95,34 @@ class ImportadorModel extends \App\Models\BaseModel } + public function getDatosGuardar($id){ + + $db = \Config\Database::connect($this->DBGroup); // Conectar a olderp + $db = \Config\Database::connect($this->DBGroup); // Conectar a olderp + $builder = $db->table('pedido_libro t1') + ->select(' + t1.titulo, t1.autor, t1.coleccion, t1.isbn, t1.customer_reference as referencia_cliente, + t1.envios_recogecliente as entrega_taller') + ->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(); + return $query->getRow(); + } + + public function getDirecciones($id){ + + $db = \Config\Database::connect($this->DBGroup); // Conectar a olderp + $builder = $db->table('pedido_libro_envios t1') + ->select('t1.ejemplares as unidades, t1.att, t1.email, t1.direccion, t1.pais, + t2.nombre as provincia, t1.ciudad as municipio, t1.cp, t1.telefono') + ->join(('provincias t2'), 't1.provincia = t2.code', 'left') + ->where('t1.pedido_libro_id', $id); + $query = $builder->get(); + return $query->getResultObject(); + } + } diff --git a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js index 49d42c94..c6fd00b5 100644 --- a/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js +++ b/httpdocs/assets/js/safekat/pages/importadorPresupuestos/importador.js @@ -185,6 +185,20 @@ class Importador { data.solapas_sobrecubierta = $('#compSolapasSobrecubierta').val(); data.acabado_sobrecubierta = this.acabadosSobrecubierta.getVal(); + data.servicios = { + marcapaginas: $('#marcapaginas').prop('checked')?1:0, + serviciosExtra: [] + }; + + if($('#ferro').prop('checked')){ + data.servicios.serviciosExtra.push(30); + } + if($('#ferroDigital').prop('checked')){ + data.servicios.serviciosExtra.push(29); + } + if($('#prototipo').prop('checked')){ + data.servicios.serviciosExtra.push(9); + } return data; } From e9c889624dd0876282055e7a0fabf95c0a4490e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 18 Mar 2025 20:19:54 +0100 Subject: [PATCH 7/8] terminado importador --- .../Presupuestos/Importadorpresupuestos.php | 27 +++++++++++--- .../Presupuestos/Presupuestoadmin.php | 2 + .../Presupuestos/Presupuestocliente.php | 20 ++++++---- ci4/app/Language/es/Presupuestos.php | 1 + .../Models/Presupuestos/ImportadorModel.php | 2 +- .../presupuestos/admin/_comentariosItems.php | 37 ++++++++++++++++++- .../importadorPresupuestos/importador.js | 4 +- .../presupuestoAdmin/presupuestoAdminEdit.js | 6 ++- 8 files changed, 80 insertions(+), 19 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php index a91e8163..da96561c 100644 --- a/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php +++ b/ci4/app/Controllers/Presupuestos/Importadorpresupuestos.php @@ -534,7 +534,7 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController model('App\Models\Configuracion\PaisModel')->select('id')->like('nombre', $direccion['pais'])->first()->id; $tempData = []; $tempData['direccion'] = $direccion; - $tempData['entregaPalets'] = false; + $tempData['entregaPalets'] = 0; $tempData['unidades'] = $direccion['unidades']; array_push($direccionesToSend, $tempData); } @@ -558,6 +558,7 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController "sobrecubierta" => $sobrecubierta, "guardas" => false, + "faja" => 0, "servicios" => $this->request->getPost('servicios') ?? [], @@ -574,10 +575,26 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController $value = (new Presupuestocliente())->guardar($datos); - $returnData = [ - 'success' => true, - 'data' => $value - ]; + if(isset($value['sk_id'])){ + $texto_comments = '[PRESUPUESTO IMPORTADO ' . $presupuesto_id . ' - ERP ANTIGUO]' . PHP_EOL . + '------------------------------------------------------------------------------------------' . PHP_EOL; + $presupuesto_model = model('App\Models\Presupuestos\PresupuestoModel'); + $presupuesto_model->update($value['sk_id'], [ + 'comentarios_cliente' => $texto_comments . $datosSave->comentarios_cliente, + 'comentarios_safekat' => $texto_comments . $datosSave->comentarios_safekat, + ]); + + $returnData = [ + 'success' => true, + 'id' => $value['sk_id'] + ]; + + } + else{ + $returnData = [ + 'success' =>false, + ]; + } return $this->response->setJSON($returnData); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index 01d79c6d..2fa7a3cf 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -583,8 +583,10 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['comentarios_cliente'] = $presupuesto->comentarios_cliente; $data['comentarios_safekat'] = $presupuesto->comentarios_safekat; + $data['comentarios_pdf'] = $presupuesto->comentarios_pdf; $data['comentarios_presupuesto'] = $presupuesto->comentarios_presupuesto; $data['comentarios_produccion'] = $presupuesto->comentarios_produccion; + $data['tiradasAlternativas'] = json_decode($presupuesto->tirada_alternativa_json_data); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index d5679113..5200ba84 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1765,7 +1765,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $direccion['direccion'], $peso_libro, $direccion['unidades'], - $direccion['entregaPalets'] == 'false' ? 0 : 1, + ($direccion['entregaPalets'] == 'false' || $direccion['entregaPalets'] == 0) ? 0 : 1, false ); @@ -1776,7 +1776,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController unset($data->id); $data->precio = $data->coste; unset($data->coste); - $data->entregaPieCalle = $direccion['entregaPalets'] == 'false' ? 0 : 1; + $data->entregaPieCalle = ($direccion['entregaPalets'] == 'false' || $direccion['entregaPalets'] == 0) ? 0 : 1; unset($data->tipo); $data->peso = $peso_envio; $data->cantidad = $unidades; @@ -1887,15 +1887,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $margen = $tarifas_envio[$i]->margen; } + $tarifa_envio_final = null; if (count($tarifas_envio) > 1) { - $tarifa_final = array_reduce($tarifas_envio, function ($previous, $current) { + $tarifa_envio_final = array_reduce($tarifas_envio, function ($previous, $current) { return $current->precio < $previous->precio ? $current : $previous; }); - $coste = $tarifa_final->precio; } else { - if (count($tarifas_envio) > 0) - $coste = $tarifas_envio[0]->precio; - $margen = $tarifas_envio[0]->margen; + if (count($tarifas_envio) > 0){ + $tarifa_envio_final = $tarifas_envio[0]; + } + } + $coste = $tarifa_envio_final->precio; + $margen = $tarifa_envio_final->margen; + + if(!isset($return_data['id'])){ + $return_data['id'] = $tarifa_envio_final->id; } $return_data['coste'] = $coste; diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index b6b34004..d8e63cb1 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -254,6 +254,7 @@ return [ 'comentarios' => 'Comentarios', 'comentariosCliente' => 'Comentarios cliente', 'comentariosSafekat' => 'Comentarios Safekat', + 'comentariosPresupuestoPDF' => 'Comentarios Presupuesto PDF', 'comentariosPresupuesto' => 'Comentarios Presupuesto', 'comentariosProduccion' => 'Comentarios Produccion', diff --git a/ci4/app/Models/Presupuestos/ImportadorModel.php b/ci4/app/Models/Presupuestos/ImportadorModel.php index 1c71f070..76d01904 100644 --- a/ci4/app/Models/Presupuestos/ImportadorModel.php +++ b/ci4/app/Models/Presupuestos/ImportadorModel.php @@ -102,7 +102,7 @@ class ImportadorModel extends \App\Models\BaseModel $builder = $db->table('pedido_libro t1') ->select(' t1.titulo, t1.autor, t1.coleccion, t1.isbn, t1.customer_reference as referencia_cliente, - t1.envios_recogecliente as entrega_taller') + t1.envios_recogecliente as entrega_taller, t1.comentarios as comentarios_cliente, t1.comentarios_safekat, t1.comentarios_pdf') ->join('papel_formato t2', 't1.papel_formato_id = t2.id', 'left') ->where('t1.id', $id) ->where('t1.deleted_at', NULL); diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php index 34bd8463..0250e1db 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_comentariosItems.php @@ -47,6 +47,23 @@ +