Exemplo n.º 1
0
 protected function onConsign(array $options, GoodsPassport $product)
 {
     $order = new Orders();
     $order->setCustom($options['custom'])->setGoodsPassport($product)->setPayType($options['paytype'])->setKind($options['orderKindConsign'])->setStatus($options['orderStatusComplete'])->setRequired($product->getCost())->setPaid($product->getCost());
     $orderFeedBack = new Orders();
     $orderFeedBack->setKind($options['orderKindFeedback'])->setStatus($options['orderStatusHandling'])->setCustom($order->getCustom())->setGoodsPassport($order->getProduct())->setPayType($order->getPayType())->setRequired($order->getProduct()->getCost())->setPaid(0)->setParent($order);
     $this->addStorage($order)->addStorage($orderFeedBack);
     return $this;
 }
Exemplo n.º 2
0
 /**
  * [進貨|寄賣]訂單轉換綁定客戶
  *
  * ======== 流程 =========
  *
  * 根據手機和所屬店找出客戶實體-> :客戶
  * 
  * 如果訂單為一般進貨:
  *  -> 將該訂單狀態改為寄賣訂單,成本不變。
  *  -> 將訂單客戶關連實體綁定'客戶'。    
  *  -> 新增一筆寄賣回扣訂單關連原本訂單,成本相同,已付為0。
  *  -> 將訂單客戶關連實體綁定'客戶'。    
  *  
  * 如果訂單為寄賣:
  *  -> 將訂單客戶關連實體綁定'客戶'。        
  * 
  * ======== End ==========
  * 
  * @Route("/custom/{id}/mobil/{mobil}", requirements={"id" = "\d+"}, name="orders_v2_custom_alter", options={"expose"=true})
  * @ParamConverter("order", class="WoojinOrderBundle:Orders")
  * @Method("POST")
  */
 public function v2ChangeCustomAction(Request $request, Orders $order, $mobil)
 {
     $em = $this->getDoctrine()->getManager();
     $product = $order->getProduct();
     $user = $this->get('security.token_storage')->getToken()->getUser();
     /**
      * 訂單關聯客戶
      * 
      * @var \Woojin\OrderBundle\Entity\Custom
      */
     $custom = $em->getRepository('WoojinOrderBundle:Custom')->findOneBy(array('mobil' => $mobil, 'store' => $this->get('security.token_storage')->getToken()->getUser()->getStore()->getId()));
     if (!$custom) {
         throw new \Exception('客戶不存在!');
     }
     switch ($order->getKind()->getId()) {
         // 如果訂單為一般進貨
         case Avenue::OK_IN:
             $sculper = $this->get('sculper.clue');
             $sculper->initCancelConsignToPurchase();
             $sculper->setBefore($product);
             // 將原本的一般進貨訂單改成寄賣訂單
             $order->setKind($em->find('WoojinOrderBundle:OrdersKind', Avenue::OK_CONSIGN_IN))->setCustom($custom);
             $product->setCustom($custom);
             $em->persist($product);
             $sculper->setAfter($product);
             $clue = new AvenueClue();
             $clue->setUser($user)->setContent($sculper->getContent());
             $em->persist($clue);
             /**
              * 新增的寄賣回扣訂單
              * 
              * @var \Woojin\OrderBundle\Entity\Orders
              */
             $consignOrder = new Orders();
             $consignOrder->setGoodsPassport($order->getProduct())->setPayType($em->find('WoojinOrderBundle:PayType', Avenue::PT_CASH))->setRequired($order->getRequired())->setPaid(0)->setKind($em->find('WoojinOrderBundle:OrdersKind', Avenue::OK_FEEDBACK))->setStatus($em->find('WoojinOrderBundle:OrdersStatus', Avenue::OS_HANDLING))->setCustom($custom)->setParent($order);
             $em->persist($order);
             $em->persist($consignOrder);
             $em->flush($order);
             break;
             // 如果訂單為寄賣
         // 如果訂單為寄賣
         case Avenue::OK_CONSIGN_IN:
             $oldCustom = $order->getCustom();
             // 將訂單客戶關連實體綁定為手機查找到的客戶
             $order->setCustom($custom);
             $product = $order->getProduct();
             $product->setCustom($custom);
             $em->persist($product);
             foreach ($order->getRelates() as $relate) {
                 $em->persist($relate);
             }
             $em->persist($order);
             $em->flush();
             break;
         case Avenue::OK_OUT:
         case Avenue::OK_EXCHANGE_OUT:
         case Avenue::OK_TURN_OUT:
         case Avenue::OK_WEB_OUT:
         case Avenue::OK_SPECIAL_SELL:
         case Avenue::OK_SAME_BS:
             $order->setCustom($custom);
             $em->persist($order);
             $em->flush();
             break;
         default:
             break;
     }
     $this->get('passport.syncer')->sync($product);
     return new Response(json_encode(array('status' => '0', 'custom' => array('name' => $custom->getName(), 'mobil' => $custom->getMobil()))));
 }