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/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 @@ +include("themes/_commonPartialsBs/sweetalert") ?> +include('themes/_commonPartialsBs/datatables') ?> +include("themes/_commonPartialsBs/select2bs5") ?> +extend('themes/vuexy/main/defaultlayout') ?> + +section('content'); ?> +
+
+
+
+

+
+
+ + + + + +
+
+
+
+ + +endSection() ?> + + +section('css') ?> + +endSection() ?> + +section('additionalExternalJs') ?> + + +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/logistica/albaranes/viewAlbaranesList.php b/ci4/app/Views/themes/vuexy/form/logistica/albaranes/viewAlbaranesList.php new file mode 100644 index 00000000..fc5d63ca --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/logistica/albaranes/viewAlbaranesList.php @@ -0,0 +1,65 @@ +include("themes/_commonPartialsBs/sweetalert") ?> +include('themes/_commonPartialsBs/datatables') ?> +include("themes/_commonPartialsBs/select2bs5") ?> +extend('themes/vuexy/main/defaultlayout') ?> + +section('content'); ?> +
+
+
+
+

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + +endSection() ?> + + +section('css') ?> + +endSection() ?> + +section('additionalExternalJs') ?> + + +endSection() ?> \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/albaranes/edit.js b/httpdocs/assets/js/safekat/pages/albaranes/edit.js new file mode 100644 index 00000000..d7e85649 --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/albaranes/edit.js @@ -0,0 +1,43 @@ +import Ajax from '../../components/ajax.js'; +import AlbaranComponent from '../../components/albaranComponent.js'; + +$(() => { + + const dropdown = document.querySelector(".dropdown-language"); + const activeItem = dropdown.querySelector(".dropdown-menu .dropdown-item"); + let locale = 'es'; + if (activeItem) { + locale = activeItem.getAttribute("data-language"); + } + + new Ajax('/translate/getTranslation', { locale: locale, translationFile: ['Albaran'] }, {}, + function (translations) { + window.language = JSON.parse(translations); + new Ajax( + '/albaranes/getAlbaran', + { + id: $('#id').val() + }, + {}, + function (data, headers, success, error, type) { + if (success) { + const albaran = new AlbaranComponent(data.data, '/logistica/listAlbaranes'); + albaran.mount('#albaranContainer'); + $('.accordion-button').trigger('click'); + + } else { + popErrorAlert(error); + } + }, + function (data, headers, success, error, type) { + popErrorAlert(error); + } + ).get(); + }, + function (error) { + console.log("Error getting translations:", error); + } + ).post(); + + +}); \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/albaranes/list.js b/httpdocs/assets/js/safekat/pages/albaranes/list.js new file mode 100644 index 00000000..06c91cea --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/albaranes/list.js @@ -0,0 +1,160 @@ +import Ajax from "../../components/ajax.js"; + +$(() => { + + let pedidosFilter = ''; + + const dropdown = document.querySelector(".dropdown-language"); + const activeItem = dropdown.querySelector(".dropdown-menu .dropdown-item"); + let locale = 'es'; + if (activeItem) { + locale = activeItem.getAttribute("data-language"); + } + + new Ajax('/translate/getTranslation', { locale: locale, translationFile: ['Albaran'] }, {}, + function (translations) { + window.language = JSON.parse(translations); + }, + function (error) { + console.log("Error getting translations:", error); + } + ).post(); + + + $('#btnAddEnvio').on('click', () => { + const pedido_id = selectPedidos.getVal(); + const direccionSeleccionada = selectDirecciones.getText(); + $.post('/albaranes/datatable', { + pedido_id: pedido_id, + direccion: direccionSeleccionada + }, function (response) { + if (response.status) { + window.open(`${window.location.origin}/logistica/envio/${response.data.id_envio}`); + selectDirecciones.empty(); + selectPedidos.empty(); + $('.select-direcciones').addClass('d-none'); + $('.add-envio').addClass('d-none'); + } else { + popErrorAlert(response.message); + } + }).fail(function (xhr, status, error) { + popErrorAlert(error); + }); + }) + + + const tableAlbaranes = $('#tableOfAlbaranes').DataTable({ + processing: true, + serverSide: true, + autoWidth: true, + responsive: true, + scrollX: true, + orderCellsTop: true, + lengthMenu: [5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500], + pageLength: 50, + "dom": 'lBrtip', + "ajax": { + "url": "/albaranes/datatable", + "data": function (d) { + d.pedidosFilter = pedidosFilter; + } + }, + "columns": [ + { "data": "id" }, + { "data": "numero_albaran" }, + { "data": "envio_id" }, + { "data": "pedidos" }, + { "data": "cliente" }, + { "data": "att" }, + { "data": "direccion" }, + { "data": "unidades_total" }, + { "data": "cajas" }, + { "data": "action" } + + ], + "language": { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + "columnDefs": [ + { + orderable: false, + searchable: false, + targets: [9] + }, + ], + "order": [[0, "desc"]], + }); + + $(document).on('click', '.btn-delete', function (e) { + const data = { + albaranId: $(this).attr('data-id') + }; + const url = '/albaranes/borrarAlbaran'; + + Swal.fire({ + title: window.language.Albaran.borrarAlbaran, + text: window.language.Albaran.borrarAlbaranConfirm, + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: window.language.Albaran.borrar, + cancelButtonText: window.language.Albaran.cancelar, + customClass: { + confirmButton: 'btn btn-primary me-1', + cancelButton: 'btn btn-outline-secondary' + }, + buttonsStyling: false + }).then((result) => { + + + $.ajax({ + url: url, + type: 'POST', + data: data, + success: (response) => { + if (response.success) { + tableAlbaranes.draw(); + } else { + Swal.fire({ + title: 'Error', + text: 'No se ha podido borrar el albarán', + icon: 'error', + showCancelButton: false, + confirmButtonColor: '#3085d6', + confirmButtonText: 'Ok', + customClass: { + confirmButton: 'btn btn-primary me-1', + }, + buttonsStyling: false + }); + } + }, + error: (xhr, status, error) => { + console.error(error); + } + }); + }); + + }); + + + $(document).on('click', '.btn-edit', function (e) { + window.location.href = '/albaranes/edit/' + $(this).attr('data-id'); + }); + + $(document).on("keyup", ".albaran-filter", (event) => { + let columnName = $(event.currentTarget).attr("name"); + let columnIndex = $('#tableOfAlbaranes').DataTable().columns().eq(0).filter(function (index) { + return $('#tableOfAlbaranes').DataTable().column(index).dataSrc() === columnName; + })[0]; + $('#tableOfAlbaranes').DataTable().column(columnIndex).search($(event.currentTarget).val()).draw() + }) + + + $(document).on("keyup", ".albaran-filter-pedidos", (event) => { + pedidosFilter = $(event.currentTarget).val(); + $('#tableOfAlbaranes').DataTable().ajax.reload(); + }) + +}); \ No newline at end of file