mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'main' into dev/chat
This commit is contained in:
@ -191,15 +191,15 @@
|
||||
<?= lang("Basic.global.edit") ?>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-label-primary float-start me-sm-3 me-1"
|
||||
name="exportar_lineas"
|
||||
id="exportar_lineas" >
|
||||
<span class="ti-xs ti ti-file-spreadsheet me-1"></span>
|
||||
<?= lang("Facturas.exportarLineas") ?>
|
||||
</button>
|
||||
|
||||
<?= anchor(
|
||||
route_to("lineasToExcel", $facturaEntity->id),
|
||||
'<span class="ti-xs ti ti-file-spreadsheet me-1"></span>' .
|
||||
lang("Facturas.exportarLineas"),
|
||||
[
|
||||
"class" => "btn btn-label-primary float-start me-sm-3 me-1",
|
||||
]
|
||||
) ?>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@ -44,13 +44,21 @@
|
||||
value="<?= lang("Facturas.borrarFactura") ?>"
|
||||
/>
|
||||
<?php endif; ?>
|
||||
<input type="button"
|
||||
class="btn btn-info float-start me-sm-3 me-1"
|
||||
id="imprimirFactura"
|
||||
name="imprimirFactura"
|
||||
value="<?= lang("Facturas.imprimirFactura") ?>"
|
||||
/>
|
||||
<?= anchor(route_to("facturasList"), lang("Basic.global.back"), ["class" => "btn btn-secondary float-start"]) ?>
|
||||
<?= anchor(
|
||||
route_to("facturaToPdf", $facturaEntity->id),
|
||||
lang("Facturas.imprimirFactura"),
|
||||
[
|
||||
"class" => "btn btn-info float-start me-sm-3 me-1",
|
||||
"target" => "_blank"
|
||||
]
|
||||
) ?>
|
||||
<?= anchor(
|
||||
route_to("facturasList"),
|
||||
lang("Basic.global.back"),
|
||||
[
|
||||
"class" => "btn btn-secondary float-start"
|
||||
]
|
||||
) ?>
|
||||
</div><!-- /.card-footer -->
|
||||
</form>
|
||||
</div><!-- //.card -->
|
||||
|
||||
@ -78,11 +78,60 @@
|
||||
pageLength: 250,
|
||||
lengthChange: true,
|
||||
"dom": 'lfBrtip',
|
||||
"buttons": [
|
||||
'copy', 'csv', 'excel', 'print', {
|
||||
extend: 'pdfHtml5',
|
||||
orientation: 'landscape',
|
||||
pageSize: 'A4'
|
||||
buttons: [
|
||||
{
|
||||
text: 'Exportar Excel Contaplus',
|
||||
action: function (e, dt, button, config) {
|
||||
var searchValue = theTable.search(); // Captura el valor del campo de búsqueda
|
||||
var ajaxParams = theTable.ajax.params(); // Captura otros parámetros de la tabla
|
||||
|
||||
console.log(searchValue);
|
||||
|
||||
/*
|
||||
$.ajax({
|
||||
url: '/ruta/exportarExcel', // URL del servidor para manejar la exportación
|
||||
type: 'POST',
|
||||
data: {
|
||||
search: searchValue,
|
||||
extraParams: ajaxParams
|
||||
},
|
||||
xhrFields: {
|
||||
responseType: 'blob' // Para manejar la descarga del archivo
|
||||
},
|
||||
success: function(blob, status, xhr) {
|
||||
// Crear un enlace temporal para descargar el archivo
|
||||
var link = document.createElement('a');
|
||||
var url = window.URL.createObjectURL(blob);
|
||||
link.href = url;
|
||||
link.download = 'datos_personalizados.xlsx';
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
window.URL.revokeObjectURL(url);
|
||||
}
|
||||
});
|
||||
*/
|
||||
}
|
||||
},
|
||||
{
|
||||
text: 'Exportar Lineas a Excel',
|
||||
action: function (e, dt, button, config) {
|
||||
var searchValue = theTable.search(); // Captura el valor del campo de búsqueda
|
||||
var ajaxParams = theTable.ajax.params(); // Captura otros parámetros de la tabla
|
||||
|
||||
console.log(searchValue);
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
text: 'Exportar Girosgit ',
|
||||
action: function (e, dt, button, config) {
|
||||
var searchValue = theTable.search(); // Captura el valor del campo de búsqueda
|
||||
var ajaxParams = theTable.ajax.params(); // Captura otros parámetros de la tabla
|
||||
|
||||
console.log(searchValue);
|
||||
|
||||
}
|
||||
}
|
||||
],
|
||||
stateSave: true,
|
||||
|
||||
@ -598,6 +598,16 @@ $(document).on('change', '.albaran_linea', function(){
|
||||
|
||||
$(document).on('click', '#borrar_albaranes', function(){
|
||||
|
||||
asyncConfirmDialogWithParams(
|
||||
"Borrar albaranes",
|
||||
"¿Está seguro de borrar los albaranes? Esta acción no se puede deshacer.",
|
||||
borrar_albaranes, function(){}, [])
|
||||
|
||||
|
||||
});
|
||||
|
||||
function borrar_albaranes(){
|
||||
|
||||
// seleccionan todos los accordion dentro del body del accordion accordioAlbaranes
|
||||
$('.accordion-albaran').each(function() {
|
||||
// Aquí puedes trabajar con cada acordeón interno encontrado
|
||||
@ -617,12 +627,12 @@ $(document).on('click', '#borrar_albaranes', function(){
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function borrar_albaran(albaran_id){
|
||||
|
||||
$(document).on('click', '.borrar-albaran', function(){
|
||||
|
||||
var albaran_id = $(this).attr('id').split('_').slice(-1)[0];
|
||||
var url = '<?= route_to('borrarAlbaran', ':id') ?>';
|
||||
url = url.replace(':id', albaran_id );
|
||||
$.ajax({
|
||||
@ -637,7 +647,18 @@ $(document).on('click', '.borrar-albaran', function(){
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$(document).on('click', '.borrar-albaran', function(){
|
||||
|
||||
var albaran_id = $(this).attr('id').split('_').slice(-1)[0];
|
||||
|
||||
asyncConfirmDialogWithParams(
|
||||
"Borrar albarán",
|
||||
"¿Está seguro de borrar el albarán? Esta acción no se puede deshacer.",
|
||||
borrar_albaran, function(){}, [albaran_id])
|
||||
});
|
||||
|
||||
$(document).on('click', '.nueva-linea-albaran', function(){
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
</div><!-- //.card -->
|
||||
</div><!--//.col -->
|
||||
</div><!--//.row -->
|
||||
<?= view("themes/_commonPartialsBs/_modalConfirmDialog") ?>
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
|
||||
@ -173,7 +173,7 @@ theTable = $('#tableOfPresupuestos').DataTable({
|
||||
}
|
||||
],
|
||||
stateSave: false,
|
||||
order: [[1, 'asc']],
|
||||
order: [[1, 'desc']],
|
||||
language: {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
|
||||
@ -128,6 +128,21 @@
|
||||
<input type="number" class="calcular-presupuesto" id="paginas" name="paginas" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->paginas) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div id="div_pagCuadernillo" class="col-sm-3 mb-3">
|
||||
<label for="paginas_por_cuadernillo" class="form-label">
|
||||
<?= lang('Presupuestos.paginasCuadernillo') ?>
|
||||
</label>
|
||||
<select id="paginasCuadernillo" name="paginas_por_cuadernillo" class="calcular-presupuesto form-control select2bs2" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->paginasCuadernillo) && is_array($datosPresupuesto->paginasCuadernillo) && !empty($datosPresupuesto->paginasCuadernillo)) :
|
||||
foreach ($datosPresupuesto->paginasCuadernillo as $value) : ?>
|
||||
<option value="<?= $value ?>" <?= $value == $presupuestoEntity->paginas_por_cuadernillo ? ' selected' : '' ?>>
|
||||
<?= $value ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
</div> <!--//.row -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
@ -646,11 +646,18 @@ async function calcularPresupuesto() {
|
||||
clienteId: $('#clienteId').val(),
|
||||
servicios: servicios,
|
||||
}
|
||||
|
||||
// Si es cosido, se añade el número de páginas del cuadernillo
|
||||
if ($('#cosidoDiv').hasClass('checked')) {
|
||||
datos.paginasCuadernillo = $('#paginasCuadernillo').val();
|
||||
}
|
||||
// Si hay solapas de cubierta
|
||||
if ($('#solapasCubierta').is(':checked')) {
|
||||
datos.solapasCubierta = $('#anchoSolapasCubierta').val()
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Si hay sobrecubierta
|
||||
if ($('#enableSobrecubierta').is(':checked')) {
|
||||
if($('#papelSobrecubierta option:selected').val()>0 && $('#gramajeSobrecubierta option:selected').val()>0){
|
||||
|
||||
@ -218,6 +218,12 @@ function finalizarPresupuesto(confirmar){
|
||||
clienteId: $('#clienteId').val(),
|
||||
servicios: servicios,
|
||||
};
|
||||
|
||||
// Si es cosido, se añade el número de páginas del cuadernillo
|
||||
if ($('#cosidoDiv').hasClass('checked')) {
|
||||
datos_libro.paginasCuadernillo = $('#paginasCuadernillo').val();
|
||||
}
|
||||
|
||||
// Si hay solapas de cubierta
|
||||
if ($('#solapasCubierta').is(':checked')) {
|
||||
datos_libro.solapasCubierta = $('#anchoSolapasCubierta').val()
|
||||
|
||||
@ -33,6 +33,12 @@ function updateTipoLibroCheck(el)
|
||||
else {
|
||||
$('#tapaDuraDiv').show();
|
||||
}
|
||||
if(el.closest('.custom-option-tipo').id == 'cosidoDiv') {
|
||||
$('#div_pagCuadernillo').show();
|
||||
}
|
||||
else {
|
||||
$('#div_pagCuadernillo').hide();
|
||||
}
|
||||
} else {
|
||||
el.closest('.custom-option-tipo').classList.remove('checked')
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@
|
||||
<div class="col-md-12 col-lg-3 px-4">
|
||||
<div class="mb-3">
|
||||
<label for="paisId" class="form-label">
|
||||
<?=lang('Presupuestos.paisId') ?>*
|
||||
<?=lang('Presupuestos.paisId') ?>
|
||||
</label>
|
||||
<select id="paisId" name="pais_id" class="form-control select2bs" style="width: 100%;" >
|
||||
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('Presupuestos.paisId')]) ?></option>
|
||||
|
||||
@ -207,12 +207,55 @@ function init_servicio_acabado(){
|
||||
tableServiciosAcabado.row.add([
|
||||
element.tarifa_acabado_id,
|
||||
nombre_completo,
|
||||
'<select id="proveedor_acabado_' + element.tarifa_acabado_id + '" class="proveedor_acabado select2bs2" style="width: 100%;">' +
|
||||
'<option value="' + element.proveedor_id + '" selected >' +
|
||||
element.proveedor +
|
||||
'</option>' +
|
||||
'</select>',
|
||||
'<span id="precio_unidad_acabado_' + element.tarifa_acabado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
|
||||
'<input class="update-totales-servicios" id="precio_total_acabado_' + element.tarifa_acabado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
|
||||
'<span style="display: none;" class="update-totales" id="acabado_margen_' + element.tarifa_acabado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
|
||||
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_acabado_id +'" data-text="' + nombre_completo + '"></i></a>'
|
||||
]).draw(false)
|
||||
|
||||
$('#proveedor_acabado_' + element.tarifa_acabado_id).select2({
|
||||
allowClear: false,
|
||||
minimumResultsForSearch: -1,
|
||||
ajax: {
|
||||
url: window.routes_servicios.menuItemsOfPresupuestoAcabados,
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
|
||||
data: function (params) {
|
||||
|
||||
if(parseInt($('#tirada').val())>0){
|
||||
var tirada = parseInt($('#tirada').val())
|
||||
}
|
||||
else{
|
||||
var tirada = 0
|
||||
}
|
||||
|
||||
var return_data = {
|
||||
tarifa_id: element.tarifa_acabado_id,
|
||||
tirada: tirada,
|
||||
};
|
||||
return_data = Object.assign(return_data, window.token_ajax);
|
||||
|
||||
return return_data;
|
||||
},
|
||||
delay: 60,
|
||||
processResults: function (response) {
|
||||
yeniden(response[window.csrf_token]);
|
||||
return {
|
||||
results: response.menu
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
}
|
||||
});
|
||||
$('#proveedor_acabado_' + element.tarifa_acabado_id).on('change', select_acabado_event)
|
||||
|
||||
|
||||
$('#precio_total_acabado_' + element.tarifa_acabado_id).on('change', function(){
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
@ -223,9 +266,55 @@ function init_servicio_acabado(){
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
check_serv_acabado_error()
|
||||
}
|
||||
|
||||
function select_acabado_event(){
|
||||
|
||||
if(parseInt($('#tirada').val())>0){
|
||||
var tirada = parseInt($('#tirada').val()) + parseInt($('#merma').val())
|
||||
}
|
||||
else{
|
||||
var tirada = 0
|
||||
}
|
||||
|
||||
var tarifa_id = null;
|
||||
if(this.id.includes('proveedor_acabado')){
|
||||
tarifa_id = this.id.split('_')[2];
|
||||
}
|
||||
else{
|
||||
tarifa_id = this.id.split('_')[1];
|
||||
}
|
||||
|
||||
var datos = {
|
||||
tarifa_acabado_id: tarifa_id,
|
||||
tirada: tirada,
|
||||
proveedor_id: parseInt($('#proveedor_acabado_' + tarifa_id).select2('data')[0].id),
|
||||
POD: parseInt($('#POD').val())
|
||||
};
|
||||
datos = Object.assign(datos, window.token_ajax);
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: window.routes_servicios.dataTableOfPresupuestoAcabados,
|
||||
data: datos,
|
||||
success: function (data) {
|
||||
|
||||
$('#precio_unidad_acabado_' + datos.tarifa_acabado_id).text(parseFloat(data.values[0].precio_unidad).toFixed(2))
|
||||
$('#precio_total_acabado_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].total).toFixed(2))
|
||||
$('#acabado_margen_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].margen).toFixed(2))
|
||||
|
||||
yeniden(data[window.csrf_token]);
|
||||
return true;
|
||||
},
|
||||
error: function(e){
|
||||
return false;
|
||||
}
|
||||
})
|
||||
return false;
|
||||
}
|
||||
|
||||
function check_serv_acabado_error(){
|
||||
|
||||
var htmlString = '';
|
||||
@ -280,6 +369,11 @@ function get_tarifas_acabado(tarifa_id = -1, uso=null){
|
||||
tableServiciosAcabado.row.add([
|
||||
row.tarifa_id,
|
||||
nombre,
|
||||
'<select id="proveedor_acabado_' + row.tarifa_id + '" class="proveedor_acabado select2bs2" style="width: 100%;">' +
|
||||
'<option value="' + row.proveedor_id + '" selected >' +
|
||||
row.proveedor +
|
||||
'</option>' +
|
||||
'</select>',
|
||||
'<span id="precio_unidad_acabado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
|
||||
'<input class="update-totales-servicios" id="precio_total_acabado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
|
||||
'<span style="display: none;" class="update-totales" id="acabado_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
|
||||
@ -295,6 +389,44 @@ function get_tarifas_acabado(tarifa_id = -1, uso=null){
|
||||
update_tiradas_alternativas: true})
|
||||
})
|
||||
|
||||
|
||||
|
||||
$('#proveedor_acabado_' + row.tarifa_id).select2({
|
||||
allowClear: false,
|
||||
minimumResultsForSearch: -1,
|
||||
ajax: {
|
||||
url: window.routes_servicios.menuItemsOfPresupuestoAcabados,
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
|
||||
data: function (params) {
|
||||
|
||||
if(parseInt($('#tirada').val())>0){
|
||||
var tirada = parseInt($('#tirada').val())
|
||||
}
|
||||
else{
|
||||
var tirada = 0
|
||||
}
|
||||
|
||||
var return_data = {
|
||||
tarifa_id: row.tarifa_id,
|
||||
tirada: tirada,
|
||||
};
|
||||
return_data = Object.assign(return_data, window.token_ajax);
|
||||
|
||||
return return_data;
|
||||
},
|
||||
delay: 60,
|
||||
processResults: function (response) {
|
||||
yeniden(response[window.csrf_token]);
|
||||
return {
|
||||
results: response.menu
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
}
|
||||
});
|
||||
$('#proveedor_acabado_' + row.tarifa_id).on('change', select_acabado_event)
|
||||
});
|
||||
|
||||
check_serv_acabado_error()
|
||||
@ -415,12 +547,15 @@ function get_datos_acabado(){
|
||||
values['sobrecubierta'] = 0
|
||||
break
|
||||
case 2:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
values['proveedor_id'] = $(this).children(":first").select2('data')[0].id
|
||||
break
|
||||
case 3:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 4:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 5:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
@ -518,7 +653,7 @@ function init_servicio_encuadernado(){
|
||||
const tarifa_id = element.tarifa_encuadernado_id
|
||||
var proveedor_nombre = element.proveedor===null? window.Presupuestos.no_disponible: element.proveedor
|
||||
|
||||
tableServiciosEnc.row.add([
|
||||
var linea = [
|
||||
element.tarifa_encuadernado_id,
|
||||
element.nombre,
|
||||
'<select id="proveedor_enc_' + element.tarifa_encuadernado_id + '" class="proveedor_enc select2bs2" style="width: 100%;">' +
|
||||
@ -527,11 +662,14 @@ function init_servicio_encuadernado(){
|
||||
'</option>' +
|
||||
'</select>',
|
||||
'<span id="precio_unidad_encuadernado_' + element.tarifa_encuadernado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
|
||||
'<span id="tiempo_encuadernado_' + element.tiempo + '">' + convertirTiempo(element.tiempo) + '</span>',
|
||||
(element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null)?selectForCuadernillos(element.tarifa_encuadernado_id, element.paginas_por_cuadernillo):'',
|
||||
'<span id="tiempo_encuadernado_' + element.tarifa_encuadernado_id + '">' + convertirTiempo(element.tiempo) + '</span>',
|
||||
'<input class="update-totales-servicios" id="precio_total_encuadernado_' + element.tarifa_encuadernado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
|
||||
'<span style="display: none;" class="update-totales" id="enc_margen_' + element.tarifa_encuadernado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
|
||||
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_encuadernado_id +'"></i></a>'
|
||||
]).draw(false)
|
||||
]
|
||||
|
||||
tableServiciosEnc.row.add(linea).draw(false)
|
||||
|
||||
$('#precio_total_encuadernado_' + element.tarifa_encuadernado_id).on('change', function(){
|
||||
updatePresupuesto({
|
||||
@ -583,14 +721,40 @@ function init_servicio_encuadernado(){
|
||||
cache: true
|
||||
}
|
||||
});
|
||||
$('#proveedor_enc_' + element.tarifa_encuadernado_id).on('change', proveedor_enc_event)
|
||||
$('#proveedor_enc_' + element.tarifa_encuadernado_id).on('change', select_enc_event)
|
||||
|
||||
if(element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null){
|
||||
|
||||
$('#cuadernillos_' + element.tarifa_encuadernado_id).select2({
|
||||
allowClear: false,
|
||||
minimumResultsForSearch: -1,
|
||||
});
|
||||
|
||||
$('#cuadernillos_' + element.tarifa_encuadernado_id).on('change', select_enc_event)
|
||||
}
|
||||
|
||||
});
|
||||
check_serv_enc_error()
|
||||
|
||||
}
|
||||
|
||||
function selectForCuadernillos(tarifa_id, select_value){
|
||||
const value_list = [32, 28, 24, 20, 16];
|
||||
var string =
|
||||
'<select id="cuadernillos_' + tarifa_id + '" class="cuadernillo_enc select2bs2" style="width: 50%;">';
|
||||
|
||||
for (let i = 0; i < value_list.length; i++) {
|
||||
string +=
|
||||
'<option value="' + value_list[i] + '" ' + (value_list[i]==select_value?'selected':'') +'>' +
|
||||
value_list[i] +
|
||||
'</option>';
|
||||
}
|
||||
string += '</select>';
|
||||
return string;
|
||||
}
|
||||
|
||||
function convertirTiempo(horas){
|
||||
if(horas != null && horas.length>0){
|
||||
if(horas != null){
|
||||
if(parseFloat(horas)>0){
|
||||
const seconds = parseFloat(horas) * 3600;
|
||||
// se convierte a formato hh:mm:ss
|
||||
@ -598,32 +762,49 @@ function convertirTiempo(horas){
|
||||
const minutos = Math.floor((seconds % 3600) / 60);
|
||||
const segundos = seconds % 60;
|
||||
return h + ':' + minutos + ':' + segundos;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
function proveedor_enc_event(){
|
||||
function select_enc_event(){
|
||||
|
||||
const dimension = getDimensionLibro();
|
||||
|
||||
if(parseInt($('#tirada').val())>0){
|
||||
var tirada = parseInt($('#tirada').val())
|
||||
var tirada = parseInt($('#tirada').val()) + parseInt($('#merma').val())
|
||||
}
|
||||
else{
|
||||
var tirada = 0
|
||||
}
|
||||
|
||||
var tarifa_id = null;
|
||||
if(this.id.includes('proveedor_enc')){
|
||||
tarifa_id = this.id.split('_')[2];
|
||||
}
|
||||
else{
|
||||
tarifa_id = this.id.split('_')[1];
|
||||
}
|
||||
// se checkea si el elemento #cuadernillos_ + tarifa_id existe
|
||||
var paginas_por_cuadernillo = null;
|
||||
if($('#cuadernillos_' + tarifa_id).length){
|
||||
paginas_por_cuadernillo = parseInt($('#cuadernillos_' + tarifa_id).select2('data')[0].id);
|
||||
}
|
||||
|
||||
var datos = {
|
||||
tarifa_encuadernacion_id: this.id.split('_')[2],
|
||||
tarifa_encuadernacion_id: tarifa_id,
|
||||
paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0,
|
||||
tirada: tirada,
|
||||
ancho: dimension.ancho,
|
||||
alto: dimension.alto,
|
||||
proveedor_id: parseInt($('#' + this.id).select2('data')[0].id),
|
||||
paginas_por_cuadernillo: paginas_por_cuadernillo,
|
||||
proveedor_id: parseInt($('#proveedor_enc_' + tarifa_id).select2('data')[0].id),
|
||||
POD: parseInt($('#POD').val())
|
||||
};
|
||||
datos = Object.assign(datos, window.token_ajax);
|
||||
@ -677,7 +858,7 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
||||
const dimension = getDimensionLibro();
|
||||
|
||||
if(parseInt($('#tirada').val())>0){
|
||||
var tirada = parseInt($('#tirada').val())
|
||||
var tirada = parseInt($('#tirada').val()) + parseInt($('#merma').val())
|
||||
}
|
||||
else{
|
||||
var tirada = 0
|
||||
@ -685,11 +866,7 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
||||
|
||||
var datos = {
|
||||
tarifa_encuadernacion_id : tarifa_id,
|
||||
solapas: $('#solapas').is(':checked')?1:0,
|
||||
paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0,
|
||||
tirada: tirada,
|
||||
ancho: dimension.ancho,
|
||||
alto: dimension.alto,
|
||||
POD: parseInt($('#POD').val())
|
||||
};
|
||||
datos = Object.assign(datos, window.token_ajax)
|
||||
@ -719,7 +896,8 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
||||
'</option>' +
|
||||
'</select>',
|
||||
'<span id="precio_unidad_encuadernado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
|
||||
'<span id="tiempo_encuadernado_' + row.tiempo + '">' + convertirTiempo(row.tiempo) + '</span>',
|
||||
(row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null)?selectForCuadernillos(row.tarifa_id, 32):'',
|
||||
'<span id="tiempo_encuadernado_' + row.tarifa_id + '">' + convertirTiempo(row.tiempo) + '</span>',
|
||||
'<input class="update-totales-servicios" id="precio_total_encuadernado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
|
||||
'<span style="display: none;" class="update-totales" id="enc_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
|
||||
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + row.tarifa_id +'"></i></a>'
|
||||
@ -745,7 +923,7 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
||||
data: function (params) {
|
||||
|
||||
if( parseInt( $('#tirada').val() )>0){
|
||||
var tirada = parseInt($('#tirada').val())
|
||||
var tirada = parseInt($('#tirada').val()) + parseInt($('#merma').val())
|
||||
}
|
||||
else{
|
||||
var tirada = 0
|
||||
@ -755,8 +933,8 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
||||
tarifa_id: row.tarifa_id,
|
||||
paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0,
|
||||
tirada: tirada,
|
||||
ancho: ancho_libro,
|
||||
alto: alto_libro,
|
||||
ancho: dimension.ancho,
|
||||
alto: dimension.alto,
|
||||
searchtxt: params.term, // search term
|
||||
}
|
||||
return_data = Object.assign(return_data, window.token_ajax);
|
||||
@ -773,9 +951,17 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
||||
}
|
||||
});
|
||||
|
||||
$('#proveedor_enc_' + row.tarifa_id).on('change', proveedor_enc_event)
|
||||
|
||||
$('#proveedor_enc_' + row.tarifa_id).on('change', select_enc_event)
|
||||
|
||||
|
||||
if(row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null){
|
||||
$('#cuadernillos_' + row.tarifa_id).select2({
|
||||
allowClear: false,
|
||||
minimumResultsForSearch: -1,
|
||||
});
|
||||
|
||||
$('#cuadernillos_' + row.tarifa_id).on('change', select_enc_event)
|
||||
}
|
||||
});
|
||||
check_serv_enc_error()
|
||||
yeniden(data[window.csrf_token]);
|
||||
@ -821,16 +1007,21 @@ function get_datos_encuadernacion(){
|
||||
case 3:
|
||||
values['precio_unidad'] = $(this).text()
|
||||
break
|
||||
case 4:
|
||||
case 4:
|
||||
values['paginas_por_cuadernillo'] = $(this).children(":first").val()
|
||||
// Si el valor es "undefined" se pone a null
|
||||
if(values['paginas_por_cuadernillo'] == "undefined")
|
||||
values['paginas_por_cuadernillo'] = null
|
||||
case 5:
|
||||
values['tiempo'] = $(this).text()
|
||||
// se pasa el string hh:mm:ss a horas
|
||||
if(values['tiempo'] != null)
|
||||
values['tiempo'] = parseInt(values['tiempo'].split(':')[0]) + parseInt(values['tiempo'].split(':')[1])/60 + parseInt(values['tiempo'].split(':')[2])/3600
|
||||
break
|
||||
case 5:
|
||||
case 6:
|
||||
values['precio_total'] = $(this).children(":first").val()
|
||||
break
|
||||
case 6:
|
||||
case 7:
|
||||
values['margen'] = $(this).text()
|
||||
break
|
||||
}
|
||||
@ -1678,9 +1869,19 @@ async function actualizar_servicios(update_preimpresion=false){
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
data.lines.forEach((line) => {
|
||||
$('#proveedor_acabado_' + line[0].tarifa_id).off('change')
|
||||
if(line[0].hasOwnProperty('proveedor_id')){
|
||||
$('#proveedor_acabado_' + line[0].tarifa_id)
|
||||
.append('<option selected="selected" value="' + line[0].proveedor_id + '">' + line[0].proveedor + '</option>')
|
||||
}
|
||||
else{
|
||||
$('#proveedor_acabado_' + line[0].tarifa_id).empty()
|
||||
.append('<option selected="selected" value="' + line[0].proveedor_id + '">' + window.Presupuestos.no_disponible + '</option>')
|
||||
}
|
||||
$('#precio_unidad_acabado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
|
||||
$('#precio_total_acabado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
|
||||
$('#acabado_margen_' + line[0].tarifa_id).text(parseFloat(line[0].margen).toFixed(2))
|
||||
$('#proveedor_acabado_' + line[0].tarifa_id).on('change', select_enc_event)
|
||||
});
|
||||
check_serv_acabado_error()
|
||||
yeniden(data[window.csrf_token]);
|
||||
@ -1709,7 +1910,7 @@ async function actualizar_servicios(update_preimpresion=false){
|
||||
$('#precio_unidad_encuadernado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
|
||||
$('#precio_total_encuadernado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
|
||||
$('#enc_margen_' + line[0].tarifa_id).val(parseFloat(line[0].margen).toFixed(2))
|
||||
$('#proveedor_enc_' + line[0].tarifa_id).on('change', proveedor_enc_event)
|
||||
$('#proveedor_enc_' + line[0].tarifa_id).on('change', select_enc_event)
|
||||
});
|
||||
check_serv_enc_error()
|
||||
yeniden(data[window.csrf_token]);
|
||||
|
||||
@ -90,6 +90,7 @@
|
||||
<tr>
|
||||
<th><?= lang('Presupuestos.id') ?></th>
|
||||
<th><?= lang('Tarifaacabado.tarifaacabado') ?></th>
|
||||
<th><?= lang('Proveedores.proveedor') ?></th>
|
||||
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
||||
<th><?= lang('Presupuestos.precioTotal') ?></th>
|
||||
<th></th>
|
||||
@ -167,6 +168,7 @@
|
||||
<th><?= lang('Presupuestos.tarifa') ?></th>
|
||||
<th><?= lang('Proveedores.proveedor') ?></th>
|
||||
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
||||
<th><?= lang('Presupuestos.paginasCuadernillo') ?></th>
|
||||
<th><?= lang('Presupuestos.tiempo') ?></th>
|
||||
<th><?= lang('Presupuestos.precioTotal') ?></th>
|
||||
<th></th>
|
||||
@ -296,6 +298,7 @@
|
||||
|
||||
window.routes_servicios = {
|
||||
dataTableOfPresupuestoAcabados: "<?=route_to('dataTableOfPresupuestoAcabados') ?>",
|
||||
menuItemsOfPresupuestoAcabados: '<?= route_to("menuItemsOfPresupuestoAcabados") ?>',
|
||||
dataTableOfPresupuestoPreimpresion: "<?=route_to('dataTableOfPresupuestoPreimpresiones') ?>",
|
||||
dataTableOfPresupuestoEncuadernaciones: "<?=route_to('dataTableOfPresupuestoEncuadernaciones') ?>",
|
||||
dataTableOfPresupuestoManipulados: "<?=route_to('dataTableOfPresupuestoManipulados') ?>",
|
||||
|
||||
@ -45,12 +45,13 @@
|
||||
<table id="tableOfTarifaacabadolineas" class="table table-striped table-hover" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= lang('TarifaAcabadoLineas.proveedor') ?></th>
|
||||
<th><?= lang('TarifaAcabadoLineas.tiradaMin') ?></th>
|
||||
<th><?= lang('TarifaAcabadoLineas.precioMax') ?></th>
|
||||
<th><?= lang('TarifaAcabadoLineas.tiradaMax') ?></th>
|
||||
<th><?= lang('TarifaAcabadoLineas.precioMin') ?></th>
|
||||
<th><?= lang('TarifaAcabadoLineas.margen') ?></th>
|
||||
<th style="min-width:100px"></th>
|
||||
<th class="noFilter" style="min-width:100px"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -85,7 +86,7 @@
|
||||
};
|
||||
|
||||
|
||||
editor = new $.fn.dataTable.Editor( {
|
||||
var editor = new $.fn.dataTable.Editor( {
|
||||
ajax: {
|
||||
url: "<?= route_to('tarifaAcabadoLineasDTE') ?>",
|
||||
headers: {
|
||||
@ -94,7 +95,11 @@
|
||||
},
|
||||
table : "#tableOfTarifaacabadolineas",
|
||||
idSrc: 'id',
|
||||
fields: [ {
|
||||
fields: [
|
||||
{
|
||||
name: "proveedor_id",
|
||||
type: "select",
|
||||
}, {
|
||||
name: "tirada_min"
|
||||
}, {
|
||||
name: "precio_max"
|
||||
@ -107,6 +112,9 @@
|
||||
}, {
|
||||
"name": "tarifa_acabado_id",
|
||||
"type": "hidden"
|
||||
},{
|
||||
name: "proveedor_nombre",
|
||||
"type": "hidden"
|
||||
},{
|
||||
"name": "deleted_at",
|
||||
"type": "hidden"
|
||||
@ -117,6 +125,10 @@
|
||||
]
|
||||
} );
|
||||
|
||||
// Generación de la lista de proveedores (id, nombre) para encuadernación
|
||||
const suppliersList = <?php echo json_encode($proveedores); ?>;
|
||||
editor.field( 'proveedor_id' ).update( suppliersList );
|
||||
|
||||
editor.on( 'preSubmit', function ( e, d, type ) {
|
||||
if ( type === 'create'){
|
||||
d.data[0]['tarifa_acabado_id'] = id;
|
||||
@ -141,18 +153,94 @@
|
||||
});
|
||||
|
||||
|
||||
function searchProviders(){
|
||||
var values = [];
|
||||
$('#select_Proveedor').find(':selected').each(function () {
|
||||
values.push($(this).val());
|
||||
});
|
||||
theTable.column(0).search(values).draw();
|
||||
}
|
||||
|
||||
|
||||
// Setup - add a text input to each footer cell
|
||||
$('#tableOfTarifaacabadolineas thead tr').clone(true).appendTo('#tableOfTarifaacabadolineas thead');
|
||||
$('#tableOfTarifaacabadolineas thead tr:eq(1) th').each(function (i) {
|
||||
if (!$(this).hasClass("noFilter")) {
|
||||
var title = $(this).text();
|
||||
title = title.replace(/ /g, "_").replace(/\./g, "_");
|
||||
|
||||
|
||||
if(i==0){
|
||||
|
||||
// Agregar un selector en la primera columna
|
||||
$(this).html(`<select id=select_${title} class="form-control select2" style="min-width:100px;max-width:120px;font-size:0.8rem !important;"></select>`);
|
||||
|
||||
// Agregar opciones al selector
|
||||
var selector = $('select', this);
|
||||
const suppliersList = <?php echo json_encode($proveedores); ?>;
|
||||
//selector.append('<option value="">Todos</option>'); // Opción vacía
|
||||
for (j = 0; j < suppliersList.length; j++) {
|
||||
selector.append('<option value="' + suppliersList[j].value + '">' + suppliersList[j].label + '</option>');
|
||||
};
|
||||
|
||||
$('#select_' + title).select2({
|
||||
multiple: true,
|
||||
placeholder: ""
|
||||
});
|
||||
|
||||
|
||||
selector.bind('select2:select', searchProviders);
|
||||
selector.bind('select2:unselect', searchProviders);
|
||||
|
||||
$('#select_' + title).val("").trigger('change');
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
|
||||
$(this).html(`
|
||||
<div class='d-flex'>
|
||||
<input name=min_${title} id=min_${title} class="form-control" type='text' min='0' placeholder='Min' style='width: 80px;'/>
|
||||
<input name=max_${title} id=max_${title} class="form-control ml-1" type='text' min='0' placeholder='Max' style='width: 80px;'/>
|
||||
</div>
|
||||
`);
|
||||
|
||||
|
||||
|
||||
$('input', this).on('change clear', function () {
|
||||
var minInputValue = parseFloat($(`#min_${title}`).val().replace(',','.')) || "";
|
||||
var maxInputValue = parseFloat($(`#max_${title}`).val().replace(',','.')) || "";
|
||||
|
||||
|
||||
if (theTable.column(i).search() !== [minInputValue,maxInputValue]) {
|
||||
theTable
|
||||
.column(i)
|
||||
.search([minInputValue,maxInputValue])
|
||||
.draw();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
$(this).html('<span></span>');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var theTable = $('#tableOfTarifaacabadolineas').DataTable( {
|
||||
serverSide: true,
|
||||
orderCellsTop: true,
|
||||
serverSide: true,
|
||||
processing: true,
|
||||
autoWidth: true,
|
||||
responsive: true,
|
||||
fixedHeader: true,
|
||||
lengthMenu: [ 5, 10, 25],
|
||||
order: [[ 0, "asc" ], [ 1, "asc" ]],
|
||||
pageLength: 10,
|
||||
lengthChange: true,
|
||||
searching: false,
|
||||
paging: true,
|
||||
info: false,
|
||||
stateSave: false,
|
||||
dom: '<"mt-4"><"float-end"B><"float-start"l><t><"mt-4 mb-3"p>',
|
||||
ajax : $.fn.dataTable.pipeline( {
|
||||
url: '<?= route_to('tarifaAcabadoLineasDT') ?>',
|
||||
@ -164,6 +252,12 @@
|
||||
async: true,
|
||||
}),
|
||||
columns: [
|
||||
{ 'data': 'proveedor_id',
|
||||
render: function(data, type, row, meta) {
|
||||
var value = suppliersList.find(element => element.value === data);
|
||||
return value['label'];
|
||||
},
|
||||
},
|
||||
{ 'data': 'tirada_min' },
|
||||
{ 'data': 'precio_max' },
|
||||
{ 'data': 'tirada_max' },
|
||||
@ -180,7 +274,6 @@
|
||||
searchable: false,
|
||||
targets: [lastColNr]
|
||||
},
|
||||
{"orderData": [ 0, 1 ], "targets": 0 },
|
||||
|
||||
],
|
||||
language: {
|
||||
@ -244,6 +337,7 @@
|
||||
<?=$this->section('css') ?>
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/datatables-editor/editor.dataTables.min.css') ?>">
|
||||
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>">
|
||||
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/fixedheader/fixedHeader.dataTables.min.css") ?>">
|
||||
<?=$this->endSection() ?>
|
||||
|
||||
|
||||
|
||||
@ -49,11 +49,11 @@
|
||||
<th><?= lang('TarifaEncuadernacionTiradas.proveedor') ?></th>
|
||||
<th><?= lang('TarifaEncuadernacionTiradas.tiradaMin') ?></th>
|
||||
<th><?= lang('TarifaEncuadernacionTiradas.tiradaMax') ?></th>
|
||||
<th><?= lang('Tarifaencuadernacion.precioMin') ?></th>
|
||||
<th><?= lang('Tarifaencuadernacion.importeMin') ?></th>
|
||||
<th><?= lang('Tarifaencuadernacion.importeFijo') ?></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -75,6 +75,13 @@ if (
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (auth()->user()->can('proveedores.menu')) { ?>
|
||||
<li class="menu-item">
|
||||
<a href="<?= route_to("proveedorList") ?>" class="menu-link">
|
||||
<?= lang("App.menu_proveedores") ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (auth()->user()->can('ubicaciones.menu')) { ?>
|
||||
<li class="menu-item">
|
||||
<a href="<?= route_to("ubicacionesList") ?>" class="menu-link">
|
||||
|
||||
193
ci4/app/Views/themes/vuexy/pdfs/factura.php
Normal file
193
ci4/app/Views/themes/vuexy/pdfs/factura.php
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user