From 2b7b12fde72292a2c78da1e71ab8a21d685b18bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 9 Jul 2024 15:21:20 +0200 Subject: [PATCH] =?UTF-8?q?a=C3=B1adiendo=20linea=20factura?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Config/Routes.php | 2 + ci4/app/Controllers/Facturacion/Facturas.php | 56 +++++++++++++++++++ ci4/app/Controllers/Test.php | 10 ++-- ci4/app/Models/Pedidos/PedidoLineaModel.php | 36 ++++++++++++ .../vuexy/form/facturas/_addPedidosItems.php | 47 +++++++++++++++- 5 files changed, 146 insertions(+), 5 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 58d03ffe..9ee4c0ed 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -657,6 +657,8 @@ $routes->group('facturas', ['namespace' => 'App\Controllers\Facturacion'], funct $routes->get('edit/(:any)', 'Facturas::edit/$1', ['as' => 'editarFactura']); $routes->post('update/(:any)', 'Facturas::update/$1', ['as' => 'actualizarFactura']); $routes->post('datatable/(:any)', 'FacturasLineas::datatable/$1', ['as' => 'dataTableOfLineasFacturas']); + $routes->post('menuPedidosPendientes/(:num)', 'Facturas::menuPedidosPendientes/$1', ['as' => 'menuPedidosPendientesImpresion']); + $routes->post('addLineaPedidoImpresion/(:num)', 'Facturas::addLineaPedidoImpresion/$1', ['as' => 'addLineaPedidoImpresion2Factura']); }); diff --git a/ci4/app/Controllers/Facturacion/Facturas.php b/ci4/app/Controllers/Facturacion/Facturas.php index 637dc9de..cf244dac 100755 --- a/ci4/app/Controllers/Facturacion/Facturas.php +++ b/ci4/app/Controllers/Facturacion/Facturas.php @@ -287,6 +287,62 @@ class Facturas extends \App\Controllers\BaseResourceController } + public function menuPedidosPendientes($cliente_id){ + + if ($this->request->isAJAX()) { + $model = model('\App\Models\Pedidos\PedidoLineaModel'); + + $pedidos = []; + try{ + $pedidos = $model->obtenerLineasPedidoSinFacturar($cliente_id); + } + catch(Exception $e){ + + } + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'menu' => $pedidos, + $csrfTokenName => $newTokenHash + ]; + return $this->respond($data); + } + else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + public function addLineaPedidoImpresion($factura_id){ + + if ($this->request->isAJAX()) { + $model_pedido_linea = model('\App\Models\Pedidos\PedidoLineaModel'); + $model_presupuesto = model('\App\Models\Pedidos\PedidoLineaModel'); + $model_factura_linea = model('\App\Models\Facturas\FacturaLineaModel'); + + $pedido_linea_id = $this->request->getPost('lineaPedido') ?? 0; + + $linea = $model_pedido_linea->find($pedido_linea_id); + if($linea){ + $presupuesto = $model_presupuesto->find($linea->presupuesto_id); + if($presupuesto){ + + } + } + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + $csrfTokenName => $newTokenHash + ]; + return $this->respond($data); + } + else { + return $this->failUnauthorized('Invalid request', 403); + } + } + /************************************* * FUNCIONES AUXILIARES ************************************/ diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 3b6973fc..e102bb18 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -20,11 +20,13 @@ class Test extends BaseController public function index() { - $model = new PresupuestoModel(); - $data = $model->generarLineaPedido(123); - echo '
';
+
+        $model = model("\App\Models\Pedidos\PedidoLineaModel");
+        $data = $model->obtenerLineasPedidoSinFacturar(999);
+        
+        echo('
');
         var_dump($data);
-        echo '
'; + echo('
'); } diff --git a/ci4/app/Models/Pedidos/PedidoLineaModel.php b/ci4/app/Models/Pedidos/PedidoLineaModel.php index 13308f06..8aee0c2a 100644 --- a/ci4/app/Models/Pedidos/PedidoLineaModel.php +++ b/ci4/app/Models/Pedidos/PedidoLineaModel.php @@ -76,4 +76,40 @@ class PedidoLineaModel extends \App\Models\BaseModel ->orLike("t1.id", $search) ->groupEnd(); } + + + public function obtenerLineasPedidoSinFacturar($cliente_id){ + + $resultaArray = []; + + $builder = $this->db + ->table($this->table . " t1") + ->select("t1.id AS id, t1.pedido_id AS pedido_id, t3.titulo AS titulo, t4.codigo AS tipo_impresion"); + + $builder->join("pedidos t2", "t2.id = t1.pedido_id", "left"); + $builder->join("presupuestos t3", "t3.id = t1.presupuesto_id", "left"); + $builder->join("tipos_presupuestos t4", "t4.id = t3.tipo_impresion_id", "left"); + + $builder->join("facturas_pedidos_lineas fpl", "fpl.pedido_linea_id = t1.id", "left"); + + $builder->where("t3.cliente_id", $cliente_id); + $builder->where("t2.estado", "finalizado"); + + + $builder->where("(`t3`.`tirada` > `fpl`.`cantidad` OR fpl.pedido_linea_id IS NULL)"); + + // Ejecutar la consulta y devolver resultados + $query = $builder->get(); + $data = $query->getResult(); + + foreach($data as $register){ + $item = (object)[ + 'id' => $register->id, + 'text' => '['. lang('Pedidos.pedido') . ' ' . $register->pedido_id . '] ' . $register->titulo . ' - ' . lang('Presupuestos.' . $register->tipo_impresion), + ]; + array_push($resultaArray, $item); + } + + return $resultaArray; + } } \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php index 8a105dca..a6cd7141 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php @@ -75,9 +75,54 @@ $('#pedidoImpresion').select2({ placeholder: "", allowClear: true, - width: '100%' + ajax: { + url: 'cliente_id) ?>', + type: 'post', + dataType: 'json', + + data: function (params) { + return { + id: 'id', + text: 'nombre', + searchTerm: params.term, + : v + }; + }, + delay: 60, + processResults: function (response) { + + yeniden(response.); + + return { + results: response.menu + }; + }, + + cache: true + } }); +$('#addNewPedidoImpresion').on('click', function(){ + var lineaPedido = $('#pedidoImpresion').val(); + if(lineaPedido == null) { + return; + } + $.ajax({ + url: 'id) ?>', + type: 'post', + data: { + lineaPedido: lineaPedido, + : v + }, + success: function(response) { + yeniden(response.); + $('#lineaPedido').val(null).trigger('change'); + } + }); +}); + + + $('#pedidoMaquetacion').select2({ placeholder: "", allowClear: true,