Usando CsvHelper en vez de Reader + metodo para fila de transporte movideo a TransporteHelper

This commit is contained in:
Alejandro Tasistro 2025-05-09 15:49:25 -03:00
parent ead7483e19
commit b1b424897c
2 changed files with 25 additions and 43 deletions

View file

@ -4,9 +4,9 @@ namespace App;
use App\Helpers\TransporteHelper; use App\Helpers\TransporteHelper;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use League\Csv\CannotInsertRecord; use League\Csv\CannotInsertRecord;
use League\Csv\Reader;
use League\Csv\Writer; use League\Csv\Writer;
use Mpdf\Mpdf; use Mpdf\Mpdf;
@ -17,9 +17,9 @@ class GrupoDeCompra extends Model
protected $table = 'grupos_de_compra'; protected $table = 'grupos_de_compra';
protected $hidden = ['password']; protected $hidden = ['password'];
public function subpedidos() public function subpedidos(): HasMany
{ {
return $this->hasMany('App\Subpedido'); return $this->hasMany(Subpedido::class);
} }
public function toggleDevoluciones() public function toggleDevoluciones()
@ -139,48 +139,10 @@ class GrupoDeCompra extends Model
$template[$fila] = GrupoDeCompra::filaVacia($productosIDNombre[$id], $columns); $template[$fila] = GrupoDeCompra::filaVacia($productosIDNombre[$id], $columns);
$num_fila = $fila + 1; $num_fila = $fila + 1;
} }
$template[GrupoDeCompra::obtenerFilaDeBonoTransporte()] = GrupoDeCompra::filaVacia("Bonos de transporte", $columns); $template[TransporteHelper::filaTransporte()] = GrupoDeCompra::filaVacia("Bonos de transporte", $columns);
return $template; 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() public function exportarPedidoEnCSV()
{ {
$records = $this->generarColumnaCantidades(); $records = $this->generarColumnaCantidades();
@ -212,7 +174,7 @@ class GrupoDeCompra extends Model
$records[$fila][1] = $producto_pedido->cantidad_pedida; $records[$fila][1] = $producto_pedido->cantidad_pedida;
} }
$records[$this->obtenerFilaDeBonoTransporte()][1] = $this->cantidadTransporte(); $records[TransporteHelper::filaTransporte()][1] = $this->cantidadTransporte();
return $records; return $records;
} }

View file

@ -2,6 +2,10 @@
namespace App\Helpers; namespace App\Helpers;
use App\CanastaLog;
use Exception;
use Illuminate\Support\Facades\Log;
class TransporteHelper class TransporteHelper
{ {
const COSTO_TRANSPORTE = 15; const COSTO_TRANSPORTE = 15;
@ -16,4 +20,20 @@ class TransporteHelper
{ {
return self::cantidadTransporte($monto) * self::COSTO_TRANSPORTE; 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;
}
} }