From 848bf90a6e282a30df65cc398feec341aae48e4b Mon Sep 17 00:00:00 2001 From: 75134972k <75134972k@csic.es> Date: Tue, 26 Mar 2024 14:01:13 +0100 Subject: [PATCH] trabajando en los envios --- .../Presupuestos/Cosidotapablanda.php | 11 ++++ ci4/app/Services/PresupuestoService.php | 55 ++++++++++++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 88c78f3c..b408edfd 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -371,7 +371,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['serviciosPreimpresionList'] = (new PresupuestoPreimpresionesModel())->getResource($id)->get()->getResultObject(); // Direciones presupuesto + $this->getLineasDirecciones($presupuestoEntity); $this->viewData['presupuestoDirecciones'] = (new PresupuestoDireccionesModel())->getResource("", $id)->get()->getResultObject(); + $this->viewData['POD'] = $this->getPOD(); @@ -1379,4 +1381,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController return PresupuestoService::checkLineasServicios($input_data, $serviciosPresupuesto); } + + protected function getLineasDirecciones($presupuestoEntity){ + + $direccionesEnvio = (new PresupuestoDireccionesModel())->getResource("", $presupuestoEntity->id)->get()->getResultObject(); + + $nuevasDirecciones = PresupuestoService::checkLineasEnvios($direccionesEnvio); + + return $direccionesEnvio; + } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 32400b85..755f7997 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -18,7 +18,8 @@ use App\Models\Presupuestos\PresupuestoAcabadosModel; use App\Models\Presupuestos\PresupuestoManipuladosModel; use App\Models\Presupuestos\PresupuestoEncuadernacionesModel; -use App\Models\Tarifas\TarifaEncuadernacionModel; +use App\Models\Tarifas\TarifaEnvioModel; + class PresupuestoService extends BaseService { @@ -1171,7 +1172,7 @@ class PresupuestoService extends BaseService $model = new PresupuestoAcabadosModel(); foreach ($servicios as $servicio) { - $count = 0; + $nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], $input_data['POD']); if($nueva_tarifa && count($nueva_tarifa)>0){ if(round($nueva_tarifa[0]->precio_unidad, 2) != $servicio->precio_unidad || @@ -1313,6 +1314,56 @@ class PresupuestoService extends BaseService return [$cambio, $serviciosUpdated]; } + + public static function checkLineasEnvios($envios){ + + $cambio = false; + + if(count($envios)>0){ + $model = new TarifaEnvioModel(); + foreach ($envios as $envio) { + $paisId = $envio->pais_id; + $cp= $envio->cp; + $peso= $envio->peso; + $tipo_envio= $envio->entregaPieCalle==1?'palets':'cajas'; + + $nueva_tarifa = $model->getTarifaEnvio($paisId, $cp, $peso, $tipo_envio); + + //$nueva_tarifa = $model->getPrecioTarifa($envio->tarifa_envio_id, $input_data['tirada'], $input_data['POD']); + if($nueva_tarifa && count($nueva_tarifa)>0){ + $coste = 0; + $margen = 0; + if($peso>$nueva_tarifa[0]->peso_max){ + $coste += floatval($nueva_tarifa[0]->peso_min) + ($peso-floatval($nueva_tarifa[0]->peso_min))*floatval($nueva_tarifa[0]->precio_adicional); + } + // si no se calcula linealmente + else{ + $m=(floatval($nueva_tarifa[0]->precio_max)-floatval($nueva_tarifa[0]->precio_min)) / ((floatval($nueva_tarifa[0]->peso_max)-floatval($nueva_tarifa[0]->peso_min))); + $b=floatval($nueva_tarifa[0]->precio_max)-$m*floatval($nueva_tarifa[0]->peso_max); + $coste += floatval($m*$peso+$b); + } + $margen += $coste*floatval($nueva_tarifa[0]->margen)/100.0; + + if(round($coste, 2) != $envio->precio || + $margen != $envio->margen){ + + $envio->precio = round($coste, 2); + $envio->margen = $margen; + $envio->tarifa_id = $nueva_tarifa[0]->id; + $cambio = true; + } + //$model->updateTarifas($input_data['presupuesto_id'], array($envio_temp)); + } + + } + } + + return [$cambio, $envios]; + } + + + + // Funcion que comprueba si existe una maquina private static function checkMaquina($maquina_id){