trabajando en el importador

This commit is contained in:
2025-03-13 22:17:20 +01:00
parent 02596457d8
commit cd3df81bc9
9 changed files with 243 additions and 32 deletions

View File

@ -71,7 +71,7 @@ class Database extends Config
'busyTimeout' => 1000,
];
public array $olderp = [
public array $old_erp = [
'DSN' => '',
'hostname' => 'localhost',
'username' => '',

View File

@ -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');

View File

@ -0,0 +1,88 @@
<?php
namespace App\Controllers\Presupuestos;
use App\Models\Presupuestos\ImportadorModel;
use App\Models\Clientes\ClienteModel;
class Importadorpresupuestos extends \App\Controllers\BaseResourceController
{
protected $modelName = "ImportadorModel";
protected $format = 'json';
protected static $singularObjectName = 'Importadorpresupuesto';
protected static $singularObjectNameCc = 'Importadorpresupuesto';
protected static $pluralObjectName = 'ImportadorPresupuestos';
protected static $pluralObjectNameCc = 'Importadorpresupuestos';
protected static $controllerSlug = 'importadorpresupuestos';
protected static $viewPath = 'themes/vuexy/form/presupuestos/importador/';
protected $indexRoute = 'listaPresupuestos';
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
$this->viewData['usingSweetAlert'] = true;
$this->viewData = ['usingServerSideDataTable' => true]; // JJO
// Breadcrumbs
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_presupuestos"), 'route' => "javascript:void(0);", 'active' => false],
['title' => "Listado", 'route' => site_url('presupuestocliente/list'), 'active' => true]
];
$this->messageService = service('messages');
parent::initController($request, $response, $logger);
$this->model = new ImportadorModel();
}
public function index()
{
$viewData = [
'currentModule' => static::$controllerSlug,
'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Presupuestos.moduleName')]),
];
$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);
}
}

View File

@ -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());
}
}

View File

@ -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();

View File

@ -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();
}
}

View File

@ -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();
}

View File

@ -0,0 +1,66 @@
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section("content") ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= $pageTitle ?></h3>
</div><!--//.card-header -->
<div class="card-body">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="row">
<div class="col-md-4">
<label id="label_clienteId" for="clienteId" class="form-label">
Cliente
</label>
<select id="clienteId" name="cliente_id" class="form-control select2bs2" style="width: 100%;">
</select>
</div>
<div class="col-md-4">
<label id="label_clienteId" for="clienteId" class="form-label">
Presupuesto
</label>
<select id="presupuesto" name="presupuesto" class="form-control select2bs2"
style="width: 100%;">
</select>
</div>
<div class="col-md-4">
<div id="openOld" class="btn mt-3 btn-primary waves-effect waves-light ml-2">
<span
class="align-middle d-sm-inline-block me-sm-1">Abrir original</span>
</div>
</div>
</div>
</div><!--//.card-body -->
<div class="card-footer">
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/importadorPresupuestos/importador.js') ?>"></script>
<?= $this->endSection() ?>