Merge remote-tracking branch 'origin/funcion/saldos' into funcion/saldos

# Conflicts:
#	resources/js/components/comisiones/Body.vue
#	routes/web.php
This commit is contained in:
Alejandro Tasistro 2025-06-18 19:04:59 -03:00
commit f16b18c8b1
4 changed files with 101 additions and 2 deletions

View file

@ -0,0 +1,98 @@
<?php
namespace App\Http\Controllers;
use App\GrupoDeCompra;
use App\Helpers\CanastaHelper;
use App\Producto;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use League\Csv\Reader;
use DatabaseSeeder;
class ComprasController
{
const CANASTAS_PATH = 'csv/canastas/';
const BARRIO = "Barrio";
const SALDO = "Saldo";
public function indexPedidos() {
return view('compras_pedidos');
}
public function descargarPedidos(): BinaryFileResponse
{
Producto::planillaTotales();
$file = resource_path('csv/exports/pedidos-por-barrio.csv');
return response()->download($file);
}
public function descargarNotas(): BinaryFileResponse
{
Producto::planillaNotas();
$file = resource_path('csv/exports/notas-por-barrio.csv');
return response()->download($file);
}
public function pdf() {
GrupoDeCompra::exportarPedidosBarrialesAPdf();
}
public function show()
{
return view('auth/login');
}
public function cargarCanasta(Request $request): JsonResponse
{
$request->validate([
'data' => 'required|file|mimes:csv,txt|max:2048',
]);
$nombre = CanastaHelper::guardarCanasta($request->file('data'), self::CANASTAS_PATH);
CanastaHelper::cargarCanasta(self::CANASTAS_PATH . $nombre);
return response()->json([
'message' => 'Canasta cargada exitosamente',
]);
}
public function descargarCanastaEjemplo(): BinaryFileResponse
{
$file = resource_path('csv/productos.csv');
return response()->download($file);
}
public function cargarSaldos(Request $request): JsonResponse
{
$request->validate([
'data' => 'required|file|mimes:csv,txt|max:2048',
]);
$file = $request->file('data')->getPathname();
$csv = Reader::createFromPath($file, 'r');
try {
$csv->setDelimiter("|");
$csv->setEnclosure("'");
$csv->setHeaderOffset(0);
$records = $csv->getRecords();
} catch (InvalidArgument|Exception $e) {
Log::error($e->getMessage());
return response()->json([
'message' => 'No se pudo leer el csv',
]);
}
foreach ($records as $record) {
$barrio = $record[self::BARRIO];
$saldo = $record[self::SALDO];
GrupoDeCompra::where('nombre', $barrio)
->update(['saldo' => $saldo]);
}
return response()->json([
'message' => 'Saldos cargados exitosamente',
]);
}
}

View file

@ -54,5 +54,5 @@ Route::middleware(['auth', 'role:comision'])->group( function() {
Route::get('/comisiones/pedidos/pdf', 'ComisionesController@pdf')->name('comisiones.pedidos.pdf'); Route::get('/comisiones/pedidos/pdf', 'ComisionesController@pdf')->name('comisiones.pedidos.pdf');
Route::get('/comisiones/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo'); Route::get('/comisiones/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo');
Route::post('/comisiones/canasta', 'ComisionesController@cargarCanasta')->name('comisiones.canasta'); Route::post('/comisiones/canasta', 'ComisionesController@cargarCanasta')->name('comisiones.canasta');
Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.canasta'); Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos');
}); });

1
run_watch.sh Executable file
View file

@ -0,0 +1 @@
sudo docker compose exec app npm run watch