From 60746fc72e4a2359fa10ae8c139194e86fea93fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 12 Feb 2024 12:43:17 +0100 Subject: [PATCH] ahora se ordenan los servicios por precio total en cada proveedor (encuadernacion) --- ci4/app/Controllers/Test.php | 2 +- .../PresupuestoEncuadernacionesModel.php | 147 ++++++++++++------ 2 files changed, 101 insertions(+), 48 deletions(-) diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 9039b2a5..7fcf3f0d 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -18,7 +18,7 @@ class Test extends BaseController public function index() { echo '
';
-        \var_dump($this->get_tarifa_enc(12, 100, 100, 150, 210));
+        \var_dump($this->get_precio_tarifa(18,300,10,150,210,-1,30));
         echo '
'; /* diff --git a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php index a5e60b3f..4aa222ac 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php @@ -64,26 +64,41 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa['tarifa_id'], $tiempo, $tirada); if (count($tarifa_value)>0) { - - $precio_total = floatval(1.0* $tarifa_value[0]->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0); - if (!$POD){ - $precio_total += floatval($tarifa_value[0]->tarifa_importe_fijo); - } - $result_data[0] = floatval($precio_total / $tirada); // Precio/unidad - $result_data[1] = $precio_total; - $result_data[2] = $tarifa_value[0]->margen ; // margen - - array_push($tarifas, + $result_array = []; + foreach($tarifa_value as $tarifa_proveedor){ + $precio_total = floatval(1.0* $tarifa_proveedor->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0); + if (!$POD){ + $precio_total += floatval($tarifa_proveedor->tarifa_importe_fijo); + } + + $result_data[0] = floatval($precio_total / $tirada); // Precio/unidad + $result_data[1] = $precio_total; + $result_data[2] = $tarifa_proveedor->margen ; // margen + + array_push($result_array, (object)[ 'tarifa_id'=> $tarifa['tarifa_id'], - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, + 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'total'=> $result_data[1], 'margen' => $result_data[2], - 'proveedor' => $tarifa_value[0]->proveedor_nombre, - 'proveedor_id' => $tarifa_value[0]->proveedor_id, + 'proveedor' => $tarifa_proveedor->proveedor_nombre, + 'proveedor_id' => $tarifa_proveedor->proveedor_id, ]); + } + + usort($result_array, function($a, $b) { + + if ($a->total == $b->total) { + return 0; + } + return ($a->total < $b->total) ? -1 : 1; + }); + + array_push($tarifas, $result_array[0]); + + } else{ array_push($tarifas, @@ -100,17 +115,30 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel else{ $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto); if (count($tarifa_value)>0) { - $result_data = $this->calcularTarifa($tarifa_value[0], $paginas, $tirada, $POD<$tirada?false:true); - array_push($tarifas, - (object)[ - 'tarifa_id'=> $tarifa['tarifa_id'], - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, + + $result_array = []; + foreach($tarifa_value as $tarifa_proveedor){ + $result_data = $this->calcularTarifa($tarifa_proveedor, $paginas, $tirada, $POD<$tirada?false:true); + array_push($result_array, (object)[ + 'tarifa_id'=> $tarifa_proveedor->tarifa_enc_id, + 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'total'=> $result_data[1], 'margen'=> $result_data[2], - 'proveedor' => $tarifa_value[0]->proveedor_nombre, - 'proveedor_id' => $tarifa_value[0]->proveedor_id, + 'proveedor' => $tarifa_proveedor->proveedor_nombre, + 'proveedor_id' => $tarifa_proveedor->proveedor_id, ]); + } + + usort($result_array, function($a, $b) { + + if ($a->total == $b->total) { + return 0; + } + return ($a->total < $b->total) ? -1 : 1; + }); + + array_push($tarifas, $result_array[0]); } else{ array_push($tarifas, @@ -164,17 +192,29 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto); } if (count($tarifa_value)>0) { + + $ret_array = []; + foreach($tarifa_value as $tarifa){ + + $result_data = $this->calcularTarifa($tarifa, $paginas, $tirada, $POD<$tirada?false:true); + array_push($ret_array, (object)[ + 'tarifa_id'=> $tarifa->tarifa_enc_id, + 'tarifa_nombre'=> $tarifa->tarifa_enc_nombre, + 'precio_unidad'=> $result_data[0], + 'total'=> $result_data[1], + 'margen'=> $result_data[2], + 'proveedor' => $tarifa->proveedor_nombre, + 'proveedor_id' => $tarifa->proveedor_id, + ]); + } - $result_data = $this->calcularTarifa($tarifa_value[0], $paginas, $POD<$tirada?false:true); - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_value[0]->tarifa_enc_id, - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, - 'precio_unidad'=> $result_data[0], - 'total'=> $result_data[1], - 'margen'=> $result_data[2], - 'proveedor' => $tarifa_value[0]->proveedor_nombre, - 'proveedor_id' => $tarifa_value[0]->proveedor_id, - ]; + usort($ret_array, function($a, $b) { + + if ($a->total == $b->total) { + return 0; + } + return ($a->total < $b->total) ? -1 : 1; + }); return $ret_array; } else{ @@ -200,24 +240,37 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa_encuadernacion_id, $tiempo, $tirada, $proveedor_id); if (count($tarifa_value)>0) { - $precio_total = floatval(1.0* $tarifa_value[0]->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0); - if (!$POD){ - $precio_total += floatval($tarifa_value[0]->tarifa_importe_fijo); - } + $ret_array = []; + foreach($tarifa_value as $tarifa_proveedor){ + $precio_total = floatval(1.0* $tarifa_proveedor->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0); + if (!$POD){ + $precio_total += floatval($tarifa_proveedor->tarifa_importe_fijo); + } + + $result_data[0] = floatval($precio_total / $tirada); // Precio/unidad + $result_data[1] = $precio_total; + $result_data[2] = $tarifa_proveedor->margen ; // margen + + array_push($ret_array, + (object)[ + 'tarifa_id'=> $tarifa['tarifa_id'], + 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre, + 'precio_unidad'=> $result_data[0], + 'total'=> $result_data[1], + 'margen' => $result_data[2], + 'proveedor' => $tarifa_proveedor->proveedor_nombre, + 'proveedor_id' => $tarifa_proveedor->proveedor_id, + ]); + } + + usort($ret_array, function($a, $b) { + + if ($a->total == $b->total) { + return 0; + } + return ($a->total < $b->total) ? -1 : 1; + }); - $result_data[0] = floatval($precio_total / $tirada); // Precio/unidad - $result_data[1] = $precio_total; - $result_data[2] = $tarifa_value[0]->margen; // margen - - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_encuadernacion_id, - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, - 'precio_unidad'=> $result_data[0], - 'total'=> $result_data[1], - 'margen' => $result_data[2], - 'proveedor' => $tarifa_value[0]->proveedor_nombre, - 'proveedor_id' => $tarifa_value[0]->proveedor_id, - ]; return $ret_array; } else{