Saldos #46

Merged
atasistro merged 34 commits from funcion/saldos into funcion/refactor-general 2025-06-19 21:09:28 -03:00
4 changed files with 101 additions and 2 deletions
Showing only changes of commit f16b18c8b1 - Show all commits

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

@ -9,7 +9,7 @@
</div>
<div class="block pb-6" id="canasta-comisiones-seccion"
:class="seccionActiva === 'canasta-comisiones-seccion' ? 'is-active' : 'is-hidden'">
<div class="block" id="canasta-comisiones-seccion">
<div class="block" id="canasta-comisiones-seccion">
<article class="message is-warning">
<div class="message-header">
<p>Formato de la canasta</p>

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/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo');
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