Merge branch 'main' into 'mod/presupuesto_admin'

Main

See merge request jjimenez/safekat!453
This commit is contained in:
2024-12-26 13:18:04 +00:00
9 changed files with 75 additions and 25 deletions

View File

@ -276,7 +276,7 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$onlyActiveOnes = false; $onlyActiveOnes = false;
$columns2select = [$reqId ?? 'id', $reqText ?? 'nombre']; $columns2select = [$reqId ?? 'id', $reqText ?? 'nombre'];
$onlyActiveOnes = false; $onlyActiveOnes = false;
$menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr); $menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr, true);
$nonItem = new \stdClass; $nonItem = new \stdClass;
$nonItem->id = ''; $nonItem->id = '';
$nonItem->text = '- ' . lang('Basic.global.None') . ' -'; $nonItem->text = '- ' . lang('Basic.global.None') . ' -';

View File

@ -417,7 +417,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController
if (!empty($selId)) : if (!empty($selId)) :
$papelGenericoModel = model('App\Models\Configuracion\PapelGenericoModel'); $papelGenericoModel = model('App\Models\Configuracion\PapelGenericoModel');
$selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); $selOption = $papelGenericoModel->where('is_deleted', 0)->where('id', $selId)->findColumn('nombre');
if (!empty($selOption)) : if (!empty($selOption)) :
$data[$selId] = $selOption[0]; $data[$selId] = $selOption[0];
endif; endif;

View File

