añadido calculo y aviso de unidades en albaranes

This commit is contained in:
2025-03-23 19:41:10 +01:00
parent a18207202c
commit 67546d347f
8 changed files with 95 additions and 44 deletions

View File

@ -29,6 +29,8 @@ const SK_PERMISSION_MATRIX = [
"pedidos-cancelados.menu",
"pedidos-todos.view",
"pedidos-todos.menu",
"pedidos-gestion.toprod",
"pedidos-gestion.menu",
"tarifa-preimpresion.create",
"tarifa-preimpresion.edit",
"tarifa-preimpresion.delete",
@ -169,6 +171,29 @@ const SK_PERMISSION_MATRIX = [
"token.menu",
],
"director" => [
"clientes.create",
"clientes.edit",
"clientes.menu",
"plantilla-tarifa.create",
"plantilla-tarifa.edit",
"plantilla-tarifa.menu",
"direcciones.create",
"direcciones.edit",
"direcciones.menu",
"presupuesto.create",
"presupuesto.edit",
"presupuesto.menu",
"presupuesto-cliente.create",
"presupuesto-cliente.edit",
"presupuesto-cliente.menu",
"pedidos-activos.view",
"pedidos-activos.menu",
"pedidos-finalizados.view",
"pedidos-finalizados.menu",
"pedidos-cancelados.view",
"pedidos-cancelados.menu",
"pedidos-todos.view",
"pedidos-todos.menu",
"tarifa-preimpresion.create",
"tarifa-preimpresion.edit",
"tarifa-preimpresion.menu",
@ -190,6 +215,11 @@ const SK_PERMISSION_MATRIX = [
"servicio-acabado.create",
"servicio-acabado.edit",
"servicio-acabado.menu",
"proveedores.create",
"proveedores.edit",
"proveedores.menu",
"tickets.edit",
"tickets.menu",
],
"contabilidad" => [
"token.token",

View File

@ -29,6 +29,8 @@ const SK_PERMISSIONS = [
'pedidos-cancelados.menu' => 'Menu shall be visualize',
'pedidos-todos.view' => 'Can view',
'pedidos-todos.menu' => 'Menu shall be visualize',
'pedidos-gestion.toprod' => 'Can toprod',
'pedidos-gestion.menu' => 'Menu shall be visualize',
'tarifa-preimpresion.create' => 'Can create',
'tarifa-preimpresion.edit' => 'Can edit',
'tarifa-preimpresion.delete' => 'Can delete',

View File

@ -31,7 +31,7 @@ const SK_ROLES = [
],
'director' => [
'title' => 'Director',
'description' => '',
'description' => 'Para los directores de área',
],
'contabilidad' => [
'title' => 'Contabilidad',

View File

@ -81,7 +81,8 @@ return [
'showTotal' => 'Mostrar totales',
'validation' => [
'validation' => [
'errorCantidadAlbaranes' => 'Total en albaranes {0} no coincide con la tirada {1}',
],

View File

@ -24,6 +24,8 @@ return [
'editPermission' => 'Editar',
'deletePermission' => 'Eliminar',
'toprodPermission' => 'Pasar a Producción',
// System sections
'clientesSection' => 'Clientes',
'plantillaTarifaSection' => 'Plantilla de tarifas',
@ -35,6 +37,7 @@ return [
'pedidosFinalizadosSection' => 'Finalizados',
'pedidosCanceladosSection' => 'Cancelados',
'pedidosTodosSection' => 'Todos',
'pedidosGestionSection' => 'Gestion',
'tarifaPreimpresionSection' => 'Tarifas de preimpresión',
'tarifaManipuladoSection' => 'Tarifas de manipulado',
'tarifaAcabadoSection' => 'Tarifas de acabado',

View File

@ -10,7 +10,11 @@
<div id="accordionAlbaranesTip" class="accordion-collapse collapse show" data-bs-parent="#accordioAlbaranes">
<div class="accordion-body">
<div id='alert-albaranes' class="alert alert-warning d-flex align-items-baseline d-none" role="alert">
<div class="d-flex flex-column ps-1">
<h5 id='error-albaranes' class="alert-heading mb-2"></h5>
</div>
</div>
<div id="bonotes_albaranes" class="col-12 d-flex flex-row-reverse mt-4 gap-2">
<div id="generar_albaranes" class="btn mt-3 btn-success waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('Pedidos.generarAlbaranes') ?></span>
@ -31,6 +35,8 @@
<?=$this->section('additionalInlineJs') ?>
$('#generar_albaranes').on('click', function(){
var lineasPedido = $('#tableOfLineasPedido').DataTable();
@ -51,6 +57,7 @@ $('#generar_albaranes').on('click', function(){
generarAlbaran(item);
});
}
calcular_cantidades_albaranes();
}
});
})
@ -163,7 +170,7 @@ function generarAlbaran(item){
`;
const table = $('<table>',
{ id: 'tablaAlbaran' + item.albaran.id, width:'100%', class: 'table table-responsive table-striped table-hover' })
{ id: 'tablaAlbaran' + item.albaran.id, width:'100%', class: 'table table-responsive table-striped table-hover table-albaran' })
.css({
'width': '100%',
}).append(
@ -238,7 +245,6 @@ function generarAlbaran(item){
$('#bonotes_albaranes').before(accordion);
const datatableAlbaran = new DataTable('#tablaAlbaran' + item.albaran.id,{
scrollX: true,
searching: false,
@ -264,7 +270,7 @@ function generarAlbaran(item){
var input = $('<input>', {
id: 'cantidad_' + row.id,
name: 'cantidad_' + row.id,
class: 'lp-cell lp-input albaran_linea',
class: 'lp-cell lp-input albaran_linea cantidad-albaran',
albaran: item.albaran.numero_albaran,
type: 'text',
value: data,
@ -434,38 +440,6 @@ function generarAlbaran(item){
}
},
footerCallback: function (row, data, start, end, display) {
/*
let api = this.api();
var numColumns = api.columns().count();
if(item.albaran.mostrar_precios == 1){
// Remove the formatting to get integer data for summation
let intVal = function (i) {
return typeof i === 'string'
? i.replace(/[\$,]/g, '') * 1
: typeof i === 'number'
? i
: 0;
};
// Total over all pages
total = api
.column(9)
.data()
.reduce((a, b) => intVal(a) + intVal(b), 0);
// Update footer
api.column(numColumns-1).footer().innerHTML =
'Total: ' + total.toFixed(2);
}
else{
api.column(numColumns-1).footer().innerHTML = '';
}
*/
},
});
// Añadir la nueva fila a la tabla
@ -474,6 +448,17 @@ function generarAlbaran(item){
datatableAlbaran.row.add(linea).draw();
});
}
$(document).on('change', '#tablaAlbaran' + item.albaran.id + ' .cantidad-albaran', function(){
let table = $('#tablaAlbaran' + item.albaran.id).DataTable();
let row = $(this).closest('tr'); // Encuentra la fila actual
let rowIndex = table.row(row).index(); // Obtiene el índice de la fila
let newValue = $(this).val(); // Obtiene el nuevo valor del input
// Actualiza el DataTable
table.cell(rowIndex, 2).data(newValue);
calcular_cantidades_albaranes();
});
}
$(document).on('click', '.accordion-button', function(){
@ -712,7 +697,6 @@ $(document).on('click', '.imprimir-albaran', function(){
var albaran_id = $(this).attr('id').split('_').slice(-1)[0];
//NACHO AQUI
window.open('<?= site_url('print-albaran/generar/') ?>' + albaran_id, '_blank');
});
@ -726,7 +710,37 @@ $.ajax({
Object.values(response.data).forEach(function(item){
generarAlbaran(item);
});
calcular_cantidades_albaranes();
}
}
});
function calcular_cantidades_albaranes(){
let cantidad_albaranes = 0;
const tablas = $('.table.table-albaran');
for(var i = 0; i < tablas.length; i++){
var table = $(tablas[i]).DataTable();
table.rows().every(function(){
cantidad_albaranes += parseInt(this.data().cantidad) || 0;
});
}
check_cantidad_albaranes(cantidad_albaranes);
}
function check_cantidad_albaranes(unidades_albaranes){
if(unidades_albaranes != parseInt($('#total_tirada').val()) ){
$('#alert-albaranes').removeClass('d-none');
$('#error-albaranes').
html('<?= lang('Pedidos.validation.errorCantidadAlbaranes') ?>'
.replace('{0}', unidades_albaranes)
.replace('{1}', $('#total_tirada').val()));
}
else{
$('#alert-albaranes').addClass('d-none');
$('#error-albaranes').html('');
}
}
<?=$this->endSection() ?>

View File

@ -152,6 +152,12 @@
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('Pedidos.cancelar') ?></span>
<i class="ti ti-circle-x ti-xs"></i>
</div>
<?php if ($pedidoEntity->estado == 'validacion' && auth()->user()->can('pedidos-gestion.toprod')) : ?>
<div id="button-pedido-to-prod" data-id="<?= $pedidoEntity->id ?>" class="buton-estado btn mt-3 btn-primary waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang("Produccion.btn_pedido_produccion_accion") ?></span>
<i class="ti ti-building-factory-2 ti-xs"></i>
</div>
<?php endif; ?>
</div>
<?php endif; ?>

View File

@ -31,11 +31,6 @@
<div class="pt-4">
<?= anchor(route_to("listaPresupuestos"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
</div><!-- /.card-footer -->
<?php if ($pedidoEntity->estado == 'finalizado') : ?>
<div class="pt-4">
<button type="button" class="btn btn-primary btn-md" id="button-pedido-to-prod" data-id="<?= $pedidoEntity->id ?>"><span> <i class="ti ti-building-factory-2 ti-xs"></i> <?= lang("Produccion.btn_pedido_produccion_accion") ?> </span></button>
</div><!-- /.card-footer -->
<?php endif; ?>
</div>
</div>
<div class="container-fluid d-flex flex-md-row flex-column justify-content-between align-items-md-center gap-1 container-p-x py-3">