diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 8ffaac81..357dddb2 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1290,37 +1290,55 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController // Servicios if ($sobrecubierta) { if (intval($sobrecubierta['acabado']) > 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $servicio = $model->getPrecioTarifa(intval($sobrecubierta['acabado']), intval($selected_tirada), -1, $POD); - if (count($servicio) > 0) { - if ($servicio[0]->total > 0) { - $this->guardarServicio($id, $servicio[0], 'acabado', false, true); + $modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel'); + $serviciosAcabado = $modelServicioAcabado->getTarifasForServicio($sobrecubierta['acabado']); + + foreach ($serviciosAcabado as $service) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD); + + if (count($servicio) > 0) { + if ($servicio[0]->total > 0) { + $this->guardarServicio($id, $servicio[0], 'acabado', false, true); + } } } } } if (intval($cubierta['acabado']) > 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $servicio = $model->getPrecioTarifa(intval($cubierta['acabado']), intval($selected_tirada), -1, $POD); - if (count($servicio) > 0) { - if ($servicio[0]->total > 0) { - $this->guardarServicio($id, $servicio[0], 'acabado', true, false); + $modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel'); + $serviciosAcabado = $modelServicioAcabado->getTarifasForServicio($sobrecubierta['acabado']); + + foreach ($serviciosAcabado as $service) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD); + + if (count($servicio) > 0) { + if ($servicio[0]->total > 0) { + $this->guardarServicio($id, $servicio[0], 'acabado', true, false); + } } } + } if (is_array($faja) && $faja !== [] && intval($faja['acabado']) > 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD); - if (count($servicio) > 0) { - if ($servicio[0]->total > 0) { - $this->guardarServicio($id, $servicio[0], 'acabado', false, false, true); + $modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel'); + $serviciosAcabado = $modelServicioAcabado->getTarifasForServicio($faja['acabado']); + + foreach ($serviciosAcabado as $service) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $servicio = $model->getPrecioTarifa(intval($service), intval($selected_tirada), -1, $POD); + + if (count($servicio) > 0) { + if ($servicio[0]->total > 0) { + $this->guardarServicio($id, $servicio[0], 'acabado', false, false, true); + } } } - } foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) { $this->guardarServicio($id, $servicio, 'encuadernacion'); @@ -1415,10 +1433,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'url' => site_url('presupuestos/presupuestocliente/edit'), 'message' => lang('Basic.global.saveSuccess', [lang('Basic.global.record')]), ]); - }else{ + } else { return [ 'sk_id' => $id, - 'sk_url' => site_url('presupuestos/presupuestocliente/edit/' . $id) + 'sk_url' => site_url('presupuestos/presupuestocliente/edit/' . $id) ]; } } @@ -1439,7 +1457,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['lsc'] = $presupuesto->lomo_sobrecubierta; $data['eb'] = $presupuesto->envio_base; $data['state'] = intval($presupuesto->estado_id); - if($presupuesto->estado_id == 2){ // confirmado + if ($presupuesto->estado_id == 2) { // confirmado $data['datosGenerales']['selectedTirada'] = $presupuesto->tirada; } $data['datosGenerales']['titulo'] = $presupuesto->titulo; @@ -1492,7 +1510,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['cubierta']['solapas'] = $presupuesto->solapas ? 1 : 0; $data['cubierta']['solapas_ancho'] = $presupuesto->solapas_ancho; $data['cubierta']['cabezada'] = $presupuesto->cabezada; - $modelAcabado = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel"); + $modelAcabado = model("App\Models\Tarifas\Acabados\ServicioAcabadoModel"); $data['cubierta']['acabado']['id'] = $presupuesto->acabado_cubierta_id; if ($presupuesto->acabado_cubierta_id == 0) { $data['cubierta']['acabado']['text'] = "Ninguno"; @@ -2127,36 +2145,41 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController // Acabado Cubierta if (intval($datos_entrada['cubierta']['acabado']) != 0) { + $modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel'); + $serviciosAcabado = $modelServicioAcabado->getTarifasForServicio(intval($datos_entrada['cubierta']['acabado'])); - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $acabadoCubierta = $model->getPrecioTarifa(intval($datos_entrada['cubierta']['acabado']), $datosPedido->tirada, -1, $POD); + foreach ($serviciosAcabado as $servicio) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $acabadoCubierta = $model->getPrecioTarifa(intval($servicio), $datosPedido->tirada, -1, $POD); - if (count($acabadoCubierta) > 0) { - if ($acabadoCubierta[0]->total <= 0) { + if (count($acabadoCubierta) > 0) { + if ($acabadoCubierta[0]->total <= 0) { - $input_data['tarifas_acabado_cubierta'] = intval($datos_entrada['cubierta']['acabado']); - $errorModel = new ErrorPresupuesto(); - $errorModel->insertError( - $datos_entrada['id'], - auth()->user()->id, - 'No se puede obtener acabados de cubierta', - $input_data - ); - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } - $coste_servicios += round(floatval($acabadoCubierta[0]->total), 2); - if ($extra_info) { - $totalServicios += round(floatval($acabadoCubierta[0]->total), 2); - $base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; - $margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2); + $input_data['tarifas_acabado_cubierta'] = intval($servicio); + $errorModel = new ErrorPresupuesto(); + $errorModel->insertError( + $datos_entrada['id'], + auth()->user()->id, + 'No se puede obtener acabados de cubierta', + $input_data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } + $coste_servicios += round(floatval($acabadoCubierta[0]->total), 2); + if ($extra_info) { + $totalServicios += round(floatval($acabadoCubierta[0]->total), 2); + $base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2); + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; + $margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2); + } } } + } @@ -2217,35 +2240,40 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController // Acabado sobrecubierta if (intval($datos_entrada['sobrecubierta']['acabado']) != 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $acabadoSobrecubierta = $model->getPrecioTarifa(intval($datos_entrada['sobrecubierta']['acabado']), $datosPedido->tirada, -1, $POD); + $modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel'); + $serviciosAcabado = $modelServicioAcabado->getTarifasForServicio(intval($datos_entrada['sobrecubierta']['acabado'])); - if (count($acabadoSobrecubierta) > 0) { + foreach ($serviciosAcabado as $servicio) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $acabadoSobrecubierta = $model->getPrecioTarifa(intval($servicio), $datosPedido->tirada, -1, $POD); - if ($acabadoSobrecubierta[0]->total <= 0) { + if (count($acabadoSobrecubierta) > 0) { - $input_data['tarifas_acabado_sobrecubierta'] = intval($datos_entrada['sobrecubierta']['acabado']); - $errorModel = new ErrorPresupuesto(); - $errorModel->insertError( - $datos_entrada['id'], - auth()->user()->id, - 'No se puede obtener acabados de sobrecubierta', - $input_data - ); - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } + if ($acabadoSobrecubierta[0]->total <= 0) { - $coste_servicios += round(floatval($acabadoSobrecubierta[0]->total), 2); - if ($extra_info) { - $totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2); - $base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; - $margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2); + $input_data['tarifas_acabado_sobrecubierta'] = intval($servicio); + $errorModel = new ErrorPresupuesto(); + $errorModel->insertError( + $datos_entrada['id'], + auth()->user()->id, + 'No se puede obtener acabados de sobrecubierta', + $input_data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } + + $coste_servicios += round(floatval($acabadoSobrecubierta[0]->total), 2); + if ($extra_info) { + $totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2); + $base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2); + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; + $margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2); + } } } } @@ -2370,14 +2398,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController // Acabado faja if (intval($faja['acabado']) != 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $acabadoFaja = $model->getPrecioTarifa(intval($faja['acabado']), $datosPedido->tirada, -1, $POD); + $modelServicioAcabado = model('App\Models\Tarifas\Acabados\TarifasAcabadoServiciosAcabadoModel'); + $serviciosAcabado = $modelServicioAcabado->getTarifasForServicio(intval($faja['acabado'])); + + foreach ($serviciosAcabado as $servicio) + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $acabadoFaja = $model->getPrecioTarifa(intval($servicio), $datosPedido->tirada, -1, $POD); if (count($acabadoFaja) > 0) { if ($acabadoFaja[0]->total <= 0) { - $input_data['tarifas_acabado_faja'] = intval($faja['acabado']); + $input_data['tarifas_acabado_faja'] = intval($servicio); $errorModel = new ErrorPresupuesto(); $errorModel->insertError( $datos_entrada['id'], @@ -2902,7 +2934,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $margenImpresion += round($linea['precio_impresion_horas'], 2); // coste de maquina y magen son MARGEN, no COSTE $margenImpresion += round($linea['margen_impresion_horas'], 2); $margenImpresion += round($linea['margen_click_pedido'], 2); - + } protected function calcular_lomo($lineas, $lomo_inicial)