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