Agregados tipos e imports faltantes, quitados imports innecesarios, quitados valores default, quitados metodos y campos no usados, quitados phpdocs redundantes, returns simplificados

This commit is contained in:
Alejandro Tasistro 2025-05-11 16:06:51 -03:00
parent 916f963e7b
commit d526b944bd
24 changed files with 99 additions and 145 deletions

View file

@ -36,7 +36,7 @@ class CrearPedidosAprobadosViewCommand extends Command
* *
* @return int * @return int
*/ */
public function handle() public function handle(): int
{ {
DB::statement(" DB::statement("
CREATE OR REPLACE VIEW pedidos_aprobados CREATE OR REPLACE VIEW pedidos_aprobados

View file

@ -5,12 +5,15 @@ namespace App\Filtros;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Throwable;
use TypeError;
class Filtro extends Model class Filtro extends Model
{ {
protected $request; protected Request $request;
protected $builder; protected $builder;
protected $MENSAJES_ERROR = [ protected array $MENSAJES_ERROR = [
'ARGUMENTO' => 'Argumento inválido para el parámetro %s. Revise la documentación.' 'ARGUMENTO' => 'Argumento inválido para el parámetro %s. Revise la documentación.'
]; ];
@ -22,10 +25,10 @@ class Filtro extends Model
/** /**
* Apply all existing filters, if available. * Apply all existing filters, if available.
* *
* @param \Illuminate\Database\Eloquent\Builder $builder * @param Builder $builder
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function aplicar(Builder $builder) public function aplicar(Builder $builder): Builder
{ {
$this->builder = $builder; $this->builder = $builder;
@ -51,7 +54,7 @@ class Filtro extends Model
//Llamar métodos con argumentos //Llamar métodos con argumentos
try { try {
$this->$metodo($valor); $this->$metodo($valor);
} catch (\Throwable $th) { } catch (Throwable $th) {
if (is_a($th,'TypeError') ) { throw new HttpException(400, sprintf($this->MENSAJES_ERROR['ARGUMENTO'],$filtro)); } if (is_a($th,'TypeError') ) { throw new HttpException(400, sprintf($this->MENSAJES_ERROR['ARGUMENTO'],$filtro)); }
throw $th; throw $th;
} }
@ -63,7 +66,7 @@ class Filtro extends Model
//Buscar un término en el nombre //Buscar un término en el nombre
public function nombre(String $valor) public function nombre(String $valor)
{ {
$this->builder->where('nombre', "LIKE", "%" . $valor . "%")->orderByRaw("IF(nombre = '{$valor}',2,IF(nombre LIKE '{$valor}%',1,0)) DESC"); $this->builder->where('nombre', "LIKE", "%" . $valor . "%")->orderByRaw("IF(nombre = '$valor',2,IF(nombre LIKE '$valor%',1,0)) DESC");
} }
public function alfabetico(String $order = 'asc') public function alfabetico(String $order = 'asc')

View file

@ -1,7 +1,6 @@
<?php <?php
namespace App\Filtros; namespace App\Filtros;
use Illuminate\Database\Eloquent\Builder;
class FiltroDeProducto extends Filtro { class FiltroDeProducto extends Filtro {

View file

@ -2,7 +2,7 @@
namespace App\Filtros; namespace App\Filtros;
use Illuminate\Database\Eloquent\Model; use TypeError;
class FiltroDeSubpedido extends Filtro class FiltroDeSubpedido extends Filtro
{ {

View file

@ -7,6 +7,7 @@ use App\Helpers\TransporteHelper;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Mpdf\Mpdf; use Mpdf\Mpdf;
@ -23,7 +24,7 @@ class GrupoDeCompra extends Model
return $this->hasMany(Subpedido::class); return $this->hasMany(Subpedido::class);
} }
public function toggleDevoluciones() public function toggleDevoluciones(): bool
{ {
$this->devoluciones_habilitadas = !$this->devoluciones_habilitadas; $this->devoluciones_habilitadas = !$this->devoluciones_habilitadas;
$this->save(); $this->save();
@ -117,7 +118,7 @@ class GrupoDeCompra extends Model
$mpdf->Output($filename, "D"); $mpdf->Output($filename, "D");
} }
function pedidoParaPdf() function pedidoParaPdf(): array
{ {
$productos = $this->productosPedidos(true); $productos = $this->productosPedidos(true);
$pedido = []; $pedido = [];
@ -135,8 +136,6 @@ class GrupoDeCompra extends Model
$pedido['productos'][] = $productoParaPdf; $pedido['productos'][] = $productoParaPdf;
} }
Log::debug($pedido);
return $pedido; return $pedido;
} }
@ -173,7 +172,7 @@ class GrupoDeCompra extends Model
} }
//Asume que los productos están gruadados en orden de fila //Asume que los productos están gruadados en orden de fila
public static function obtenerTemplateDeFilasVacias(int $columns) public static function obtenerTemplateDeFilasVacias(int $columns): array
{ {
$productosFilaID = Producto::productosFilaID(); $productosFilaID = Producto::productosFilaID();
$productosIDNombre = Producto::productosIDNombre(); $productosIDNombre = Producto::productosIDNombre();
@ -197,7 +196,7 @@ class GrupoDeCompra extends Model
CsvHelper::generarCsv('csv/exports/' . $this->nombre . '.csv', $records); CsvHelper::generarCsv('csv/exports/' . $this->nombre . '.csv', $records);
} }
public function generarColumnaCantidades() public function generarColumnaCantidades(): array
{ {
$productos_en_pedido = $this->productosPedidos(); $productos_en_pedido = $this->productosPedidos();
@ -208,7 +207,7 @@ class GrupoDeCompra extends Model
} }
$records = $this->obtenerTemplateDeFilasVacias(1); $records = $this->obtenerTemplateDeFilasVacias(1);
$productos_id_fila = Producto::productosIdFila(); $productos_id_fila = Producto::productosIDFila();
foreach ($productos_en_pedido as $id => $producto_pedido) { foreach ($productos_en_pedido as $id => $producto_pedido) {
$fila = $productos_id_fila[$id]; $fila = $productos_id_fila[$id];
$records[$fila][1] = $producto_pedido->cantidad_pedida; $records[$fila][1] = $producto_pedido->cantidad_pedida;
@ -232,7 +231,7 @@ class GrupoDeCompra extends Model
$pedidos = $this->pedidosAprobados(); $pedidos = $this->pedidosAprobados();
// Generar tabla vacía con una columna por núcleo // Generar tabla vacía con una columna por núcleo
$records = $this->obtenerTemplateDeFilasVacias($pedidos->count()); $records = $this->obtenerTemplateDeFilasVacias($pedidos->count());
$productos_id_fila = Producto::productosIdFila(); $productos_id_fila = Producto::productosIDFila();
foreach ($productos_en_pedido as $id => $producto_pedido) { foreach ($productos_en_pedido as $id => $producto_pedido) {
$fila = $productos_id_fila[$id]; $fila = $productos_id_fila[$id];
@ -270,7 +269,7 @@ class GrupoDeCompra extends Model
->orderBy('nombre'); ->orderBy('nombre');
} }
public static function transportePorBarrio() public static function transportePorBarrio(): array
{ {
$result = []; $result = [];
$barrios = GrupoDeCompra::barriosMenosPrueba()->get(); $barrios = GrupoDeCompra::barriosMenosPrueba()->get();
@ -283,9 +282,9 @@ class GrupoDeCompra extends Model
} }
/** /**
* @return \Illuminate\Support\Collection * @return Collection
*/ */
public function productosPedidos($excluirBarriales = false): \Illuminate\Support\Collection public function productosPedidos($excluirBarriales = false): Collection
{ {
$query = DB::table('pedidos_aprobados') $query = DB::table('pedidos_aprobados')
->where('grupo_de_compra_id', $this->id); ->where('grupo_de_compra_id', $this->id);

View file

@ -13,7 +13,7 @@ use League\Csv\Writer;
class CsvHelper class CsvHelper
{ {
public static function getRecords($filePath): Iterator { public static function getRecords($filePath): Iterator {
$csv = Reader::createFromPath(resource_path($filePath), 'r'); $csv = Reader::createFromPath(resource_path($filePath));
try { try {
$csv->setDelimiter("|"); $csv->setDelimiter("|");
$csv->setEnclosure("'"); $csv->setEnclosure("'");
@ -34,7 +34,7 @@ class CsvHelper
} }
$writer->insertAll($contenido); $writer->insertAll($contenido);
} catch (CannotInsertRecord $e) { } catch (CannotInsertRecord $e) {
var_export($e->getRecords()); Log::error($e->getMessage(), $e->getTrace());
} }
} }
} }

View file

@ -3,7 +3,6 @@
namespace App\Helpers; namespace App\Helpers;
use App\CanastaLog; use App\CanastaLog;
use Exception;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class TransporteHelper class TransporteHelper

View file

@ -3,8 +3,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\GrupoDeCompra; use App\GrupoDeCompra;
use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Response;
class AdminController extends Controller class AdminController extends Controller
{ {
@ -18,16 +17,18 @@ class AdminController extends Controller
} }
public function exportarPedidosAPdf(GrupoDeCompra $gdc) { public function exportarPedidosAPdf(GrupoDeCompra $gdc) {
return $gdc->exportarPedidosAPdf(); $gdc->exportarPedidosAPdf();
} }
public function exportarPedidoACSV(GrupoDeCompra $gdc) { public function exportarPedidoACSV(GrupoDeCompra $gdc): BinaryFileResponse
{
$gdc->exportarPedidoEnCSV(); $gdc->exportarPedidoEnCSV();
$file = resource_path('csv/exports/'.$gdc->nombre.'.csv'); $file = resource_path('csv/exports/'.$gdc->nombre.'.csv');
return response()->download($file); return response()->download($file);
} }
public function exportarPedidoConNucleosACSV(GrupoDeCompra $gdc) { public function exportarPedidoConNucleosACSV(GrupoDeCompra $gdc): BinaryFileResponse
{
$gdc->exportarPedidoConNucleosEnCSV(); $gdc->exportarPedidoConNucleosEnCSV();
$file = resource_path('csv/exports/'.$gdc->nombre.'-completo.csv'); $file = resource_path('csv/exports/'.$gdc->nombre.'-completo.csv');
return response()->download($file); return response()->download($file);

View file

@ -10,24 +10,11 @@ use App\Producto;
class ProductoController extends Controller class ProductoController extends Controller
{ {
/**
* Mostrar una lista de productos.
*
* @param App\Filtros\FiltroDeProducto $filtros
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(FiltroDeProducto $filtros, Request $request) public function index(FiltroDeProducto $filtros, Request $request)
{ {
return ProductoResource::collection(Producto::filtrar($filtros)->paginate(Producto::getPaginar($request))); return ProductoResource::collection(Producto::filtrar($filtros)->paginate(Producto::getPaginar($request)));
} }
/**
* Display the specified resource.
*
* @param \App\Producto $producto
* @return \Illuminate\Http\Response
*/
public function show(Producto $producto) public function show(Producto $producto)
{ {
return new ProductoResource($producto); return new ProductoResource($producto);

View file

@ -15,13 +15,6 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
class SubpedidoController extends Controller class SubpedidoController extends Controller
{ {
/**
* Mostrar una lista de productos.
*
* @param App\Filtros\FiltroDeSubpedido $filtros
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(FiltroDeSubpedido $filtros, Request $request) public function index(FiltroDeSubpedido $filtros, Request $request)
{ {
return Subpedido::filtrar($filtros)->get(); return Subpedido::filtrar($filtros)->get();
@ -32,12 +25,6 @@ class SubpedidoController extends Controller
return SubpedidoResource::collection(Subpedido::filtrar($filtros)->get()); return SubpedidoResource::collection(Subpedido::filtrar($filtros)->get());
} }
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) public function store(Request $request)
{ {
$validado = $this->validateSubpedido(); $validado = $this->validateSubpedido();
@ -51,7 +38,8 @@ class SubpedidoController extends Controller
return $s; return $s;
} }
protected function validateSubpedido(){ protected function validateSubpedido(): array
{
return request()->validate([ return request()->validate([
'nombre' => 'required|max:255', 'nombre' => 'required|max:255',
'grupo_de_compra_id' => [ 'grupo_de_compra_id' => [
@ -61,12 +49,6 @@ class SubpedidoController extends Controller
]); ]);
} }
/**
* Display the specified resource.
*
* @param \App\Subpedido $subpedido
* @return \Illuminate\Http\Response
*/
public function show(Subpedido $subpedido) public function show(Subpedido $subpedido)
{ {
return new SubpedidoResource($subpedido); return new SubpedidoResource($subpedido);

View file

@ -5,7 +5,9 @@ namespace App\Http\Controllers;
use App\GrupoDeCompra; use App\GrupoDeCompra;
use App\Helpers\CanastaHelper; use App\Helpers\CanastaHelper;
use App\Producto; use App\Producto;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ComprasController class ComprasController
{ {
@ -15,13 +17,15 @@ class ComprasController
return view('compras_pedidos'); return view('compras_pedidos');
} }
public function descargarPedidos() { public function descargarPedidos(): BinaryFileResponse
{
Producto::planillaTotales(); Producto::planillaTotales();
$file = resource_path('csv/exports/pedidos-por-barrio.csv'); $file = resource_path('csv/exports/pedidos-por-barrio.csv');
return response()->download($file); return response()->download($file);
} }
public function descargarNotas() { public function descargarNotas(): BinaryFileResponse
{
Producto::planillaNotas(); Producto::planillaNotas();
$file = resource_path('csv/exports/notas-por-barrio.csv'); $file = resource_path('csv/exports/notas-por-barrio.csv');
return response()->download($file); return response()->download($file);
@ -36,7 +40,7 @@ class ComprasController
return view('auth/compras_login'); return view('auth/compras_login');
} }
public function cargarCanasta(Request $request) public function cargarCanasta(Request $request): JsonResponse
{ {
$request->validate([ $request->validate([
'data' => 'required|file|mimes:csv,txt|max:2048', 'data' => 'required|file|mimes:csv,txt|max:2048',
@ -47,10 +51,11 @@ class ComprasController
return response()->json([ return response()->json([
'message' => 'Canasta cargada exitosamente', 'message' => 'Canasta cargada exitosamente',
], 200); ]);
} }
public function descargarCanastaEjemplo() { public function descargarCanastaEjemplo(): BinaryFileResponse
{
$file = resource_path('csv/productos.csv'); $file = resource_path('csv/productos.csv');
return response()->download($file); return response()->download($file);
} }

View file

@ -2,8 +2,6 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProductoController extends Controller class ProductoController extends Controller
{ {
/** /**
@ -16,11 +14,6 @@ class ProductoController extends Controller
$this->middleware(['auth','subpedido']); $this->middleware(['auth','subpedido']);
} }
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index() public function index()
{ {
return view('productos'); return view('productos');

View file

@ -3,18 +3,12 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Closure; use Closure;
use Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
class Admin class Admin
{ {
/** public function handle(Request $request, Closure $next)
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{ {
$user = Auth::user(); $user = Auth::user();
if ($user->is_admin) { if ($user->is_admin) {

View file

@ -3,17 +3,18 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Closure; use Closure;
use Illuminate\Http\Request;
class Subpedido class Subpedido
{ {
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @param \Closure $next * @param Closure $next
* @return mixed * @return mixed
*/ */
public function handle($request, Closure $next) public function handle(Request $request, Closure $next)
{ {
if (!session('subpedido_nombre') || !session('subpedido_id')) { if (!session('subpedido_nombre') || !session('subpedido_id')) {
return redirect()->route('subpedidos.create'); return redirect()->route('subpedidos.create');

View file

@ -2,6 +2,7 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class GrupoDeCompraResource extends JsonResource class GrupoDeCompraResource extends JsonResource
@ -9,10 +10,10 @@ class GrupoDeCompraResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array * @return array
*/ */
public function toArray($request) public function toArray($request): array
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
@ -23,8 +24,8 @@ class GrupoDeCompraResource extends JsonResource
'total_barrial' => number_format($this->totalBarrial(),2), 'total_barrial' => number_format($this->totalBarrial(),2),
'total_devoluciones' => number_format($this->totalDevoluciones(),2), 'total_devoluciones' => number_format($this->totalDevoluciones(),2),
'total_a_transferir' => number_format($this->totalATransferir(),2), 'total_a_transferir' => number_format($this->totalATransferir(),2),
'total_transporte' => number_format($this->totalTransporte(),0), 'total_transporte' => number_format($this->totalTransporte()),
'cantidad_transporte' => number_format($this->cantidadTransporte(),0), 'cantidad_transporte' => number_format($this->cantidadTransporte()),
]; ];
} }
} }

View file

@ -2,6 +2,7 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductoResource extends JsonResource class ProductoResource extends JsonResource
@ -9,10 +10,10 @@ class ProductoResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array * @return array
*/ */
public function toArray($request) public function toArray($request): array
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,

View file

@ -2,6 +2,7 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class SubpedidoResource extends JsonResource class SubpedidoResource extends JsonResource
@ -9,10 +10,10 @@ class SubpedidoResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array * @return array
*/ */
public function toArray($request) public function toArray($request): array
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
@ -21,8 +22,8 @@ class SubpedidoResource extends JsonResource
'productos' => $this->productos, 'productos' => $this->productos,
'aprobado' => (bool) $this->aprobado, 'aprobado' => (bool) $this->aprobado,
'total' => number_format($this->total(),2), 'total' => number_format($this->total(),2),
'total_transporte' => number_format($this->totalTransporte(),0), 'total_transporte' => number_format($this->totalTransporte()),
'cantidad_transporte' => number_format($this->cantidadTransporte(),0), 'cantidad_transporte' => number_format($this->cantidadTransporte()),
'total_sin_devoluciones' => number_format($this->totalSinDevoluciones(),2), 'total_sin_devoluciones' => number_format($this->totalSinDevoluciones(),2),
'devoluciones_total' => number_format($this->devoluciones_total,2), 'devoluciones_total' => number_format($this->devoluciones_total,2),
'devoluciones_notas' => $this->devoluciones_notas 'devoluciones_notas' => $this->devoluciones_notas

View file

@ -5,7 +5,10 @@ namespace App;
use App\Filtros\FiltroDeProducto; use App\Filtros\FiltroDeProducto;
use App\Helpers\CsvHelper; use App\Helpers\CsvHelper;
use App\Helpers\TransporteHelper; use App\Helpers\TransporteHelper;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -15,50 +18,45 @@ class Producto extends Model
{ {
public $timestamps = false; public $timestamps = false;
protected $fillable = ["nombre", "precio", "presentacion", "stock", "categoria"]; protected $fillable = ["nombre", "precio", "presentacion", "stock", "categoria"];
static $paginarPorDefecto = 10; static int $paginarPorDefecto = 10;
public function subpedidos() public function subpedidos(): BelongsToMany
{ {
return $this->belongsToMany('App\Subpedido', 'productos_subpedidos')->withPivot(["cantidad", "notas"]); return $this->belongsToMany('App\Subpedido', 'productos_subpedidos')->withPivot(["cantidad", "notas"]);
} }
public function proveedor() public function proveedor(): BelongsTo
{ {
return $this->belongsTo('App\Proveedor'); return $this->belongsTo('App\Proveedor');
} }
public function pagaTransporte()
{
return !($this->bono || Str::contains($this->categoria, 'SUBSIDIADO'));
}
//Este método permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda) //Este método permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
public function scopeFiltrar($query, FiltroDeProducto $filtros) public function scopeFiltrar($query, FiltroDeProducto $filtros): Builder
{ {
return $filtros->aplicar($query); return $filtros->aplicar($query);
} }
public static function getPaginar(Request $request) public static function getPaginar(Request $request): int
{ {
return $request->has('paginar') && intval($request->input('paginar')) ? intval($request->input('paginar')) : self::$paginarPorDefecto; return $request->has('paginar') && intval($request->input('paginar')) ? intval($request->input('paginar')) : self::$paginarPorDefecto;
} }
public static function productosFilaID() public static function productosFilaID()
{ {
return Producto::pluck('id', 'fila',)->all(); return Producto::pluck('id', 'fila')->all();
} }
public static function productosIDFila() public static function productosIDFila()
{ {
return Producto::pluck('fila', 'id',)->all(); return Producto::pluck('fila', 'id')->all();
} }
public static function productosIDNombre() public static function productosIDNombre()
{ {
return Producto::pluck('nombre', 'id',)->all(); return Producto::pluck('nombre', 'id')->all();
} }
static public function cantidadesPorBarrio() static public function cantidadesPorBarrio(): Collection
{ {
$barrios = GrupoDeCompra::barriosMenosPrueba() $barrios = GrupoDeCompra::barriosMenosPrueba()
->pluck('id', 'nombre'); ->pluck('id', 'nombre');

View file

@ -3,6 +3,7 @@
namespace App; namespace App;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Proveedor extends Model class Proveedor extends Model
{ {
@ -10,7 +11,7 @@ class Proveedor extends Model
protected $fillable = [ "nombre","direccion","telefono","correo","comentario" ]; protected $fillable = [ "nombre","direccion","telefono","correo","comentario" ];
protected $table = 'proveedores'; protected $table = 'proveedores';
public function productos() public function productos(): HasMany
{ {
return $this->hasMany('App\Producto'); return $this->hasMany('App\Producto');
} }

View file

@ -3,40 +3,30 @@
namespace App; namespace App;
use App\Helpers\TransporteHelper; use App\Helpers\TransporteHelper;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Log;
use App\Filtros\FiltroDeSubpedido; use App\Filtros\FiltroDeSubpedido;
class Subpedido extends Model class Subpedido extends Model
{ {
const COSTO_TRANSPORTE = 15;
public $timestamps = false; public $timestamps = false;
protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas']; protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas'];
public function productos() public function productos(): BelongsToMany
{ {
return $this->belongsToMany('App\Producto')->withPivot(["cantidad", "total", "notas"]); return $this->belongsToMany('App\Producto')->withPivot(["cantidad", "total", "notas"]);
} }
//Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte public function grupoDeCompra(): BelongsTo
private function bonos()
{
return $this->productos()->where('bono', 1);
}
public function productosSinBonos()
{
return $this->productos()->where('bono', false);
}
public function grupoDeCompra()
{ {
return $this->belongsTo('App\GrupoDeCompra'); return $this->belongsTo('App\GrupoDeCompra');
} }
// Permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda) // Permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
public function scopeFiltrar($query, FiltroDeSubpedido $filtros) public function scopeFiltrar($query, FiltroDeSubpedido $filtros): Builder
{ {
return $filtros->aplicar($query); return $filtros->aplicar($query);
} }

View file

@ -2,7 +2,7 @@
namespace App; namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
@ -38,7 +38,7 @@ class User extends Authenticatable
]; ];
public function grupoDeCompra() public function grupoDeCompra(): BelongsTo
{ {
return $this->belongsTo('App\GrupoDeCompra'); return $this->belongsTo('App\GrupoDeCompra');
} }

View file

@ -1,9 +1,10 @@
<?php <?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */ /** @var Factory $factory */
use App\User; use App\User;
use Faker\Generator as Faker; use Faker\Generator as Faker;
use Illuminate\Database\Eloquent\Factory;
use Illuminate\Support\Str; use Illuminate\Support\Str;
/* /*

View file

@ -1,8 +1,5 @@
<?php <?php
use App\Filtros\FiltroDeProducto;
use App\Filtros\FiltroDeSubpedido;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\GrupoDeCompra; use App\GrupoDeCompra;
use App\Producto; use App\Producto;

View file

@ -1,6 +1,9 @@
<?php <?php
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\URL;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -26,10 +29,9 @@ Route::get('/productos', 'ProductoController@index')->name('productos.index');
Route::get('/admin', 'AdminController@show')->name('admin_login.show'); Route::get('/admin', 'AdminController@show')->name('admin_login.show');
Route::get('/admin/obtener_sesion', function() { Route::get('/admin/obtener_sesion', function() {
$sesion = [ return [
'gdc' => session("admin_gdc") 'gdc' => session("admin_gdc")
]; ];
return $sesion;
})->name('admin_obtener_sesion'); })->name('admin_obtener_sesion');
Route::middleware(['auth', 'admin'])->group( function () { Route::middleware(['auth', 'admin'])->group( function () {
@ -64,14 +66,13 @@ Route::middleware('auth')->group( function() {
})->name('guardarSesion'); })->name('guardarSesion');
Route::get('obtener_sesion', function() { Route::get('obtener_sesion', function() {
$sesion = [ return [
'subpedido' => [ 'subpedido' => [
'nombre' => session("subpedido_nombre"), 'nombre' => session("subpedido_nombre"),
'id' => session("subpedido_id") 'id' => session("subpedido_id")
], ],
'gdc' => session("gdc") 'gdc' => session("gdc")
]; ];
return $sesion;
})->name('obtenerSesion'); })->name('obtenerSesion');
}); });
}); });