From f84e1f295448ec2fbb3d67bf4a2b79366fce4193 Mon Sep 17 00:00:00 2001 From: ale Date: Mon, 9 Dec 2024 07:18:02 -0300 Subject: [PATCH] Nueva logica para planilla de notas, a partir de producto --- app/Producto.php | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/app/Producto.php b/app/Producto.php index f7c6e2f..df6652d 100644 --- a/app/Producto.php +++ b/app/Producto.php @@ -113,4 +113,44 @@ class Producto extends Model var_export($e->getRecords()); } } + + static public function planillaNotas() { + $headers = ['Producto']; + $barrios = DB::table('grupos_de_compra')->pluck('nombre')->toArray(); + $headers = array_merge($headers, $barrios); + + $notasPorBarrio = DB::table('productos') + ->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id') + ->join('subpedidos', 'producto_subpedido.subpedido_id', '=', 'subpedidos.id') + ->join('grupos_de_compra', 'subpedidos.grupo_de_compra_id', '=', 'grupos_de_compra.id') + ->where('productos.requiere_notas', 1) + ->select( + 'productos.nombre as producto', + 'grupos_de_compra.nombre as barrio', + 'producto_subpedido.notas' + ) + ->get() + ->groupBy('producto'); // Group notes by product + + $planilla = []; + + foreach ($notasPorBarrio as $producto => $notasGrupo) { + $fila = [$producto]; + + foreach ($barrios as $barrio) { + $notas = $notasGrupo->where('barrio', $barrio)->pluck('notas')->implode('; '); + $fila[] = $notas ?: ''; + } + + $planilla[] = $fila; + } + + try { + $writer = Writer::createFromPath(resource_path('csv/exports/notas-por-barrio.csv'), 'w'); + $writer->insertOne($headers); + $writer->insertAll($planilla); + } catch (CannotInsertRecord $e) { + var_export($e->getRecords()); + } + } }