@ -1127,7 +1127,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
[$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] = [$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] =
$this->getPaginas($lineas); $this->getPaginas($lineas);
if (intval($presupuesto->envios_recoge_cliente) == 1) { if (intval($presupuesto->recoger_en_taller) == 1) {
$data['direcciones']['entrega_taller'] = 1; $data['direcciones']['entrega_taller'] = 1;
} else { } else {
$data['direcciones']['entrega_taller'] = 0; $data['direcciones']['entrega_taller'] = 0;
@ -1913,7 +1913,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($servDefectoEnc as $servicio) { foreach ($servDefectoEnc as $servicio) {
if ($servicio->total <= 0) { if ($servicio->total <= 0) {
$input_data['servicios'] = $servDefecto; $input_data['servicios'] = $servDefectoEnc;
$errorModel = new ErrorPresupuesto(); $errorModel = new ErrorPresupuesto();
$errorModel->insertError( $errorModel->insertError(
$datos_entrada['id'], $datos_entrada['id'],
@ -1948,7 +1948,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($servDefectoMan as $servicio) { foreach ($servDefectoMan as $servicio) {
if ($servicio->total <= 0) { if ($servicio->total <= 0) {
$input_data['servicios'] = $servDefecto; $input_data['servicios'] = $servDefectoMan;
$errorModel = new ErrorPresupuesto(); $errorModel = new ErrorPresupuesto();
$errorModel->insertError( $errorModel->insertError(
$datos_entrada['id'], $datos_entrada['id'],

View File

@ -362,7 +362,7 @@ return [
'sin_gramaje' => "Seleccione gramaje", 'sin_gramaje' => "Seleccione gramaje",
'tipo_cubierta' => 'Seleccione tipo de cubierta', 'tipo_cubierta' => 'Seleccione tipo de cubierta',
'opcion_solapas' => 'Seleccione la opción para las solapas', 'opcion_solapas' => 'Seleccione la opción para las solapas',
'paginas_cosido' => 'El número de páginas para <b>cosido</b> debe ser múltiplo de 4', 'paginas_multiplo_4' => 'El número de páginas para <b>cosido</b> o <b>grapado</b> debe ser múltiplo de 4',
'paginas_pares' => 'El número de páginas debe ser par', 'paginas_pares' => 'El número de páginas debe ser par',
], ],

View File

@ -15,7 +15,7 @@ class MaquinaModel extends \App\Models\BaseModel
const SORTABLE = [ const SORTABLE = [
0 => "t1.id", 0 => "t1.id",
1 => "t2.nombre", 1 => "t1.nombre",
2 => "t1.tipo", 2 => "t1.tipo",
3 => "t1.ancho_impresion", 3 => "t1.ancho_impresion",
4 => "t1.alto_impresion", 4 => "t1.alto_impresion",

View File

@ -330,17 +330,19 @@ class DatosGenerales {
divTipoLibro.find('.fv-plugins-message-container').remove(); divTipoLibro.find('.fv-plugins-message-container').remove();
if ($('.tipo-libro.selected').length > 0) { if ($('.tipo-libro.selected').length > 0) {
if ($('#cosido').hasClass('selected')) { if ($('#cosido').hasClass('selected') || $('#grapado').hasClass('selected')) {
const value = parseInt($("#paginas").val()); const value = parseInt($("#paginas").val());
if (value % 4 != 0) { if (value % 4 != 0) {
divTipoLibro.append(` divTipoLibro.append(`
<div class="fv-plugins-message-container invalid-feedback"> <div class="fv-plugins-message-container invalid-feedback">
<div data-field="div_tipo_libro" data-validator="callback" style="margin-top: 50px;"> <div data-field="div_tipo_libro" data-validator="callback" style="margin-top: 50px;">
${window.translations["validation"].paginas_cosido} ${window.translations["validation"].paginas_multiplo_4}
</div> </div>
</div> </div>
`); `);
return false;
} }
return true;
} }
return true; return true;
@ -353,8 +355,9 @@ class DatosGenerales {
</div> </div>
</div> </div>
`); `);
return false;
} }
return false;
}, },
} }
} }
@ -583,6 +586,10 @@ class DatosGenerales {
this.tiposLibro.removeClass('selected'); this.tiposLibro.removeClass('selected');
this.tiposLibro.find('.image-presupuesto').removeClass('selected'); this.tiposLibro.find('.image-presupuesto').removeClass('selected');
this.domItem.find('#' + datos.tipo).addClass('selected'); this.domItem.find('#' + datos.tipo).addClass('selected');
if(datos.tipo == 'cosido'){
this.divPaginasCuaderillo.removeClass('d-none');
}
} }
this.prototipo.prop('checked', datos.prototipo); this.prototipo.prop('checked', datos.prototipo);
@ -726,6 +733,8 @@ class DatosGenerales {
} }
} }
this.checkPaginasMultiplo4();
// Para recalcular el presupuesto // Para recalcular el presupuesto
$('#divGramajeInterior').empty(); $('#divGramajeInterior').empty();
$('#divGramajeInteriorColor').empty(); $('#divGramajeInteriorColor').empty();
@ -789,6 +798,29 @@ class DatosGenerales {
this.divPaginasColorConsecutivas.removeClass('d-none'); this.divPaginasColorConsecutivas.removeClass('d-none');
this.divPosPaginasColor.removeClass('d-none'); this.divPosPaginasColor.removeClass('d-none');
} }
this.checkPaginasMultiplo4();
}
checkPaginasMultiplo4(){
const divTipoLibro = $('#divTipoLibro'); // Selecciona el div
divTipoLibro.find('.fv-plugins-message-container').remove();
if ($('#cosido').hasClass('selected') || $('#grapado').hasClass('selected')) {
const value = parseInt($("#paginas").val());
if (value % 4 != 0) {
divTipoLibro.append(`
<div class="fv-plugins-message-container invalid-feedback">
<div data-field="div_tipo_libro" data-validator="callback" style="margin-top: 50px;">
${window.translations["validation"].paginas_multiplo_4}
</div>
</div>
`);
return false;
}
}
return true;
} }

View File

@ -30,6 +30,8 @@ class Direcciones {
this.direcciones = []; this.direcciones = [];
this.tiradaSeleccionada = null;
this.direcciones.calcularPresupuesto = false; this.direcciones.calcularPresupuesto = false;
this.initValidation(); this.initValidation();
@ -49,7 +51,7 @@ class Direcciones {
this.direcciones = []; this.direcciones = [];
$('.div-direcciones').addClass('d-none'); $('.div-direcciones').addClass('d-none');
} }
else{ else {
$('.div-direcciones').removeClass('d-none'); $('.div-direcciones').removeClass('d-none');
} }
}); });
@ -88,6 +90,7 @@ class Direcciones {
if (datos.entrega_taller == 1) { if (datos.entrega_taller == 1) {
this.recogidaTaller.prop('checked', true); this.recogidaTaller.prop('checked', true);
this.recogidaTaller.trigger('change');
} }
else { else {
@ -103,13 +106,7 @@ class Direcciones {
let id = datos[i].id; let id = datos[i].id;
let unidades = datos[i].unidades; let unidades = datos[i].unidades;
let entregaPalets = datos[i].palets; let entregaPalets = datos[i].palets;
let divId = "dirEnvio-1";
let direccionesActuales = this.divDirecciones.find('.direccion-cliente');
if (direccionesActuales.length > 0) {
// the the lass item
let last = direccionesActuales[direccionesActuales.length - 1];
divId = "dirEnvio-" + (parseInt(last.id.split('-')[1]) + 1);
}
if (id == null || id <= 0 || id == undefined) if (id == null || id <= 0 || id == undefined)
return; return;
@ -118,6 +115,13 @@ class Direcciones {
let peticion = new Ajax('/misdirecciones/getDireccionPresupuesto/' + id, {}, {}, let peticion = new Ajax('/misdirecciones/getDireccionPresupuesto/' + id, {}, {},
(response) => { (response) => {
let divId = "dirEnvio-1";
let direccionesActuales = this.divDirecciones.find('.direccion-cliente');
if (direccionesActuales.length > 0) {
// the the lass item
let last = direccionesActuales[direccionesActuales.length - 1];
divId = "dirEnvio-" + (parseInt(last.id.split('-')[1]) + 1);
}
let tarjeta = new tarjetaDireccion(this.divDirecciones, divId, response.data[0]); let tarjeta = new tarjetaDireccion(this.divDirecciones, divId, response.data[0]);
tarjeta.setUnidades(unidades); tarjeta.setUnidades(unidades);
tarjeta.setEntregaPalets(entregaPalets); tarjeta.setEntregaPalets(entregaPalets);
@ -214,7 +218,7 @@ class Direcciones {
let customOption = tarjeta.card.find('.check-tirada-envio'); let customOption = tarjeta.card.find('.check-tirada-envio');
customOption.on('click', function () { customOption.on('click', function () {
self.#handleTiradaEnvio(customOption); self.#handleTiradaEnvio(customOption, self);
}); });
} }
@ -255,7 +259,7 @@ class Direcciones {
dialog.init(); dialog.init();
} }
#handleTiradaEnvio(customOption) { #handleTiradaEnvio(customOption, self) {
const el = customOption[0]; const el = customOption[0];
@ -268,6 +272,7 @@ class Direcciones {
}) })
} }
el.closest('.custom-option').classList.add('checked') el.closest('.custom-option').classList.add('checked')
self.tiradaSeleccionada = parseInt(el.getAttribute('tirada'));
} else { } else {
el.closest('.custom-option').classList.remove('checked') el.closest('.custom-option').classList.remove('checked')
} }

