From b5f444383653506c0eb6e2d37754d0527531ed57 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Tue, 15 Oct 2024 20:44:28 -0300 Subject: [PATCH] Boton para descargar notas en pag de compras --- app/GrupoDeCompra.php | 34 +++++++++++++++++++--- app/Http/Controllers/ComprasController.php | 6 ++++ resources/js/components/compras/Body.vue | 10 +++++++ routes/web.php | 1 + 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index 33c8043..717c713 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -228,12 +228,38 @@ class GrupoDeCompra extends Model $planilla = GrupoDeCompra::obtenerTemplateDeFilasVacias($gdcs->count()); $planilla = self::getPlanilla($gdcs, $planilla); - // Guardar en un archivo .csv + // Guardar en un archivo .csv try { - $writer = Writer::createFromPath(resource_path('csv/exports/total-pedidos.csv'), 'w'); - $writer->insertAll($planilla); + $writer = Writer::createFromPath(resource_path('csv/exports/total-pedidos.csv'), 'w'); + $writer->insertAll($planilla); } catch (CannotInsertRecord $e) { - var_export($e->getRecords()); + var_export($e->getRecords()); + } + } + + public static function exportarProductosConNotasEnCSV() { + $gdcs = GrupoDeCompra::all(); + foreach ($gdcs as $i => $gdc) { + $productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id', $gdc->id)->get()->keyBy('producto_id'); + $pedidos = $gdc->pedidosAprobados(); + foreach ($productos_en_pedido as $id => $producto_pedido) { + foreach ($pedidos as $pedido) { + $producto = $pedido->productos()->find($id); + if ($producto != null && $producto->requiere_notas) { + $planilla[$i+1][0] = $gdc->nombre; + $planilla[$i+1][1] = $producto->nombre; + $planilla[$i+1][2] = $producto->pivot->cantidad; + $planilla[$i+1][3] = $producto->pivot->notas; + } + } + } + } + // Guardar en un archivo .csv + try { + $writer = Writer::createFromPath(resource_path('csv/exports/pedidos-notas.csv'), 'w'); + $writer->insertAll($planilla); + } catch (CannotInsertRecord $e) { + var_export($e->getRecords()); } } } diff --git a/app/Http/Controllers/ComprasController.php b/app/Http/Controllers/ComprasController.php index 5c7e3d1..e39eeda 100644 --- a/app/Http/Controllers/ComprasController.php +++ b/app/Http/Controllers/ComprasController.php @@ -15,6 +15,12 @@ class ComprasController $file = resource_path('csv/exports/total-pedidos.csv'); return response()->download($file); } + + public function descargarNotas() { + GrupoDeCompra::exportarProductosConNotasEnCSV(); + $file = resource_path('csv/exports/pedidos-notas.csv'); + return response()->download($file); + } public function show() { diff --git a/resources/js/components/compras/Body.vue b/resources/js/components/compras/Body.vue index 6b0a468..07c3786 100644 --- a/resources/js/components/compras/Body.vue +++ b/resources/js/components/compras/Body.vue @@ -11,6 +11,16 @@

+
+

+ + + + + Descargar planilla de notas + +

+
diff --git a/routes/web.php b/routes/web.php index c2b0ea0..baaa801 100644 --- a/routes/web.php +++ b/routes/web.php @@ -81,4 +81,5 @@ Route::get('/compras', 'ComprasController@show')->name('compras_login.show'); Route::middleware(['compras'])->group( function() { Route::get('/compras/pedidos', 'ComprasController@indexPedidos')->name('compras.pedidos'); Route::get('/compras/pedidos/descargar', 'ComprasController@descargarPedidos')->name('compras.pedidos.descargar'); + Route::get('/compras/pedidos/notas', 'ComprasController@descargarNotas')->name('compras.pedidos.descargar'); });