/** * 受注情報、お届け先情報の更新 * * @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); }
/** * 配送商品情報を作成 * * @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; }