/**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     $workOrderScheduleService = new WorkOrderSchedulerService();
     try {
         \DB::beginTransaction();
         // First create the PO object
         $purchaseOrder = new PurchaseOrder();
         $purchaseOrder->customer_id = $request->input('customer_id');
         $purchaseOrder->fulfilled = $request->input('fulfilled') ? 1 : 0;
         $purchaseOrder->paid = $request->input('paid') ? 1 : 0;
         $purchaseOrder->delivery = $request->input('delivery');
         $purchaseOrder->shipping = $request->input('shipping');
         $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');
         // TEMP StuFF TODO: REMOVE LATER
         if ($request->input('created_at')) {
             $strStartDate = substr($request->input('created_at'), 0, strpos($request->input('created_at'), 'T'));
             $startDate = \Carbon\Carbon::createFromFormat('Y-m-d', $strStartDate);
             $purchaseOrder->created_at = $startDate;
         }
         //////////////////////////////
         $purchaseOrder->save();
         // Now add purchase order products for PO
         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']]);
             }
         }
         $newWoIds = [];
         if ($request->input('suppressworkorder') != "1") {
             // If there are work orders needed for this PO, add them now
             $newWoIds = $workOrderScheduleService->generateWorkOrdersForPo($purchaseOrder, $request->input('work_orders'), $request->input('start_date'));
             // Lastly, deduct the quantity ordered from the current stock for the product
             $workOrderScheduleService->deductStockFromProducts($request->input('purchase_order_products'));
         }
         \DB::commit();
         return response()->json(['newId' => $purchaseOrder->id, 'newWoIds' => $newWoIds]);
     } catch (\Exception $ex) {
         \DB::rollBack();
         throw $ex;
     }
 }