mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'feat/catalogo_historico_pedidos' into 'main'
Feat/catalogo historico pedidos See merge request jjimenez/safekat!844
This commit is contained in:
@ -23,6 +23,7 @@ $routes->group('catalogo', ['namespace' => 'App\Controllers\Catalogo'], function
|
|||||||
* AJAX
|
* AJAX
|
||||||
*========================**/
|
*========================**/
|
||||||
$routes->get('clientlist', 'CatalogoLibros::getClientList', ['as' => 'catalogoLibrosClientList']);
|
$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\Entities\Catalogo\CatalogoLibroEntity;
|
||||||
use App\Models\Catalogo\CatalogoLibroModel;
|
use App\Models\Catalogo\CatalogoLibroModel;
|
||||||
use App\Models\Clientes\ClienteModel;
|
use App\Models\Clientes\ClienteModel;
|
||||||
|
use App\Models\Presupuestos\ImportadorModel;
|
||||||
use Hermawan\DataTables\DataTable;
|
use Hermawan\DataTables\DataTable;
|
||||||
|
|
||||||
class CatalogoLibros extends BaseResourceController
|
class CatalogoLibros extends BaseResourceController
|
||||||
@ -224,7 +225,6 @@ class CatalogoLibros extends BaseResourceController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* IMN */
|
/* IMN */
|
||||||
public function getClientList()
|
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 $primaryKey = 'id';
|
||||||
protected $DBGroup = 'old_erp';
|
protected $DBGroup = 'old_erp';
|
||||||
|
|
||||||
public function getClientList(){
|
public function getClientList()
|
||||||
|
{
|
||||||
|
|
||||||
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
||||||
$builder = $db->table('customers');
|
$builder = $db->table('customers');
|
||||||
@ -19,7 +20,8 @@ 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
|
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
||||||
$builder = $db->table('pedido_libro');
|
$builder = $db->table('pedido_libro');
|
||||||
@ -37,7 +39,8 @@ class ImportadorModel extends \App\Models\BaseModel
|
|||||||
groupEnd()->get()->getResultObject();
|
groupEnd()->get()->getResultObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPresupuestoForImport($id){
|
public function getPresupuestoForImport($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')
|
$builder = $db->table('pedido_libro t1')
|
||||||
@ -50,7 +53,7 @@ class ImportadorModel extends \App\Models\BaseModel
|
|||||||
->where('t1.id', $id)
|
->where('t1.id', $id)
|
||||||
->where('t1.deleted_at', NULL);
|
->where('t1.deleted_at', NULL);
|
||||||
$query = $builder->get();
|
$query = $builder->get();
|
||||||
$datosGenerales = $query->getRow();
|
$datosGenerales = $query->getRow();
|
||||||
|
|
||||||
$builder = $db->table('pedido_libro_manipulado')
|
$builder = $db->table('pedido_libro_manipulado')
|
||||||
->select('nombre')
|
->select('nombre')
|
||||||
@ -69,10 +72,9 @@ class ImportadorModel extends \App\Models\BaseModel
|
|||||||
->where('pedido_libro_id', $id)
|
->where('pedido_libro_id', $id)
|
||||||
->where('nombre', 'Prototipo');
|
->where('nombre', 'Prototipo');
|
||||||
$query = $builder->countAllResults();
|
$query = $builder->countAllResults();
|
||||||
if($query > 0){
|
if ($query > 0) {
|
||||||
$datosGenerales->prototipo = 1;
|
$datosGenerales->prototipo = 1;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$datosGenerales->prototipo = 0;
|
$datosGenerales->prototipo = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +97,8 @@ 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
|
||||||
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
||||||
@ -107,11 +110,12 @@ class ImportadorModel extends \App\Models\BaseModel
|
|||||||
->where('t1.id', $id)
|
->where('t1.id', $id)
|
||||||
->where('t1.deleted_at', NULL);
|
->where('t1.deleted_at', NULL);
|
||||||
$query = $builder->get();
|
$query = $builder->get();
|
||||||
$datosGenerales = $query->getRow();
|
$datosGenerales = $query->getRow();
|
||||||
return $query->getRow();
|
return $query->getRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDirecciones($id){
|
public function getDirecciones($id)
|
||||||
|
{
|
||||||
|
|
||||||
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
|
||||||
$builder = $db->table('pedido_libro_envios t1')
|
$builder = $db->table('pedido_libro_envios t1')
|
||||||
@ -123,6 +127,20 @@ class ImportadorModel extends \App\Models\BaseModel
|
|||||||
return $query->getResultObject();
|
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/select2bs5") ?>
|
||||||
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
|
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
|
||||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||||
@ -19,6 +20,7 @@
|
|||||||
<?= view("themes/vuexy/form/catalogo/_datosGeneralesFormItems") ?>
|
<?= view("themes/vuexy/form/catalogo/_datosGeneralesFormItems") ?>
|
||||||
<?= view("themes/vuexy/form/catalogo/_otrosDatosFormItems") ?>
|
<?= view("themes/vuexy/form/catalogo/_otrosDatosFormItems") ?>
|
||||||
<?= view("themes/vuexy/form/catalogo/_configuracionLibroFormItems") ?>
|
<?= view("themes/vuexy/form/catalogo/_configuracionLibroFormItems") ?>
|
||||||
|
<?= view("themes/vuexy/form/catalogo/_historicoPedidos") ?>
|
||||||
<?= view("themes/vuexy/form/catalogo/_trackingFormItems") ?>
|
<?= view("themes/vuexy/form/catalogo/_trackingFormItems") ?>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.card-body -->
|
<!-- /.card-body -->
|
||||||
@ -39,10 +41,21 @@
|
|||||||
|
|
||||||
|
|
||||||
<?= $this->section('css') ?>
|
<?= $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->endSection() ?>
|
||||||
|
|
||||||
|
|
||||||
<?= $this->section("additionalExternalJs") ?>
|
<?= $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() ?>
|
<?= $this->endSection() ?>
|
||||||
@ -295,6 +295,7 @@ class Catalogo {
|
|||||||
this.selectGramajeSobrecubiertaPod.init();
|
this.selectGramajeSobrecubiertaPod.init();
|
||||||
this.acabadosSobrecubierta.init();
|
this.acabadosSobrecubierta.init();
|
||||||
|
|
||||||
|
this.initPedidosTable();
|
||||||
|
|
||||||
// Al cargar la página
|
// Al cargar la página
|
||||||
this.toggleSobrecubiertaFields();
|
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() {
|
actualizarDesdeColor() {
|
||||||
const total = parseInt(this.total.val(), 10) || 0;
|
const total = parseInt(this.total.val(), 10) || 0;
|
||||||
const color = parseInt(this.color.val(), 10) || 0;
|
const color = parseInt(this.color.val(), 10) || 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user