You are on page 1of 2

migración de purchases

$table->unsignedBigInteger('provider_id');
$table->foreign('provider_id')->references('id')->on('providers');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->dateTime('purchase_date');
$table->decimal('tax');
$table->decimal('total');
$table->enum('status',['VALID','CANCELED'])->default('VALID');
$table->string('picture')->nullable();
migración de purchase_details
$table->unsignedBigInteger('purchase_id');
$table->foreign('purchase_id')->references('id')->on('purchases');
$table->unsignedBigInteger('product_id');
$table->foreign('product_id')->references('id')->on('products');
$table->integer('quantity');
$table->decimal('price');
modelo de Purchase
protected $fillable = [
'provider_id',
'user_id',
'purchase_date',
'tax',
'total',
'status',
'picture',
];
public function user(){
return $this->belongsTo(User::class);
}
public function provider(){
return $this->belongsTo(Provider::class);
}
public function purchaseDetails(){
return $this->hasMany(PurchaseDetails::class);
}
modelo de PurchaseDetails
protected $fillable = [
'purchase_id',
'product_id',
'quantity',
'price',
];
public function purchase(){
return $this->belongsTo(Purchase::class);
}
public function product(){
return $this->belongsTo(Product::class);
}
controlador de PurchaseController
public function index()
{
$purchases = Purchase::get();
return view('admin.purchase.index', compact('purchases'));
}
public function create()
{
$providers = Provider::get();
$products = Product::where('status', 'ACTIVE')->get();
return view('admin.purchase.create', compact('providers','products'));
}
public function store(StoreRequest $request)
{
$purchase = Purchase::create($request->all()+[
'user_id'=>Auth::user()->id,
'purchase_date'=>Carbon::now('America/Lima'),
]);
foreach ($request->product_id as $key => $product) {
$results[] = array("product_id"=>$request->product_id[$key],
"quantity"=>$request->quantity[$key], "price"=>$request->price[$key]);
}
$purchase->purchaseDetails()->createMany($results);
return redirect()->route('purchases.index');
}
public function show(Purchase $purchase)
{
$subtotal = 0 ;
$purchaseDetails = $purchase->purchaseDetails;
foreach ($purchaseDetails as $purchaseDetail) {
$subtotal += $purchaseDetail->quantity * $purchaseDetail->price;
}
return view('admin.purchase.show', compact('purchase', 'purchaseDetails',
'subtotal'));
}

You might also like