mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
añadido calculo y aviso de unidades en albaranes
This commit is contained in:
@ -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",
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -31,7 +31,7 @@ const SK_ROLES = [
|
||||
],
|
||||
'director' => [
|
||||
'title' => 'Director',
|
||||
'description' => '',
|
||||
'description' => 'Para los directores de área',
|
||||
],
|
||||
'contabilidad' => [
|
||||
'title' => 'Contabilidad',
|
||||
|
||||
@ -81,7 +81,8 @@ return [
|
||||
|
||||
'showTotal' => 'Mostrar totales',
|
||||
|
||||
'validation' => [
|
||||
'validation' => [
|
||||
'errorCantidadAlbaranes' => 'Total en albaranes {0} no coincide con la tirada {1}',
|
||||
|
||||
],
|
||||
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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() ?>
|
||||
@ -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; ?>
|
||||
|
||||
|
||||
@ -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">
|
||||
|
||||
Reference in New Issue
Block a user