mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Iniciada implementacion de recuperacion de historicos erp antiguo
This commit is contained in:
@ -23,6 +23,7 @@ $routes->group('catalogo', ['namespace' => 'App\Controllers\Catalogo'], function
|
||||
* AJAX
|
||||
*========================**/
|
||||
$routes->get('clientlist', 'CatalogoLibros::getClientList', ['as' => 'catalogoLibrosClientList']);
|
||||
$routes->get('pedidosAntiguos', 'CatalogoLibros::datatablePedidosAntiguos', ['as' => 'catalogoLibrosPedidosAntiguosDT']);
|
||||
|
||||
|
||||
});
|
||||
|
||||
@ -5,6 +5,7 @@ use App\Controllers\BaseResourceController;
|
||||
use App\Entities\Catalogo\CatalogoLibroEntity;
|
||||
use App\Models\Catalogo\CatalogoLibroModel;
|
||||
use App\Models\Clientes\ClienteModel;
|
||||
use App\Models\Presupuestos\ImportadorModel;
|
||||
use Hermawan\DataTables\DataTable;
|
||||
|
||||
class CatalogoLibros extends BaseResourceController
|
||||
@ -66,7 +67,7 @@ class CatalogoLibros extends BaseResourceController
|
||||
$sanitizedData = $this->sanitized($postData, true);
|
||||
|
||||
$sanitizedData['user_created_id'] = auth()->user()->id;
|
||||
unset($sanitizedData['iskn']);
|
||||
unset($sanitizedData['iskn']);
|
||||
|
||||
$noException = true;
|
||||
if ($successfulResult = $this->canValidate()):
|
||||
@ -135,7 +136,7 @@ class CatalogoLibros extends BaseResourceController
|
||||
$sanitizedData['user_update_id'] = auth()->user()->id;
|
||||
|
||||
$noException = true;
|
||||
|
||||
|
||||
if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) :
|
||||
|
||||
|
||||
@ -173,7 +174,7 @@ class CatalogoLibros extends BaseResourceController
|
||||
endif; // $noException && $successfulResult
|
||||
endif; // ($requestMethod === 'post')
|
||||
|
||||
|
||||
|
||||
$this->viewData['catalogoLibrosEntity'] = $catalogoLibrosEntity;
|
||||
$this->viewData['formAction'] = route_to('catalogoLibrosEdit', $id);
|
||||
$this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Catalogo.moduleTitle') . ' ' . lang('Basic.global.edit3');
|
||||
@ -224,7 +225,6 @@ class CatalogoLibros extends BaseResourceController
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* IMN */
|
||||
public function getClientList()
|
||||
{
|
||||
@ -234,5 +234,41 @@ class CatalogoLibros extends BaseResourceController
|
||||
|
||||
}
|
||||
|
||||
/* Historico de pedidos ERP antiguo */
|
||||
public function datatablePedidosAntiguos()
|
||||
{
|
||||
$reqData = $this->request->getGet();
|
||||
$start = $reqData['start'] ?? 0;
|
||||
$length = $reqData['length'] ?? 10;
|
||||
$catalogoId = $reqData['catalogo_id'] ?? null;
|
||||
|
||||
// Instanciar el modelo directamente
|
||||
$importadorModel = new ImportadorModel();
|
||||
|
||||
$q = $importadorModel->getHistoricoPedidosCatalogo($catalogoId);
|
||||
|
||||
return DataTable::of($q)
|
||||
->setSearchableColumns([
|
||||
't1.id',
|
||||
't1.created_at',
|
||||
't1.titulo',
|
||||
't1.paginas',
|
||||
't1.tirada',
|
||||
't1.total',
|
||||
't1.estado'
|
||||
])
|
||||
->edit('total', fn($row) => number_format((float) $row->total, 2, ',', '.') . ' €')
|
||||
->edit('created_at', fn($row) => date('d/m/Y', strtotime($row->created_at)))
|
||||
->add('actionBtns', function ($row) {
|
||||
return '<div class="btn-group btn-group-sm">
|
||||
<a href="https://gestion.safekat.es/pedido/detail/' . $row->id . '" class="btn btn-sm btn-info" target="_blank">
|
||||
<i class="ti ti-eye"></i> Ver
|
||||
</a>
|
||||
</div>';
|
||||
}, 'last')
|
||||
->toJson(returnAsObject: true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -8,7 +8,8 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
protected $primaryKey = 'id';
|
||||
protected $DBGroup = 'old_erp';
|
||||
|
||||
public function getClientList(){
|
||||
public function getClientList()
|
||||
{
|
||||
|
||||
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
||||
$builder = $db->table('customers');
|
||||
@ -19,8 +20,9 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
}
|
||||
|
||||
|
||||
public function getPresupuestosList($clienteId, $search = ""){
|
||||
|
||||
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');
|
||||
@ -28,17 +30,18 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
$builder->whereIn('estado', ['finalizado', 'validado', 'presupuesto']);
|
||||
$builder->where('deleted_at', NULL);
|
||||
$builder->orderBy('updated_at', 'DESC');
|
||||
|
||||
return empty($search) ?
|
||||
$builder->get()->getResultObject() :
|
||||
|
||||
return empty($search) ?
|
||||
$builder->get()->getResultObject() :
|
||||
$builder->groupStart()->
|
||||
like('titulo', $search)->
|
||||
orLike('id', $search)->
|
||||
orLike('id', $search)->
|
||||
groupEnd()->get()->getResultObject();
|
||||
}
|
||||
|
||||
public function getPresupuestoForImport($id){
|
||||
|
||||
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.customer_id,
|
||||
@ -50,7 +53,7 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
->where('t1.id', $id)
|
||||
->where('t1.deleted_at', NULL);
|
||||
$query = $builder->get();
|
||||
$datosGenerales = $query->getRow();
|
||||
$datosGenerales = $query->getRow();
|
||||
|
||||
$builder = $db->table('pedido_libro_manipulado')
|
||||
->select('nombre')
|
||||
@ -69,10 +72,9 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
->where('pedido_libro_id', $id)
|
||||
->where('nombre', 'Prototipo');
|
||||
$query = $builder->countAllResults();
|
||||
if($query > 0){
|
||||
if ($query > 0) {
|
||||
$datosGenerales->prototipo = 1;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$datosGenerales->prototipo = 0;
|
||||
}
|
||||
|
||||
@ -85,7 +87,7 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
$query = $builder->get();
|
||||
$lineas = $query->getResultObject();
|
||||
|
||||
|
||||
|
||||
return [
|
||||
'datosGenerales' => $datosGenerales,
|
||||
'manipulados' => $manipulados,
|
||||
@ -95,8 +97,9 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
|
||||
}
|
||||
|
||||
public function getDatosGuardar($id){
|
||||
|
||||
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')
|
||||
@ -107,12 +110,13 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
->where('t1.id', $id)
|
||||
->where('t1.deleted_at', NULL);
|
||||
$query = $builder->get();
|
||||
$datosGenerales = $query->getRow();
|
||||
$datosGenerales = $query->getRow();
|
||||
return $query->getRow();
|
||||
}
|
||||
|
||||
public function getDirecciones($id){
|
||||
|
||||
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,
|
||||
@ -123,6 +127,20 @@ class ImportadorModel extends \App\Models\BaseModel
|
||||
return $query->getResultObject();
|
||||
}
|
||||
|
||||
public function getHistoricoPedidosCatalogo(?int $catalogoId = null)
|
||||
{
|
||||
$db = \Config\Database::connect($this->DBGroup);
|
||||
|
||||
$builder = $db->table('pedido_libro t1')
|
||||
->select('t1.id, t1.created_at, t1.titulo, t1.paginas, t1.tirada, t1.total, t1.estado');
|
||||
|
||||
if ($catalogoId !== null) {
|
||||
$builder->where('t1.catalogo_id', $catalogoId);
|
||||
}
|
||||
|
||||
return $builder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,58 @@
|
||||
<div class="accordion accordion-bordered mt-3" id="accordionPedidos">
|
||||
<div class="card accordion-item">
|
||||
<h2 class="accordion-header" id="headingPedidos">
|
||||
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse"
|
||||
data-bs-target="#collapsePedidos" aria-expanded="false" aria-controls="collapsePedidos">
|
||||
<h5 class="mb-0">Pedidos</h5>
|
||||
</button>
|
||||
</h2>
|
||||
|
||||
<div id="collapsePedidos" class="accordion-collapse collapse" data-bs-parent="#accordionPedidos">
|
||||
<div class="accordion-body">
|
||||
|
||||
<!-- Campo oculto para JS -->
|
||||
<input type="hidden" id="catalogo_id" value="<?= esc($catalogoLibrosEntity->id ?? '') ?>">
|
||||
|
||||
<!--
|
||||
<div class="row">
|
||||
<div class="col-12 mb-4">
|
||||
<h5>Pedidos - ERP 2.0</h5>
|
||||
<table id="tablaPedidosERP2" class="table table-striped" style="width:100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Fecha</th>
|
||||
<th>Título</th>
|
||||
<th>Nº Páginas</th>
|
||||
<th>Tirada</th>
|
||||
<th>Total</th>
|
||||
<th>Estado</th>
|
||||
<th>Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div class="col-12 mb-4">
|
||||
<h5>Pedidos - Antiguo ERP</h5>
|
||||
<table id="tablaPedidosAntiguos" class="table table-striped table-hover" style="width:100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Fecha</th>
|
||||
<th>Título</th>
|
||||
<th>Nº Páginas</th>
|
||||
<th>Tirada</th>
|
||||
<th>Total</th>
|
||||
<th>Estado</th>
|
||||
<th>Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1,3 +1,4 @@
|
||||
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
|
||||
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
|
||||
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
|
||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
@ -19,6 +20,7 @@
|
||||
<?= view("themes/vuexy/form/catalogo/_datosGeneralesFormItems") ?>
|
||||
<?= view("themes/vuexy/form/catalogo/_otrosDatosFormItems") ?>
|
||||
<?= view("themes/vuexy/form/catalogo/_configuracionLibroFormItems") ?>
|
||||
<?= view("themes/vuexy/form/catalogo/_historicoPedidos") ?>
|
||||
<?= view("themes/vuexy/form/catalogo/_trackingFormItems") ?>
|
||||
</div>
|
||||
<!-- /.card-body -->
|
||||
@ -39,10 +41,21 @@
|
||||
|
||||
|
||||
<?= $this->section('css') ?>
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>">
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>">
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
<?= $this->section("additionalExternalJs") ?>
|
||||
<script type="module" src="<?= site_url('assets/js/safekat/pages/catalogo/catalogo.js?' . 'token' . '=' . (csrf_token() ?? "token")) ?>"></script>
|
||||
<script
|
||||
src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script>
|
||||
<script
|
||||
src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/jszip/jszip.min.js") ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/pdfmake.min.js") ?>"
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
|
||||
<script type="module"
|
||||
src="<?= site_url('assets/js/safekat/pages/catalogo/catalogo.js?' . 'token' . '=' . (csrf_token() ?? "token")) ?>"></script>
|
||||
<?= $this->endSection() ?>
|
||||
@ -295,6 +295,7 @@ class Catalogo {
|
||||
this.selectGramajeSobrecubiertaPod.init();
|
||||
this.acabadosSobrecubierta.init();
|
||||
|
||||
this.initPedidosTable();
|
||||
|
||||
// Al cargar la página
|
||||
this.toggleSobrecubiertaFields();
|
||||
@ -327,6 +328,62 @@ class Catalogo {
|
||||
});
|
||||
}
|
||||
|
||||
initPedidosTable() {
|
||||
|
||||
const lastColPedidos = $('#tablaPedidosAntiguos').find("tr:first th").length - 1;
|
||||
const catalogoId = $('#catalogo_id').val(); // Asegúrate que este valor exista
|
||||
|
||||
const tablaPedidosAntiguos = $('#tablaPedidosAntiguos').DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
autoWidth: true,
|
||||
orderCellsTop: true,
|
||||
responsive: true,
|
||||
scrollX: true,
|
||||
lengthMenu: [5, 10, 25, 50, 75, 100],
|
||||
pageLength: 10,
|
||||
lengthChange: true,
|
||||
dom: 'lfBrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'print', {
|
||||
extend: 'pdfHtml5',
|
||||
orientation: 'landscape',
|
||||
pageSize: 'A4'
|
||||
}
|
||||
],
|
||||
order: [[1, 'desc']],
|
||||
language: {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
ajax: {
|
||||
url: '/catalogo/libros/pedidosAntiguos',
|
||||
method: 'GET',
|
||||
data: {
|
||||
catalogo_id: catalogoId
|
||||
}
|
||||
},
|
||||
columnDefs: [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColPedidos]
|
||||
}
|
||||
],
|
||||
columns: [
|
||||
{ data: 'id' },
|
||||
{ data: 'created_at' },
|
||||
{ data: 'titulo' },
|
||||
{ data: 'paginas' },
|
||||
{ data: 'tirada' },
|
||||
{ data: 'total' },
|
||||
{ data: 'estado' },
|
||||
{ data: 'actionBtns' }
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
actualizarDesdeColor() {
|
||||
const total = parseInt(this.total.val(), 10) || 0;
|
||||
const color = parseInt(this.color.val(), 10) || 0;
|
||||
|
||||
Reference in New Issue
Block a user