Set payment_method
public setPaymentMethod ( string $paymentMethod ) : |
||
$paymentMethod | string | |
return |
/** * 住所などの情報が変更された時に金額の再計算を行う */ 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; }
/** * フォームからの入直内容に基づいて、受注情報の再計算を行う * * @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から明細にセットする. // todo 別メソッドに切り出す 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(); } // 受注データの税・小計・合計を再計算 $Order->setTax($taxtotal); $Order->setSubtotal($subtotal); $Order->setTotal($subtotal + $Order->getCharge() + $Order->getDeliveryFeeTotal() - $Order->getDiscount()); // お支払い合計は、totalと同一金額(2系ではtotal - point) $Order->setPaymentTotal($Order->getTotal()); // お支払い方法の更新 $Order->setPaymentMethod($Order->getPayment()->getMethod()); // お届け先の更新 $Shippings = $Order->getShippings(); foreach ($Shippings as $Shipping) { $Shipping->setShippingDeliveryName($Shipping->getDelivery()->getName()); $Shipping->setShippingDeliveryTime($Shipping->getDeliveryTime()->getDeliveryTime()); } }