diff --git a/ci4/app/Controllers/Configuracion/Papelesgenericos.php b/ci4/app/Controllers/Configuracion/Papelesgenericos.php index 861131df..391e5ee8 100755 --- a/ci4/app/Controllers/Configuracion/Papelesgenericos.php +++ b/ci4/app/Controllers/Configuracion/Papelesgenericos.php @@ -276,7 +276,7 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController $onlyActiveOnes = false; $columns2select = [$reqId ?? 'id', $reqText ?? 'nombre']; $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->id = ''; $nonItem->text = '- ' . lang('Basic.global.None') . ' -'; diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php index d3da2fad..fb3a0363 100755 --- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php @@ -417,7 +417,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController if (!empty($selId)) : $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)) : $data[$selId] = $selOption[0]; endif; diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index f0c688c7..e37f22d1 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -997,9 +997,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } - foreach ($resultado_presupuesto['info']['serviciosDefecto'] as $servicio) { + foreach ($resultado_presupuesto['info']['serviciosDefecto']['encuadernacion'] as $servicio) { $this->guardarServicio($id, $servicio, 'encuadernacion'); } + foreach ($resultado_presupuesto['info']['serviciosDefecto']['manipulado'] as $servicio) { + $this->guardarServicio($id, $servicio, 'manipulado'); + } foreach ($resultado_presupuesto['info']['servicios_automaticos'] as $servicio) { if ($servicio->tarifa_id == 3 || $servicio->tarifa_id == 5 || $servicio->tarifa_id == 16) { // Servicios acabado @@ -1124,7 +1127,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController [$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] = $this->getPaginas($lineas); - if (intval($presupuesto->envios_recoge_cliente) == 1) { + if (intval($presupuesto->recoger_en_taller) == 1) { $data['direcciones']['entrega_taller'] = 1; } else { $data['direcciones']['entrega_taller'] = 0; @@ -1894,7 +1897,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } // Servicios defecto - $servDefecto = PresupuestoCLienteService::getServiciosEncuadernacionDefault([ + $costeServiciosDefecto = 0.0; + $servDefectoEnc = PresupuestoCLienteService::getServiciosEncuadernacionDefault([ 'tipo_impresion_id' => $tipo_impresion_id, 'tirada' => $datosPedido->tirada, 'paginas' => intval($paginas) ?? 0, @@ -1905,13 +1909,46 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'paginasCuadernillo' => $paginasCuadernillo, ]); - - - $costeServiciosDefecto = 0.0; - foreach ($servDefecto as $servicio) { + + foreach ($servDefectoEnc as $servicio) { if ($servicio->total <= 0) { - $input_data['servicios'] = $servDefecto; + $input_data['servicios'] = $servDefectoEnc; + $errorModel = new ErrorPresupuesto(); + $errorModel->insertError( + $datos_entrada['id'], + auth()->user()->id, + 'No se puede obtener servicios', + $input_data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } + + + $costeServiciosDefecto += floatval($servicio->total); + if ($extra_info) { + $totalServicios += floatval($servicio->total); + $margenServicios += floatval($servicio->total) * floatval($servicio->margen) / 100.0; + } + } + + $servDefectoMan = PresupuestoCLienteService::getServiciosManipuladoDefault([ + 'tipo_impresion_id' => $tipo_impresion_id, + 'tirada' => $datosPedido->tirada, + 'POD' => $POD, + 'solapas' => intval($solapasCubierta) > 0 ? 1 : 0, + ]); + + + foreach ($servDefectoMan as $servicio) { + if ($servicio->total <= 0) { + + $input_data['servicios'] = $servDefectoMan; $errorModel = new ErrorPresupuesto(); $errorModel->insertError( $datos_entrada['id'], @@ -2116,7 +2153,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $return_data['info']['cubierta'] = $cubierta; $return_data['info']['sobrecubierta'] = $linea_sobrecubierta; $return_data['info']['guardas'] = $guardas; - $return_data['info']['serviciosDefecto'] = $servDefecto; + $return_data['info']['serviciosDefecto']['encuadernacion'] = $servDefectoEnc; + $return_data['info']['serviciosDefecto']['manipulado'] = $servDefectoMan; $return_data['info']['servicios_automaticos'] = $serviciosAutomaticos; } } diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index fee02953..b9bcfc34 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -361,7 +361,7 @@ return [ 'sin_gramaje' => "Seleccione gramaje", 'tipo_cubierta' => 'Seleccione tipo de cubierta', 'opcion_solapas' => 'Seleccione la opción para las solapas', - 'paginas_cosido' => 'El número de páginas para cosido debe ser múltiplo de 4', + 'paginas_multiplo_4' => 'El número de páginas para cosido o grapado debe ser múltiplo de 4', 'paginas_pares' => 'El número de páginas debe ser par', ], diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 86c0a2fd..c1f5424b 100755 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -15,7 +15,7 @@ class MaquinaModel extends \App\Models\BaseModel const SORTABLE = [ 0 => "t1.id", - 1 => "t2.nombre", + 1 => "t1.nombre", 2 => "t1.tipo", 3 => "t1.ancho_impresion", 4 => "t1.alto_impresion", diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php index d066937d..2868f4bf 100644 --- a/ci4/app/Services/PresupuestoClienteService.php +++ b/ci4/app/Services/PresupuestoClienteService.php @@ -419,12 +419,14 @@ class PresupuestoClienteService extends BaseService public static function getServiciosManipuladoDefault($data) { + $tipo_impresion_id = $data['tipo_impresion_id'] ?? -1; $tirada = $data['tirada'] ?? -1; - $anchoDesarrollo = $data['anchoDesarrollo'] ?? -1; + $POD = $data['POD'] ?? -1; + $solapas = $data['solapas'] ?? -1; - /*$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); - $values = $model->initPresupuesto($tipo_impresion_id, $solapas, $tirada, $paginas, $ancho, $alto, $POD, $paginasCuadernillo);*/ - //return $values; + $model = model('App\Models\Presupuestos\PresupuestoManipuladosModel'); + $values = $model->initPresupuesto($tipo_impresion_id, $solapas, $tirada, $POD); + return $values; } public static function getServiciosManipulado($data) diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js index 5cb58bd9..28f5a068 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js @@ -330,17 +330,18 @@ class DatosGenerales { divTipoLibro.find('.fv-plugins-message-container').remove(); if ($('.tipo-libro.selected').length > 0) { - if ($('#cosido').hasClass('selected')) { + if ($('#cosido').hasClass('selected') || $('#grapado').hasClass('selected')) { const value = parseInt($("#paginas").val()); if (value % 4 != 0) { divTipoLibro.append(`
`); } + return false; } return true; @@ -583,6 +584,10 @@ class DatosGenerales { this.tiposLibro.removeClass('selected'); this.tiposLibro.find('.image-presupuesto').removeClass('selected'); this.domItem.find('#' + datos.tipo).addClass('selected'); + + if(datos.tipo == 'cosido'){ + this.divPaginasCuaderillo.removeClass('d-none'); + } } this.prototipo.prop('checked', datos.prototipo); @@ -726,6 +731,8 @@ class DatosGenerales { } } + this.checkPaginasMultiplo4(); + // Para recalcular el presupuesto $('#divGramajeInterior').empty(); $('#divGramajeInteriorColor').empty(); @@ -789,6 +796,29 @@ class DatosGenerales { this.divPaginasColorConsecutivas.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(` + + `); + return false; + } + } + return true; } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js index c3a67490..869c33e3 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js @@ -88,6 +88,7 @@ class Direcciones { if (datos.entrega_taller == 1) { this.recogidaTaller.prop('checked', true); + this.recogidaTaller.trigger('change'); } else { diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index 674176cf..9075122b 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -211,11 +211,19 @@ class PresupuestoCliente { let datos_to_check = this.#prepareData(); if (Object.values(datos_to_check).every(this.#isValidDataForm)) { + try { + if (!this.datosGenerales.checkPaginasMultiplo4()) { + popErrorAlert("Compruebe que todos los campos son correctos."); + return; + } + setTimeout(function () { $('#loader').modal('show'); }, 0); + + // Si se está ejecutando la petición, abortar la petición anterior this.ajax_calcular.abort(); @@ -453,6 +461,12 @@ class PresupuestoCliente { return; } + if ($('.invalid-feedback').length > 0) { + popErrorAlert("Compruebe que todos los campos son correctos."); + $('#loader').modal('hide'); + return; + } + this.#getDatos(true); if (confirmar) { diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js index cb2b523a..62fae0d8 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js @@ -301,10 +301,8 @@ class Resumen { return parseInt($(this).find('.tarjeta-tiradas-precios-tirada').attr('data')) == unidades; }); - let precio_u_text = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio-unidad').text(); - precio_u_text = precio_u_text.replace('€/u', ''); - precio_u_text = this.#changeDecimalFormat(precio_u_text); + precio_u_text = precio_u_text.replace('€/ud', ''); const base = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio').attr('data'); let base_text = this.#changeDecimalFormat(base);