From b1b424897ce445a86f6349e0880f6d917226f124 Mon Sep 17 00:00:00 2001 From: ale Date: Fri, 9 May 2025 15:49:25 -0300 Subject: [PATCH] Usando CsvHelper en vez de Reader + metodo para fila de transporte movideo a TransporteHelper --- app/GrupoDeCompra.php | 48 ++++---------------------------- app/Helpers/TransporteHelper.php | 20 +++++++++++++ 2 files changed, 25 insertions(+), 43 deletions(-) diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index 5b74e84..c8308aa 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -4,9 +4,9 @@ namespace App; use App\Helpers\TransporteHelper; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Facades\DB; use League\Csv\CannotInsertRecord; -use League\Csv\Reader; use League\Csv\Writer; use Mpdf\Mpdf; @@ -17,9 +17,9 @@ class GrupoDeCompra extends Model protected $table = 'grupos_de_compra'; protected $hidden = ['password']; - public function subpedidos() + public function subpedidos(): HasMany { - return $this->hasMany('App\Subpedido'); + return $this->hasMany(Subpedido::class); } public function toggleDevoluciones() @@ -139,48 +139,10 @@ class GrupoDeCompra extends Model $template[$fila] = GrupoDeCompra::filaVacia($productosIDNombre[$id], $columns); $num_fila = $fila + 1; } - $template[GrupoDeCompra::obtenerFilaDeBonoTransporte()] = GrupoDeCompra::filaVacia("Bonos de transporte", $columns); + $template[TransporteHelper::filaTransporte()] = GrupoDeCompra::filaVacia("Bonos de transporte", $columns); return $template; } - private static function obtenerFilaDeBonoTransporte() - { - $csv = Reader::createFromPath(resource_path('csv/productos.csv'), 'r'); - $csv->setDelimiter("|"); - $csv->setEnclosure("'"); - $registros = $csv->getRecords(); - - foreach ($registros as $key => $registro) - if ($registro[0] == 'T') return $key; - - throw new Exception('No hay bono de transporte'); - } - - private function totalPedidosSinBonos() - { - $total = 0; - foreach ($this->pedidosAprobados() as $pedido) { - $total += ceil($pedido->totalSinBonos()); - } - return $total; - } - - public function totalBonosBarriales() - { - $total = 0; - $bonoBarrial = Producto::where('nombre', 'LIKE', '%barrial%')->first(); - if ($bonoBarrial) { - $pedidos = $this->pedidosAprobados(); - foreach ($pedidos as $pedido) { - $bonoPedido = $pedido->productos()->find($bonoBarrial["id"]); - if ($bonoPedido) { - $total += $bonoPedido["pivot"]["total"]; - } - } - } - return $total; - } - public function exportarPedidoEnCSV() { $records = $this->generarColumnaCantidades(); @@ -212,7 +174,7 @@ class GrupoDeCompra extends Model $records[$fila][1] = $producto_pedido->cantidad_pedida; } - $records[$this->obtenerFilaDeBonoTransporte()][1] = $this->cantidadTransporte(); + $records[TransporteHelper::filaTransporte()][1] = $this->cantidadTransporte(); return $records; } diff --git a/app/Helpers/TransporteHelper.php b/app/Helpers/TransporteHelper.php index 8bfc3de..52c6c6b 100644 --- a/app/Helpers/TransporteHelper.php +++ b/app/Helpers/TransporteHelper.php @@ -2,6 +2,10 @@ namespace App\Helpers; +use App\CanastaLog; +use Exception; +use Illuminate\Support\Facades\Log; + class TransporteHelper { const COSTO_TRANSPORTE = 15; @@ -16,4 +20,20 @@ class TransporteHelper { return self::cantidadTransporte($monto) * self::COSTO_TRANSPORTE; } + + public static function filaTransporte() + { + $ultimaCanasta = CanastaLog::where('descripcion', CanastaHelper::CANASTA_CARGADA) + ->orderBy('created_at', 'desc') + ->pluck('path') + ->first(); + + $registros = CsvHelper::getRecords($ultimaCanasta); + + foreach ($registros as $key => $registro) + if ($registro[CanastaHelper::TIPO] == 'T') return $key; + + Log::error('No hay fila de tipo T en la planilla: ' . $ultimaCanasta); + return null; + } }