mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'dev/tiradas_alternativas' into 'main'
Dev/tiradas alternativas See merge request jjimenez/safekat!176
This commit is contained in:
@ -0,0 +1,71 @@
|
||||
// Funcion para obtener el peso total del libro
|
||||
function 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;
|
||||
}
|
||||
|
||||
|
||||
async function get_precio_envio(peso, paisId, cp, tipo_envio){
|
||||
|
||||
data = {
|
||||
tipo: 'get_tarifa',
|
||||
peso: peso,
|
||||
paisId: paisId,
|
||||
cp: cp,
|
||||
tipo_envio: tipo_envio,
|
||||
}
|
||||
data = Object.assign(data, window.token_ajax);
|
||||
|
||||
const response = await fetch(window.location.origin + window.url_get_precio_envio , {
|
||||
method: "POST",
|
||||
body: JSON.stringify(data),
|
||||
headers: {
|
||||
"Content-type": "application/json; charset=UTF-8",
|
||||
}
|
||||
});
|
||||
|
||||
const values = await response.json();
|
||||
yeniden(values[window.csrf_token]);
|
||||
return values.data;
|
||||
}
|
||||
|
||||
|
||||
async function get_coste_envio_tiradasAlternativas(tirada){
|
||||
|
||||
var peso_libro = get_peso_libro();
|
||||
var tirada_inicial = parseInt($('#tirada').val());
|
||||
var coste = 0.0;
|
||||
var margen = 0.0;
|
||||
|
||||
const table = $('#tableOfDireccionesEnvio').DataTable();
|
||||
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 cantidad = Math.floor(tirada*porcentaje/100.0);
|
||||
const peso_envio = cantidad*peso_libro/1000.0;
|
||||
const datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas');
|
||||
|
||||
if(datos_tarifa.id!=null){
|
||||
|
||||
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};
|
||||
}
|
||||
@ -92,87 +92,63 @@ const actionBtns_direcciones = function(data) {
|
||||
|
||||
function updateTablaEnvios(){
|
||||
|
||||
var peso_total_libro = 0
|
||||
tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var rowData = this.data();
|
||||
peso_total_libro += parseFloat(rowData.peso)
|
||||
|
||||
})
|
||||
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();
|
||||
const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0
|
||||
const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0;
|
||||
|
||||
var datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas');
|
||||
|
||||
|
||||
$.post( '<?= route_to('dataTableOfPresupuestoDirecciones') ?>',
|
||||
{
|
||||
tipo: "get_tarifa",
|
||||
peso: peso_envio,
|
||||
paisId: rowData.paisId,
|
||||
cp: rowData.cp,
|
||||
tipo_envio: parseInt(rowData.entregaPieCalle)==1?'palets':'cajas',
|
||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v,
|
||||
})
|
||||
.done(function( data ) {
|
||||
if(data.length >0){
|
||||
|
||||
var precios = []
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
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
|
||||
else{
|
||||
m=((data[i].precio_max-data[i].precio_min)/(data[i].peso_max-data[i].peso_min))
|
||||
b=data[i].precio_max-m*data[i].peso_max
|
||||
data[i].precio = (m*peso_envio+b).toFixed(2);
|
||||
}
|
||||
data[i].margen = data[i].margen
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
if(datos_tarifa.id!=null){
|
||||
|
||||
if(peso_envio>parseFloat(datos_tarifa.peso_max)){
|
||||
datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio-parseFloat(datos_tarifa.peso_min))*parseFloat(datos_tarifa.precio_adicional);
|
||||
}
|
||||
else{
|
||||
popErrorAlert('<?= lang('PresupuestosDirecciones.validation.no_tarifa') ?>', 'error-tarifa')
|
||||
// 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);
|
||||
datos_tarifa.precio = parseFloat(m*peso_envio+b);
|
||||
}
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
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')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$(document).on('click', '.delete-add-row', function(e) {
|
||||
@ -411,5 +387,6 @@ function load_datos_envios(){
|
||||
}
|
||||
|
||||
|
||||
window.url_get_precio_envio = '<?= route_to('processDataDirecciones') ?>';
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
@ -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);
|
||||
});
|
||||
@ -0,0 +1,266 @@
|
||||
/****************************************************************************************
|
||||
* Seccion para los servicios de acabado
|
||||
***************************************************************************************/
|
||||
function get_datos_acabado(){
|
||||
|
||||
var datosAcabado = []
|
||||
if($('#tableOfServiciosAcabado').DataTable().rows().count()>0){
|
||||
$("#tableOfServiciosAcabado tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 1:
|
||||
if($(this).text().includes(' '+ lang_text_cubierta))
|
||||
values['cubierta'] = 1
|
||||
else
|
||||
values['cubierta'] = 0
|
||||
if($(this).text().includes(' '+ lang_text_sobrecubierta))
|
||||
values['sobrecubierta'] = 1
|
||||
else
|
||||
values['sobrecubierta'] = 0
|
||||
break
|
||||
case 2:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 3:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 4:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosAcabado.push(values)
|
||||
})
|
||||
}
|
||||
return datosAcabado
|
||||
}
|
||||
|
||||
|
||||
async function get_servAcabados_tiradasAlternativas(tirada){
|
||||
serviciosAcabados ={
|
||||
coste: 0.0,
|
||||
margen: 0.0,
|
||||
}
|
||||
json_data = {
|
||||
datos: get_datos_acabado(),
|
||||
tirada: parseInt(tirada),
|
||||
POD: $('#POD').val()
|
||||
}
|
||||
json_data = Object.assign(json_data, window.token_ajax);
|
||||
|
||||
const response = await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , {
|
||||
method: "POST",
|
||||
body: JSON.stringify(json_data),
|
||||
headers: {
|
||||
"Content-type": "application/json; charset=UTF-8"
|
||||
}
|
||||
})
|
||||
const values = await response.json();
|
||||
yeniden(values[window.csrf_token]);
|
||||
values.lines.forEach((line) => {
|
||||
|
||||
serviciosAcabados.coste += parseFloat(line[0].total);
|
||||
serviciosAcabados.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0;
|
||||
});
|
||||
return serviciosAcabados;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Seccion para los servicios de encuadernación
|
||||
***************************************************************************************/
|
||||
function get_datos_encuadernacion(){
|
||||
|
||||
var datosEnc = []
|
||||
if($("#tableOfServiciosEncuadernacion").DataTable().rows().count()>0){
|
||||
$("#tableOfServiciosEncuadernacion tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 2:
|
||||
values['proveedor_id'] = $(this).children(":first").select2('data')[0].id
|
||||
break
|
||||
case 3:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 4:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 5:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosEnc.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosEnc
|
||||
}
|
||||
|
||||
|
||||
async function get_servEncuadernacion_tiradasAlternativas(tirada, paginas, ancho, alto){
|
||||
serviciosEncuadernacion ={
|
||||
coste: 0.0,
|
||||
margen: 0.0,
|
||||
}
|
||||
json_data = {
|
||||
datos: get_datos_encuadernacion(),
|
||||
tirada: parseInt(tirada),
|
||||
paginas: parseInt(paginas),
|
||||
ancho: ancho,
|
||||
alto: alto,
|
||||
POD: $('#POD').val()
|
||||
}
|
||||
json_data = Object.assign(json_data, window.token_ajax);
|
||||
|
||||
const response = await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , {
|
||||
method: "POST",
|
||||
body: JSON.stringify(json_data),
|
||||
headers: {
|
||||
"Content-type": "application/json; charset=UTF-8"
|
||||
}
|
||||
})
|
||||
const values = await response.json();
|
||||
yeniden(values[window.csrf_token]);
|
||||
values.lines.forEach((line) => {
|
||||
serviciosEncuadernacion.coste += parseFloat(line[0].total);
|
||||
serviciosEncuadernacion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0;
|
||||
});
|
||||
return serviciosEncuadernacion;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Seccion para los servicios de manipulado
|
||||
***************************************************************************************/
|
||||
function get_datos_manipulado(){
|
||||
|
||||
var datosManipulado = []
|
||||
if($("#tableOfServiciosManipulado").DataTable().rows().count()>0){
|
||||
|
||||
$("#tableOfServiciosManipulado tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 2:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 3:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 4:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosManipulado.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosManipulado
|
||||
}
|
||||
|
||||
|
||||
async function get_servManipulado_tiradasAlternativas(tirada){
|
||||
serviciosManipulado ={
|
||||
coste: 0.0,
|
||||
margen: 0.0,
|
||||
}
|
||||
json_data = {
|
||||
datos: get_datos_manipulado(),
|
||||
tirada: parseInt(tirada),
|
||||
POD: $('#POD').val()
|
||||
}
|
||||
json_data = Object.assign(json_data, window.token_ajax);
|
||||
|
||||
const response = await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , {
|
||||
method: "POST",
|
||||
body: JSON.stringify(json_data),
|
||||
headers: {
|
||||
"Content-type": "application/json; charset=UTF-8"
|
||||
}
|
||||
})
|
||||
const values = await response.json();
|
||||
yeniden(values[window.csrf_token]);
|
||||
values.lines.forEach((line) => {
|
||||
serviciosManipulado.coste += parseFloat(line[0].total);
|
||||
serviciosManipulado.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0;
|
||||
});
|
||||
return serviciosManipulado;
|
||||
}
|
||||
|
||||
/****************************************************************************************
|
||||
* Seccion para los servicios de preimpresión
|
||||
***************************************************************************************/
|
||||
function get_datos_preimpresion(){
|
||||
|
||||
var datosPreimpresion = []
|
||||
if($("#tableOfServiciosPreimpresion").DataTable().rows().count()>0){
|
||||
|
||||
$("#tableOfServiciosPreimpresion tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 2:
|
||||
values['precio'] = $(this).children(":first").val()
|
||||
break
|
||||
case 3:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosPreimpresion.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosPreimpresion
|
||||
}
|
||||
|
||||
async function get_servPreimpresion_tiradasAlternativas(){
|
||||
serviciosPreimpresion ={
|
||||
coste: 0.0,
|
||||
margen: 0.0,
|
||||
}
|
||||
json_data = {
|
||||
datos: get_datos_preimpresion(),
|
||||
POD: $('#POD').val()
|
||||
}
|
||||
json_data = Object.assign(json_data, window.token_ajax);
|
||||
|
||||
const response = await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , {
|
||||
method: "POST",
|
||||
body: JSON.stringify(json_data),
|
||||
headers: {
|
||||
"Content-type": "application/json; charset=UTF-8"
|
||||
}
|
||||
})
|
||||
const values = await response.json();
|
||||
yeniden(values[window.csrf_token]);
|
||||
values.lines.forEach((line) => {
|
||||
serviciosPreimpresion.coste += parseFloat(line[0].total);
|
||||
serviciosPreimpresion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0;
|
||||
});
|
||||
return serviciosPreimpresion;
|
||||
}
|
||||
@ -710,47 +710,7 @@
|
||||
}
|
||||
|
||||
|
||||
function get_datos_acabado(){
|
||||
|
||||
var datosAcabado = []
|
||||
if(tableServiciosAcabado.rows().count()>0){
|
||||
$("#tableOfServiciosAcabado tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 1:
|
||||
if($(this).text().includes(' (<?= lang("Presupuestos.cubierta") ?>)'))
|
||||
values['cubierta'] = 1
|
||||
else
|
||||
values['cubierta'] = 0
|
||||
if($(this).text().includes(' (<?= lang("Presupuestos.sobrecubierta") ?>)'))
|
||||
values['sobrecubierta'] = 1
|
||||
else
|
||||
values['sobrecubierta'] = 0
|
||||
break
|
||||
case 2:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 3:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 4:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosAcabado.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosAcabado
|
||||
}
|
||||
|
||||
|
||||
init_servicio_acabado()
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
@ -1026,41 +986,6 @@
|
||||
check_serv_enc_error()
|
||||
})
|
||||
|
||||
function get_datos_encuadernacion(){
|
||||
|
||||
var datosEnc = []
|
||||
if(tableServiciosEnc.rows().count()>0){
|
||||
$("#tableOfServiciosEncuadernacion tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 2:
|
||||
values['proveedor_id'] = $(this).children(":first").select2('data')[0].id
|
||||
break
|
||||
case 3:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 4:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 5:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosEnc.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosEnc
|
||||
}
|
||||
|
||||
|
||||
init_servicio_encuadernado()
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
@ -1200,38 +1125,7 @@
|
||||
check_serv_manipulado_error()
|
||||
})
|
||||
|
||||
function get_datos_manipulado(){
|
||||
|
||||
var datosManipulado = []
|
||||
if(tableServiciosManipulado.rows().count()>0){
|
||||
|
||||
$("#tableOfServiciosManipulado tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 2:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 3:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 4:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosManipulado.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosManipulado
|
||||
}
|
||||
|
||||
|
||||
function servicioGuardas(add_service = false){
|
||||
if(add_service){
|
||||
$('#add_servicio_manipulado_list').val(<?php echo $serviciosAutomaticos['plegadoGuardas'] ?>)
|
||||
@ -1403,35 +1297,12 @@
|
||||
check_serv_preimpresion_error()
|
||||
})
|
||||
|
||||
function get_datos_preimpresion(){
|
||||
|
||||
var datosPreimpresion = []
|
||||
if(tableServiciosPreimpresion.rows().count()>0){
|
||||
|
||||
$("#tableOfServiciosPreimpresion tr").each(function (index,tr) {
|
||||
var values = {}
|
||||
$(this).find("td").each(function (index2) {
|
||||
|
||||
switch (index2) {
|
||||
case 0:
|
||||
values['tarifa_id'] = $(this).text()
|
||||
break
|
||||
case 2:
|
||||
values['precio'] = $(this).children(":first").val()
|
||||
break
|
||||
case 3:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
})
|
||||
if(Object.keys(values).length>0)
|
||||
datosPreimpresion.push(values)
|
||||
})
|
||||
}
|
||||
|
||||
return datosPreimpresion
|
||||
}
|
||||
|
||||
|
||||
init_servicio_preimpresion()
|
||||
|
||||
|
||||
// Definición de varibles para el js (actualizar el lang)
|
||||
lang_text_cubierta = '<?= lang("Presupuestos.cubierta") ?>';
|
||||
lang_text_sobrecubierta = '<?= lang("Presupuestos.sobrecubierta") ?>';
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<div class="accordion accordion-bordered mt-3 col-xl-6" id="accordionResumen">
|
||||
<div class="accordion accordion-bordered mt-3 col-xl-4" id="accordionResumen">
|
||||
<div class="card accordion-item active">
|
||||
<h2 class="accordion-header" id="headingOne">
|
||||
<button type="button" class="accordion-button" data-bs-toggle="collapse"
|
||||
@ -16,52 +16,51 @@
|
||||
<div class="border rounded p-4 mb-3 pb-3">
|
||||
|
||||
<!-- Price Details -->
|
||||
<h6>Detalles del presupuesto</h6>
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-6 py-1 fw-normal text-end">Coste papel</dt>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Coste papel</dt>
|
||||
<dd id="totalCostePapel" class="py-1 col-6 text-end"><?= old('0', $presupuestoEntity->total_coste_papel) ?>€</dd>
|
||||
<dt class="col-6 py-1 fw-normal text-end">Margen papel</dt>
|
||||
<dd id="porcentajeMargenPapel" class="col-4 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_papel) ?>%</dd>
|
||||
<dd id="margenPapel" class="col-2 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_papel) ?>€</dd>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Margen papel</dt>
|
||||
<dd id="porcentajeMargenPapel" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_papel) ?>%</dd>
|
||||
<dd id="margenPapel" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_papel) ?>€</dd>
|
||||
|
||||
<dt class="col-6 fw-normal text-end">Coste impresión</dt>
|
||||
<dt class="col-5 fw-normal text-end">Coste impresión</dt>
|
||||
<dd id="totalCosteImpresion" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_coste_impresion) ?>€</dd>
|
||||
<dt class="col-6 py-1 fw-normal text-end">Margen impresión</dt>
|
||||
<dd id="porcentajeMargenImpresion" class="col-4 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_impresion) ?>%</dd>
|
||||
<dd id="margenImpresion" class="col-2 py-1 text-end"><?= old('0', $presupuestoEntity->total_margen_impresion) ?>€</dd>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Margen impresión</dt>
|
||||
<dd id="porcentajeMargenImpresion" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_impresion) ?>%</dd>
|
||||
<dd id="margenImpresion" class="col-3 py-1 text-end"><?= old('0', $presupuestoEntity->total_margen_impresion) ?>€</dd>
|
||||
|
||||
<dt class="col-6 fw-normal text-end">Coste servicios</dt>
|
||||
<dt class="col-5 fw-normal text-end">Coste servicios</dt>
|
||||
<dd id="totalServicios" class="col-6 text-end py-1"><?= old('0', $presupuestoEntity->total_coste_servicios) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Margen servicios</dt>
|
||||
<dd id="porcentajeMargenServicios" class="col-4 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_servicios) ?>%</dd>
|
||||
<dd id="margenServicios" class="col-2 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_servicios) ?>€</dd>
|
||||
<dt class="col-5 fw-normal text-end">Margen servicios</dt>
|
||||
<dd id="porcentajeMargenServicios" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenPercent_servicios) ?>%</dd>
|
||||
<dd id="margenServicios" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_servicios) ?>€</dd>
|
||||
|
||||
<dt class="col-6 fw-normal text-end">Coste de envío</dt>
|
||||
<dt class="col-5 fw-normal text-end">Coste de envío</dt>
|
||||
<dd id="totalEnvios"class="col-6 text-end py-1"><?= old('0', $presupuestoEntity->total_coste_envios) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Margen envío</dt>
|
||||
<dt class="col-5 fw-normal text-end">Margen envío</dt>
|
||||
<dd id="margenEnvios" class="col-6 text-end py-1"><?= old('0', $presupuestoEntity->total_margen_envios) ?>€</dd>
|
||||
</dl>
|
||||
|
||||
<hr class="mx-n4">
|
||||
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-6 fw-normal text-end">Total Costes</dt>
|
||||
<dt class="col-5 fw-normal text-end">Total Costes</dt>
|
||||
<dd id="totalCostes" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_costes) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Total Margen</dt>
|
||||
<dt class="col-5 fw-normal text-end">Total Margen</dt>
|
||||
<dd id="totalMargenes" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_margenes) ?>€</dd>
|
||||
</dl>
|
||||
|
||||
<hr class="mx-n4">
|
||||
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-6 fw-normal text-end">Total</dt>
|
||||
<dt class="col-5 fw-normal text-end">Total</dt>
|
||||
<dd id="totalAntesDescuento" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_antes_descuento) ?>€</dd>
|
||||
<dt class="col-6 py-1 fw-normal text-end">Descuento</dt>
|
||||
<div class="d-flex col-4 flex-row-reverse"><input id="total_descuentoPercent" type='number' value="<?= old('0', $presupuestoEntity->total_descuentoPercent) ?>" class="update-totales form-control" style="width:50% !important;"></div>
|
||||
<dd id="descuentoTotal" class="col-2 py-1 text-end"><?= old('0', $presupuestoEntity->total_descuento) ?>€</dd>
|
||||
<dt class="col-6 text-end">Total presupuesto</dt>
|
||||
<dt class="col-5 py-1 fw-normal text-end">Descuento</dt>
|
||||
<dd id="dd" class="col-3 text-end py-1"><input id="total_descuentoPercent" type="number" value="<?= old('0', $presupuestoEntity->total_descuentoPercent) ?>" class="update-totales form-control" style="width:100% !important;"></dd>
|
||||
<dd id="descuentoTotal" class="col-3 py-1 text-end"><?= old('0', $presupuestoEntity->total_descuento) ?>€</dd>
|
||||
<dt class="col-5 text-end">Total presupuesto</dt>
|
||||
<dd id="totalDespuesDecuento" class="col-6 fw-semibold text-end"><?= old('0', $presupuestoEntity->total_presupuesto) ?>€</dd>
|
||||
<dt class="col-6 fw-normal text-end">Precio unidad</dt>
|
||||
<dt class="col-5 fw-normal text-end">Precio unidad</dt>
|
||||
<dd id="precioUnidadPresupuesto" class="col-6 text-end mb-0"><?= old('0', $presupuestoEntity->total_precio_unidad) ?>€</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@ -223,6 +222,9 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
|
||||
$('#totalCostes').text((totalCostes).toFixed(2) + '€')
|
||||
$('#totalMargenes').text((totalMargenes).toFixed(2) + '€')
|
||||
|
||||
if($('#total_descuentoPercent').val()<0){
|
||||
$('#total_descuentoPercent').val(0)
|
||||
}
|
||||
var totalAntesDescuento = totalCostes + totalMargenes
|
||||
var totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val())/100
|
||||
var totalPresupuesto = totalAntesDescuento - totalDescuento
|
||||
|
||||
@ -0,0 +1,321 @@
|
||||
// Selección de la última columna de la tabla de tiradas
|
||||
const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1;
|
||||
|
||||
|
||||
// Función para generar los botones de acción de la tabla de tiradas
|
||||
const actionBtns_tiradasAlt = function (data) {
|
||||
return `
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-tirada mx-2" data-id="${data.row_id}"></i></a>
|
||||
`;
|
||||
};
|
||||
|
||||
|
||||
// Inicializaciones de la tabla de tiradas
|
||||
var tableTiradas;
|
||||
|
||||
|
||||
// Espera a que todas las variables necesarias estén definidas
|
||||
(async () => {
|
||||
|
||||
while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
|
||||
await new Promise(resolve => setTimeout(resolve, 200));
|
||||
initTableTiradas();
|
||||
fill_tiradas_alternativas();
|
||||
|
||||
})();
|
||||
|
||||
|
||||
// Evento de añadir una tirada alternativa
|
||||
$('#add_tirada_alt').on('click', function () {
|
||||
|
||||
// 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());
|
||||
|
||||
const typeIsOk = tirada_alt <= parseInt($('#POD').val()) && isPOD || tirada_alt > parseInt($('#POD').val()) && !isPOD;
|
||||
|
||||
if (!exists && typeIsOk) {
|
||||
|
||||
const dimension = getDimensionLibro();
|
||||
|
||||
let datos = {
|
||||
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
|
||||
$.ajax({
|
||||
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;
|
||||
});
|
||||
|
||||
// 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(
|
||||
parseInt(datos.tirada), parseInt( $('#paginas').val()), parseInt(dimension.ancho), parseInt(dimension.alto));
|
||||
costes_servicios += valueEncuadernacion.coste;
|
||||
margen_servicios += valueEncuadernacion.margen;
|
||||
|
||||
const valueManipulado = await get_servManipulado_tiradasAlternativas(parseInt(datos.tirada));
|
||||
costes_servicios += valueManipulado.coste;
|
||||
margen_servicios += valueManipulado.margen;
|
||||
|
||||
const valuePreimpresion = await get_servPreimpresion_tiradasAlternativas(parseInt(datos.tirada));
|
||||
costes_servicios += valuePreimpresion.coste;
|
||||
margen_servicios += valuePreimpresion.margen;
|
||||
|
||||
const valueTransporte = await get_coste_envio_tiradasAlternativas(parseInt(datos.tirada));
|
||||
coste_envio = valueTransporte.coste;
|
||||
margen_envio = valueTransporte.margen;
|
||||
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
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
|
||||
function getLomoExterior(){
|
||||
let lomoTotal = 0
|
||||
try{
|
||||
$('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var rowData = this.data();
|
||||
if(rowData.row_id != 'lp_cubierta' && rowData.tipo != 'lp_sobrecubierta')
|
||||
lomoTotal += parseFloat(rowData.lomo)
|
||||
})
|
||||
}
|
||||
catch(error){
|
||||
lomoTotal = 0
|
||||
}
|
||||
return lomoTotal
|
||||
}
|
||||
|
||||
|
||||
// Inicialización de la tabla de tiradas
|
||||
function initTableTiradas() {
|
||||
tableTiradas = $('#tableTiradas').DataTable({
|
||||
"language": {
|
||||
"url": window.datatable_lang_url
|
||||
},
|
||||
"paging": false,
|
||||
"info": false,
|
||||
"searching": false,
|
||||
"ordering": false,
|
||||
"autoWidth": false,
|
||||
"responsive": true,
|
||||
"columnDefs": [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr_tiradasAlt]
|
||||
},
|
||||
],
|
||||
"columns": [
|
||||
{ data: "tirada" },
|
||||
{ data: 'coste_impresion' },
|
||||
{ data: 'coste_envio' },
|
||||
{ data: 'margen' ,
|
||||
render: function ( data, type, row ) {
|
||||
return data + '%';
|
||||
}
|
||||
},
|
||||
{ data: 'total_pedido' },
|
||||
{ data: 'precio_unidad' },
|
||||
{
|
||||
data: actionBtns_tiradasAlt,
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
// Evento de borrado de una fila de la tabla de tiradas
|
||||
$(document).on('click', '.btn-delete-tirada', function (e) {
|
||||
|
||||
const row = $(this).closest('tr');
|
||||
tableTiradas.row(row)
|
||||
.remove()
|
||||
.draw();
|
||||
})
|
||||
|
||||
|
||||
// Función para generar el JSON de las lineas de presupuesto para calcular las tiradas
|
||||
function generate_json_tiradas() {
|
||||
|
||||
const data = $('#tableLineasPresupuesto').DataTable().data().toArray();
|
||||
|
||||
//return data; // For debugging purposes
|
||||
json = filterData(data,
|
||||
['paginas',
|
||||
'numPagColor',
|
||||
'paginas_impresion',
|
||||
'papel', // papel generico
|
||||
'papel_impresion_id',
|
||||
'gramaje',
|
||||
'maquina_id',
|
||||
'aFavorFibra',
|
||||
'row_id',
|
||||
'check_papel_total',
|
||||
'check_impresion_total',
|
||||
'cobAmarillo', // tipologia de papel
|
||||
'cobCyan',
|
||||
'cobMagenta',
|
||||
'cobNegro',
|
||||
'cobCG',
|
||||
'gotaColor',
|
||||
'gotaNegro']);
|
||||
|
||||
json.forEach(element => {
|
||||
element['check_papel_total'] = $('#' + element['row_id'] + '_checkPapel').is(':checked') ? 1 : 0;
|
||||
element['check_impresion_total'] = $('#' + element['row_id'] + '_checkClicks').is(':checked') ? 1 : 0;
|
||||
});
|
||||
return JSON.stringify(json);
|
||||
}
|
||||
|
||||
|
||||
// Función para filtrar las columnas de la tabla de tiradas
|
||||
function filterData(data, keys) {
|
||||
return data.map(obj => {
|
||||
const newObj = {};
|
||||
keys.forEach(key => {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
});
|
||||
return newObj;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Función para obtener la merma de la tirada alternativa
|
||||
function get_merma_tirada_alternativa(tirada){
|
||||
|
||||
var merma = 0
|
||||
|
||||
if(tirada>parseInt($('#POD').val())){
|
||||
|
||||
merma = tirada*0.1<=30 ? tirada*0.1 : 30
|
||||
}
|
||||
else{
|
||||
merma_lineas = []
|
||||
$('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var rowData = this.data();
|
||||
if(rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta'){
|
||||
const formas_linea = $('#isCosido').val()==0?parseInt(rowData.formas):parseInt(rowData.formas)/2
|
||||
if(formas_linea > tirada)
|
||||
merma_lineas.push(formas_linea-tirada)
|
||||
else
|
||||
merma_lineas.push(tirada%formas_linea)
|
||||
}
|
||||
})
|
||||
|
||||
if(merma_lineas.length>0)
|
||||
merma = Math.max(...merma_lineas)
|
||||
else
|
||||
merma = 0
|
||||
}
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
<div class="accordion accordion-bordered mt-3 col-xl-8" id="accordionTiradas">
|
||||
<div class="card accordion-item active">
|
||||
<h2 class="accordion-header" id="headingOne">
|
||||
<button type="button" class="accordion-button" data-bs-toggle="collapse"
|
||||
data-bs-target="#accordionTiradasTip" aria-expanded="false"
|
||||
aria-controls="accordionTiradasTip">
|
||||
<h4><?= lang("Presupuestos.tiradasAlternativas") ?></h4>
|
||||
</button>
|
||||
</h2>
|
||||
|
||||
<div id="accordionTiradasTip" class="accordion-collapse collapse show"
|
||||
data-bs-parent="#accordionTiradas">
|
||||
<div class="accordion-body">
|
||||
<div id='alert-tiradas_alt'></div>
|
||||
|
||||
<div class="col-xl-12">
|
||||
<div class="border rounded p-4 mb-3 pb-3">
|
||||
<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 '>
|
||||
<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>
|
||||
</div>
|
||||
<table id="tableTiradas" class="comparator-table table dt-responsive dataTable" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= lang('Presupuestos.tirada') ?></th>
|
||||
<th><?= lang('Presupuestos.tiradaImpresion') ?></th>
|
||||
<th><?= lang('Presupuestos.tiradaEnvio') ?></th>
|
||||
<th><?= lang('Presupuestos.tiradaMargen') ?></th>
|
||||
<th><?= lang('Presupuestos.totalPedido') ?></th>
|
||||
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
||||
<th></th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- //.accordion-body -->
|
||||
</div> <!-- //.accordion-collapse -->
|
||||
</div> <!-- //.accordion-item -->
|
||||
</div> <!-- //.accordion -->
|
||||
|
||||
<!------------------------------------------------------->
|
||||
<!-- Código JS comportamiento ?????. -->
|
||||
<!------------------------------------------------------->
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json";
|
||||
|
||||
window.datatable_TA_url = "<?= route_to('dataTableOfPresupuestoTiradasAlternativas') ?>";
|
||||
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() ?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -15,6 +15,10 @@
|
||||
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
|
||||
<input type="hidden" name="tipo_impresion_id" id="tipo_impresion_id" class="form-control"
|
||||
value="<?= $tipo_impresion_id ?>"></input>
|
||||
<input type="hidden" name="isCosido" id="isCosido" class="form-control"
|
||||
value="<?= $isCosido ?>"></input>
|
||||
<input type="hidden" name="POD" id="POD" class="form-control"
|
||||
value="<?= $POD ?>"></input>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems") ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems") ?>
|
||||
<?php if (str_contains($formAction, 'edit')): ?>
|
||||
@ -25,7 +29,8 @@
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios") ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_comentariosItems") ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems") ?>
|
||||
<?php else: ?>
|
||||
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems") ?>
|
||||
<?php else: ?>
|
||||
<input type="hidden" name="total_presupuesto" id="total_presupuesto" class="form-control"
|
||||
value="0.0"></input>
|
||||
<?php endif; ?>
|
||||
@ -187,11 +192,19 @@ const url_parts = url.split('/');
|
||||
<?php if (str_contains($formAction, 'edit')): ?>
|
||||
<?= $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') {
|
||||
id = url_parts[url_parts.length - 1];
|
||||
} else {
|
||||
id = -1;
|
||||
}
|
||||
|
||||
|
||||
$('#presupuestoForm').on("submit", function(event) {
|
||||
event.preventDefault();
|
||||
@ -200,6 +213,7 @@ const url_parts = url.split('/');
|
||||
|
||||
$.when(fill_bbdd_from_lp(id).then(function(data, textStatus, jqXHR) {
|
||||
generateCompJSON()
|
||||
generate_json_tiradas()
|
||||
form = $('#presupuestoForm').serialize()
|
||||
form += getValuesResumenForm()
|
||||
|
||||
@ -226,9 +240,22 @@ const url_parts = url.split('/');
|
||||
return false; //stop the actual form post !important!
|
||||
});
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
<!------------------------------------------->
|
||||
<!-- Variables generales usadas en los ficheros js -->
|
||||
<!------------------------------------------->
|
||||
<?php if (str_contains($formAction, 'edit')): ?>
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
window.token_ajax= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v};
|
||||
window.csrf_token = '<?= csrf_token() ?>';
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
|
||||
|
||||
@ -249,6 +276,9 @@ const url_parts = url.split('/');
|
||||
<?php if (str_contains($formAction, 'edit')): ?>
|
||||
<script src="<?= site_url('js_loader/comparadorCosidoTapaBlanda_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/previsualizador_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/tiradasAlternativas_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/datosServicios_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/datosEnvios_js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
|
||||
<?php endif; ?>
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
Reference in New Issue
Block a user