mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
falta añadir rotativa y actualizar cuando cambie presupuesto
This commit is contained in:
@ -265,8 +265,9 @@ return [
|
|||||||
'errorRotColor' => 'Papeles y gramajes deben ser iguales en color y BN',
|
'errorRotColor' => 'Papeles y gramajes deben ser iguales en color y BN',
|
||||||
'error_servicios_anadidos' => 'Hay servicios sin datos',
|
'error_servicios_anadidos' => 'Hay servicios sin datos',
|
||||||
'error_servicios_duplicados' => 'El servicio seleccionado ya está añadido',
|
'error_servicios_duplicados' => 'El servicio seleccionado ya está añadido',
|
||||||
'formato_papel' => 'Debe seleccionar un formato de papel'
|
'formato_papel' => 'Debe seleccionar un formato de papel',
|
||||||
|
'tirada_alt_duplicada' => 'Ya existe una tirada alternativa para ese valor',
|
||||||
|
'tirada_alt_tipo' => 'No se puede calcular una tirada alternativa POD para una presupuesto no POD o viceversa',
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -13,44 +13,59 @@ function get_peso_libro(){
|
|||||||
async function get_precio_envio(peso, paisId, cp, tipo_envio){
|
async function get_precio_envio(peso, paisId, cp, tipo_envio){
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
tipo: 'get_tarifa',
|
tipo: 'get_tarifa',
|
||||||
peso: peso,
|
peso: peso,
|
||||||
paisId: paisId,
|
paisId: paisId,
|
||||||
cp: cp,
|
cp: cp,
|
||||||
tipo_envio: tipo_envio,
|
tipo_envio: tipo_envio,
|
||||||
}
|
}
|
||||||
data = Object.assign(data, window.token_ajax);
|
data = Object.assign(data, window.token_ajax);
|
||||||
|
|
||||||
|
|
||||||
const response = await fetch(window.location.origin + window.url_get_precio_envio , {
|
const response = await fetch(window.location.origin + window.url_get_precio_envio , {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
headers: {
|
headers: {
|
||||||
"Content-type": "application/json; charset=UTF-8",
|
"Content-type": "application/json; charset=UTF-8",
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
const values = await response.json();
|
const values = await response.json();
|
||||||
yeniden(values[window.csrf_token]);
|
yeniden(values[window.csrf_token]);
|
||||||
console.log(values.data);
|
|
||||||
return values.data;
|
return values.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function get_coste_envio_tiradasAlternativas(tirada){
|
async function get_coste_envio_tiradasAlternativas(tirada){
|
||||||
|
|
||||||
var peso_libro = get_peso_libro();
|
var peso_libro = get_peso_libro();
|
||||||
var tirada_inicial = parseInt($('#tirada').val());
|
var tirada_inicial = parseInt($('#tirada').val());
|
||||||
var precio_envio = 0.0;
|
var coste = 0.0;
|
||||||
var margen_envio = 0.0;
|
var margen = 0.0;
|
||||||
|
|
||||||
$('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
const table = $('#tableOfDireccionesEnvio').DataTable();
|
||||||
const rowData = this.data();
|
const rows = table.rows().nodes();
|
||||||
|
|
||||||
|
for (let i = 0; i < rows.length; i++) {
|
||||||
|
const rowData = table.row(rows[i]).data();
|
||||||
const porcentaje = parseInt(rowData.cantidad)/tirada_inicial*100.0;
|
const porcentaje = parseInt(rowData.cantidad)/tirada_inicial*100.0;
|
||||||
const cantidad = Math.floor(tirada*porcentaje/100.0);
|
const cantidad = Math.floor(tirada*porcentaje/100.0);
|
||||||
const precio_linea = get_precio_envio(cantidad*peso_libro/1000.0, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas');
|
const peso_envio = cantidad*peso_libro/1000.0;
|
||||||
console.log(precio_linea);
|
const datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas');
|
||||||
precio_envio += parseFloat(precio_linea.precio);
|
|
||||||
margen_envio += parseFloat(precio_linea.precio*precio_linea.margen/100.0);
|
if(datos_tarifa.id!=null){
|
||||||
})
|
|
||||||
return {precio_envio, margen_envio};
|
if(peso_envio>parseFloat(datos_tarifa.peso_max)){
|
||||||
|
coste += parseFloat(datos_tarifa.peso_min) + (peso_envio-parseFloat(datos_tarifa.peso_min))*parseFloat(datos_tarifa.precio_adicional);
|
||||||
|
}
|
||||||
|
// si no se calcula linealmente
|
||||||
|
else{
|
||||||
|
m=((parseFloat(datos_tarifa.precio_max)-parseFloat(datos_tarifa.precio_min))/(parseFloat(datos_tarifa.peso_max)-parseFloat(datos_tarifa.peso_min)));
|
||||||
|
b=parseFloat(datos_tarifa.precio_max)-m*parseFloat(datos_tarifa.peso_max);
|
||||||
|
coste += parseFloat(m*peso_envio+b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
margen += coste*datos_tarifa.margen/100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {coste, margen};
|
||||||
}
|
}
|
||||||
@ -90,73 +90,64 @@ const actionBtns_direcciones = function(data) {
|
|||||||
`;
|
`;
|
||||||
};
|
};
|
||||||
|
|
||||||
async function updateTablaEnvios(){
|
function updateTablaEnvios(){
|
||||||
|
|
||||||
var peso_total_libro = get_peso_libro();
|
var peso_total_libro = get_peso_libro();
|
||||||
|
|
||||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
tableEnvios.rows().every(async function ( rowIdx, tableLoop, rowLoop ) {
|
||||||
|
|
||||||
var rowData = this.data();
|
var rowData = this.data();
|
||||||
const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0;
|
const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0;
|
||||||
|
|
||||||
const data = get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas');
|
var datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas');
|
||||||
|
|
||||||
|
|
||||||
if(data.length >0){
|
if(datos_tarifa.id!=null){
|
||||||
|
|
||||||
var precios = []
|
if(peso_envio>parseFloat(datos_tarifa.peso_max)){
|
||||||
for (var i = 0; i < data.length; i++) {
|
datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio-parseFloat(datos_tarifa.peso_min))*parseFloat(datos_tarifa.precio_adicional);
|
||||||
if(peso_envio>data[i].peso_max){
|
|
||||||
data[i].precio = (data[i].peso_min + (peso_envio-data[i].peso_min)*data[i].precio_adicional).toFixed(2);
|
|
||||||
}
|
}
|
||||||
// si no se calcula linealmente
|
// si no se calcula linealmente
|
||||||
else{
|
else{
|
||||||
m=((data[i].precio_max-data[i].precio_min)/(data[i].peso_max-data[i].peso_min))
|
m=((parseFloat(datos_tarifa.precio_max)-parseFloat(datos_tarifa.precio_min))/(parseFloat(datos_tarifa.peso_max)-parseFloat(datos_tarifa.peso_min)));
|
||||||
b=data[i].precio_max-m*data[i].peso_max
|
b=parseFloat(datos_tarifa.precio_max)-m*parseFloat(datos_tarifa.peso_max);
|
||||||
data[i].precio = (m*peso_envio+b).toFixed(2);
|
datos_tarifa.precio = parseFloat(m*peso_envio+b);
|
||||||
}
|
}
|
||||||
data[i].margen = data[i].margen
|
|
||||||
|
|
||||||
|
datos_tarifa.cantidad = parseInt($('#add_cantidad').val());
|
||||||
|
datos_tarifa.peso = peso_envio;
|
||||||
|
console.log(datos_tarifa.precio)
|
||||||
|
|
||||||
|
tableEnvios.row(rowIdx)
|
||||||
|
.data({
|
||||||
|
'tarifa_id': datos_tarifa.id,
|
||||||
|
'cantidad': rowData.cantidad,
|
||||||
|
'peso': datos_tarifa.peso.toFixed(3),
|
||||||
|
'att': rowData.att,
|
||||||
|
'email': rowData.email,
|
||||||
|
'direccion': rowData.direccion,
|
||||||
|
'cp': rowData.cp,
|
||||||
|
'municipio': rowData.municipio,
|
||||||
|
'provincia': rowData.provincia,
|
||||||
|
'paisId': rowData.paisId,
|
||||||
|
'telefono': rowData.telefono,
|
||||||
|
'proveedor': datos_tarifa.proveedor,
|
||||||
|
'proveedor_id': datos_tarifa.proveedor_id,
|
||||||
|
'precio': datos_tarifa.precio.toFixed(2),
|
||||||
|
'margen': datos_tarifa.margen,
|
||||||
|
'entregaPieCalle': rowData.entregaPieCalle,
|
||||||
|
'actionBtns_direcciones': actionBtns_direcciones,
|
||||||
|
})
|
||||||
|
.draw();
|
||||||
|
|
||||||
|
checkInsertar()
|
||||||
|
updateTotales(false, false, true)
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
popErrorAlert('<?= lang('PresupuestosDirecciones.validation.no_tarifa') ?>', 'error-tarifa')
|
||||||
}
|
}
|
||||||
|
|
||||||
const tarifa_final = data.reduce((previous, current) => {
|
|
||||||
return current.precio < previous.precio ? current : previous;
|
|
||||||
});
|
|
||||||
tarifa_final.cantidad=parseInt($('#add_cantidad').val())
|
|
||||||
tarifa_final.peso=peso_envio
|
|
||||||
|
|
||||||
|
|
||||||
tableEnvios.row(rowIdx)
|
|
||||||
.data({
|
|
||||||
'tarifa_id': tarifa_final.id,
|
|
||||||
'cantidad': rowData.cantidad,
|
|
||||||
'peso': tarifa_final.peso.toFixed(3),
|
|
||||||
'att': rowData.att,
|
|
||||||
'email': rowData.email,
|
|
||||||
'direccion': rowData.direccion,
|
|
||||||
'cp': rowData.cp,
|
|
||||||
'municipio': rowData.municipio,
|
|
||||||
'provincia': rowData.provincia,
|
|
||||||
'paisId': rowData.paisId,
|
|
||||||
'telefono': rowData.telefono,
|
|
||||||
'proveedor': tarifa_final.proveedor,
|
|
||||||
'proveedor_id': tarifa_final.proveedor_id,
|
|
||||||
'precio': tarifa_final.precio,
|
|
||||||
'margen': tarifa_final.margen,
|
|
||||||
'entregaPieCalle': rowData.entregaPieCalle,
|
|
||||||
'actionBtns_direcciones': actionBtns_direcciones,
|
|
||||||
})
|
|
||||||
.draw();
|
|
||||||
|
|
||||||
|
|
||||||
checkInsertar()
|
|
||||||
updateTotales(false, false, true)
|
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
popErrorAlert('<?= lang('PresupuestosDirecciones.validation.no_tarifa') ?>', 'error-tarifa')
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @var mixed })
|
|
||||||
*/
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
// Test case 1: Valid inputs
|
||||||
|
const peso = 10;
|
||||||
|
const paisId = 1;
|
||||||
|
const cp = "12345";
|
||||||
|
const tipo_envio = "express";
|
||||||
|
|
||||||
|
get_precio_envio(peso, paisId, cp, tipo_envio)
|
||||||
|
.then(data => {
|
||||||
|
console.log("Test case 1 - Result:", data);
|
||||||
|
// Add your assertions here
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error("Test case 1 - Error:", error);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test case 2: Invalid inputs
|
||||||
|
const peso = -5;
|
||||||
|
const paisId = 0;
|
||||||
|
const cp = "";
|
||||||
|
const tipo_envio = "standard";
|
||||||
|
|
||||||
|
get_precio_envio(peso, paisId, cp, tipo_envio)
|
||||||
|
.then(data => {
|
||||||
|
console.log("Test case 2 - Result:", data);
|
||||||
|
// Add your assertions here
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error("Test case 2 - Error:", error);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test case 3: Network error
|
||||||
|
const peso = 20;
|
||||||
|
const paisId = 2;
|
||||||
|
const cp = "54321";
|
||||||
|
const tipo_envio = "priority";
|
||||||
|
|
||||||
|
get_precio_envio(peso, paisId, cp, tipo_envio)
|
||||||
|
.then(data => {
|
||||||
|
console.log("Test case 3 - Result:", data);
|
||||||
|
// Add your assertions here
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error("Test case 3 - Error:", error);
|
||||||
|
});
|
||||||
@ -20,16 +20,7 @@ var tableTiradas;
|
|||||||
while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
|
while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
|
||||||
await new Promise(resolve => setTimeout(resolve, 200));
|
await new Promise(resolve => setTimeout(resolve, 200));
|
||||||
initTableTiradas();
|
initTableTiradas();
|
||||||
|
fill_tiradas_alternativas();
|
||||||
// For debugging purposes
|
|
||||||
tableTiradas.row.add({
|
|
||||||
tirada: 15,
|
|
||||||
coste_impresion: 0,
|
|
||||||
coste_envio: 0,
|
|
||||||
margen: 0,
|
|
||||||
total_pedido: 0,
|
|
||||||
precio_unidad: 0
|
|
||||||
}).draw(false);
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
@ -37,84 +28,129 @@ var tableTiradas;
|
|||||||
// Evento de añadir una tirada alternativa
|
// Evento de añadir una tirada alternativa
|
||||||
$('#add_tirada_alt').on('click', function () {
|
$('#add_tirada_alt').on('click', function () {
|
||||||
|
|
||||||
const dimension = getDimensionLibro();
|
// se comprueba que la tirada no existe ya en la tabla
|
||||||
|
const tirada_alt = parseInt($('#tirada_alt').val());
|
||||||
|
const exists = tableTiradas.rows().data().toArray().some(row => row.tirada == tirada_alt);
|
||||||
|
const isPOD = parseInt($('#tirada').val())<= parseInt($('#POD').val());
|
||||||
|
|
||||||
let datos = {
|
const typeIsOk = tirada_alt <= parseInt($('#POD').val()) && isPOD || tirada_alt > parseInt($('#POD').val()) && !isPOD;
|
||||||
tirada: $('#tirada_alt').val(),
|
|
||||||
merma: get_merma_tirada_alternativa($('#tirada_alt').val()),
|
|
||||||
tipo_impresion_id: $('#tipo_impresion_id').val(),
|
|
||||||
json_tiradas: generate_json_tiradas(),
|
|
||||||
ancho: dimension.ancho,
|
|
||||||
alto: dimension.alto,
|
|
||||||
cliente_id: $('#clienteId').find(":selected").val(),
|
|
||||||
solapas_cubierta: $('#solapas').is(':checked')?1:0,
|
|
||||||
solapas_cubierta_ancho: $('#solapas').is(':checked')?parseInt($('#solapas_ancho').val()):0,
|
|
||||||
solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked')?1:0,
|
|
||||||
solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked')?parseInt($('#solapas_ancho_sobrecubierta').val()):0,
|
|
||||||
lomo: getLomoExterior(),
|
|
||||||
};
|
|
||||||
|
|
||||||
datos = Object.assign(datos, window.token_ajax);
|
|
||||||
|
|
||||||
// Se realiza la petición AJAX
|
if (!exists && typeIsOk) {
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: window.get_tirada_url,
|
|
||||||
data: datos,
|
|
||||||
success: async function (data) {
|
|
||||||
|
|
||||||
var coste_total = 0.0;
|
const dimension = getDimensionLibro();
|
||||||
var margen_total = 0.0;
|
|
||||||
|
|
||||||
var costes_servicios = 0.0;
|
let datos = {
|
||||||
var margen_servicios = 0.0;
|
tirada: $('#tirada_alt').val(),
|
||||||
|
merma: get_merma_tirada_alternativa($('#tirada_alt').val()),
|
||||||
|
tipo_impresion_id: $('#tipo_impresion_id').val(),
|
||||||
|
json_tiradas: generate_json_tiradas(),
|
||||||
|
ancho: dimension.ancho,
|
||||||
|
alto: dimension.alto,
|
||||||
|
cliente_id: $('#clienteId').find(":selected").val(),
|
||||||
|
solapas_cubierta: $('#solapas').is(':checked')?1:0,
|
||||||
|
solapas_cubierta_ancho: $('#solapas').is(':checked')?parseInt($('#solapas_ancho').val()):0,
|
||||||
|
solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked')?1:0,
|
||||||
|
solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked')?parseInt($('#solapas_ancho_sobrecubierta').val()):0,
|
||||||
|
lomo: getLomoExterior(),
|
||||||
|
};
|
||||||
|
|
||||||
|
datos = Object.assign(datos, window.token_ajax);
|
||||||
|
|
||||||
if(data.lineas.length >0){
|
// Se realiza la petición AJAX
|
||||||
// Se cogen los valores de la linea con los datos correspondientes
|
$.ajax({
|
||||||
$.each(data.lineas, function(key, value) {
|
type: "POST",
|
||||||
|
url: window.get_tirada_url,
|
||||||
|
data: datos,
|
||||||
|
success: async function (data) {
|
||||||
|
|
||||||
|
var coste_total = 0.0;
|
||||||
|
var margen_total = 0.0;
|
||||||
|
|
||||||
|
var costes_servicios = 0.0;
|
||||||
|
var margen_servicios = 0.0;
|
||||||
|
|
||||||
|
var coste_envio = 0.0;
|
||||||
|
var margen_envio = 0.0;
|
||||||
|
|
||||||
|
if(data.lineas.length >0){
|
||||||
|
// Se cogen los valores de la linea con los datos correspondientes
|
||||||
|
$.each(data.lineas, function(key, value) {
|
||||||
|
|
||||||
|
coste_total += value.total_coste;
|
||||||
|
margen_total += value.total_margen;
|
||||||
|
});
|
||||||
|
|
||||||
coste_total += value.total_coste;
|
// Se obtiene el precio de los servicios
|
||||||
margen_total += value.total_margen;
|
const valueAcabados = await get_servAcabados_tiradasAlternativas(parseInt(datos.tirada));
|
||||||
});
|
costes_servicios += valueAcabados.coste;
|
||||||
|
margen_servicios += valueAcabados.margen;
|
||||||
// Se obtiene el precio de los servicios
|
|
||||||
const valueAcabados = await get_servAcabados_tiradasAlternativas(parseInt(datos.tirada));
|
|
||||||
costes_servicios += valueAcabados.coste;
|
|
||||||
margen_servicios += valueAcabados.margen;
|
|
||||||
|
|
||||||
const valueEncuadernacion = await get_servEncuadernacion_tiradasAlternativas(
|
const valueEncuadernacion = await get_servEncuadernacion_tiradasAlternativas(
|
||||||
parseInt(datos.tirada), parseInt( $('#paginas').val()), parseInt(dimension.ancho), parseInt(dimension.alto));
|
parseInt(datos.tirada), parseInt( $('#paginas').val()), parseInt(dimension.ancho), parseInt(dimension.alto));
|
||||||
costes_servicios += valueEncuadernacion.coste;
|
costes_servicios += valueEncuadernacion.coste;
|
||||||
margen_servicios += valueEncuadernacion.margen;
|
margen_servicios += valueEncuadernacion.margen;
|
||||||
|
|
||||||
const valueManipulado = await get_servManipulado_tiradasAlternativas(parseInt(datos.tirada));
|
const valueManipulado = await get_servManipulado_tiradasAlternativas(parseInt(datos.tirada));
|
||||||
costes_servicios += valueManipulado.coste;
|
costes_servicios += valueManipulado.coste;
|
||||||
margen_servicios += valueManipulado.margen;
|
margen_servicios += valueManipulado.margen;
|
||||||
|
|
||||||
const valuePreimpresion = await get_servPreimpresion_tiradasAlternativas(parseInt(datos.tirada));
|
const valuePreimpresion = await get_servPreimpresion_tiradasAlternativas(parseInt(datos.tirada));
|
||||||
costes_servicios += valuePreimpresion.coste;
|
costes_servicios += valuePreimpresion.coste;
|
||||||
margen_servicios += valuePreimpresion.margen;
|
margen_servicios += valuePreimpresion.margen;
|
||||||
|
|
||||||
const valueTransporte = await get_coste_envio_tiradasAlternativas(parseInt(datos.tirada));
|
const valueTransporte = await get_coste_envio_tiradasAlternativas(parseInt(datos.tirada));
|
||||||
|
coste_envio = valueTransporte.coste;
|
||||||
|
margen_envio = valueTransporte.margen;
|
||||||
|
|
||||||
console.log(coste_total);
|
|
||||||
console.log(margen_total);
|
|
||||||
console.log(costes_servicios);
|
|
||||||
console.log(margen_servicios);
|
|
||||||
console.log(valueTransporte);
|
|
||||||
}
|
|
||||||
|
|
||||||
yeniden(data[window.csrf_token]);
|
// Se añade la fila a la tabla de tiradas
|
||||||
|
tableTiradas.row.add({
|
||||||
|
tirada: datos.tirada,
|
||||||
|
coste_impresion: coste_total.toFixed(2),
|
||||||
|
coste_envio: coste_envio.toFixed(2),
|
||||||
|
margen: ((margen_total + margen_servicios + margen_envio)/(coste_total+coste_envio)*100.0).toFixed(2),
|
||||||
|
total_pedido: (coste_total + costes_servicios + coste_envio).toFixed(2),
|
||||||
|
precio_unidad: ((coste_total + costes_servicios + coste_envio) / datos.tirada).toFixed(2),
|
||||||
|
|
||||||
},
|
}).draw(false);
|
||||||
error: function(e){}
|
}
|
||||||
});
|
|
||||||
|
yeniden(data[window.csrf_token]);
|
||||||
|
|
||||||
|
},
|
||||||
|
error: function(e){}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var htmlString = '';
|
||||||
|
if(!typeIsOk){
|
||||||
|
htmlString = `
|
||||||
|
<div class="alert alert-warning d-flex align-items-baseline" role="alert">
|
||||||
|
<span class="alert-icon alert-icon-lg text-primary me-2">
|
||||||
|
<i class="ti ti-bell ti-sm"></i>
|
||||||
|
</span>
|
||||||
|
<div class="d-flex flex-column ps-1">
|
||||||
|
<h5 class="alert-heading mb-2"><?= lang("Presupuestos.errores.tirada_alt_duplicada") ?></h5>
|
||||||
|
</div>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
htmlString = `
|
||||||
|
<div class="alert alert-warning d-flex align-items-baseline" role="alert">
|
||||||
|
<span class="alert-icon alert-icon-lg text-primary me-2">
|
||||||
|
<i class="ti ti-bell ti-sm"></i>
|
||||||
|
</span>
|
||||||
|
<div class="d-flex flex-column ps-1">
|
||||||
|
<h5 class="alert-heading mb-2"><?= lang("Presupuestos.errores.tirada_alt_tipo") ?></h5>
|
||||||
|
</div>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
$('#alert-tiradas_alt').html(htmlString);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Función para obtener el lomo exterior
|
// Función para obtener el lomo exterior
|
||||||
function getLomoExterior(){
|
function getLomoExterior(){
|
||||||
let lomoTotal = 0
|
let lomoTotal = 0
|
||||||
@ -155,7 +191,11 @@ function initTableTiradas() {
|
|||||||
{ data: "tirada" },
|
{ data: "tirada" },
|
||||||
{ data: 'coste_impresion' },
|
{ data: 'coste_impresion' },
|
||||||
{ data: 'coste_envio' },
|
{ data: 'coste_envio' },
|
||||||
{ data: 'margen' },
|
{ data: 'margen' ,
|
||||||
|
render: function ( data, type, row ) {
|
||||||
|
return data + '%';
|
||||||
|
}
|
||||||
|
},
|
||||||
{ data: 'total_pedido' },
|
{ data: 'total_pedido' },
|
||||||
{ data: 'precio_unidad' },
|
{ data: 'precio_unidad' },
|
||||||
{
|
{
|
||||||
@ -166,11 +206,9 @@ function initTableTiradas() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Evento de borrado de una fila de la tabla de tiradas
|
// Evento de borrado de una fila de la tabla de tiradas
|
||||||
$(document).on('click', '.btn-delete-tirada', function (e) {
|
$(document).on('click', '.btn-delete-tirada', function (e) {
|
||||||
|
|
||||||
console.log(generate_json_tiradas());
|
|
||||||
const row = $(this).closest('tr');
|
const row = $(this).closest('tr');
|
||||||
tableTiradas.row(row)
|
tableTiradas.row(row)
|
||||||
.remove()
|
.remove()
|
||||||
@ -254,4 +292,30 @@ function get_merma_tirada_alternativa(tirada){
|
|||||||
merma = 0
|
merma = 0
|
||||||
}
|
}
|
||||||
return merma;
|
return merma;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fill_tiradas_alternativas(){
|
||||||
|
tableTiradas.clear().draw();
|
||||||
|
const text = $('#tirada_alternativa_json_data').val()
|
||||||
|
if(text.length>0){
|
||||||
|
|
||||||
|
const data = JSON.parse(text);
|
||||||
|
if(data.length>0){
|
||||||
|
$.each(data, function(key, value) {
|
||||||
|
tableTiradas.row.add({
|
||||||
|
tirada: value.tirada,
|
||||||
|
coste_impresion: value.coste_impresion,
|
||||||
|
coste_envio: value.coste_envio,
|
||||||
|
margen: value.margen,
|
||||||
|
total_pedido: value.total_pedido,
|
||||||
|
precio_unidad: value.precio_unidad,
|
||||||
|
}).draw(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -11,10 +11,12 @@
|
|||||||
<div id="accordionTiradasTip" class="accordion-collapse collapse show"
|
<div id="accordionTiradasTip" class="accordion-collapse collapse show"
|
||||||
data-bs-parent="#accordionTiradas">
|
data-bs-parent="#accordionTiradas">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
|
<div id='alert-tiradas_alt'></div>
|
||||||
|
|
||||||
<div class="col-xl-12">
|
<div class="col-xl-12">
|
||||||
<div class="border rounded p-4 mb-3 pb-3">
|
<div class="border rounded p-4 mb-3 pb-3">
|
||||||
<p><?= lang('Presupuestos.tiradasInfoIVA') ?></p>
|
<p><?= lang('Presupuestos.tiradasInfoIVA') ?></p>
|
||||||
|
<input type="hidden" name="tirada_alternativa_json_data" id="tirada_alternativa_json_data" class="form-control" value='<?= isset($presupuestoEntity->tirada_alternativa_json_data)?$presupuestoEntity->tirada_alternativa_json_data:'' ?>'></input>
|
||||||
<div class='d-flex justify-content-end '>
|
<div class='d-flex justify-content-end '>
|
||||||
<input id="tirada_alt" type="number" style="width: 10% !important; display: inline-flex !important" class="form-control" value="1" min="1" step="1">
|
<input id="tirada_alt" type="number" style="width: 10% !important; display: inline-flex !important" class="form-control" value="1" min="1" step="1">
|
||||||
<button id="add_tirada_alt" type="button" class="btn btn-secondary waves-effect waves-light"><i class="ti ti-circle-plus"></i></button>
|
<button id="add_tirada_alt" type="button" class="btn btn-secondary waves-effect waves-light"><i class="ti ti-circle-plus"></i></button>
|
||||||
@ -54,6 +56,9 @@
|
|||||||
|
|
||||||
window.datatable_TA_url = "<?= route_to('dataTableOfPresupuestoTiradasAlternativas') ?>";
|
window.datatable_TA_url = "<?= route_to('dataTableOfPresupuestoTiradasAlternativas') ?>";
|
||||||
window.get_tirada_url = "<?= route_to('getTiradaData') ?>";
|
window.get_tirada_url = "<?= route_to('getTiradaData') ?>";
|
||||||
|
|
||||||
|
window.error_lang_tirada_alt_duplicada = "<?= lang('Presupuestos.errores.tirada_alt_duplicada') ?>";
|
||||||
|
window.error_lang_tirada_alt_tipo = "<?= lang('Presupuestos.errores.tirada_alt_tipo') ?>";
|
||||||
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
|
|||||||
@ -192,11 +192,19 @@ const url_parts = url.split('/');
|
|||||||
<?php if (str_contains($formAction, 'edit')): ?>
|
<?php if (str_contains($formAction, 'edit')): ?>
|
||||||
<?= $this->section("additionalInlineJs") ?>
|
<?= $this->section("additionalInlineJs") ?>
|
||||||
|
|
||||||
|
// funcion que genera un JSON con la tabla de tiradas alternativas
|
||||||
|
function generate_json_tiradas() {
|
||||||
|
const data = tableTiradas.rows().data().toArray();
|
||||||
|
$('#tirada_alternativa_json_data').val(JSON.stringify(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (url_parts[url_parts.length - 2] == 'edit') {
|
if (url_parts[url_parts.length - 2] == 'edit') {
|
||||||
id = url_parts[url_parts.length - 1];
|
id = url_parts[url_parts.length - 1];
|
||||||
} else {
|
} else {
|
||||||
id = -1;
|
id = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$('#presupuestoForm').on("submit", function(event) {
|
$('#presupuestoForm').on("submit", function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@ -205,6 +213,7 @@ const url_parts = url.split('/');
|
|||||||
|
|
||||||
$.when(fill_bbdd_from_lp(id).then(function(data, textStatus, jqXHR) {
|
$.when(fill_bbdd_from_lp(id).then(function(data, textStatus, jqXHR) {
|
||||||
generateCompJSON()
|
generateCompJSON()
|
||||||
|
generate_json_tiradas()
|
||||||
form = $('#presupuestoForm').serialize()
|
form = $('#presupuestoForm').serialize()
|
||||||
form += getValuesResumenForm()
|
form += getValuesResumenForm()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user