From 25b6d144234e4e0aecaeba10cdf4a326cd0f355d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 26 Apr 2025 14:16:32 +0200 Subject: [PATCH 1/2] falta boton borrar albaranes! --- ci4/app/Config/Routes.php | 6 ++ ci4/app/Controllers/Albaranes/Albaran.php | 55 +++++++++++++++++++ .../Logistica/LogisticaController.php | 11 ++++ ci4/app/Language/es/Albaran.php | 8 +++ ci4/app/Models/Albaranes/AlbaranModel.php | 52 ++++++++++++++++++ .../form/logistica/viewPanelLogistica.php | 2 +- .../js/safekat/components/albaranComponent.js | 10 +++- 7 files changed, 141 insertions(+), 3 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index d1b401de..bf62404a 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']); @@ -820,6 +823,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..ae1ce778 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/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/viewPanelLogistica.php b/ci4/app/Views/themes/vuexy/form/logistica/viewPanelLogistica.php index 76698bb6..d716dbe5 100755 --- a/ci4/app/Views/themes/vuexy/form/logistica/viewPanelLogistica.php +++ b/ci4/app/Views/themes/vuexy/form/logistica/viewPanelLogistica.php @@ -25,7 +25,7 @@ " alt="Etiquetas de títulos">
-
+
" alt="Albaranes">
diff --git a/httpdocs/assets/js/safekat/components/albaranComponent.js b/httpdocs/assets/js/safekat/components/albaranComponent.js index 92ca1c32..c3f300aa 100644 --- a/httpdocs/assets/js/safekat/components/albaranComponent.js +++ b/httpdocs/assets/js/safekat/components/albaranComponent.js @@ -1,14 +1,17 @@ import DatePicker from "./datepicker.js"; class AlbaranComponent { - constructor(item) { + constructor(item, url_after_delete = '') { + + this.url_after_delete = url_after_delete; + this.item = item; this.id = item.id; this.numero = item.numero_albaran; this.cliente = item.cliente; this.att = item.att; this.direccion = item.direccion; - this.envio_id = item.envio_id; + this.envio_id = item.envio_id != null ? item.envio_id : ''; this.fecha = null; if(this.item.fecha_albaran != null){ const [dia, mes, anio] = item.fecha_albaran.split('/'); @@ -461,6 +464,9 @@ class AlbaranComponent { if (response.success) { // quitar del dom el albarán $(`#accordioAlbaran${albaranId}`).remove(); + if(this.url_after_delete != ''){ + window.location.href = this.url_after_delete; + } } else { Swal.fire({ title: 'Error', From dfbcb13ba57ef613dd1fa10fabb1effc6fb76b64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 26 Apr 2025 17:27:29 +0200 Subject: [PATCH 2/2] hecho tema albaranes logistica --- ci4/app/Controllers/Albaranes/Albaran.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Controllers/Albaranes/Albaran.php b/ci4/app/Controllers/Albaranes/Albaran.php index ae1ce778..8682fb99 100755 --- a/ci4/app/Controllers/Albaranes/Albaran.php +++ b/ci4/app/Controllers/Albaranes/Albaran.php @@ -370,7 +370,7 @@ class Albaran extends \App\Controllers\BaseResourceController return '
- +
'; }