diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 95774bd2..55d5f84b 100755 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -522,6 +522,9 @@ $routes->group('albaranes', ['namespace' => 'App\Controllers\Albaranes'], functi $routes->post('updateAlbaranLinea', 'Albaran::updateAlbaranLinea'); $routes->post('addIvaAlbaran', 'Albaran::addLineasIva'); $routes->post('nuevaLineaAlbaran', 'Albaran::addBlankLineaAlbaran'); + $routes->get('datatable', 'Albaran::datatable', ['as' => 'dataTableOfAlbaranes']); + $routes->get('getAlbaran', 'Albaran::getAlbaran'); + $routes->get('edit/(:num)', 'Albaran::editAlbaran/$1', ['as' => 'editarAlbaran']); }); $routes->resource('albaranes', ['namespace' => 'App\Controllers\Pedidos', 'controller' => 'Albaran', 'except' => 'show,new,create,update']); @@ -821,6 +824,9 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi $routes->get('selectForNewEnvio', 'LogisticaController::findForNewEnvio'); $routes->get('selectDireccionForEnvio', 'LogisticaController::selectDireccionForEnvio'); $routes->post('imprimirEtiquetas', 'LogisticaController::imprimirEtiquetas'); + + $routes->get('listAlbaranes', 'LogisticaController::listAlbaranes', ['as' => 'albaranesList']); + }); /* diff --git a/ci4/app/Controllers/Albaranes/Albaran.php b/ci4/app/Controllers/Albaranes/Albaran.php index 109d00f0..8682fb99 100755 --- a/ci4/app/Controllers/Albaranes/Albaran.php +++ b/ci4/app/Controllers/Albaranes/Albaran.php @@ -47,6 +47,18 @@ class Albaran extends \App\Controllers\BaseResourceController } } + public function editAlbaran($albaran_id){ + + $albaran = $this->model->find($albaran_id); + if ($albaran == false) { + return redirect()->to(base_url('albaranesList')); + } + $this->viewData['boxTitle'] = lang('Albaran.editAlbaran') . ' ' . $albaran->numero_albaran; + $this->viewData['albaranId'] = $albaran_id; + + return view('themes/vuexy/form/logistica/albaranes/viewAlbaranesEdit', $this->viewData); + } + public function addLinea($albaran_id) { @@ -305,6 +317,23 @@ class Albaran extends \App\Controllers\BaseResourceController } } + public function getAlbaran() + { + + if ($this->request->isAJAX()) { + + $id = $this->request->getGet('id'); + $albaran = $this->model->getAlbaranData($id); + $data = [ + 'success' => true, + 'data' => $albaran, + ]; + return $this->respond($data); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function generateAlbaran() { @@ -324,6 +353,32 @@ class Albaran extends \App\Controllers\BaseResourceController } } + public function datatable(){ + + $pedidosFilter = $this->request->getGet('pedidosFilter'); + $q = $this->model->getDatatableQuery(); + + if($pedidosFilter != null && !empty($pedidosFilter)) { + $q->groupStart(); + $q->like('t4.id', $pedidosFilter); + $q->groupEnd(); + } + $result = DataTable::of($q) + ->add( + "action", + callback: function ($q) { + return ' +
+ '; + } + ); + + return $result->toJson(returnAsObject: true); + } + public function datatablesLineasAlbaran() { diff --git a/ci4/app/Controllers/Logistica/LogisticaController.php b/ci4/app/Controllers/Logistica/LogisticaController.php index ecc38ba2..f293bb3e 100755 --- a/ci4/app/Controllers/Logistica/LogisticaController.php +++ b/ci4/app/Controllers/Logistica/LogisticaController.php @@ -69,6 +69,17 @@ class LogisticaController extends BaseController return view(static::$viewPath . 'viewLogisticaSelectEnvios', $viewData); } + public function listAlbaranes(){ + $viewData = [ + 'currentModule' => static::$controllerSlug, + 'boxTitle' => lang('Albaran.albaranes'), + 'usingServerSideDataTable' => true, + ]; + + $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class + + return view(static::$viewPath . '/albaranes/viewAlbaranesList', $viewData); + } public function findForNewEnvio() { diff --git a/ci4/app/Database/Migrations/2025-04-26-180000_AddFerroProtoPresupuestoDirecciones.php b/ci4/app/Database/Migrations/2025-04-26-180000_AddFerroProtoPresupuestoDirecciones.php new file mode 100644 index 00000000..a80e7131 --- /dev/null +++ b/ci4/app/Database/Migrations/2025-04-26-180000_AddFerroProtoPresupuestoDirecciones.php @@ -0,0 +1,36 @@ + [ + "type" => "INT", + "unsigned" => true, + "default" => 0, + "comment" => "Click iniciales de una tarea de impresion" + ], + "click_end" => [ + "type" => "INT", + "unsigned" => true, + "default" => 0, + "comment" => "Click finales de una tarea de impresion" + ], + ]; + public function up() + { + $this->forge->addColumn('orden_trabajo_tareas', $this->COLUMNS); + } + + public function down() + { + $this->forge->dropColumn('orden_trabajo_tareas', array_keys($this->COLUMNS)); + } +} diff --git a/ci4/app/Language/es/Albaran.php b/ci4/app/Language/es/Albaran.php index 31966e67..ac7aace4 100644 --- a/ci4/app/Language/es/Albaran.php +++ b/ci4/app/Language/es/Albaran.php @@ -1,13 +1,19 @@ 'ID', 'fechaCreacion' => 'Fecha de creación', "fechaAlbaran" => 'Fecha de albarán', 'numEnvio' => 'Número de envío', 'cliente' => 'Cliente', 'albaran' => 'Albarán', + 'numAlbaran' => 'Número de albarán', + 'numPedidos' => 'Número de Pedidos', + 'unidadesTotal' => 'Unidades Totales', + 'albaranes' => 'Albaranes', 'att' => 'Att', 'direccion' => 'Dirección', 'cajas' => 'Cajas', + 'acciones' => 'Acciones', 'unidades' => 'Unidades', 'titulo' => 'Título', @@ -28,4 +34,6 @@ return [ 'iva4' => 'IVA 4%', 'iva21' => 'IVA 21%', + + 'editAlbaran' => 'Editar albarán', ]; \ No newline at end of file diff --git a/ci4/app/Models/Albaranes/AlbaranModel.php b/ci4/app/Models/Albaranes/AlbaranModel.php index 42b492f2..a8c871a3 100644 --- a/ci4/app/Models/Albaranes/AlbaranModel.php +++ b/ci4/app/Models/Albaranes/AlbaranModel.php @@ -173,6 +173,37 @@ class AlbaranModel extends \App\Models\BaseModel return $albaran_data; } + + public function getAlbaranData($albaran_id=null){ + if (!$albaran_id) { + return []; + } + + $albaran_data = $this->db->table('albaranes t1') + ->select(" + t1.id, + t1.att_albaran AS att, + t1.direccion_albaran AS direccion, + t1.envio_id, + t1.numero_albaran AS numero_albaran, + DATE_FORMAT(t1.created_at, '%d/%m/%Y') AS fecha_creacion, + DATE_FORMAT(t1.fecha_albaran, '%d/%m/%Y') AS fecha_albaran, + t1.mostrar_precios AS mostrar_precios, + t2.nombre AS cliente, + t1.cajas AS cajas + ") + ->join('clientes t2', 't1.cliente_id = t2.id', 'left') + ->where('t1.id', $albaran_id) + ->where('t1.deleted_at IS NULL') + ->get() + ->getResultObject(); + if (count($albaran_data) == 0) { + return []; + } + + return $albaran_data[0]; + } + /** * Get resource data for creating PDFs. * @@ -203,4 +234,25 @@ class AlbaranModel extends \App\Models\BaseModel return $builder; } + + public function getDatatableQuery() + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id, t1.numero_albaran as numero_albaran, t1.envio_id as envio_id, GROUP_CONCAT(DISTINCT t4.id) AS pedidos, + t5.nombre as cliente, t1.att_albaran as att, t1.direccion_albaran as direccion, SUM(t2.cantidad) as unidades_total, + t1.cajas as cajas" + ) + ->join("albaranes_lineas t2", "t1.id = t2.albaran_id", "left") + ->join("pedidos_linea t3", "t2.pedido_linea_id = t3.id", "left") + ->join("pedidos t4", "t3.pedido_id = t4.id", "left") + ->join("clientes t5", "t1.cliente_id = t5.id", "left"); + + $builder->where("t1.deleted_at IS NULL"); + $builder->where("t2.deleted_at IS NULL"); + $builder->groupBy("t1.id"); + + return $builder; + } } \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/logistica/albaranes/viewAlbaranesEdit.php b/ci4/app/Views/themes/vuexy/form/logistica/albaranes/viewAlbaranesEdit.php new file mode 100644 index 00000000..15cdd857 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/logistica/albaranes/viewAlbaranesEdit.php @@ -0,0 +1,35 @@ += $this->include("themes/_commonPartialsBs/sweetalert") ?> += $this->include('themes/_commonPartialsBs/datatables') ?> += $this->include("themes/_commonPartialsBs/select2bs5") ?> += $this->extend('themes/vuexy/main/defaultlayout') ?> + += $this->section('content'); ?> +| = lang('Albaran.id') ?> | += lang('Albaran.numAlbaran') ?> | += lang('Albaran.numEnvio') ?> | += lang('Albaran.numPedidos') ?> | += lang('Albaran.cliente') ?> | += lang('Albaran.att') ?> | += lang('Albaran.direccion') ?> | += lang('Albaran.unidadesTotal') ?> | += lang('Albaran.cajas') ?> | += lang('Albaran.acciones') ?? 'Acciones' ?> | +
|---|---|---|---|---|---|---|---|---|---|
| + | + | + | + | + | + | + | + | + | + |