mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
trabajando en guardar
This commit is contained in:
@ -19,8 +19,16 @@ class Envios {
|
||||
this.modalYesNo = null;
|
||||
|
||||
this.insertarEnvio = $('#insertar_direccion');
|
||||
|
||||
this.actionBtns_direcciones = function (data) {
|
||||
return `
|
||||
<span class="edit-add"><a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit-add mx-2" data-id="${data.id}"></i></a></span>
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm tiradas-alternativas delete-add-row mx-2"></i></a>
|
||||
`;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
init() {
|
||||
|
||||
const self = this;
|
||||
@ -91,6 +99,15 @@ class Envios {
|
||||
});
|
||||
}
|
||||
|
||||
// obtener la suma del precio de los envios
|
||||
let total = 0;
|
||||
self.table.rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
let data = this.data();
|
||||
total += parseFloat(data.precio);
|
||||
});
|
||||
|
||||
$("#costeEnvios").text(total.toFixed(2) + "€" || "0€");
|
||||
|
||||
self.check_unidades_enviadas();
|
||||
}
|
||||
|
||||
@ -168,6 +185,15 @@ class Envios {
|
||||
this.insertarEnvio.on('click', this.addEnvio.bind(this));
|
||||
|
||||
this.initFormularioDireccionEnvio();
|
||||
|
||||
$(document).on('update-envios', async function () {
|
||||
|
||||
await self.updateTablaEnvios();
|
||||
|
||||
$(document).trigger('update-envios-completed');
|
||||
|
||||
});
|
||||
$(document).on('ckeck-lineas-envios', this.check_unidades_enviadas.bind(this));
|
||||
}
|
||||
|
||||
addEnvio() {
|
||||
@ -193,6 +219,189 @@ class Envios {
|
||||
newAddDialog.modal('show');
|
||||
}
|
||||
|
||||
|
||||
get_peso_libro() {
|
||||
|
||||
var peso_total_libro = 0.0
|
||||
$('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
peso_total_libro += parseFloat(rowData.peso)
|
||||
})
|
||||
return peso_total_libro;
|
||||
}
|
||||
|
||||
|
||||
guardarEnvios() {
|
||||
/* TO-DO
|
||||
var id = $('#presupuesto_id').val()
|
||||
|
||||
$.post(window.routes_envios.dataTableOfPresupuestoDirecciones,
|
||||
Object.assign({ tipo: "clear_lineas", presupuesto_id: id }, window.token_ajax))
|
||||
.done(function (data) {
|
||||
|
||||
$('#tableOfDireccionesEnvio').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var data = this.data();
|
||||
$.post('/presupuestos/presupuestodirecciones/add',
|
||||
Object.assign({
|
||||
presupuesto_id: id,
|
||||
tarifa_id: data.tarifa_id,
|
||||
cantidad: data.cantidad,
|
||||
peso: data.peso,
|
||||
att: data.att,
|
||||
email: data.email,
|
||||
direccion: data.direccion,
|
||||
paisId: data.paisId,
|
||||
provincia: data.provincia,
|
||||
municipio: data.municipio,
|
||||
cp: data.cp,
|
||||
telefono: data.telefono,
|
||||
precio: data.precio,
|
||||
margen: data.margen,
|
||||
proveedor: data.proveedor,
|
||||
proveedor_id: data.proveedor_id,
|
||||
entregaPieCalle: data.entregaPieCalle
|
||||
}, window.token_ajax))
|
||||
});
|
||||
|
||||
})
|
||||
*/
|
||||
}
|
||||
|
||||
async updateTiradaBase() {
|
||||
|
||||
const self = this;
|
||||
var peso_total_libro = this.get_peso_libro();
|
||||
|
||||
const tirada = parseInt($('#tirada').val());
|
||||
const peso_envio = peso_total_libro * tirada / 1000.0;
|
||||
|
||||
let pais = 1;
|
||||
let cp = 18000;
|
||||
let entrega = 'cajas';
|
||||
|
||||
var datos_tarifa = await self.get_precio_envio(peso_envio, pais, cp, entrega);
|
||||
|
||||
if (datos_tarifa.id != null) {
|
||||
|
||||
if (peso_envio > parseFloat(datos_tarifa.peso_max) || parseFloat(datos_tarifa.peso_max) == 0) {
|
||||
datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio - parseFloat(datos_tarifa.peso_min)) * parseFloat(datos_tarifa.precio_adicional);
|
||||
}
|
||||
// si no se calcula linealmente
|
||||
else {
|
||||
let m = ((parseFloat(datos_tarifa.precio_max) - parseFloat(datos_tarifa.precio_min)) / (parseFloat(datos_tarifa.peso_max) - parseFloat(datos_tarifa.peso_min)));
|
||||
let b = parseFloat(datos_tarifa.precio_max) - m * parseFloat(datos_tarifa.peso_max);
|
||||
datos_tarifa.precio = parseFloat(m * peso_envio + b);
|
||||
}
|
||||
|
||||
$('#envio_base').val(datos_tarifa.precio.toFixed(2));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async updateTablaEnvios(event, input_data = {}) {
|
||||
|
||||
const self = this;
|
||||
var peso_total_libro = this.get_peso_libro();
|
||||
|
||||
await self.updateTiradaBase();
|
||||
|
||||
$('#tableOfDireccionesEnvio').DataTable().rows().every(async function (rowIdx, tableLoop, rowLoop) {
|
||||
|
||||
var rowData = this.data();
|
||||
|
||||
if (Object.keys(input_data).length > 0) {
|
||||
const porcentaje = parseInt(rowData.cantidad) / input_data.tirada_inicial * 100.0;
|
||||
const cantidad = Math.floor(input_data.tirada * porcentaje / 100.0);
|
||||
rowData.cantidad = cantidad;
|
||||
}
|
||||
|
||||
const peso_envio = peso_total_libro * parseInt(rowData.cantidad) / 1000.0;
|
||||
const tirada = parseInt($('#tirada').val());
|
||||
var datos_tarifa = await self.get_precio_envio(peso_envio, rowData.pais_id, rowData.cp, parseInt(rowData.entregaPieCalle) == 1 ? 'palets' : 'cajas');
|
||||
|
||||
|
||||
if (datos_tarifa.id != null) {
|
||||
|
||||
if (peso_envio > parseFloat(datos_tarifa.peso_max) || parseFloat(datos_tarifa.peso_max) == 0) {
|
||||
datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio - parseFloat(datos_tarifa.peso_min)) * parseFloat(datos_tarifa.precio_adicional);
|
||||
}
|
||||
// si no se calcula linealmente
|
||||
else {
|
||||
let m = ((parseFloat(datos_tarifa.precio_max) - parseFloat(datos_tarifa.precio_min)) / (parseFloat(datos_tarifa.peso_max) - parseFloat(datos_tarifa.peso_min)));
|
||||
let b = parseFloat(datos_tarifa.precio_max) - m * parseFloat(datos_tarifa.peso_max);
|
||||
datos_tarifa.precio = parseFloat(m * peso_envio + b);
|
||||
}
|
||||
|
||||
|
||||
datos_tarifa.cantidad = parseInt($('#add_cantidad').val());
|
||||
datos_tarifa.peso = peso_envio;
|
||||
|
||||
$('#tableOfDireccionesEnvio').DataTable().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,
|
||||
'pais_id': rowData.pais_id,
|
||||
'pais': datos_tarifa.pais,
|
||||
'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': self.actionBtns_direcciones,
|
||||
})
|
||||
.draw();
|
||||
|
||||
|
||||
$(document).trigger('update-presupuesto', {
|
||||
update_lineas: false,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
popErrorAlert(window.error_no_tarifa_envio, 'error-tarifa')
|
||||
}
|
||||
})
|
||||
|
||||
if (Object.keys(input_data).length > 0) {
|
||||
|
||||
$('#tirada').val(input_data.tirada);
|
||||
$('#tirada').trigger('change', [false]);
|
||||
}
|
||||
}
|
||||
|
||||
async get_precio_envio(peso, paisId, cp, tipo_envio) {
|
||||
|
||||
let data = {
|
||||
tipo: 'get_tarifa',
|
||||
peso: peso,
|
||||
paisId: paisId,
|
||||
cp: cp,
|
||||
tipo_envio: tipo_envio,
|
||||
}
|
||||
|
||||
const response = await fetch('/presupuestodirecciones/datatable_2', {
|
||||
method: "POST",
|
||||
body: JSON.stringify(data),
|
||||
headers: {
|
||||
"Content-type": "application/json; charset=UTF-8",
|
||||
}
|
||||
});
|
||||
|
||||
const values = await response.json();
|
||||
return values.data;
|
||||
}
|
||||
|
||||
initFormularioDireccionEnvio() {
|
||||
|
||||
const self = this;
|
||||
@ -363,17 +572,16 @@ class Envios {
|
||||
})
|
||||
}
|
||||
|
||||
/* TO-DO
|
||||
checkInsertar()
|
||||
//updateTotales(false, false, true)
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: true,
|
||||
$(document).trigger('ckeck-lineas-envios');
|
||||
|
||||
$(document).trigger('update-presupuesto', {
|
||||
update_lineas : false,
|
||||
update_servicios : true,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
})
|
||||
*/
|
||||
});
|
||||
|
||||
$('#addressForm').modal("hide");
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user