private function getCouponOrder(CouponCoupon $Coupon, $discount, $preOrderId)
 {
     $this->Customer = $this->createCustomer('*****@*****.**');
     $Order = $this->createOrder($this->Customer);
     $Order->setPreOrderId($preOrderId);
     $details = $Coupon->getCouponDetails();
     /** @var \Plugin\Coupon\Entity\CouponCouponDetail $CouponDetail */
     $CouponDetail = $details[0];
     $Product = $CouponDetail->getProduct();
     $ProductClasses = $Product->getProductClasses();
     $ProductClass = $ProductClasses[0];
     $orderDetails = $Order->getOrderDetails();
     foreach ($orderDetails as $OrderDetail) {
         $Order->removeOrderDetail($OrderDetail);
     }
     $OrderDetail = new OrderDetail();
     $TaxRule = $this->app['eccube.repository.tax_rule']->getByRule();
     // デフォルト課税規則
     $OrderDetail->setProduct($Product)->setProductClass($ProductClass)->setProductName($Product->getName())->setProductCode($ProductClass->getCode())->setPrice($ProductClass->getPrice02())->setQuantity(1)->setTaxRule($TaxRule->getCalcRule()->getId())->setTaxRate($TaxRule->getTaxRate());
     $this->app['orm.em']->persist($OrderDetail);
     $OrderDetail->setOrder($Order);
     $Order->addOrderDetail($OrderDetail);
     $CouponOrder = new CouponCouponOrder();
     $CouponOrder->setDelFlg(Constant::DISABLED);
     $CouponOrder->setDiscount($discount);
     $CouponOrder->setUserId($this->Customer->getId());
     $CouponOrder->setCouponId($Coupon->getId());
     $CouponOrder->setOrderId($Order->getId());
     $CouponOrder->setPreOrderId($Order->getPreOrderId());
     $CouponOrder->setCouponCd($Coupon->getCouponCd());
     return $CouponOrder;
 }
Пример #2
0
 /**
  * カテゴリがクーポン適用の対象か調査する.
  * 下位のカテゴリから上位のカテゴリに向けて検索する
  *
  * @param \Plugin\Coupon\Entity\CouponCoupon $Coupon
  * @param \Eccube\Entity\Order $Order
  * @return boolean
  */
 private function containsCategory(\Plugin\Coupon\Entity\CouponCoupon $Coupon, \Eccube\Entity\Order $Order)
 {
     // クーポンの対象カテゴリIDを配列にする
     $targetCategoryIds = array();
     foreach ($Coupon->getCouponDetails() as $detail) {
         $targetCategoryIds[] = $detail->getCategory()->getId();
     }
     // 受注データからカテゴリIDを取得する
     foreach ($Order->getOrderDetails() as $orderDetail) {
         foreach ($orderDetail->getProduct()->getProductCategories() as $productCategory) {
             if ($this->existsDepthCategory($targetCategoryIds, $productCategory->getCategory())) {
                 return true;
             }
         }
     }
     return false;
 }