Compare commits

...

2 Commits

Author SHA1 Message Date
Ale 9261467144 metodos de info de productos 2022-12-11 20:01:12 -03:00
Ale fe9b4cb2ef Lo que había de productos internos 2022-12-11 20:00:45 -03:00
7 changed files with 47 additions and 7 deletions

View File

@ -1,7 +1,6 @@
[Dolphin] [Dolphin]
HeaderColumnWidths=372,72,103 HeaderColumnWidths=372,72,103
SortRole=modificationtime Timestamp=2022,12,4,10,12,38
Timestamp=2022,6,1,16,36,48
Version=4 Version=4
ViewMode=1 ViewMode=1

View File

@ -31,6 +31,7 @@ class Filtro extends Model
//Aplicar filtros que aparecen en los parámetros, si los hay //Aplicar filtros que aparecen en los parámetros, si los hay
$filtros = $this->request->all(); $filtros = $this->request->all();
var_dump($filtros);
//el filtro nombre debe tomar precedencia sobre otros como (alfabetico) //el filtro nombre debe tomar precedencia sobre otros como (alfabetico)
if (isset($filtros["nombre"])) { if (isset($filtros["nombre"])) {

View File

@ -5,9 +5,14 @@ use Illuminate\Database\Eloquent\Builder;
class FiltroDeProducto extends Filtro { class FiltroDeProducto extends Filtro {
public function categoria(String $valor) public function categoria(String $valor)
{ {
$this->builder->where('categoria', $valor); $this->builder->where('categoria', $valor);
} }
public function grupoDeCompra($grupoDeCompraID)
{
$this->builder->where('', $valor);
}
} }

View File

@ -17,12 +17,19 @@ class GrupoDeCompra extends Model
protected $table = 'grupos_de_compra'; protected $table = 'grupos_de_compra';
protected $hidden = ['password']; protected $hidden = ['password'];
// devuelve una colección con los productos que este grupo de compra puede comprar // devuelve una colección con los productos no centrales que este grupo de compra puede comprar
public function productos() public function productosNoCentrales()
{ {
return $this->belongsToMany('App\Producto'); return $this->belongsToMany('App\Producto');
} }
public function productosComprables() {
$noCentrales = $this->productosNoCentrales();
$centrales = Producto::productosCentrales();
if ($noCentrales->count() == 0) return $centrales;
return $centrales->concat($noCentrales);
}
public function subpedidos() { public function subpedidos() {
return $this->hasMany('App\Subpedido'); return $this->hasMany('App\Subpedido');
} }
@ -114,4 +121,13 @@ class GrupoDeCompra extends Model
foreach ($gdcs as $gdc){ $gdc->exportarPedidoEnCSV(); } foreach ($gdcs as $gdc){ $gdc->exportarPedidoEnCSV(); }
} }
public function subpedidosInfo()
{
$pedidosAprobados = $this->pedidosAprobados();
foreach ($pedidosAprobados as $p) {
$p->info();
}
return $pedidosAprobados;
}
} }

View File

@ -7,6 +7,7 @@ use Illuminate\Http\Request;
use App\Filtros\FiltroDeProducto; use App\Filtros\FiltroDeProducto;
use App\Http\Resources\ProductoResource; use App\Http\Resources\ProductoResource;
use App\Producto; use App\Producto;
use Auth;
class ProductoController extends Controller class ProductoController extends Controller
{ {
@ -19,6 +20,7 @@ class ProductoController extends Controller
*/ */
public function index(FiltroDeProducto $filtros, Request $request) public function index(FiltroDeProducto $filtros, Request $request)
{ {
$gdcID = Auth::user()->grupoDeCompra->id;
return ProductoResource::collection(Producto::filtrar($filtros)->paginate(Producto::getPaginar($request))); return ProductoResource::collection(Producto::filtrar($filtros)->paginate(Producto::getPaginar($request)));
} }

View File

@ -12,15 +12,24 @@ class Producto extends Model
protected $fillable = [ "nombre", "precio", "presentacion", "stock", "categoria" ]; protected $fillable = [ "nombre", "precio", "presentacion", "stock", "categoria" ];
static $paginarPorDefecto = 10; static $paginarPorDefecto = 10;
public function subpedidos() public function gruposDeCompra()
{ {
return $this->belongsToMany('App\Subpedido','productos_subpedidos')->withPivot(["cantidad"]); return $this->belongsToMany('App\GrupoDeCompra', 'grupo_de_compra_producto', 'grupo_de_compra_id');
} }
public function proveedor() public function proveedor()
{ {
return $this->belongsTo('App\Proveedor'); return $this->belongsTo('App\Proveedor');
} }
public function subpedidos()
{
return $this->belongsToMany('App\Subpedido','productos_subpedidos')->withPivot(["cantidad"]);
}
public static function productosCentrales() {
return Producto::doesntHave('gruposDeCompra')->get();
}
//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)

View File

@ -88,4 +88,12 @@ class Subpedido extends Model
return $view->render(); return $view->render();
} }
public function info()
{
$res = [];
$res['id'] = $this->id;
$res['productos'] = $this->productos();
return $res;
}
} }