setPaymentTotal() публичный Метод

Set payment_total
public setPaymentTotal ( string $paymentTotal ) : Order
$paymentTotal string
Результат Order
Пример #1
0
 /**
  * フォームからの入直内容に基づいて、受注情報の再計算を行う
  *
  * @param $app
  * @param $Order
  */
 protected function calculate($app, \Eccube\Entity\Order $Order)
 {
     $taxtotal = 0;
     $subtotal = 0;
     // 受注明細データの税・小計を再計算
     /** @var $OrderDetails \Eccube\Entity\OrderDetail[] */
     $OrderDetails = $Order->getOrderDetails();
     foreach ($OrderDetails as $OrderDetail) {
         // 新規登録の場合は, 入力されたproduct_id/produc_class_idから明細にセットする.
         if (!$OrderDetail->getId()) {
             $TaxRule = $app['eccube.repository.tax_rule']->getByRule($OrderDetail->getProduct(), $OrderDetail->getProductClass());
             $OrderDetail->setTaxRule($TaxRule->getCalcRule()->getId());
             $OrderDetail->setProductName($OrderDetail->getProduct()->getName());
             $OrderDetail->setProductCode($OrderDetail->getProductClass()->getCode());
             $OrderDetail->setClassName1($OrderDetail->getProductClass()->hasClassCategory1() ? $OrderDetail->getProductClass()->getClassCategory1()->getClassName()->getName() : null);
             $OrderDetail->setClassName2($OrderDetail->getProductClass()->hasClassCategory2() ? $OrderDetail->getProductClass()->getClassCategory2()->getClassName()->getName() : null);
             $OrderDetail->setClassCategoryName1($OrderDetail->getProductClass()->hasClassCategory1() ? $OrderDetail->getProductClass()->getClassCategory1()->getName() : null);
             $OrderDetail->setClassCategoryName2($OrderDetail->getProductClass()->hasClassCategory2() ? $OrderDetail->getProductClass()->getClassCategory2()->getName() : null);
         }
         // 税
         $tax = $app['eccube.service.tax_rule']->calcTax($OrderDetail->getPrice(), $OrderDetail->getTaxRate(), $OrderDetail->getTaxRule());
         $OrderDetail->setPriceIncTax($OrderDetail->getPrice() + $tax);
         $taxtotal += $tax;
         // 小計
         $subtotal += $OrderDetail->getTotalPrice();
     }
     $shippings = $Order->getShippings();
     /** @var \Eccube\Entity\Shipping $Shipping */
     foreach ($shippings as $Shipping) {
         $shipmentItems = $Shipping->getShipmentItems();
         $Shipping->setDelFlg(Constant::DISABLED);
         /** @var \Eccube\Entity\ShipmentItem $ShipmentItem */
         if (!$Shipping->getId()) {
             foreach ($shipmentItems as $ShipmentItem) {
                 $ShipmentItem->setProductName($ShipmentItem->getProduct()->getName());
                 $ShipmentItem->setProductCode($ShipmentItem->getProductClass()->getCode());
                 $ShipmentItem->setClassName1($ShipmentItem->getProductClass()->hasClassCategory1() ? $ShipmentItem->getProductClass()->getClassCategory1()->getClassName()->getName() : null);
                 $ShipmentItem->setClassName2($ShipmentItem->getProductClass()->hasClassCategory2() ? $ShipmentItem->getProductClass()->getClassCategory2()->getClassName()->getName() : null);
                 $ShipmentItem->setClassCategoryName1($ShipmentItem->getProductClass()->hasClassCategory1() ? $ShipmentItem->getProductClass()->getClassCategory1()->getName() : null);
                 $ShipmentItem->setClassCategoryName2($ShipmentItem->getProductClass()->hasClassCategory2() ? $ShipmentItem->getProductClass()->getClassCategory2()->getName() : null);
             }
         }
     }
     // 受注データの税・小計・合計を再計算
     $Order->setTax($taxtotal);
     $Order->setSubtotal($subtotal);
     $Order->setTotal($subtotal + $Order->getCharge() + $Order->getDeliveryFeeTotal() - $Order->getDiscount());
     // お支払い合計は、totalと同一金額(2系ではtotal - point)
     $Order->setPaymentTotal($Order->getTotal());
 }
Пример #2
0
 /**
  * 住所などの情報が変更された時に金額の再計算を行う
  */
 public function getAmount(\Eccube\Entity\Order $Order, \Eccube\Entity\Cart $Cart)
 {
     // 初期選択の配送業者をセット
     $shippings = $Order->getShippings();
     $delivery = $shippings[0]->getDelivery();
     $deliveryFee = $this->app['eccube.repository.delivery_fee']->findOneBy(array('Delivery' => $delivery, 'Pref' => $shippings[0]->getPref()));
     // 配送料金の設定
     $payment = $Order->getPayment();
     if (!is_null($payment)) {
         $Order->setPayment($payment);
         $Order->setPaymentMethod($payment->getMethod());
         $Order->setCharge($payment->getCharge());
     }
     $Order->setDeliveryFeeTotal($deliveryFee->getFee());
     $baseInfo = $this->app['eccube.repository.base_info']->get();
     // 配送料無料条件(合計金額)
     $deliveryFreeAmount = $baseInfo->getDeliveryFreeAmount();
     if (!is_null($deliveryFreeAmount)) {
         // 合計金額が設定金額以上であれば送料無料
         if ($Order->getSubTotal() >= $deliveryFreeAmount) {
             $Order->setDeliveryFeeTotal(0);
         }
     }
     // 配送料無料条件(合計数量)
     $deliveryFreeQuantity = $baseInfo->getDeliveryFreeQuantity();
     if (!is_null($deliveryFreeQuantity)) {
         // 合計数量が設定数量以上であれば送料無料
         if ($Cart->getTotalQuantity() >= $deliveryFreeQuantity) {
             $Order->setDeliveryFeeTotal(0);
         }
     }
     $total = $Order->getSubTotal() + $Order->getCharge() + $Order->getDeliveryFeeTotal();
     $Order->setTotal($total);
     $Order->setPaymentTotal($total);
     $this->app['orm.em']->flush();
     return $Order;
 }
Пример #3
0
 /**
  * 合計金額がマイナスになっていた場合、値引き処理を元に戻す
  *
  * @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');
         }
     }
 }
Пример #4
0
 /**
  * 合計金額を計算
  *
  * @param Order $Order
  * @return Order
  */
 public function calculatePrice(Order $Order)
 {
     $total = $Order->getTotalPrice();
     if ($total < 0) {
         // 合計金額がマイナスの場合、0を設定し、discountは値引きされた額のみセット
         $total = 0;
     }
     $Order->setTotal($total);
     $Order->setPaymentTotal($total);
     return $Order;
 }
Пример #5
0
 /**
  * クーポンコードが未入力または、クーポンコードを登録後に再度別のクーポンコードが設定された場合、
  * 既存のクーポンを情報削除
  *
  * @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);
     }
 }