mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'dev/mejoras_tiradas' into 'main'
Dev/mejoras tiradas See merge request jjimenez/safekat!185
This commit is contained in:
@ -21,12 +21,37 @@ class Js_loader extends BaseController
|
||||
|
||||
}
|
||||
|
||||
function translate_js($translationFile)
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
|
||||
$locale = service('request')->getLocale();
|
||||
$path = "Language/{$locale}/$translationFile.php";
|
||||
$lang = require APPPATH.$path;
|
||||
|
||||
return view('themes/_commonPartialsBs/translate.js', ['array_php' => $lang, 'var_name' => $translationFile]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function datosLibro_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.js');
|
||||
}
|
||||
|
||||
function previsualizador_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/previews.js');
|
||||
}
|
||||
|
||||
function lineasPresupuesto_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js');
|
||||
}
|
||||
|
||||
function tiradasAlternativas_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
@ -45,5 +70,17 @@ class Js_loader extends BaseController
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js');
|
||||
}
|
||||
|
||||
function resumenPresupuestos_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestos.js');
|
||||
}
|
||||
|
||||
function presupuestos_js()
|
||||
{
|
||||
$this->response->setHeader('Content-Type', 'text/javascript');
|
||||
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestos.js');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -339,6 +339,8 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
$this->viewData['papelGenericoRotativaNegroList'] = $this->getPapelGenericoRotativaNegro();
|
||||
$this->viewData['papelGenericoRotativaColorList'] = $this->getPapelGenericoRotativaColor();
|
||||
|
||||
$this->viewData['direccionesList'] = $this->getDirecciones($id);
|
||||
|
||||
// Acabados exteriores
|
||||
$this->viewData['acabadosCubierta'] = $this->getAcabadosCubierta();
|
||||
$this->viewData['acabadosSobrecubierta'] = $this->getAcabadosSobrecubierta();
|
||||
@ -1295,4 +1297,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
$model = model('App\Models\Configuracion\ConfiguracionSistemaModel');
|
||||
return $model->getPOD();
|
||||
}
|
||||
|
||||
protected function getDirecciones($presupuesto_id){
|
||||
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
||||
return $model->where('presupuesto_id', $presupuesto_id)->findAll();
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,8 +92,8 @@ return [
|
||||
'encuadernacion' => 'Binding',
|
||||
'solapasCubierta' => 'Cover dust jacket',
|
||||
'solapasAnchoCubierta' => 'Cover dust jacket width',
|
||||
'1cara' => '1 side',
|
||||
'2caras' => '2 sides',
|
||||
'unaCara' => '1 side',
|
||||
'dosCaras' => '2 sides',
|
||||
'bn' => 'BW',
|
||||
'bnhq' => 'BWHQ',
|
||||
'color' => 'Colour',
|
||||
|
||||
@ -108,8 +108,8 @@ return [
|
||||
'solapasAnchoCubierta' => 'Ancho solapas cub.',
|
||||
'solapasAnchoSobrecubierta' => 'Ancho solapas sobrecub.',
|
||||
'sinImpresion' => 'Sin impresion',
|
||||
'1cara' => '1 cara',
|
||||
'2caras' => '2 caras',
|
||||
'unaCara' => '1 cara',
|
||||
'dosCaras' => '2 caras',
|
||||
'bn' => 'BN',
|
||||
'bnhq' => 'BNHQ',
|
||||
'color' => 'Color',
|
||||
@ -257,6 +257,7 @@ return [
|
||||
'requerido' => 'El campo {field} es obligatorio.',
|
||||
'max_length' => 'El campo {field} no puede exceder los {param} caracteres de longitud.',
|
||||
'no_lp_for_merma' => 'Inserte líneas de presupuesto para calcular la merma',
|
||||
'ejemplares_envio' => 'El número de ejemplares enviados no coincide con la tirada',
|
||||
],
|
||||
|
||||
'errores' => [
|
||||
|
||||
@ -17,9 +17,9 @@ return [
|
||||
'paginasMax' => 'Páginas Max',
|
||||
'paginasMin' => 'Páginas Min',
|
||||
'dimensiones' => 'Dimensiones',
|
||||
'menor_a5' =>'Menor A5',
|
||||
'menor_a5' =>'Hasta A5',
|
||||
'entre_a5_a4' =>'Entre A5 y A4',
|
||||
'mayor_a4' =>'Mayor A4',
|
||||
'mayor_a4' =>'Desde A4',
|
||||
'por_defecto' =>'Genérico',
|
||||
'moduleExplanation' => 'El número de páginas reflejado en este apartado se refiere por ejemplar, no al total del pedido',
|
||||
'margen' => 'Margen',
|
||||
|
||||
1
ci4/app/Views/themes/_commonPartialsBs/translate.js
Normal file
1
ci4/app/Views/themes/_commonPartialsBs/translate.js
Normal file
@ -0,0 +1 @@
|
||||
window.<?php echo $var_name; ?> = <?= json_encode($array_php); ?>;
|
||||
@ -1,3 +1,10 @@
|
||||
const 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>
|
||||
`;
|
||||
};
|
||||
|
||||
// Funcion para obtener el peso total del libro
|
||||
function get_peso_libro(){
|
||||
|
||||
@ -51,7 +58,7 @@ async function get_coste_envio_tiradasAlternativas(tirada){
|
||||
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)){
|
||||
@ -68,4 +75,345 @@ async function get_coste_envio_tiradasAlternativas(tirada){
|
||||
}
|
||||
|
||||
return {coste, margen};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function checkInsertar(){
|
||||
|
||||
var cantidad_total = 0
|
||||
$('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data();
|
||||
cantidad_total += parseInt(data.cantidad )
|
||||
} );
|
||||
var htmlString = ''
|
||||
if(cantidad_total < parseInt($('#tirada').val())){
|
||||
$('#rowInsertar').css('display', 'flex')
|
||||
}
|
||||
else{
|
||||
$('#rowInsertar').css('display', 'none')
|
||||
}
|
||||
|
||||
if(cantidad_total != parseInt($('#tirada').val())){
|
||||
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">` +
|
||||
window.Presupuestos.validation.ejemplares_envio +
|
||||
`</h5>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
$('#alert-envios').html(htmlString)
|
||||
}
|
||||
|
||||
|
||||
async function updateTablaEnvios(tirada_inicial = null, tirada = null){
|
||||
|
||||
var peso_total_libro = get_peso_libro();
|
||||
|
||||
$('#tableOfDireccionesEnvio').DataTable().rows().every(async function ( rowIdx, tableLoop, rowLoop ) {
|
||||
|
||||
var rowData = this.data();
|
||||
|
||||
if(tirada_inicial!=null && tirada!=null){
|
||||
const porcentaje = parseInt(rowData.cantidad)/tirada_inicial*100.0;
|
||||
const cantidad = Math.floor(tirada*porcentaje/100.0);
|
||||
rowData.cantidad = cantidad
|
||||
}
|
||||
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');
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
// 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;
|
||||
|
||||
$('#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,
|
||||
'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)
|
||||
updatePresupuesto({
|
||||
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')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('#insertar_direccion').on('click', function(){
|
||||
|
||||
$("#addressForm").attr('action','create')
|
||||
var $newAddDialog = $("#addressForm")
|
||||
var maximaCantidad = parseInt($('#tirada').val())
|
||||
$("#add_cantidad").attr("max" , maximaCantidad);
|
||||
$("#add_cantidad").val( maximaCantidad);
|
||||
$("#add_cantidad").on('change', function(){
|
||||
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
|
||||
})
|
||||
|
||||
cantidad_total = 0
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data();
|
||||
cantidad_total += parseInt(data.cantidad)
|
||||
} );
|
||||
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total)
|
||||
$('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total)
|
||||
$newAddDialog.modal('show')
|
||||
})
|
||||
|
||||
const lastColNr_direcciones = $('#tableOfDireccionesEnvio').find("tr:first th").length - 1;
|
||||
|
||||
|
||||
$(document).on('click', '.delete-add-row', function(e) {
|
||||
const row = $(this).closest('tr');
|
||||
tableEnvios.row( row )
|
||||
.remove()
|
||||
.draw();
|
||||
checkInsertar()
|
||||
//updateTotales(false, false, true)
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
$(document).on('click', '.btn-edit-add', function(e) {
|
||||
const row = $(this).closest('tr');
|
||||
var data = tableEnvios.row( row ).data()
|
||||
|
||||
$("#addressForm").attr('action','edit')
|
||||
$("#addressForm").attr('row', row[0]._DT_RowIndex)
|
||||
$("#addressForm").attr('presupuestodireccion_id', $(this).attr('data-id'))
|
||||
var $newAddDialog = $("#addressForm")
|
||||
var maximaCantidad = parseInt($('#tirada').val())
|
||||
$("#add_cantidad").attr("max" , maximaCantidad);
|
||||
$("#add_cantidad").val( maximaCantidad);
|
||||
$("#add_cantidad").on('change', function(){
|
||||
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
|
||||
})
|
||||
|
||||
cantidad_total = 0
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data2 = this.data();
|
||||
cantidad_total += parseInt(data2.cantidad)
|
||||
} );
|
||||
cantidad_total -= parseInt(data.cantidad) // Si es editar tienes que restar los de la linea actual
|
||||
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total)
|
||||
$('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total)
|
||||
|
||||
$('#add_att').val(data.att)
|
||||
$('#add_direccion').val(data.direccion)
|
||||
$('#add_email').val(data.email)
|
||||
$('#add_cp').val(data.cp)
|
||||
$('#add_municipio').val(data.municipio)
|
||||
$('#add_provincia').val(data.provincia)
|
||||
$('#add_pais_id').val(data.paisId)
|
||||
$('#add_telefono').val(data.telefono)
|
||||
$('#add_cantidad').val(data.cantidad)
|
||||
$('#add_entregaPieCalle').prop('checked', data.entregaPieCalle==1?true:false)
|
||||
|
||||
$newAddDialog.modal('show')
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$('#recoger_en_taller').change(function(){
|
||||
if(this.checked) {
|
||||
$('#rowTable').css('display', 'none')
|
||||
$('#rowInsertar').css('display', 'none')
|
||||
tableEnvios.clear().draw()
|
||||
}
|
||||
else{
|
||||
$('#rowTable').css('display', 'flex')
|
||||
$('#rowInsertar').css('display', 'flex')
|
||||
tableEnvios.columns.adjust();
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
var tableEnvios = $('#tableOfDireccionesEnvio').DataTable( {
|
||||
draw:5,
|
||||
serverSide: false,
|
||||
processing: true,
|
||||
autoWidth: true,
|
||||
responsive: true,
|
||||
order: [[ 0, "asc" ]],
|
||||
pageLength: 20,
|
||||
lengthChange: false,
|
||||
searching: false,
|
||||
paging: false,
|
||||
info: false,
|
||||
scrollX: true,
|
||||
|
||||
columns: [
|
||||
{ 'data': 'tarifa_id' },
|
||||
{ 'data': 'cantidad' },
|
||||
{ 'data': 'peso' },
|
||||
{ 'data': 'att' },
|
||||
{ 'data': 'email' },
|
||||
{ 'data': 'direccion' },
|
||||
{ 'data': 'cp' },
|
||||
{ 'data': 'municipio' },
|
||||
{ 'data': 'paisId' ,
|
||||
render: function(data, type, row, meta) {
|
||||
var pais = window.paisList.find(element => element.id == data);
|
||||
return pais['nombre'];
|
||||
},
|
||||
},
|
||||
{ 'data': 'telefono' },
|
||||
{ 'data': 'proveedor'},
|
||||
{ 'data': 'proveedor_id'},
|
||||
{ 'data': 'precio' },
|
||||
{ 'data': 'margen' },
|
||||
{ 'data': 'entregaPieCalle' },
|
||||
{
|
||||
data: actionBtns_direcciones,
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
columnDefs: [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr_direcciones]
|
||||
},
|
||||
{"orderData": [ 0], "targets": 0 },
|
||||
|
||||
],
|
||||
columnDefs: [
|
||||
{
|
||||
target: [0,11,13,14],
|
||||
visible: false,
|
||||
searchable: false
|
||||
},
|
||||
],
|
||||
language: {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
|
||||
} );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function save_datos_envios(){
|
||||
$.post( window.routes_envios.dataTableOfPresupuestoDirecciones,
|
||||
Object.assign({tipo: "clear_lineas", presupuesto_id: id}, window.token_ajax))
|
||||
.done(function( data ) {
|
||||
|
||||
tableEnvios.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))
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
function load_datos_envios(){
|
||||
|
||||
window.direccionesList.forEach((linea) => {
|
||||
tableEnvios.row
|
||||
.add({
|
||||
'tarifa_id': linea.tarifa_id,
|
||||
'cantidad': linea.cantidad,
|
||||
'peso': linea.peso,
|
||||
'att': linea.att,
|
||||
'email': linea.email,
|
||||
'direccion': linea.direccion,
|
||||
'cp': linea.cp,
|
||||
'municipio': linea.municipio,
|
||||
'provincia': linea.provincia,
|
||||
'paisId': linea.pais_id,
|
||||
'telefono': linea.telefono,
|
||||
'proveedor': linea.proveedor,
|
||||
'proveedor_id': linea.proveedor_id,
|
||||
'precio': linea.precio,
|
||||
'margen': linea.margen,
|
||||
'entregaPieCalle': linea.entregaPieCalle,
|
||||
'actionBtns_direcciones': actionBtns_direcciones,
|
||||
})
|
||||
.draw();
|
||||
checkInsertar()
|
||||
|
||||
|
||||
});
|
||||
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: false
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -60,335 +60,19 @@
|
||||
<!------------------------------------------->
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
$('#insertar_direccion').on('click', function(){
|
||||
|
||||
$("#addressForm").attr('action','create')
|
||||
var $newAddDialog = $("#addressForm")
|
||||
var maximaCantidad = parseInt($('#tirada').val())
|
||||
$("#add_cantidad").attr("max" , maximaCantidad);
|
||||
$("#add_cantidad").val( maximaCantidad);
|
||||
$("#add_cantidad").on('change', function(){
|
||||
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
|
||||
})
|
||||
window.paisList = <?php echo json_encode($paisList); ?>;
|
||||
window.direccionesList = <?php echo json_encode($direccionesList); ?>;
|
||||
|
||||
cantidad_total = 0
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data();
|
||||
cantidad_total += parseInt(data.cantidad)
|
||||
} );
|
||||
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total)
|
||||
$('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total)
|
||||
$newAddDialog.modal('show')
|
||||
})
|
||||
|
||||
const lastColNr_direcciones = $('#tableOfDireccionesEnvio').find("tr:first th").length - 1;
|
||||
|
||||
const 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>
|
||||
`;
|
||||
};
|
||||
|
||||
function updateTablaEnvios(){
|
||||
|
||||
var peso_total_libro = get_peso_libro();
|
||||
|
||||
tableEnvios.rows().every(async function ( rowIdx, tableLoop, rowLoop ) {
|
||||
|
||||
var rowData = this.data();
|
||||
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');
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
// 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;
|
||||
|
||||
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')
|
||||
}
|
||||
})
|
||||
window.routes_envios = {
|
||||
dataTableOfPresupuestoDirecciones: '<?= route_to('dataTableOfPresupuestoDirecciones') ?>'
|
||||
}
|
||||
|
||||
$(document).on('click', '.delete-add-row', function(e) {
|
||||
const row = $(this).closest('tr');
|
||||
tableEnvios.row( row )
|
||||
.remove()
|
||||
.draw();
|
||||
checkInsertar()
|
||||
updateTotales(false, false, true)
|
||||
|
||||
})
|
||||
|
||||
$(document).on('click', '.btn-edit-add', function(e) {
|
||||
const row = $(this).closest('tr');
|
||||
var data = tableEnvios.row( row ).data()
|
||||
|
||||
$("#addressForm").attr('action','edit')
|
||||
$("#addressForm").attr('row', row[0]._DT_RowIndex)
|
||||
$("#addressForm").attr('presupuestodireccion_id', $(this).attr('data-id'))
|
||||
var $newAddDialog = $("#addressForm")
|
||||
var maximaCantidad = parseInt($('#tirada').val())
|
||||
$("#add_cantidad").attr("max" , maximaCantidad);
|
||||
$("#add_cantidad").val( maximaCantidad);
|
||||
$("#add_cantidad").on('change', function(){
|
||||
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
|
||||
})
|
||||
|
||||
cantidad_total = 0
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data2 = this.data();
|
||||
cantidad_total += parseInt(data2.cantidad)
|
||||
} );
|
||||
cantidad_total -= parseInt(data.cantidad) // Si es editar tienes que restar los de la linea actual
|
||||
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total)
|
||||
$('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total)
|
||||
|
||||
$('#add_att').val(data.att)
|
||||
$('#add_direccion').val(data.direccion)
|
||||
$('#add_email').val(data.email)
|
||||
$('#add_cp').val(data.cp)
|
||||
$('#add_municipio').val(data.municipio)
|
||||
$('#add_provincia').val(data.provincia)
|
||||
$('#add_pais_id').val(data.paisId)
|
||||
$('#add_telefono').val(data.telefono)
|
||||
$('#add_cantidad').val(data.cantidad)
|
||||
$('#add_entregaPieCalle').prop('checked', data.entregaPieCalle==1?true:false)
|
||||
|
||||
$newAddDialog.modal('show')
|
||||
})
|
||||
|
||||
|
||||
const paisList = <?php echo json_encode($paisList); ?>;
|
||||
|
||||
|
||||
$('#recoger_en_taller').change(function(){
|
||||
if(this.checked) {
|
||||
$('#rowTable').css('display', 'none')
|
||||
$('#rowInsertar').css('display', 'none')
|
||||
tableEnvios.clear().draw()
|
||||
}
|
||||
else{
|
||||
$('#rowTable').css('display', 'flex')
|
||||
$('#rowInsertar').css('display', 'flex')
|
||||
tableEnvios.columns.adjust();
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
var tableEnvios = $('#tableOfDireccionesEnvio').DataTable( {
|
||||
draw:5,
|
||||
serverSide: false,
|
||||
processing: true,
|
||||
autoWidth: true,
|
||||
responsive: true,
|
||||
order: [[ 0, "asc" ]],
|
||||
pageLength: 20,
|
||||
lengthChange: false,
|
||||
searching: false,
|
||||
paging: false,
|
||||
info: false,
|
||||
scrollX: true,
|
||||
|
||||
columns: [
|
||||
{ 'data': 'tarifa_id' },
|
||||
{ 'data': 'cantidad' },
|
||||
{ 'data': 'peso' },
|
||||
{ 'data': 'att' },
|
||||
{ 'data': 'email' },
|
||||
{ 'data': 'direccion' },
|
||||
{ 'data': 'cp' },
|
||||
{ 'data': 'municipio' },
|
||||
{ 'data': 'paisId' ,
|
||||
render: function(data, type, row, meta) {
|
||||
var value = paisList.find(element => element.id === data);
|
||||
return value['nombre'];
|
||||
},
|
||||
},
|
||||
{ 'data': 'telefono' },
|
||||
{ 'data': 'proveedor'},
|
||||
{ 'data': 'proveedor_id'},
|
||||
{ 'data': 'precio' },
|
||||
{ 'data': 'margen' },
|
||||
{ 'data': 'entregaPieCalle' },
|
||||
{
|
||||
data: actionBtns_direcciones,
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
columnDefs: [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr_direcciones]
|
||||
},
|
||||
{"orderData": [ 0], "targets": 0 },
|
||||
|
||||
],
|
||||
columnDefs: [
|
||||
{
|
||||
target: [0,11,13,14],
|
||||
visible: false,
|
||||
searchable: false
|
||||
},
|
||||
],
|
||||
language: {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
|
||||
} );
|
||||
|
||||
|
||||
|
||||
function checkInsertar(){
|
||||
cantidad_total = 0
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data();
|
||||
cantidad_total += parseInt(data.cantidad )
|
||||
} );
|
||||
htmlString = ''
|
||||
if(cantidad_total < parseInt($('#tirada').val())){
|
||||
$('#rowInsertar').css('display', 'flex')
|
||||
}
|
||||
else{
|
||||
$('#rowInsertar').css('display', 'none')
|
||||
}
|
||||
|
||||
if(cantidad_total != parseInt($('#tirada').val())){
|
||||
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("PresupuestosDirecciones.validation.ejemplares_envio") ?></h5>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
$('#alert-envios').html(htmlString)
|
||||
}
|
||||
|
||||
function save_datos_envios(){
|
||||
$.post( '<?= route_to('dataTableOfPresupuestoDirecciones') ?>',
|
||||
{
|
||||
tipo: "clear_lineas",
|
||||
presupuesto_id: id,
|
||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v,
|
||||
})
|
||||
.done(function( data ) {
|
||||
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data();
|
||||
$.post( '/presupuestos/presupuestodirecciones/add',
|
||||
{
|
||||
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,
|
||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v,
|
||||
})
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
load_datos_envios()
|
||||
|
||||
function load_datos_envios(){
|
||||
$.post( '<?= route_to('dataTableOfPresupuestoDirecciones') ?>',
|
||||
{
|
||||
draw: 1,
|
||||
columns: 1,
|
||||
search: {
|
||||
value: "",
|
||||
},
|
||||
presupuesto_id: id,
|
||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v,
|
||||
})
|
||||
.done(function( data ) {
|
||||
data.data.forEach((linea) => {
|
||||
tableEnvios.row
|
||||
.add({
|
||||
'tarifa_id': linea.tarifa_id,
|
||||
'cantidad': linea.cantidad,
|
||||
'peso': linea.peso,
|
||||
'att': linea.att,
|
||||
'email': linea.email,
|
||||
'direccion': linea.direccion,
|
||||
'cp': linea.cp,
|
||||
'municipio': linea.municipio,
|
||||
'provincia': linea.provincia,
|
||||
'paisId': linea.pais_id,
|
||||
'telefono': linea.telefono,
|
||||
'proveedor': linea.proveedor,
|
||||
'proveedor_id': linea.proveedor_id,
|
||||
'precio': linea.precio,
|
||||
'margen': linea.margen,
|
||||
'entregaPieCalle': linea.entregaPieCalle,
|
||||
'actionBtns_direcciones': actionBtns_direcciones,
|
||||
})
|
||||
.draw();
|
||||
checkInsertar()
|
||||
updateTotales(false, false, true)
|
||||
});
|
||||
$('#tableOfDireccionesEnvio').bind('draw.dt', update_tiradas_alternativas);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
window.url_get_precio_envio = '<?= route_to('processDataDirecciones') ?>';
|
||||
window.error_no_tarifa_envio = '<?= lang('PresupuestosDirecciones.validation.no_tarifa') ?>'
|
||||
window.token_ajax= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v};
|
||||
|
||||
$( document ).ready(function() {
|
||||
load_datos_envios();
|
||||
});
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
@ -0,0 +1,146 @@
|
||||
$('#paginas').on("change", function () {
|
||||
|
||||
const url2 = window.location.href;
|
||||
const url_parts2 = url2.split('/');
|
||||
|
||||
if(url_parts2[url_parts2.length-2] == 'edit'){
|
||||
|
||||
checkPaginasPresupuesto()
|
||||
|
||||
// Si es negro o color
|
||||
if ($('#tipoImpresion').select2('data')[0].id == 'negro' ||
|
||||
$('#tipoImpresion').select2('data')[0].id == 'color') {
|
||||
$('#compPaginasNegro').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColor').val()));
|
||||
$('#compPaginasNegro').trigger('change')
|
||||
}
|
||||
// Si es negrohq o colorhq
|
||||
if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' ||
|
||||
$('#tipoImpresion').select2('data')[0].id == 'colorhq') {
|
||||
$('#compPaginasNegrohq').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColorhq').val()));
|
||||
$('#compPaginasNegrohq').trigger('change');
|
||||
}
|
||||
|
||||
//update_servicios(false)
|
||||
//updateLineasPresupuesto()
|
||||
updatePresupuesto({
|
||||
update_lineas: true,
|
||||
update_servicios: true,
|
||||
update_envios: true,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
$('.solapas_cubierta').on('change', function(){
|
||||
$('#compGramajeCubierta').trigger('change')
|
||||
})
|
||||
|
||||
$('.solapas_sobrecubierta').on('change', function(){
|
||||
$('#compGramajeSobrecubierta').trigger('change')
|
||||
})
|
||||
|
||||
$('#tirada').on("change", function (update_tiradas_alternativas = true) {
|
||||
|
||||
calcular_mermas()
|
||||
|
||||
const url2 = window.location.href;
|
||||
const url_parts2 = url2.split('/');
|
||||
|
||||
if(url_parts2[url_parts2.length-2] == 'edit'){
|
||||
//update_servicios(false)
|
||||
//updateLineasPresupuesto()
|
||||
if(update_tiradas_alternativas)
|
||||
updatePresupuesto({
|
||||
update_lineas: true,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: false,
|
||||
update_tiradas_alternativas: false
|
||||
})
|
||||
else
|
||||
updatePresupuesto({
|
||||
update_lineas: true,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: false,
|
||||
update_tiradas_alternativas: false
|
||||
})
|
||||
checkInsertar()
|
||||
}
|
||||
})
|
||||
|
||||
function calcular_mermas(){
|
||||
|
||||
const tirada = parseInt($('#tirada').val())
|
||||
var merma = 0
|
||||
htmlString = ''
|
||||
|
||||
if(tirada> parseInt($('#POD').val())){
|
||||
merma = tirada*0.1<=30 ? tirada*0.1 : 30
|
||||
}
|
||||
else{
|
||||
merma_lineas = []
|
||||
tableLineasPresupuesto.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 = parseInt($('#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{
|
||||
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.validation.no_lp_for_merma") ?></h5>
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
|
||||
merma = 0
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
$('#mermacubierta').val(parseInt(merma))
|
||||
$('#merma').val(parseInt(merma))
|
||||
$('#alert-datosLibro').html(htmlString)
|
||||
}
|
||||
|
||||
|
||||
$('#papelFormatoId').select2({
|
||||
allowClear: false,
|
||||
});
|
||||
|
||||
$('#papelFormatoPersonalizado').on("click",function(){
|
||||
var checkbox = document.getElementById('papelFormatoPersonalizado');
|
||||
if(checkbox.checked == true){
|
||||
document.getElementById("papelFormatoAncho").style.display = "block";
|
||||
document.getElementById("papelFormatoAlto").style.display = "block";
|
||||
$('#papelFormatoId').next(".select2-container").hide();
|
||||
$('#papelFormatoId').val(0).change();
|
||||
document.getElementById("label_papelFormatoId").innerHTML =
|
||||
"<?=lang('Presupuestos.papelFormatoId') ?> (" +
|
||||
"<?=lang('Presupuestos.papelFormatoAncho') ?> x <?=lang('Presupuestos.papelFormatoAncho') ?>)*";
|
||||
}
|
||||
else{
|
||||
document.getElementById("papelFormatoAncho").value= "";
|
||||
document.getElementById("papelFormatoAlto").value= "";
|
||||
document.getElementById("papelFormatoAncho").style.display = "none";
|
||||
document.getElementById("papelFormatoAlto").style.display = "none";
|
||||
$('#papelFormatoId').next(".select2-container").show();
|
||||
document.getElementById("label_papelFormatoId").innerHTML =
|
||||
"<?=lang('Presupuestos.papelFormatoId') ?>*";
|
||||
}
|
||||
});
|
||||
@ -327,106 +327,6 @@
|
||||
<!------------------------------------------->
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
$('#paginas').on("change", function () {
|
||||
|
||||
const url2 = window.location.href;
|
||||
const url_parts2 = url2.split('/');
|
||||
|
||||
if(url_parts2[url_parts2.length-2] == 'edit'){
|
||||
|
||||
checkPaginasPresupuesto()
|
||||
updateLineasPresupuesto()
|
||||
// Si es negro o color
|
||||
if ($('#tipoImpresion').select2('data')[0].id == 'negro' ||
|
||||
$('#tipoImpresion').select2('data')[0].id == 'color') {
|
||||
$('#compPaginasNegro').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColor').val()));
|
||||
$('#compPaginasNegro').trigger('change')
|
||||
}
|
||||
// Si es negrohq o colorhq
|
||||
if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' ||
|
||||
$('#tipoImpresion').select2('data')[0].id == 'colorhq') {
|
||||
$('#compPaginasNegrohq').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColorhq').val()));
|
||||
$('#compPaginasNegrohq').trigger('change');
|
||||
}
|
||||
|
||||
update_servicios(false)
|
||||
}
|
||||
});
|
||||
|
||||
$('.solapas_cubierta').on('change', function(){
|
||||
$('#compGramajeCubierta').trigger('change')
|
||||
})
|
||||
|
||||
$('.solapas_sobrecubierta').on('change', function(){
|
||||
$('#compGramajeSobrecubierta').trigger('change')
|
||||
})
|
||||
|
||||
$('#tirada').on("change", function () {
|
||||
|
||||
calcular_mermas()
|
||||
|
||||
const url2 = window.location.href;
|
||||
const url_parts2 = url2.split('/');
|
||||
|
||||
if(url_parts2[url_parts2.length-2] == 'edit'){
|
||||
update_servicios(false)
|
||||
updateLineasPresupuesto()
|
||||
checkInsertar()
|
||||
}
|
||||
})
|
||||
|
||||
function calcular_mermas(){
|
||||
|
||||
const tirada = parseInt($('#tirada').val())
|
||||
var merma = 0
|
||||
htmlString = ''
|
||||
|
||||
if(tirada><?php echo $POD; ?>){
|
||||
merma = tirada*0.1<=30 ? tirada*0.1 : 30
|
||||
}
|
||||
else{
|
||||
merma_lineas = []
|
||||
tableLineasPresupuesto.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 = <?php echo $isCosido; ?>==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{
|
||||
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.validation.no_lp_for_merma") ?></h5>
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
|
||||
merma = 0
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
$('#mermacubierta').val(parseInt(merma))
|
||||
$('#merma').val(parseInt(merma))
|
||||
$('#alert-datosLibro').html(htmlString)
|
||||
}
|
||||
|
||||
|
||||
$('#papelFormatoId').select2({
|
||||
allowClear: false,
|
||||
});
|
||||
|
||||
let initTamanioPersonalizado = <?php echo ($presupuestoEntity->papel_formato_personalizado==true?1:0); ?>;
|
||||
if(initTamanioPersonalizado != null){
|
||||
@ -435,27 +335,7 @@ if(initTamanioPersonalizado != null){
|
||||
}
|
||||
}
|
||||
|
||||
$('#papelFormatoPersonalizado').on("click",function(){
|
||||
var checkbox = document.getElementById('papelFormatoPersonalizado');
|
||||
if(checkbox.checked == true){
|
||||
document.getElementById("papelFormatoAncho").style.display = "block";
|
||||
document.getElementById("papelFormatoAlto").style.display = "block";
|
||||
$('#papelFormatoId').next(".select2-container").hide();
|
||||
$('#papelFormatoId').val(0).change();
|
||||
document.getElementById("label_papelFormatoId").innerHTML =
|
||||
"<?=lang('Presupuestos.papelFormatoId') ?> (" +
|
||||
"<?=lang('Presupuestos.papelFormatoAncho') ?> x <?=lang('Presupuestos.papelFormatoAncho') ?>)*";
|
||||
}
|
||||
else{
|
||||
document.getElementById("papelFormatoAncho").value= "";
|
||||
document.getElementById("papelFormatoAlto").value= "";
|
||||
document.getElementById("papelFormatoAncho").style.display = "none";
|
||||
document.getElementById("papelFormatoAlto").style.display = "none";
|
||||
$('#papelFormatoId').next(".select2-container").show();
|
||||
document.getElementById("label_papelFormatoId").innerHTML =
|
||||
"<?=lang('Presupuestos.papelFormatoId') ?>*";
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
<?php if(str_contains($formAction,'edit')): ?>
|
||||
var ancho_libro = getDimensionLibro().ancho;
|
||||
@ -493,8 +373,7 @@ function event_change_formato(){
|
||||
ancho_libro = getDimensionLibro().ancho;
|
||||
alto_libro = getDimensionLibro().alto;
|
||||
|
||||
checkPaginasPresupuesto()
|
||||
updateLineasPresupuesto()
|
||||
|
||||
// Si es negro o color
|
||||
if ($('#tipoImpresion').select2('data')[0].id == 'negro' ||
|
||||
$('#tipoImpresion').select2('data')[0].id == 'color') {
|
||||
@ -509,7 +388,17 @@ function event_change_formato(){
|
||||
$('#compPapelCubierta').trigger('change');
|
||||
$('#compPapelSobrecubierta').trigger('change');
|
||||
|
||||
update_servicios(false)
|
||||
checkPaginasPresupuesto()
|
||||
|
||||
updatePresupuesto({
|
||||
update_lineas: true,
|
||||
update_servicios: true,
|
||||
update_envios: true,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
})
|
||||
//updateLineasPresupuesto()
|
||||
//update_servicios(false)
|
||||
}
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
@ -188,10 +188,10 @@
|
||||
<div class="col-md-12 col-lg-2 px-4">
|
||||
<select id="compCarasCubierta" name="comp_paginas_cubierta" class="form-control select2bs2 comp_cubierta_items" style="width: 100%;">
|
||||
<option value="2">
|
||||
<p><?= lang('Presupuestos.1cara') ?></p>
|
||||
<p><?= lang('Presupuestos.unaCara') ?></p>
|
||||
</option>
|
||||
<option value="4">
|
||||
<p><?= lang('Presupuestos.2caras') ?></p>
|
||||
<p><?= lang('Presupuestos.dosCaras') ?></p>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
@ -261,10 +261,10 @@
|
||||
<p><?= lang('Presupuestos.sinImpresion') ?></p>
|
||||
</option>
|
||||
<option value="4">
|
||||
<p><?= lang('Presupuestos.1cara') ?></p>
|
||||
<p><?= lang('Presupuestos.unaCara') ?></p>
|
||||
</option>
|
||||
<option value="8">
|
||||
<p><?= lang('Presupuestos.2caras') ?></p>
|
||||
<p><?= lang('Presupuestos.dosCaras') ?></p>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -250,7 +250,14 @@ $('#saveDireccionEnvio').on('click', function(){
|
||||
})
|
||||
}
|
||||
checkInsertar()
|
||||
updateTotales(false, false, true)
|
||||
//updateTotales(false, false, true)
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: true,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
})
|
||||
$('#addressForm').modal("hide");
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,91 @@
|
||||
async function updatePresupuesto(
|
||||
{
|
||||
update_lineas = false,
|
||||
update_servicios = false,
|
||||
update_envios = false,
|
||||
update_resumen = false,
|
||||
update_tiradas_alternativas = false
|
||||
}) {
|
||||
|
||||
new Promise(
|
||||
async function(resolve, reject){
|
||||
if(update_lineas){
|
||||
await updateLineasPresupuesto()
|
||||
}
|
||||
else
|
||||
resolve()
|
||||
}
|
||||
).then(function(){
|
||||
new Promise(
|
||||
async function(resolve, reject){
|
||||
if(update_servicios){
|
||||
await actualizar_servicios()
|
||||
}
|
||||
else
|
||||
resolve()
|
||||
}
|
||||
)
|
||||
}).then(function(){
|
||||
new Promise(
|
||||
function(resolve, reject){
|
||||
if(update_envios){
|
||||
updateTablaEnvios()
|
||||
}
|
||||
else
|
||||
resolve()
|
||||
}
|
||||
)
|
||||
}).then(function(){
|
||||
new Promise(
|
||||
function(resolve, reject){
|
||||
if(update_resumen){
|
||||
updateTotales()
|
||||
}
|
||||
else
|
||||
resolve()
|
||||
}
|
||||
)
|
||||
}).then(function(){
|
||||
new Promise(
|
||||
async function(resolve, reject){
|
||||
if(update_tiradas_alternativas){
|
||||
await actualizar_tiradas_alternativas()
|
||||
}
|
||||
else
|
||||
resolve()
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
async function updateLineasPresupuesto(){
|
||||
|
||||
$('#tableLineasPresupuesto tbody tr:visible ').each(async function(){
|
||||
|
||||
if(this.id.endsWith('lp_bn')){
|
||||
await calcularPresupuesto_bn({}, true);
|
||||
}
|
||||
else if(this.id.endsWith('lp_bnhq')){
|
||||
await calcularPresupuesto_bnhq({}, true);
|
||||
}
|
||||
else if(this.id.endsWith('lp_color')){
|
||||
await calcularPresupuesto_color({}, true);
|
||||
}
|
||||
else if(this.id.endsWith('lp_colorhq')){
|
||||
await calcularPresupuesto_colorhq({}, true);
|
||||
}
|
||||
else if(this.id.endsWith('lp_rot_bn')){
|
||||
await calcularPresupuesto_rot_bn(false, true, {})
|
||||
}
|
||||
else if(this.id.endsWith('lp_rot_color')){
|
||||
await calcularPresupuesto_rot_color(false, true, {})
|
||||
}
|
||||
else if(this.id.endsWith('_cubierta')){
|
||||
await calcularPresupuesto_cubierta(false, {})
|
||||
}
|
||||
else if(this.id.endsWith('_guardas')){
|
||||
await calcularPresupuesto_guardas(false, {})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
@ -77,205 +77,7 @@
|
||||
</div> <!-- //.accordion-collapse -->
|
||||
</div> <!-- //.accordion-item -->
|
||||
</div> <!-- //.accordion -->
|
||||
<!------------------------------------------------------->
|
||||
<!-- Código JS comportamiento ?????. -->
|
||||
<!------------------------------------------------------->
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
|
||||
|
||||
function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
|
||||
var totalPapel = 0
|
||||
var margenPapel = 0
|
||||
|
||||
var totalImpresion = 0
|
||||
var totalImpresionforMargen = 0
|
||||
var margenImpresion = 0
|
||||
|
||||
var totalServicios = 0
|
||||
var margenServicios = 0
|
||||
|
||||
var totalEnvios = 0
|
||||
var margenEnvios = 0
|
||||
|
||||
if(updateLP){
|
||||
if(typeof tableLineasPresupuesto !== 'undefined'){
|
||||
tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var rowData = this.data();
|
||||
|
||||
if(rowData.check_papel_total){
|
||||
totalPapel += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val())
|
||||
margenPapel += parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val())
|
||||
|
||||
}
|
||||
if(rowData.check_impresion_total){
|
||||
totalImpresion += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
|
||||
totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
|
||||
|
||||
if(rowData.maquinaTipo=='inkjet'){
|
||||
totalImpresion += parseFloat(rowData.totalTinta)
|
||||
totalImpresion += parseFloat(rowData.totalCorte)
|
||||
}
|
||||
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
|
||||
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val())
|
||||
if(!isNaN(parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val())))
|
||||
totalImpresion += parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
totalImpresion -= margenImpresion
|
||||
totalPapel -= margenPapel
|
||||
|
||||
var porcentajeMargenPapel = isNaN(margenPapel/(totalPapel)*100.0)?0:margenPapel/(totalPapel)*100.0
|
||||
$('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%')
|
||||
$('#totalCostePapel').text(totalPapel.toFixed(2)+ '€')
|
||||
$('#margenPapel').text(margenPapel.toFixed(2) + '€')
|
||||
|
||||
var porcentajeMargenImpresion = isNaN(margenImpresion/(totalImpresion)*100.0)?0:margenImpresion/(totalImpresion)*100.0
|
||||
$('#porcentajeMargenImpresion').text(porcentajeMargenImpresion.toFixed(0) + '%')
|
||||
$('#totalCosteImpresion').text(totalImpresion.toFixed(2) + '€')
|
||||
$('#margenImpresion').text(margenImpresion.toFixed(2) + '€')
|
||||
}
|
||||
else{
|
||||
totalPapel = parseFloat($('#totalCostePapel').text().replace('€', ''))
|
||||
margenPapel = parseFloat($('#margenPapel').text().replace('€', ''))
|
||||
totalImpresion = parseFloat($('#totalCosteImpresion').text().replace('€', ''))
|
||||
margenImpresion = parseFloat($('#margenImpresion').text().replace('€', ''))
|
||||
}
|
||||
|
||||
if(updateServicios){
|
||||
|
||||
if ( typeof tableServiciosEnc !== 'undefined' && tableServiciosEnc.rows().count() > 0){
|
||||
$('#tableOfServiciosEncuadernacion tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosEncuadernacion').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_total_encuadernado_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#enc_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
if ( typeof tableServiciosAcabado !== 'undefined' && tableServiciosAcabado.rows().count() > 0){
|
||||
$('#tableOfServiciosAcabado tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosAcabado').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_total_acabado_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#acabado_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
if ( typeof tableServiciosPreimpresion !== 'undefined' && tableServiciosPreimpresion.rows().count() > 0){
|
||||
|
||||
$('#tableOfServiciosPreimpresion tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosPreimpresion').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_preimpresion_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#preimpresion_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
if ( typeof tableServiciosManipulado !== 'undefined' && tableServiciosManipulado.rows().count() > 0){
|
||||
|
||||
$('#tableOfServiciosManipulado tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosManipulado').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_total_manipulado_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#manipulado_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
totalServicios -= margenServicios;
|
||||
var porcentajeMargenServicios = margenServicios/(margenServicios+totalServicios)*100
|
||||
$('#porcentajeMargenServicios').text(isNaN(porcentajeMargenServicios.toFixed(0))?0:porcentajeMargenServicios.toFixed(0) + '%')
|
||||
$('#totalServicios').text(totalServicios.toFixed(2) + '€')
|
||||
$('#margenServicios').text(margenServicios.toFixed(2) + '€')
|
||||
}
|
||||
else{
|
||||
|
||||
totalServicios = parseFloat($('#totalServicios').text().replace('€', ''))
|
||||
margenServicios = parseFloat($('#margenServicios').text().replace('€', ''))
|
||||
}
|
||||
|
||||
if(updateEnvio){
|
||||
|
||||
if ( typeof tableEnvios !== 'undefined' && tableEnvios.rows().count() > 0){
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data()
|
||||
totalEnvios += parseFloat(data.precio)
|
||||
margenEnvios += parseFloat((data.precio)*data.margen/100)
|
||||
} );
|
||||
}
|
||||
|
||||
totalEnvios -= margenEnvios
|
||||
$('#totalEnvios').text(totalEnvios.toFixed(2) + '€')
|
||||
$('#margenEnvios').text(margenEnvios.toFixed(2) + '€')
|
||||
}
|
||||
else{
|
||||
totalEnvios = parseFloat($('#totalEnvios').text().replace('€', ''))
|
||||
margenEnvios = parseFloat($('#margenEnvios').text().replace('€', ''))
|
||||
}
|
||||
|
||||
var totalCostes = totalPapel + totalImpresion + totalServicios + totalEnvios
|
||||
var totalMargenes = margenPapel + margenImpresion + margenServicios + margenEnvios
|
||||
$('#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
|
||||
var precioUnidad = totalPresupuesto/parseInt($('#tirada').val())
|
||||
|
||||
$('#totalAntesDescuento').text((totalAntesDescuento).toFixed(2) + '€')
|
||||
$('#descuentoTotal').text((totalDescuento).toFixed(2) + '€')
|
||||
$('#totalDespuesDecuento').text((totalPresupuesto).toFixed(2) + '€')
|
||||
$('#precioUnidadPresupuesto').text((precioUnidad).toFixed(2) + '€')
|
||||
|
||||
}
|
||||
|
||||
function getValuesResumenForm(){
|
||||
var formResumen = ""
|
||||
formResumen += '&total_coste_papel=' + $('#totalCostePapel').text().replace('€', '')
|
||||
formResumen += '&total_margen_papel=' + $('#margenPapel').text().replace('€', '')
|
||||
formResumen += '&total_margenPercent_papel=' + $('#porcentajeMargenPapel').text().replace('%', '')
|
||||
|
||||
formResumen += '&total_coste_impresion=' + $('#totalCosteImpresion').text().replace('€', '')
|
||||
formResumen += '&total_margen_impresion=' + $('#margenImpresion').text().replace('€', '')
|
||||
formResumen += '&total_margenPercent_impresion=' + $('#porcentajeMargenImpresion').text().replace('%', '')
|
||||
|
||||
formResumen += '&total_coste_servicios=' + $('#totalServicios').text().replace('€', '')
|
||||
formResumen += '&total_margen_servicios=' + $('#margenServicios').text().replace('€', '')
|
||||
formResumen += '&total_margenPercent_servicios=' + $('#porcentajeMargenServicios').text().replace('%', '')
|
||||
|
||||
formResumen += '&total_coste_envios=' + $('#totalEnvios').text().replace('€', '')
|
||||
formResumen += '&total_margen_envios=' + $('#margenEnvios').text().replace('€', '')
|
||||
|
||||
formResumen += '&total_costes=' + $('#totalCostes').text().replace('€', '')
|
||||
formResumen += '&total_margenes=' + $('#totalMargenes').text().replace('€', '')
|
||||
|
||||
formResumen += '&total_antes_descuento=' + $('#totalAntesDescuento').text().replace('€', '')
|
||||
formResumen += '&total_descuento=' + $('#descuentoTotal').text().replace('€', '')
|
||||
formResumen += '&total_descuentoPercent=' + $('#total_descuentoPercent').val()
|
||||
formResumen += '&total_presupuesto=' + $('#totalDespuesDecuento').text().replace('€', '')
|
||||
formResumen += '&total_precio_unidad=' + $('#precioUnidadPresupuesto').text().replace('€', '')
|
||||
|
||||
return formResumen
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$(".update-totales").on("change", function(){
|
||||
updateTotales(true, true, true)
|
||||
})
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,195 @@
|
||||
function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
|
||||
var totalPapel = 0
|
||||
var margenPapel = 0
|
||||
|
||||
var totalImpresion = 0
|
||||
var totalImpresionforMargen = 0
|
||||
var margenImpresion = 0
|
||||
|
||||
var totalServicios = 0
|
||||
var margenServicios = 0
|
||||
|
||||
var totalEnvios = 0
|
||||
var margenEnvios = 0
|
||||
|
||||
if(updateLP){
|
||||
if(typeof $("#tableLineasPresupuesto").DataTable() !== 'undefined'){
|
||||
$("#tableLineasPresupuesto").DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var rowData = this.data();
|
||||
|
||||
if(rowData.check_papel_total){
|
||||
totalPapel += parseFloat($('#' + rowData.row_id + '_totalPapelPedido').val())
|
||||
margenPapel += parseFloat($('#' + rowData.row_id + '_margenPapelPedido').val())
|
||||
|
||||
}
|
||||
if(rowData.check_impresion_total){
|
||||
totalImpresion += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
|
||||
totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
|
||||
|
||||
if(rowData.maquinaTipo=='inkjet'){
|
||||
totalImpresion += parseFloat(rowData.totalTinta)
|
||||
totalImpresion += parseFloat(rowData.totalCorte)
|
||||
}
|
||||
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
|
||||
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val())
|
||||
if(!isNaN(parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val())))
|
||||
totalImpresion += parseFloat($('#' + rowData.row_id + 'lp_bn_totalTinta').val())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
totalImpresion -= margenImpresion
|
||||
totalPapel -= margenPapel
|
||||
|
||||
var porcentajeMargenPapel = isNaN(margenPapel/(totalPapel)*100.0)?0:margenPapel/(totalPapel)*100.0
|
||||
$('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%')
|
||||
$('#totalCostePapel').text(totalPapel.toFixed(2)+ '€')
|
||||
$('#margenPapel').text(margenPapel.toFixed(2) + '€')
|
||||
|
||||
var porcentajeMargenImpresion = isNaN(margenImpresion/(totalImpresion)*100.0)?0:margenImpresion/(totalImpresion)*100.0
|
||||
$('#porcentajeMargenImpresion').text(porcentajeMargenImpresion.toFixed(0) + '%')
|
||||
$('#totalCosteImpresion').text(totalImpresion.toFixed(2) + '€')
|
||||
$('#margenImpresion').text(margenImpresion.toFixed(2) + '€')
|
||||
}
|
||||
else{
|
||||
totalPapel = parseFloat($('#totalCostePapel').text().replace('€', ''))
|
||||
margenPapel = parseFloat($('#margenPapel').text().replace('€', ''))
|
||||
totalImpresion = parseFloat($('#totalCosteImpresion').text().replace('€', ''))
|
||||
margenImpresion = parseFloat($('#margenImpresion').text().replace('€', ''))
|
||||
}
|
||||
|
||||
if(updateServicios){
|
||||
|
||||
if ( typeof $("#tableOfServiciosEncuadernacion").DataTable() !== 'undefined' && $("#tableOfServiciosEncuadernacion").DataTable().rows().count() > 0){
|
||||
$('#tableOfServiciosEncuadernacion tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosEncuadernacion').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_total_encuadernado_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#enc_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
if ( typeof $("#tableOfServiciosAcabado").DataTable() !== 'undefined' && $("#tableOfServiciosAcabado").DataTable().rows().count() > 0){
|
||||
$('#tableOfServiciosAcabado tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosAcabado').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_total_acabado_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#acabado_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
if ( typeof $("#tableOfServiciosPreimpresion").DataTable() !== 'undefined' && $("#tableOfServiciosPreimpresion").DataTable().rows().count() > 0){
|
||||
|
||||
$('#tableOfServiciosPreimpresion tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosPreimpresion').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_preimpresion_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#preimpresion_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
if ( typeof $("#tableOfServiciosManipulado").DataTable() !== 'undefined' && $("#tableOfServiciosManipulado").DataTable().rows().count() > 0){
|
||||
|
||||
$('#tableOfServiciosManipulado tbody tr').each(function(){
|
||||
var currentRow = $(this).closest("tr");
|
||||
var subId = $('#tableOfServiciosManipulado').DataTable().cell(currentRow,0).node().innerHTML;
|
||||
var total = parseFloat($('#precio_total_manipulado_' + subId)[0].value)
|
||||
totalServicios += total
|
||||
margenServicios += (total*parseFloat($('#manipulado_margen_' + subId)[0].innerHTML)/100.0)
|
||||
})
|
||||
}
|
||||
|
||||
totalServicios -= margenServicios;
|
||||
var porcentajeMargenServicios = margenServicios/(margenServicios+totalServicios)*100
|
||||
$('#porcentajeMargenServicios').text(isNaN(porcentajeMargenServicios.toFixed(0))?0:porcentajeMargenServicios.toFixed(0) + '%')
|
||||
$('#totalServicios').text(totalServicios.toFixed(2) + '€')
|
||||
$('#margenServicios').text(margenServicios.toFixed(2) + '€')
|
||||
}
|
||||
else{
|
||||
|
||||
totalServicios = parseFloat($('#totalServicios').text().replace('€', ''))
|
||||
margenServicios = parseFloat($('#margenServicios').text().replace('€', ''))
|
||||
}
|
||||
|
||||
if(updateEnvio){
|
||||
|
||||
if ( typeof $('#tableOfDireccionesEnvio').DataTable() !== 'undefined' && $('#tableOfDireccionesEnvio').DataTable().rows().count() > 0){
|
||||
$('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data()
|
||||
totalEnvios += parseFloat(data.precio)
|
||||
margenEnvios += parseFloat((data.precio)*data.margen/100)
|
||||
} );
|
||||
}
|
||||
|
||||
totalEnvios -= margenEnvios
|
||||
$('#totalEnvios').text(totalEnvios.toFixed(2) + '€')
|
||||
$('#margenEnvios').text(margenEnvios.toFixed(2) + '€')
|
||||
}
|
||||
else{
|
||||
totalEnvios = parseFloat($('#totalEnvios').text().replace('€', ''))
|
||||
margenEnvios = parseFloat($('#margenEnvios').text().replace('€', ''))
|
||||
}
|
||||
|
||||
var totalCostes = totalPapel + totalImpresion + totalServicios + totalEnvios
|
||||
var totalMargenes = margenPapel + margenImpresion + margenServicios + margenEnvios
|
||||
$('#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
|
||||
var precioUnidad = totalPresupuesto/parseInt($('#tirada').val())
|
||||
|
||||
$('#totalAntesDescuento').text((totalAntesDescuento).toFixed(2) + '€')
|
||||
$('#descuentoTotal').text((totalDescuento).toFixed(2) + '€')
|
||||
$('#totalDespuesDecuento').text((totalPresupuesto).toFixed(2) + '€')
|
||||
$('#precioUnidadPresupuesto').text((precioUnidad).toFixed(2) + '€')
|
||||
}
|
||||
|
||||
function getValuesResumenForm(){
|
||||
var formResumen = ""
|
||||
formResumen += '&total_coste_papel=' + $('#totalCostePapel').text().replace('€', '')
|
||||
formResumen += '&total_margen_papel=' + $('#margenPapel').text().replace('€', '')
|
||||
formResumen += '&total_margenPercent_papel=' + $('#porcentajeMargenPapel').text().replace('%', '')
|
||||
|
||||
formResumen += '&total_coste_impresion=' + $('#totalCosteImpresion').text().replace('€', '')
|
||||
formResumen += '&total_margen_impresion=' + $('#margenImpresion').text().replace('€', '')
|
||||
formResumen += '&total_margenPercent_impresion=' + $('#porcentajeMargenImpresion').text().replace('%', '')
|
||||
|
||||
formResumen += '&total_coste_servicios=' + $('#totalServicios').text().replace('€', '')
|
||||
formResumen += '&total_margen_servicios=' + $('#margenServicios').text().replace('€', '')
|
||||
formResumen += '&total_margenPercent_servicios=' + $('#porcentajeMargenServicios').text().replace('%', '')
|
||||
|
||||
formResumen += '&total_coste_envios=' + $('#totalEnvios').text().replace('€', '')
|
||||
formResumen += '&total_margen_envios=' + $('#margenEnvios').text().replace('€', '')
|
||||
|
||||
formResumen += '&total_costes=' + $('#totalCostes').text().replace('€', '')
|
||||
formResumen += '&total_margenes=' + $('#totalMargenes').text().replace('€', '')
|
||||
|
||||
formResumen += '&total_antes_descuento=' + $('#totalAntesDescuento').text().replace('€', '')
|
||||
formResumen += '&total_descuento=' + $('#descuentoTotal').text().replace('€', '')
|
||||
formResumen += '&total_descuentoPercent=' + $('#total_descuentoPercent').val()
|
||||
formResumen += '&total_presupuesto=' + $('#totalDespuesDecuento').text().replace('€', '')
|
||||
formResumen += '&total_precio_unidad=' + $('#precioUnidadPresupuesto').text().replace('€', '')
|
||||
|
||||
return formResumen
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$(".update-totales").on("change", function(){
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: false
|
||||
})
|
||||
})
|
||||
@ -5,6 +5,7 @@ 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-check ti-sm comfirm-tirada-alt mx-2" data-id="${data.row_id}"></i></a>
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-tirada mx-2" data-id="${data.row_id}"></i></a>
|
||||
`;
|
||||
};
|
||||
@ -22,7 +23,7 @@ var tableTiradas;
|
||||
initTableTiradas();
|
||||
fill_tiradas_alternativas();
|
||||
|
||||
$('.tiradas-alternativas').each(function() {
|
||||
/*$('.tiradas-alternativas').each(function() {
|
||||
if ($(this).is('input')) {
|
||||
$(this).bind('change', update_tiradas_alternativas);
|
||||
} else if ($(this).is('button')) {
|
||||
@ -34,21 +35,23 @@ var tableTiradas;
|
||||
// para los botones de borrar
|
||||
$(this).bind('click', update_tiradas_alternativas);
|
||||
}
|
||||
});
|
||||
});*/
|
||||
|
||||
})();
|
||||
|
||||
|
||||
function update_tiradas_alternativas(){
|
||||
// se obtiene la primera columna de la tabla de tiradas
|
||||
const data = tableTiradas.rows().data().toArray();
|
||||
// se borra la tabla de tiradas
|
||||
tableTiradas.clear().draw();
|
||||
const tiradas = data.map(row => row.tirada);
|
||||
// por cada tirada, se añade una fila a la tabla de tiradas
|
||||
tiradas.forEach(tirada => {
|
||||
add_tirada_alternativa(tirada);
|
||||
});
|
||||
async function actualizar_tiradas_alternativas(){
|
||||
if(tableTiradas !== undefined && tableTiradas.rows().count() > 0){
|
||||
// se obtiene la primera columna de la tabla de tiradas
|
||||
const data = tableTiradas.rows().data().toArray();
|
||||
// se borra la tabla de tiradas
|
||||
tableTiradas.clear().draw();
|
||||
const tiradas = data.map(row => row.tirada);
|
||||
// por cada tirada, se añade una fila a la tabla de tiradas
|
||||
await tiradas.forEach(async function(tirada){
|
||||
await add_tirada_alternativa(tirada);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -62,7 +65,7 @@ $('#add_tirada_alt').on('click', function () {
|
||||
|
||||
|
||||
// Funcion para añadir una tirada alternativa
|
||||
function add_tirada_alternativa(tirada_alt) {
|
||||
async function add_tirada_alternativa(tirada_alt) {
|
||||
|
||||
// se comprueba que la tirada no existe ya en la tabla
|
||||
const exists = tableTiradas.rows().data().toArray().some(row => row.tirada == tirada_alt);
|
||||
@ -92,7 +95,7 @@ function add_tirada_alternativa(tirada_alt) {
|
||||
datos = Object.assign(datos, window.token_ajax);
|
||||
|
||||
// Se realiza la petición AJAX
|
||||
$.ajax({
|
||||
await $.ajax({
|
||||
type: "POST",
|
||||
url: window.get_tirada_url,
|
||||
data: datos,
|
||||
@ -109,28 +112,38 @@ function add_tirada_alternativa(tirada_alt) {
|
||||
|
||||
if(data.lineas.length >0){
|
||||
// Se cogen los valores de la linea con los datos correspondientes
|
||||
$.each(data.lineas, function(key, value) {
|
||||
data.lineas.forEach(function(value) {
|
||||
coste_total += value.total_coste;
|
||||
margen_total += value.total_margen;
|
||||
});
|
||||
|
||||
//console.log(datos.tirada);
|
||||
|
||||
// Se obtiene el precio de los servicios
|
||||
const valueAcabados = await get_servAcabados_tiradasAlternativas(parseInt(datos.tirada));
|
||||
costes_servicios += valueAcabados.coste;
|
||||
margen_servicios += valueAcabados.margen;
|
||||
costes_servicios += parseFloat(valueAcabados.coste);
|
||||
margen_servicios += parseFloat(valueAcabados.margen);
|
||||
|
||||
//console.log('coste acabados ('+ datos.tirada +'): ' + valueAcabados.coste);
|
||||
|
||||
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;
|
||||
costes_servicios += parseFloat(valueEncuadernacion.coste);
|
||||
margen_servicios += parseFloat(valueEncuadernacion.margen);
|
||||
|
||||
//console.log('coste encuadernacion ('+ datos.tirada +'): ' + valueEncuadernacion.coste);
|
||||
|
||||
const valueManipulado = await get_servManipulado_tiradasAlternativas(parseInt(datos.tirada));
|
||||
costes_servicios += valueManipulado.coste;
|
||||
margen_servicios += valueManipulado.margen;
|
||||
costes_servicios += parseFloat(valueManipulado.coste);
|
||||
margen_servicios += parseFloat(valueManipulado.margen);
|
||||
|
||||
//console.log('coste manipulado ('+ datos.tirada +'): ' + valueManipulado.coste);
|
||||
|
||||
const valuePreimpresion = await get_servPreimpresion_tiradasAlternativas(parseInt(datos.tirada));
|
||||
costes_servicios += valuePreimpresion.coste;
|
||||
margen_servicios += valuePreimpresion.margen;
|
||||
costes_servicios += parseFloat(valuePreimpresion.coste);
|
||||
margen_servicios += parseFloat(valuePreimpresion.margen);
|
||||
|
||||
//console.log('coste preimpresion ('+ datos.tirada +'): ' + valuePreimpresion.coste);
|
||||
|
||||
const valueTransporte = await get_coste_envio_tiradasAlternativas(parseInt(datos.tirada));
|
||||
coste_envio = valueTransporte.coste;
|
||||
@ -157,7 +170,7 @@ function add_tirada_alternativa(tirada_alt) {
|
||||
}
|
||||
else {
|
||||
var htmlString = '';
|
||||
if(!typeIsOk){
|
||||
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">
|
||||
@ -180,7 +193,11 @@ function add_tirada_alternativa(tirada_alt) {
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
$('#alert-tiradas_alt').html(htmlString);
|
||||
$('#alert-tiradas_alt').hide().empty().html(htmlString).fadeIn("slow", function(){
|
||||
setTimeout(function(){
|
||||
$('#alert-tiradas_alt').fadeOut("slow");
|
||||
}, 5000);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -212,7 +229,7 @@ function initTableTiradas() {
|
||||
"paging": false,
|
||||
"info": false,
|
||||
"searching": false,
|
||||
"ordering": false,
|
||||
"ordering": true,
|
||||
"autoWidth": false,
|
||||
"responsive": true,
|
||||
"columnDefs": [
|
||||
@ -238,6 +255,7 @@ function initTableTiradas() {
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
order: [[0, 'asc']]
|
||||
});
|
||||
}
|
||||
|
||||
@ -251,6 +269,19 @@ $(document).on('click', '.btn-delete-tirada', function (e) {
|
||||
})
|
||||
|
||||
|
||||
// Función para usar la tirada alternativa como tirada principal
|
||||
$(document).on('click', '.comfirm-tirada-alt', function (e) {
|
||||
|
||||
const row = $(this).closest('tr');
|
||||
const data = tableTiradas.row(row).data();
|
||||
|
||||
updateTablaEnvios($('#tirada').val(), data.tirada).then(function(){
|
||||
$('#tirada').val(data.tirada);
|
||||
$('#tirada').trigger('change', [false]);
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
// Función para generar el JSON de las lineas de presupuesto para calcular las tiradas
|
||||
function generate_json_tiradas() {
|
||||
|
||||
|
||||
@ -243,6 +243,12 @@
|
||||
const url = window.location.href;
|
||||
const url_parts = url.split('/');
|
||||
|
||||
if (url_parts[url_parts.length - 2] == 'edit') {
|
||||
id = url_parts[url_parts.length - 1];
|
||||
} else {
|
||||
id = -1;
|
||||
}
|
||||
|
||||
<?php if (str_contains($formAction, 'edit')): ?>
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
@ -250,15 +256,7 @@ const url_parts = url.split('/');
|
||||
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();
|
||||
@ -298,6 +296,10 @@ const url_parts = url.split('/');
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!------------------------------------------->
|
||||
<!-- Variables generales usadas en los ficheros js -->
|
||||
<!------------------------------------------->
|
||||
@ -306,7 +308,7 @@ const url_parts = url.split('/');
|
||||
|
||||
window.token_ajax= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v};
|
||||
window.csrf_token = '<?= csrf_token() ?>';
|
||||
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
<?php endif; ?>
|
||||
|
||||
@ -327,12 +329,17 @@ const url_parts = url.split('/');
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/select/dataTables.select.min.js") ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/js/datatables-editor/dataTables.editor.min.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/autosize/autosize.js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/translate_js/Presupuestos') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/datosLibro_js') ?>"></script>
|
||||
<?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/lineasPresupuesto_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('js_loader/resumenPresupuestos_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/presupuestos_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