View File

@ -211,11 +211,19 @@ class PresupuestoCliente {
let datos_to_check = this.#prepareData(); let datos_to_check = this.#prepareData();
if (Object.values(datos_to_check).every(this.#isValidDataForm)) { if (Object.values(datos_to_check).every(this.#isValidDataForm)) {
try { try {
if (!this.datosGenerales.checkPaginasMultiplo4()) {
popErrorAlert("Compruebe que todos los campos son correctos.");
return;
}
setTimeout(function () { setTimeout(function () {
$('#loader').modal('show'); $('#loader').modal('show');
}, 0); }, 0);
// Si se está ejecutando la petición, abortar la petición anterior // Si se está ejecutando la petición, abortar la petición anterior
this.ajax_calcular.abort(); this.ajax_calcular.abort();
@ -453,6 +461,12 @@ class PresupuestoCliente {
return; return;
} }
if (!this.datosGenerales.checkPaginasMultiplo4()) {
popErrorAlert("Compruebe que todos los campos son correctos.");
$('#loader').modal('hide');
return;
}
this.#getDatos(true); this.#getDatos(true);
if (confirmar) { if (confirmar) {
@ -536,10 +550,11 @@ class PresupuestoCliente {
} }
} }
this.lc.val(parseFloat(response.info.lomo_cubierta).toFixed(2)); this.lc.val(parseFloat(response.info.lomo_cubierta).toFixed(2));
this.lsc.val(parseFloat(response.info.lomo_sobrecubierta).toFixed(2)); this.lsc.val(parseFloat(response.info.lomo_sobrecubierta).toFixed(2));
setTimeout(() => { setTimeout(() => {
$(`#containerTiradasEnvios .tirada-envio input[tirada="${response.tiradas[0]}"]`).trigger('click'); $(`#containerTiradasEnvios .tirada-envio input[tirada="${this.direcciones.tiradaSeleccionada}"]`).trigger('click');
}, 0); }, 0);
} }
$('#loader').modal('hide'); $('#loader').modal('hide');

View File

@ -301,10 +301,8 @@ class Resumen {
return parseInt($(this).find('.tarjeta-tiradas-precios-tirada').attr('data')) == unidades; return parseInt($(this).find('.tarjeta-tiradas-precios-tirada').attr('data')) == unidades;
}); });
let precio_u_text = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio-unidad').text(); let precio_u_text = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio-unidad').text();
precio_u_text = precio_u_text.replace('€/u', ''); precio_u_text = precio_u_text.replace('€/ud', '');
precio_u_text = this.#changeDecimalFormat(precio_u_text);
const base = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio').attr('data'); const base = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio').attr('data');
let base_text = this.#changeDecimalFormat(base); let base_text = this.#changeDecimalFormat(base);