Exemplo n.º 1
0
 protected function pick($product)
 {
     // 更新商品狀態
     $product->setStatus($this->saleStatus);
     $per = (100 - $this->invoice->getInvoiceSurcharge()) / 100;
     $order = new Orders();
     $order->setPaid(0)->setRequired(round($product->getPromotionPrice(true) * $per))->setOrgPaid(0)->setOrgRequired($product->getPromotionPrice(true))->setPayType($this->paytype)->setKind($this->kind)->setStatus($this->completeStatus)->setGoodsPassport($product)->setInvoice($this->invoice)->setCustom($this->custom);
     $ope = new Ope();
     $ope->setOrders($order)->setUser($this->user)->setAct('官網售出')->setDatetime(new \DateTime());
     $this->em->persist($product);
     $this->em->persist($order);
     $this->em->persist($ope);
 }
Exemplo n.º 2
0
 /**
  * @Route("/v2/update/{id}", requirements={"id" = "\d+"}, name="orders_v2_update", options={"expose"=true})
  * @ParamConverter("order", class="WoojinOrderBundle:Orders")
  * @Method("POST")
  */
 public function v2UpdateAction(Request $request, Orders $order)
 {
     if ($order->getStatus()->getId() !== 1) {
         return new \Exception('訂單非處理中狀態!');
     }
     $user = $this->get('security.token_storage')->getToken()->getUser();
     if (!is_object($user)) {
         throw new \Exception('Session timeout!');
     }
     $em = $this->getDoctrine()->getManager();
     $em->getConnection()->beginTransaction();
     try {
         /**
          * 訂單狀態:完成 實體
          *  
          * @var \Woojin\OrderBundle\Entity\OrdersStatus
          */
         $complete = $em->find('WoojinOrderBundle:OrdersStatus', Avenue::OS_COMPLETE);
         /**
          * 付費方式實體
          * 
          * @var \Woojin\OrderBundle\Entity\PayType
          */
         $payType = $em->find('WoojinOrderBundle:PayType', $request->request->get('pay_type', Avenue::PT_CASH));
         /**
          * 本次動作實際支付金額
          * 
          * @var integer
          */
         $paid = $request->request->get('paid');
         /**
          * 本次動作未計算折扣支付金額
          * 
          * @var integer
          */
         $paidOrg = $request->request->get('paid_org');
         /**
          * 今次動作優惠差額
          * 
          * @var integer
          */
         $diff = $paidOrg - $paid;
         /**
          * 目前總共支付金額 = 訂單已經支付 + 本次動作實際支付金額
          * 
          * @var integer
          */
         $totalPaid = $order->getPaid() + $paid;
         /**
          * 目前應付金額 = 訂單應付金額 - 今次動作優惠差額
          * 
          * @var integer
          */
         $required = $order->getRequired() - $diff;
         /**
          * 訂單備註
          * 
          * @var string
          */
         $memo = $request->request->get('memo');
         // 訂單資訊更新
         $order->setPaid($totalPaid)->setOrgPaid((int) $paidOrg + (int) $order->getOrgPaid())->setRequired($required)->setMemo($memo);
         // 檢查是否已經支付完畢,若為真則將訂單狀態設定為完成狀態
         if ($required <= $totalPaid) {
             $order->setStatus($complete);
         }
         $em->persist($order);
         $opeLogger = $this->get('logger.ope');
         $opeLogger->log($order, $user, $payType, (int) $paidOrg, '增加請款:[' . $paid . '元][' . $payType->getName() . ']');
         $sculper = $this->get('sculper.clue');
         $sculper->initPatch();
         $sculper->setAfter($opeLogger->getOpe());
         $clue = new AvenueClue();
         $clue->setUser($user)->setContent($sculper->getContent());
         $em->persist($clue);
         $em->persist($opeLogger->getOpe());
         $em->flush();
         $em->getConnection()->commit();
     } catch (\Exception $e) {
         $em->getConnection()->rollback();
         throw $e;
     }
     return new Response('ok');
 }