/** * 受注情報を作成 * @return \Eccube\Entity\Order */ public function newOrder() { $Order = new \Eccube\Entity\Order(); $Order->setDiscount(0)->setSubtotal(0)->setTotal(0)->setPaymentTotal(0)->setCharge(0)->setTax(0)->setOrderStatus($this->app['eccube.repository.order_status']->find($this->app['config']['order_processing']))->setDelFlg(Constant::DISABLED); return $Order; }
/** * 合計金額がマイナスになっていた場合、値引き処理を元に戻す * * @param Order $Order */ private function restoreDiscount(Order $Order) { // クーポンが未入力でクーポン情報が存在すればクーポン情報を削除 $CouponOrder = $this->app['eccube.plugin.coupon.service.coupon']->getCouponOrder($Order->getPreOrderId()); if ($CouponOrder) { $total = $Order->getSubtotal() + $Order->getCharge() + $Order->getDeliveryFeeTotal(); // 合計金額 $totalAmount = $total - $Order->getDiscount(); if ($totalAmount < 0) { // 合計金額がマイナスのため、金額を値引き前に戻す $this->app['orm.em']->remove($CouponOrder); $this->app['orm.em']->flush($CouponOrder); $discount = $Order->getDiscount() - $CouponOrder->getDiscount(); $Order->setDiscount($discount); $total = $total - $discount; $Order->setTotal($total); $Order->setPaymentTotal($total); $this->app['orm.em']->flush($Order); $this->app->addError($this->app->trans('front.plugin.coupon.shopping.use.minus'), 'front.request'); } } }
/** * 値引き金額をセット * * @param Order $Order * @param $discount */ public function setDiscount(Order $Order, $discount) { $Order->setDiscount($Order->getDiscount() + $discount); }
/** * クーポンコードが未入力または、クーポンコードを登録後に再度別のクーポンコードが設定された場合、 * 既存のクーポンを情報削除 * * @param Order $Order * @param Application $app */ private function removeCouponOrder(Order $Order, Application $app) { // クーポンが未入力でクーポン情報が存在すればクーポン情報を削除 $CouponOrder = $app['eccube.plugin.coupon.service.coupon']->getCouponOrder($Order->getPreOrderId()); if ($CouponOrder) { $app['orm.em']->remove($CouponOrder); $app['orm.em']->flush($CouponOrder); $Order->setDiscount($Order->getDiscount() - $CouponOrder->getDiscount()); $Order->setTotal($Order->getTotal() + $CouponOrder->getDiscount()); $Order->setPaymentTotal($Order->getPaymentTotal() + $CouponOrder->getDiscount()); $app['orm.em']->flush($Order); } }