diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 17b56c6d..5e17c30e 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -793,7 +793,7 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController else $error->sobrecubierta = ""; - $tarifaAcabadoSobrecubierta = intval($sobreCubierta->acabado ?? 0); + $tarifaAcabadoSobrecubierta = intval(strlen($sobreCubierta['acabado'])==0 ? 0:$sobreCubierta['acabado']); $acabadoSobrecubierta = []; if($tarifaAcabadoSobrecubierta > 0){ $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); @@ -805,6 +805,45 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController $coste_servicios += floatval($acabadoSobrecubierta[0]->total); } } + + //Guardas + if($reqData['guardas'] ?? 0 > 0){ + + $guardas = $reqData['guardas']; + $papel_generico = [ + 'id' => $guardas['papel'] ?? 0, + 'nombre' => $guardas['nombre'] ?? "", + ]; + $input_data['papel_generico'] = $papel_generico; + $input_data['gramaje'] = $guardas['gramaje'] ?? 0; + $input_data['datosPedido']->paginas = 8; + $input_data['paginas_color'] = 8; + $input_data['datosPedido']->paginas_impresion = $guardas['caras'] ?? 0; + $input_data['datosPedido']->solapas_ancho = 0; + $input_data['datosPedido']->solapas = 0; + $input_data['isColor'] = 1; + $input_data['isHq'] = 1; + $input_data['uso'] = 'guardas'; + + // Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico + // y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral + // o wire-o tapa dura, las guardas se imprimen como hojas sueltas + if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { + $input_data['datosPedido']->isCosido = true; + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + $input_data['datosPedido']->isCosido = false; + } + + $guardas = PresupuestoClienteService::obtenerGuardas($input_data); + $coste_guardas = 0.0; + if (count($guardas) > 0) { + $coste_guardas += floatval($guardas['total_impresion']); + } + if($coste_guardas <= 0) + $error->guardas = lang('Presupuestos.errores.noGuardas'); + else + $error->guardas = ""; + } // Servicios defecto $servDefecto = PresupuestoCLienteService::getServiciosEncuadernacionDefault([ @@ -814,7 +853,7 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController 'ancho' => $datosPedido->ancho, 'alto' => $datosPedido->alto, 'POD' => $POD, - 'solapas' => intval($reqData['solapasCubierta'] ?? 0), + 'solapas' => intval($reqData['solapasCubierta'] ?? 0)>0?1:0, ]); $costeServiciosDefecto = 0.0; foreach ($servDefecto as $servicio) { @@ -831,6 +870,9 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController } } + if($reqData['guardas'] ?? 0 > 0){ + } + return [ 'errors' => $error, 'total_lp' => $costeInterior+$coste_cubierta+$coste_sobrecubierta, @@ -842,6 +884,7 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController 'interior' => $interior, 'cubierta' => $cubierta, 'sobrecubierta' => $linea_sobrecubierta, + 'guardas' => $guardas, 'serviciosDefecto' => $servDefecto, ]; } diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php index f0b6d1ac..39d4e686 100644 --- a/ci4/app/Services/PresupuestoClienteService.php +++ b/ci4/app/Services/PresupuestoClienteService.php @@ -146,6 +146,56 @@ class PresupuestoClienteService extends BaseService return $lineas_sobrecubierta; } + public static function obtenerGuardas($data) + { + + $uso = $data['uso']; + $tipo_impresion_id = $data['tipo_impresion_id']; + $datosPedido = $data['datosPedido']; + $papel_generico = $data['papel_generico']; + $gramaje = $data['gramaje']; + $isColor = $data['isColor']; + $isHq = $data['isHq']; + $cliente_id = $data['cliente_id']; + + $lineas_guardas = []; + + for ($i = 0; $i < 2; $i++) { + + $lineas = PresupuestoService::obtenerComparadorPlana([ + 'uso' => $uso, + 'tipo_impresion_id' => $tipo_impresion_id, + 'datosPedido' => $datosPedido, + 'papel_generico' => $papel_generico, + 'gramaje' => $gramaje, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'cliente_id' => $cliente_id, + 'a_favor_fibra' => $i + ]); + + if (count($lineas) > 0) { + $lineas_guardas = array_merge($lineas_guardas, $lineas); + } + } + if (count($lineas_guardas) > 0) { + + usort( + $lineas_guardas, + function ($a, $b) { + $result = 0; + if (floatval($a['fields']['total_impresion']) > floatval($b['fields']['total_impresion'])) + $result = 1; + else if (floatval($a['fields']['total_impresion']) < floatval($b['fields']['total_impresion'])) + $result = -1; + return $result; + } + ); + $lineas_guardas = $lineas_guardas[0]['fields']; + $lineas_guardas['tipo_linea'] = 'lp_guardas'; + } + return $lineas_guardas; + } /** * Obtiene las lineas de plana en el presupuesto de cliente diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cliente/_disenioLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cliente/_disenioLibroItems.php index 8b38c13b..845124dd 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cliente/_disenioLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cliente/_disenioLibroItems.php @@ -392,7 +392,7 @@
Se ha producido un error al calcular el presupuesto. Póngase en contacto con el administrador
+