diff --git a/app/Helpers/PedidosExportHelper.php b/app/Helpers/PedidosExportHelper.php index b8672f2..c8a16dc 100644 --- a/app/Helpers/PedidosExportHelper.php +++ b/app/Helpers/PedidosExportHelper.php @@ -43,7 +43,12 @@ class PedidosExportHelper static public function pedidosDeOllas() { $filePath = "csv/exports/pedidos-de-ollas-" . now()->format('Y-m-d') . ".csv"; - $barrios = GrupoDeCompra::barriosMenosPrueba()->get(); + $barrios = GrupoDeCompra::barriosMenosPrueba() + ->whereHas('subpedidos', function ($query) { + $tipo_olla = self::getTipoId('olla'); + $query->where('tipo_pedido_id', $tipo_olla); + }) + ->get(); $contenido = self::generarContenidoCSV($barrios, fn($grupoId) => "subpedidos.grupo_de_compra_id = $grupoId @@ -62,7 +67,7 @@ class PedidosExportHelper */ public static function cantidadDeOllasParaCSV(Collection $barrios, Collection $contenido) { - $tipo_olla = TipoPedido::where('nombre', 'olla')->first()->id; + $tipo_olla = self::getTipoId('olla'); $parametros = collect(CsvHelper::getRecords(resource_path("csv/parametros.csv"), "No se pudo leer el archivo.")); $fila = [ @@ -241,4 +246,13 @@ class PedidosExportHelper } return $transporte; } + + /** + * @return mixed + */ + public static function getTipoId(string $tipo) + { + $tipo_olla = TipoPedido::where('nombre', $tipo)->first()->id; + return $tipo_olla; + } } diff --git a/app/Http/Controllers/ComisionesController.php b/app/Http/Controllers/ComisionesController.php index f4150aa..4076c37 100644 --- a/app/Http/Controllers/ComisionesController.php +++ b/app/Http/Controllers/ComisionesController.php @@ -11,7 +11,10 @@ use App\Http\Resources\GrupoDeCompraResource; use App\Producto; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; +use League\Csv\CannotInsertRecord; use League\Csv\Exception; +use League\Csv\InvalidArgument; use Mpdf\MpdfException; use Symfony\Component\HttpFoundation\BinaryFileResponse; @@ -31,7 +34,8 @@ class ComisionesController { try { PedidosExportHelper::pedidosBarriales(); - } catch (Exception $e) { + } catch (CannotInsertRecord|InvalidArgument|Exception $e) { + Log::error($e->getMessage()); return response()->json(['message' => $e->getMessage()], 500); } $pattern = storage_path('csv/exports/pedidos-por-barrio-*.csv'); @@ -48,7 +52,7 @@ class ComisionesController { try { PedidosExportHelper::pedidosDeOllas(); - } catch (Exception $e) { + } catch (CannotInsertRecord|InvalidArgument|Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } $pattern = storage_path('csv/exports/pedidos-de-ollas-*.csv'); @@ -61,9 +65,13 @@ class ComisionesController return response()->download($files[0]); } - public function descargarNotas(): BinaryFileResponse + public function descargarNotas() { - Producto::planillaNotas(); + try { + Producto::planillaNotas(); + } catch (CannotInsertRecord|InvalidArgument $e) { + return response()->json(['message' => $e->getMessage()], 500); + } $pattern = storage_path('csv/exports/notas-por-barrio-*.csv'); $files = glob($pattern); @@ -131,6 +139,12 @@ class ComisionesController return response()->json(GrupoDeCompraResource::collection(GrupoDeCompra::all())); } + public function descargarSaldosEjemplo(): BinaryFileResponse + { + $file = resource_path('csv/saldos.csv'); + return response()->download($file); + } + public function obtenerParametros(): JsonResponse { try { diff --git a/app/Http/Controllers/OllasController.php b/app/Http/Controllers/OllasController.php index 2b64615..655c5d5 100644 --- a/app/Http/Controllers/OllasController.php +++ b/app/Http/Controllers/OllasController.php @@ -20,8 +20,11 @@ class OllasController extends Controller $pedido = $gdc->subpedidos()->firstOrCreate([ 'nombre' => 'Pedido de Ollas de ' . $gdc->nombre, 'tipo_pedido_id' => $tipoOlla->id, - 'cantidad_ollas' => 0, ]); + if (!$pedido->cantidad_ollas) { + $pedido->cantidad_ollas = 0; + $pedido->save(); + } return response()->json(new PedidoOllasResource($pedido)); } diff --git a/resources/csv/parametros.csv b/resources/csv/parametros.csv index ebd8fda..501c7ac 100644 --- a/resources/csv/parametros.csv +++ b/resources/csv/parametros.csv @@ -1,4 +1,4 @@ id|nombre|valor bono-transporte|'Bono de transporte'|15 monto-transporte|'Monto para bono de transporte'|500 -monto-olla|'Monto por olla'|1200 +monto-olla|'Monto por olla'|800 diff --git a/resources/csv/saldos.csv b/resources/csv/saldos.csv new file mode 100644 index 0000000..c289861 --- /dev/null +++ b/resources/csv/saldos.csv @@ -0,0 +1,4 @@ +Barrio|Saldo +ENTREVERO|2500 +TRES CRUCES|1200 +PRUEBA|3700 diff --git a/resources/js/components/admin/TablaPedidos.vue b/resources/js/components/admin/TablaPedidos.vue index 1aae42c..55bbf5a 100644 --- a/resources/js/components/admin/TablaPedidos.vue +++ b/resources/js/components/admin/TablaPedidos.vue @@ -47,8 +47,8 @@ $ {{ total_de_pedido }} - Saldo a favor: - - $ {{ saldo }} + {{ texto_saldo }} + $ {{ saldo }} Total a transferir: @@ -80,6 +80,9 @@ export default { "saldo", ]), ...mapGetters('admin', ['pedidosAprobados']), + texto_saldo() { + return this.saldo < 0 ? "Deuda:" : "Saldo a favor:"; + } }, } diff --git a/resources/js/components/comisiones/saldos/SaldosSeccion.vue b/resources/js/components/comisiones/saldos/SaldosSeccion.vue index c9b413a..dd1123c 100644 --- a/resources/js/components/comisiones/saldos/SaldosSeccion.vue +++ b/resources/js/components/comisiones/saldos/SaldosSeccion.vue @@ -53,6 +53,7 @@ export default {
  • No puede haber "enters" en ninguna celda
  • El nombre de los barrios debe estar exactamente igual que como están configurados en esta aplicacaión
  • + Planilla de ejemplo.
    diff --git a/resources/js/components/pedidos/ChismosaDropdown.vue b/resources/js/components/pedidos/ChismosaDropdown.vue index 8aad7f7..9ac6c85 100644 --- a/resources/js/components/pedidos/ChismosaDropdown.vue +++ b/resources/js/components/pedidos/ChismosaDropdown.vue @@ -5,7 +5,7 @@ - +
    diff --git a/resources/js/components/pedidos/PedidosNavBarBrand.vue b/resources/js/components/pedidos/PedidosNavBarBrand.vue index bcc5130..21ff877 100644 --- a/resources/js/components/pedidos/PedidosNavBarBrand.vue +++ b/resources/js/components/pedidos/PedidosNavBarBrand.vue @@ -8,7 +8,7 @@ export default { computed: { ...mapGetters('pedido', ["pedidoDefinido"]), ...mapState('pedido', ["nombre", "grupo_de_compra"]), - ...mapState('ui', ["burger_activa"]) + ...mapState('ui', ["burger_activa"]), }, methods: { ...mapMutations('ui', ["toggleBurger"]), @@ -17,14 +17,17 @@ export default { diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index f8b13d6..6b1aaf9 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,5 +1,5 @@ - + diff --git a/routes/web.php b/routes/web.php index ac6f562..96f43bc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -56,6 +56,7 @@ Route::middleware(['auth', 'role:comision'])->group( function() { Route::get('/comisiones/pedidos/ollas', 'ComisionesController@descargarPedidosDeOllas')->name('comisiones.pedidos.ollas'); Route::get('/comisiones/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo'); Route::post('/comisiones/canasta', 'ComisionesController@cargarCanasta')->name('comisiones.canasta'); + Route::get('/comisiones/saldos/ejemplo', 'ComisionesController@descargarSaldosEjemplo')->name('comisiones.saldos.ejemplo'); Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos'); Route::put('/comisiones/parametros/{parametro_id}', 'ComisionesController@modificarParametros'); });