Esempio n. 1
0
 /**
  * 受注情報、お届け先情報の更新
  *
  * @param Order $Order 受注情報
  * @param $data フォームデータ
  */
 public function setOrderUpdate(Order $Order, $data)
 {
     // 受注情報を更新
     $Order->setOrderDate(new \DateTime());
     $Order->setOrderStatus($this->app['eccube.repository.order_status']->find($this->app['config']['order_new']));
     $Order->setMessage($data['message']);
     // お届け先情報を更新
     $shippings = $data['shippings'];
     foreach ($shippings as $Shipping) {
         $Delivery = $Shipping->getDelivery();
         $deliveryFee = $this->app['eccube.repository.delivery_fee']->findOneBy(array('Delivery' => $Delivery, 'Pref' => $Shipping->getPref()));
         $deliveryTime = $Shipping->getDeliveryTime();
         if (!empty($deliveryTime)) {
             $Shipping->setShippingDeliveryTime($deliveryTime->getDeliveryTime());
         }
         $Shipping->setDeliveryFee($deliveryFee);
         // 商品ごとの配送料合計
         $productDeliveryFeeTotal = 0;
         if (!is_null($this->BaseInfo->getOptionProductDeliveryFee())) {
             $productDeliveryFeeTotal += $this->getProductDeliveryFee($Shipping);
         }
         $Shipping->setShippingDeliveryFee($deliveryFee->getFee() + $productDeliveryFeeTotal);
         $Shipping->setShippingDeliveryName($Delivery->getName());
     }
     // 配送料無料条件(合計金額)
     $this->setDeliveryFreeAmount($Order);
     // 配送料無料条件(合計数量)
     $this->setDeliveryFreeQuantity($Order);
 }
Esempio n. 2
0
 /**
  * 配送商品情報を作成
  *
  * @param Order $Order
  * @param Product $Product
  * @param ProductClass $ProductClass
  * @param $quantity
  * @return \Eccube\Entity\ShipmentItem
  */
 public function getNewShipmentItem(Order $Order, Product $Product, ProductClass $ProductClass, $quantity)
 {
     $ShipmentItem = new ShipmentItem();
     $shippings = $Order->getShippings();
     // 選択された商品がどのお届け先情報と関連するかチェック
     $Shipping = null;
     foreach ($shippings as $s) {
         if ($s->getDelivery()->getProductType()->getId() == $ProductClass->getProductType()->getId()) {
             // 商品種別が同一のお届け先情報と関連させる
             $Shipping = $s;
             break;
         }
     }
     // 商品ごとの配送料合計
     $productDeliveryFeeTotal = 0;
     if (!is_null($this->BaseInfo->getOptionProductDeliveryFee())) {
         $productDeliveryFeeTotal = $ProductClass->getDeliveryFee() * $quantity;
     }
     $Shipping->setShippingDeliveryFee($Shipping->getShippingDeliveryFee() + $productDeliveryFeeTotal);
     $ShipmentItem->setShipping($Shipping)->setOrder($Order)->setProductClass($ProductClass)->setProduct($Product)->setProductName($Product->getName())->setProductCode($ProductClass->getCode())->setPrice($ProductClass->getPrice02())->setQuantity($quantity);
     $ClassCategory1 = $ProductClass->getClassCategory1();
     if (!is_null($ClassCategory1)) {
         $ShipmentItem->setClasscategoryName1($ClassCategory1->getName());
         $ShipmentItem->setClassName1($ClassCategory1->getClassName()->getName());
     }
     $ClassCategory2 = $ProductClass->getClassCategory2();
     if (!is_null($ClassCategory2)) {
         $ShipmentItem->setClasscategoryName2($ClassCategory2->getName());
         $ShipmentItem->setClassName2($ClassCategory2->getClassName()->getName());
     }
     $Shipping->addShipmentItem($ShipmentItem);
     $this->em->persist($ShipmentItem);
     return $ShipmentItem;
 }