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-cancelados.menu",
|
||||||
"pedidos-todos.view",
|
"pedidos-todos.view",
|
||||||
"pedidos-todos.menu",
|
"pedidos-todos.menu",
|
||||||
|
"pedidos-gestion.toprod",
|
||||||
|
"pedidos-gestion.menu",
|
||||||
"tarifa-preimpresion.create",
|
"tarifa-preimpresion.create",
|
||||||
"tarifa-preimpresion.edit",
|
"tarifa-preimpresion.edit",
|
||||||
"tarifa-preimpresion.delete",
|
"tarifa-preimpresion.delete",
|
||||||
@ -169,6 +171,29 @@ const SK_PERMISSION_MATRIX = [
|
|||||||
"token.menu",
|
"token.menu",
|
||||||
],
|
],
|
||||||
"director" => [
|
"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.create",
|
||||||
"tarifa-preimpresion.edit",
|
"tarifa-preimpresion.edit",
|
||||||
"tarifa-preimpresion.menu",
|
"tarifa-preimpresion.menu",
|
||||||
@ -190,6 +215,11 @@ const SK_PERMISSION_MATRIX = [
|
|||||||
"servicio-acabado.create",
|
"servicio-acabado.create",
|
||||||
"servicio-acabado.edit",
|
"servicio-acabado.edit",
|
||||||
"servicio-acabado.menu",
|
"servicio-acabado.menu",
|
||||||
|
"proveedores.create",
|
||||||
|
"proveedores.edit",
|
||||||
|
"proveedores.menu",
|
||||||
|
"tickets.edit",
|
||||||
|
"tickets.menu",
|
||||||
],
|
],
|
||||||
"contabilidad" => [
|
"contabilidad" => [
|
||||||
"token.token",
|
"token.token",
|
||||||
|
|||||||
@ -29,6 +29,8 @@ const SK_PERMISSIONS = [
|
|||||||
'pedidos-cancelados.menu' => 'Menu shall be visualize',
|
'pedidos-cancelados.menu' => 'Menu shall be visualize',
|
||||||
'pedidos-todos.view' => 'Can view',
|
'pedidos-todos.view' => 'Can view',
|
||||||
'pedidos-todos.menu' => 'Menu shall be visualize',
|
'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.create' => 'Can create',
|
||||||
'tarifa-preimpresion.edit' => 'Can edit',
|
'tarifa-preimpresion.edit' => 'Can edit',
|
||||||
'tarifa-preimpresion.delete' => 'Can delete',
|
'tarifa-preimpresion.delete' => 'Can delete',
|
||||||
|
|||||||
@ -31,7 +31,7 @@ const SK_ROLES = [
|
|||||||
],
|
],
|
||||||
'director' => [
|
'director' => [
|
||||||
'title' => 'Director',
|
'title' => 'Director',
|
||||||
'description' => '',
|
'description' => 'Para los directores de área',
|
||||||
],
|
],
|
||||||
'contabilidad' => [
|
'contabilidad' => [
|
||||||
'title' => 'Contabilidad',
|
'title' => 'Contabilidad',
|
||||||
|
|||||||
@ -81,7 +81,8 @@ return [
|
|||||||
|
|
||||||
'showTotal' => 'Mostrar totales',
|
'showTotal' => 'Mostrar totales',
|
||||||
|
|
||||||
'validation' => [
|
'validation' => [
|
||||||
|
'errorCantidadAlbaranes' => 'Total en albaranes {0} no coincide con la tirada {1}',
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,8 @@ return [
|
|||||||
'editPermission' => 'Editar',
|
'editPermission' => 'Editar',
|
||||||
'deletePermission' => 'Eliminar',
|
'deletePermission' => 'Eliminar',
|
||||||
|
|
||||||
|
'toprodPermission' => 'Pasar a Producción',
|
||||||
|
|
||||||
// System sections
|
// System sections
|
||||||
'clientesSection' => 'Clientes',
|
'clientesSection' => 'Clientes',
|
||||||
'plantillaTarifaSection' => 'Plantilla de tarifas',
|
'plantillaTarifaSection' => 'Plantilla de tarifas',
|
||||||
@ -35,6 +37,7 @@ return [
|
|||||||
'pedidosFinalizadosSection' => 'Finalizados',
|
'pedidosFinalizadosSection' => 'Finalizados',
|
||||||
'pedidosCanceladosSection' => 'Cancelados',
|
'pedidosCanceladosSection' => 'Cancelados',
|
||||||
'pedidosTodosSection' => 'Todos',
|
'pedidosTodosSection' => 'Todos',
|
||||||
|
'pedidosGestionSection' => 'Gestion',
|
||||||
'tarifaPreimpresionSection' => 'Tarifas de preimpresión',
|
'tarifaPreimpresionSection' => 'Tarifas de preimpresión',
|
||||||
'tarifaManipuladoSection' => 'Tarifas de manipulado',
|
'tarifaManipuladoSection' => 'Tarifas de manipulado',
|
||||||
'tarifaAcabadoSection' => 'Tarifas de acabado',
|
'tarifaAcabadoSection' => 'Tarifas de acabado',
|
||||||
|
|||||||
@ -10,7 +10,11 @@
|
|||||||
<div id="accordionAlbaranesTip" class="accordion-collapse collapse show" data-bs-parent="#accordioAlbaranes">
|
<div id="accordionAlbaranesTip" class="accordion-collapse collapse show" data-bs-parent="#accordioAlbaranes">
|
||||||
<div class="accordion-body">
|
<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="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">
|
<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>
|
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('Pedidos.generarAlbaranes') ?></span>
|
||||||
@ -31,6 +35,8 @@
|
|||||||
|
|
||||||
<?=$this->section('additionalInlineJs') ?>
|
<?=$this->section('additionalInlineJs') ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$('#generar_albaranes').on('click', function(){
|
$('#generar_albaranes').on('click', function(){
|
||||||
|
|
||||||
var lineasPedido = $('#tableOfLineasPedido').DataTable();
|
var lineasPedido = $('#tableOfLineasPedido').DataTable();
|
||||||
@ -51,6 +57,7 @@ $('#generar_albaranes').on('click', function(){
|
|||||||
generarAlbaran(item);
|
generarAlbaran(item);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
calcular_cantidades_albaranes();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@ -163,7 +170,7 @@ function generarAlbaran(item){
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
const table = $('<table>',
|
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({
|
.css({
|
||||||
'width': '100%',
|
'width': '100%',
|
||||||
}).append(
|
}).append(
|
||||||
@ -238,7 +245,6 @@ function generarAlbaran(item){
|
|||||||
$('#bonotes_albaranes').before(accordion);
|
$('#bonotes_albaranes').before(accordion);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const datatableAlbaran = new DataTable('#tablaAlbaran' + item.albaran.id,{
|
const datatableAlbaran = new DataTable('#tablaAlbaran' + item.albaran.id,{
|
||||||
scrollX: true,
|
scrollX: true,
|
||||||
searching: false,
|
searching: false,
|
||||||
@ -264,7 +270,7 @@ function generarAlbaran(item){
|
|||||||
var input = $('<input>', {
|
var input = $('<input>', {
|
||||||
id: 'cantidad_' + row.id,
|
id: 'cantidad_' + row.id,
|
||||||
name: '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,
|
albaran: item.albaran.numero_albaran,
|
||||||
type: 'text',
|
type: 'text',
|
||||||
value: data,
|
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
|
// Añadir la nueva fila a la tabla
|
||||||
@ -474,6 +448,17 @@ function generarAlbaran(item){
|
|||||||
datatableAlbaran.row.add(linea).draw();
|
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(){
|
$(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];
|
var albaran_id = $(this).attr('id').split('_').slice(-1)[0];
|
||||||
|
|
||||||
//NACHO AQUI
|
|
||||||
window.open('<?= site_url('print-albaran/generar/') ?>' + albaran_id, '_blank');
|
window.open('<?= site_url('print-albaran/generar/') ?>' + albaran_id, '_blank');
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -726,7 +710,37 @@ $.ajax({
|
|||||||
Object.values(response.data).forEach(function(item){
|
Object.values(response.data).forEach(function(item){
|
||||||
generarAlbaran(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() ?>
|
<?=$this->endSection() ?>
|
||||||
@ -152,6 +152,12 @@
|
|||||||
<span class="align-middle d-sm-inline-block d-none me-sm-1"><?= lang('Pedidos.cancelar') ?></span>
|
<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>
|
<i class="ti ti-circle-x ti-xs"></i>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|||||||
@ -31,11 +31,6 @@
|
|||||||
<div class="pt-4">
|
<div class="pt-4">
|
||||||
<?= anchor(route_to("listaPresupuestos"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
|
<?= anchor(route_to("listaPresupuestos"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
|
||||||
</div><!-- /.card-footer -->
|
</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>
|
</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">
|
<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