From d170f9e46e4038230e377fa2ec122e31fdc3cf71 Mon Sep 17 00:00:00 2001 From: ale Date: Mon, 25 Nov 2024 21:44:03 -0300 Subject: [PATCH] Agregada funcion que genera planilla de totales por barrio --- app/Producto.php | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/app/Producto.php b/app/Producto.php index c544a03..f7c6e2f 100644 --- a/app/Producto.php +++ b/app/Producto.php @@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; +use League\Csv\CannotInsertRecord; +use League\Csv\Writer; class Producto extends Model { @@ -58,7 +60,7 @@ class Producto extends Model static public function cantidadesPorBarrio() { $barrios = DB::table('grupos_de_compra') - ->where('nombre') + ->where('nombre', '<>', 'PRUEBA') ->pluck('id', 'nombre'); $columnasBarrios = $barrios->map(function ($id, $nombre) { @@ -66,13 +68,49 @@ class Producto extends Model })->toArray(); return DB::table('productos') + ->where('productos.nombre','not like','%barrial%') ->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id') ->join('subpedidos', 'subpedidos.id', '=', 'producto_subpedido.subpedido_id') ->select(array_merge( - ['productos.nombre as Product'], + ['productos.fila as fila'], + ['productos.nombre as producto'], $columnasBarrios )) - ->groupBy('productos.id', 'productos.nombre') + ->groupBy('productos.fila','productos.id','productos.nombre') + ->orderBy('productos.fila') ->get(); } + + static public function planillaTotales() { + $headers = ['Producto']; + $barrios = DB::table('grupos_de_compra')->pluck('nombre')->toArray(); + $headers = array_merge($headers, $barrios); + + $cantidadesPorBarrio = Producto::cantidadesPorBarrio(); + $planilla = []; + $ultimaFila = 1; + + foreach ($cantidadesPorBarrio as $productoCantidades) { + $fila = $productoCantidades->fila; + while ($fila - $ultimaFila > 1) { + $producto = Producto::where('fila', $ultimaFila)->first(); + $planilla[$ultimaFila] = [$producto ? $producto->nombre : '']; + $ultimaFila++; + } + $planilla[$fila] = [$productoCantidades->producto]; + foreach ($barrios as $barrio) { + $planilla[$fila][] = $productoCantidades->$barrio ?? 0; + } + $ultimaFila = $fila; + } + + // Guardar en un archivo .csv + try { + $writer = Writer::createFromPath(resource_path('csv/exports/total-pedidos.csv'), 'w'); + $writer->insertOne($headers); + $writer->insertAll($planilla); + } catch (CannotInsertRecord $e) { + var_export($e->getRecords()); + } + } }