/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $purchaseOrder = PurchaseOrder::find($id); if (isset($purchaseOrder)) { try { \DB::beginTransaction(); $purchaseOrder->customer_id = $request->input('customer_id'); $purchaseOrder->fulfilled = (int) $request->input('fulfilled'); $purchaseOrder->paid = $request->input('paid') ? 1 : 0; $purchaseOrder->payment_type_id = $request->input('payment_type_id'); $purchaseOrder->amount_paid = $request->input('amount_paid'); $purchaseOrder->discount = $request->input('discount'); $purchaseOrder->total = $request->input('total'); $purchaseOrder->pickup_date = $request->input('pickup_date'); $purchaseOrder->notes = $request->input('notes'); $purchaseOrder->sales_channel_id = $request->input('sales_channel_id'); /* // Sync purchase order products now PurchaseOrderProduct::where('purchase_order_id', $purchaseOrder->id)->delete(); if($request->input('purchase_order_products') && is_array($request->input('purchase_order_products'))) { foreach($request->input('purchase_order_products') as $pop) { $purchaseOrder->purchaseOrderProducts()->create(['purchase_order_id' => $purchaseOrder->id, 'product_id' => $pop['product_id'], 'quantity' => $pop['quantity'] ]); } } */ $purchaseOrder->save(); if ($purchaseOrder->fulfilled == 1) { // PO is marked as fulfilled (completed), initiate finalization tasks $orderLogicService = new OrderLogicService(); $orderLogicService->finalizePurchaseOrder($purchaseOrder->id); } \DB::commit(); } catch (\Exception $ex) { \DB::rollBack(); throw $ex; } } }