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; }
/** * [進貨|寄賣]訂單轉換綁定客戶 * * ======== 流程 ========= * * 根據手機和所屬店找出客戶實體-> :客戶 * * 如果訂單為一般進貨: * -> 將該訂單狀態改為寄賣訂單,成本不變。 * -> 將訂單客戶關連實體綁定'客戶'。 * -> 新增一筆寄賣回扣訂單關連原本訂單,成本相同,已付為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())))); }