sobrecubierta

This commit is contained in:
jaimejimenezortega
2024-05-02 22:53:54 +02:00
parent 2ba6f40c6d
commit c6f365e122
6 changed files with 12775 additions and 2 deletions

View File

@ -635,7 +635,9 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController
'cubierta' => "",
'sobrecubierta' => "",
'guardas' => "",
'serviciosDefecto' => "",
];
$coste_servicios = 0.0;
$POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD();
@ -741,16 +743,96 @@ class Presupuestocliente extends \App\Controllers\GoBaseResourceController
else
$error->cubierta = "";
$tarifaAcabadoCubierta = intval($reqData['acabadoCubierta'] ?? 0);
$acabadoCubierta = [];
if($tarifaAcabadoCubierta > 0){
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoCubierta = $model->getPrecioTarifa($tarifaAcabadoCubierta, $datosPedido->tirada, $POD);
}
if(count($acabadoCubierta) > 0){
if($acabadoCubierta[0]->total <= 0 )
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
$coste_servicios += floatval($acabadoCubierta[0]->total);
}
// Sobrecubierta
$sobreCubierta = $reqData["sobreCubierta"] ?? null;
if(!is_null($sobreCubierta)){
$papel_generico = [
'id' => $reqData['papelCubierta'] ?? 0,
'nombre' => $reqData['papelCubiertaNombre'] ?? "",
];
$input_data['papel_generico'] = $papel_generico;
$input_data['gramaje'] = $reqData['gramajeCubierta'] ?? 0;
$input_data['datosPedido']->paginas = intval($reqData['carasCubierta'] ?? 0);
$input_data['paginas_color'] = intval($reqData['carasCubierta'] ?? 0);
$input_data['datosPedido']->solapas_ancho = intval($reqData['solapasCubierta'] ?? 0);
$input_data['datosPedido']->solapas = $input_data['datosPedido']->solapas_ancho>0 ? 1 : 0;
$input_data['datosPedido']->lomo = $this->calcular_lomo($interior, 0);
$input_data['isColor'] = 1;
$input_data['isHq'] = 1;
$input_data['uso'] = 'cubierta';
$cubierta = PresupuestoClienteService::obtenerCubierta($input_data);
$coste_cubierta = 0.0;
if (count($cubierta) > 0) {
$coste_cubierta += floatval($cubierta['total_impresion']);
}
if($coste_cubierta <= 0)
$error->cubierta = lang('Presupuestos.errores.noCubierta');
else
$error->cubierta = "";
$tarifaAcabadoCubierta = intval($reqData['acabadoCubierta'] ?? 0);
$acabadoCubierta = [];
if($tarifaAcabadoCubierta > 0){
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoCubierta = $model->getPrecioTarifa($tarifaAcabadoCubierta, $datosPedido->tirada, $POD);
}
if(count($acabadoCubierta) > 0){
if($acabadoCubierta[0]->total <= 0 )
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
$coste_servicios += floatval($acabadoCubierta[0]->total);
}
}
// Servicios defecto
$servDefecto = PresupuestoCLienteService::getServiciosEncuadernacionDefault([
'tipo_impresion_id' => $tipo_impresion_id,
'tirada' => $datosPedido->tirada,
'paginas' => intval($reqData['paginas']) ?? 0,
'ancho' => $datosPedido->ancho,
'alto' => $datosPedido->alto,
'POD' => $POD,
'solapas' => intval($reqData['solapasCubierta'] ?? 0),
]);
$costeServiciosDefecto = 0.0;
foreach ($servDefecto as $servicio) {
if($servicio->total <= 0 )
$error->serviciosDefecto = lang('Presupuestos.errores.errorPresupuesto');
$costeServiciosDefecto += floatval($servicio->total);
}
$precio_u = round(($costeInterior + $coste_cubierta + $costeServiciosDefecto + $coste_servicios)/$tirada[0], 4);
return [
'errors' => $error,
'total_lp' => $costeInterior+$coste_cubierta,
'acabadoCubierta' => $acabadoCubierta,
'total_servicios_defecto' => $costeServiciosDefecto,
'tiradas' => $tirada,
'precio_u' => [$precio_u],
'interior' => $interior,
'cubierta' => $cubierta,
'serviciosDefecto' => $servDefecto,
];
}
protected function calcular_lomo($lineas, $lomo_inicial){
$lomo = $lomo_inicial;
foreach ($lineas as $linea) {

View File

@ -299,6 +299,7 @@ return [
'tirada_alt_duplicada' => 'Ya existe una tirada alternativa para ese valor',
'tirada_alt_tipo' => 'No se puede calcular una tirada alternativa POD para una presupuesto no POD o viceversa',
'noInterior' => 'No se hay resultados para el interior',
'errorPresupuesto' => 'Se ha producido un error al calcular el presupuesto. Póngase en contacto con el administrador',
],
];

View File

@ -8,6 +8,7 @@ use CodeIgniter\Config\BaseService;
use App\Services\PresupuestoService;
class PresupuestoClienteService extends BaseService
{
public static function obtenerInterior($data)
@ -213,6 +214,20 @@ class PresupuestoClienteService extends BaseService
return [$linea_negro_plana, $linea_color_plana];
}
public static function getServiciosEncuadernacionDefault($data){
$tipo_impresion_id = $data['tipo_impresion_id'] ?? -1;
$tirada = $data['tirada'] ?? -1;
$paginas = $data['paginas'] ?? -1;
$ancho = $data['ancho'] ?? -1;
$alto = $data['alto'] ?? -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);
return $values;
}
/**
* Obtiene las lineas de rotativa en el presupuesto de cliente

View File

@ -195,8 +195,12 @@ $('.change-tipo-impresion').on('change', function () {
dropdown.val('').trigger('change');
$('#gramajeInterior').val('').trigger('change');
});
$('#tirada').on('change', function () {
const valInterior = $('#gramajeInterior option:selected').val();
@ -631,19 +635,44 @@ async function calcularPresupuesto() {
type: 'POST',
data: datos,
success: function (response) {
if(response.errors.interior.length > 0)
error = false;
if(response.errors.interior.length > 0){
$('#errorInterior').show();
error = true;
}
else
$('#errorInterior').hide();
if(response.errors.cubierta.length > 0)
if(response.errors.cubierta.length > 0){
$('#errorCubierta').show();
error = true;
}
else
$('#errorCubierta').hide();
if(response.errors.servicios.length > 0 || response.errors.serviciosDefecto.length > 0){
error = true;
}
console.log(response);
$('#loader').hide();
if(error){
$('#precios > tbody').empty();
$('#precios').hide();
}
else{
$('#precios > tbody').empty();
for (i = 0; i < response.tiradas.length; i++) {
$('#precios > tbody').append('<tr class="table-light"><td>' + response.tiradas[i] + '</td><td>' + response.precio_u[i] + '€</td></tr>');
}
$('#precios').show();
}
},
error: function (error) {
$('#loader').hide();
$('#precios > tbody').empty();
$('#precios').hide();
}
});
}

View File

@ -60,6 +60,20 @@
</span>
</button>
</div>
<table id="precios" class="table table-sm" style="display: none;">
<caption>Precio/Unidad por tirada</caption>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="bs-stepper-content">

12632
xdebug.log

File diff suppressed because one or more lines are too long