From 08bdbe0ee127536bab156c2fb4907ca2d1982a74 Mon Sep 17 00:00:00 2001 From: ale Date: Tue, 1 Jul 2025 19:30:36 -0300 Subject: [PATCH] Usando parametros para transporte --- app/Helpers/TransporteHelper.php | 40 +++++++++++++++++-- app/Http/Controllers/ComisionesController.php | 4 +- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/app/Helpers/TransporteHelper.php b/app/Helpers/TransporteHelper.php index 046b4b8..7cc7eb6 100644 --- a/app/Helpers/TransporteHelper.php +++ b/app/Helpers/TransporteHelper.php @@ -4,21 +4,29 @@ namespace App\Helpers; use App\CanastaLog; use Illuminate\Support\Facades\Log; +use InvalidArgumentException; use League\Csv\Exception; class TransporteHelper { - const COSTO_TRANSPORTE = 15; - const MONTO_TRANSPORTE = 500; + private const COSTO_TRANSPORTE = "bono-transporte"; + private const MONTO_TRANSPORTE = "monto-transporte"; + private static ?array $parametros = null; + /** + * @throws Exception + */ public static function cantidadTransporte($monto) { - return ceil($monto / self::MONTO_TRANSPORTE); + return ceil($monto / self::getParametro(self::MONTO_TRANSPORTE)); } + /** + * @throws Exception + */ public static function totalTransporte($monto) { - return self::cantidadTransporte($monto) * self::COSTO_TRANSPORTE; + return self::cantidadTransporte($monto) * self::getParametro(self::COSTO_TRANSPORTE); } /** @@ -41,4 +49,28 @@ class TransporteHelper Log::error($error); throw new Exception($error); } + + /** + * @throws Exception + */ + public static function getParametro(string $id): int + { + if (self::$parametros === null) { + $records = CsvHelper::getRecords(resource_path('csv/parametros.csv'), "No se pudo leer el archivo."); + self::$parametros = []; + foreach ($records as $row) { + self::$parametros[$row['id']] = $row; + } + } + + if (!isset(self::$parametros[$id])) { + throw new InvalidArgumentException("ParĂ¡metro '$id' no encontrado."); + } + + return (int) self::$parametros[$id]['valor']; + } + + public static function resetParametros(): void { + self::$parametros = null; + } } diff --git a/app/Http/Controllers/ComisionesController.php b/app/Http/Controllers/ComisionesController.php index cb9e709..f4150aa 100644 --- a/app/Http/Controllers/ComisionesController.php +++ b/app/Http/Controllers/ComisionesController.php @@ -6,6 +6,7 @@ use App\GrupoDeCompra; use App\Helpers\CanastaHelper; use App\Helpers\CsvHelper; use App\Helpers\PedidosExportHelper; +use App\Helpers\TransporteHelper; use App\Http\Resources\GrupoDeCompraResource; use App\Producto; use Illuminate\Http\JsonResponse; @@ -130,7 +131,7 @@ class ComisionesController return response()->json(GrupoDeCompraResource::collection(GrupoDeCompra::all())); } - public function obtenerParametros() + public function obtenerParametros(): JsonResponse { try { $records = self::parametrosRecords(); @@ -151,6 +152,7 @@ class ComisionesController 'valor' => ['required', 'numeric', 'gte:0'], ]); CsvHelper::cambiarParametro($parametro_id, $valid['valor']); + TransporteHelper::resetParametros(); return response()->noContent(); } return response()->json(['message' => 'Parametro no encontrado.'], 404);