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

Get Payment
public getPayment ( ) : Eccube\Entity\Payment
Результат Eccube\Entity\Payment
 /**
  * 受注再編集用フォーム作成.
  *
  * @param Order $Order
  * @return array
  */
 public function createFormDataForEdit(Order $Order)
 {
     //受注アイテム
     $orderDetail = array();
     $OrderDetailColl = $Order->getOrderDetails();
     foreach ($OrderDetailColl as $OrderDetail) {
         $orderDetail[] = array('Product' => $OrderDetail->getProduct()->getId(), 'ProductClass' => $OrderDetail->getProductClass()->getId(), 'price' => $OrderDetail->getPrice(), 'quantity' => $OrderDetail->getQuantity(), 'tax_rate' => $OrderDetail->getTaxRate(), 'tax_rule' => $OrderDetail->getTaxRule());
     }
     //受注お届け
     $shippings = array();
     $ShippingsColl = $Order->getShippings();
     foreach ($ShippingsColl as $Shippings) {
         $deliveryTime = '';
         if (is_object($Shippings->getDeliveryTime())) {
             $deliveryTime = $Shippings->getDeliveryTime()->getId();
         }
         $shippingDeliveryDate = array('year' => null, 'month' => null, 'day' => null);
         if ($Shippings->getShippingDeliveryDate() instanceof \DateTime) {
             $shippingDeliveryDate['year'] = $Shippings->getShippingDeliveryDate()->format('Y');
             $shippingDeliveryDate['month'] = $Shippings->getShippingDeliveryDate()->format('m');
             $shippingDeliveryDate['day'] = $Shippings->getShippingDeliveryDate()->format('d');
         }
         $shippings[] = array('name' => array('name01' => $Shippings->getName01(), 'name02' => $Shippings->getName02()), 'kana' => array('kana01' => $Shippings->getKana01(), 'kana02' => $Shippings->getKana02()), 'company_name' => $Shippings->getCompanyName(), 'zip' => array('zip01' => $Shippings->getZip01(), 'zip02' => $Shippings->getZip02()), 'address' => array('pref' => $Shippings->getPref()->getId(), 'addr01' => $Shippings->getAddr01(), 'addr02' => $Shippings->getAddr02()), 'tel' => array('tel01' => $Shippings->getTel01(), 'tel02' => $Shippings->getTel02(), 'tel03' => $Shippings->getTel03()), 'fax' => array('fax01' => $Shippings->getFax01(), 'fax02' => $Shippings->getFax02(), 'fax03' => $Shippings->getFax03()), 'Delivery' => $Shippings->getDelivery()->getId(), 'DeliveryTime' => $deliveryTime, 'shipping_delivery_date' => $shippingDeliveryDate);
     }
     $Customer = $Order->getCustomer();
     $customer_id = null;
     if (is_object($Customer)) {
         $customer_id = $Customer->getId();
     }
     //受注フォーム
     $order = array('_token' => 'dummy', 'OrderStatus' => (string) $Order->getOrderStatus(), 'Customer' => (string) $customer_id, 'name' => array('name01' => $Order->getName01(), 'name02' => $Order->getName02()), 'kana' => array('kana01' => $Order->getKana01(), 'kana02' => $Order->getKana02()), 'zip' => array('zip01' => $Order->getZip01(), 'zip02' => $Order->getZip02()), 'address' => array('pref' => $Order->getPref()->getId(), 'addr01' => $Order->getAddr01(), 'addr02' => $Order->getAddr02()), 'email' => $Order->getEmail(), 'tel' => array('tel01' => $Order->getTel01(), 'tel02' => $Order->getTel02(), 'tel03' => $Order->getTel03()), 'fax' => array('fax01' => $Order->getFax01(), 'fax02' => $Order->getFax02(), 'fax03' => $Order->getFax03()), 'company_name' => $Order->getCompanyName(), 'message' => $Order->getMessage(), 'OrderDetails' => $orderDetail, 'discount' => $Order->getDiscount(), 'delivery_fee_total' => $Order->getDeliveryFeeTotal(), 'charge' => $Order->getCharge(), 'Payment' => $Order->getPayment()->getId(), 'Shippings' => $shippings, 'note' => $Order->getNote());
     return $order;
 }
Пример #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 $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());
     }
 }
Пример #4
0
 /**
  * Order オブジェクトを生成して返す.
  *
  * @param \Eccube\Entity\Customer $Customer Customer インスタンス
  * @param array $ProductClasses 明細行となる ProductClass の配列
  * @param \Eccube\Entity\Delivery $Delivery Delivery インスタンス
  * @param integer $add_charge Order に加算される手数料
  * @param integer $add_discount Order に加算される値引き額
  * @return \Eccube\Entity\Order
  */
 public function createOrder(Customer $Customer, array $ProductClasses = array(), Delivery $Delivery = null, $add_charge = 0, $add_discount = 0, $statusType = null)
 {
     $faker = $this->getFaker();
     $quantity = $faker->randomNumber(2);
     $Pref = $this->app['eccube.repository.master.pref']->find($faker->numberBetween(1, 47));
     $Payments = $this->app['eccube.repository.payment']->findAll();
     if (!$statusType) {
         $statusType = 'order_processing';
     }
     $OrderStatus = $this->app['eccube.repository.order_status']->find($this->app['config'][$statusType]);
     $Order = new Order($OrderStatus);
     $Order->setCustomer($Customer);
     $Order->copyProperties($Customer);
     $Order->setPref($Pref)->setPayment($Payments[$faker->numberBetween(0, count($Payments) - 1)])->setPaymentMethod($Order->getPayment()->getMethod())->setMessage($faker->text())->setNote($faker->text());
     $this->app['orm.em']->persist($Order);
     $this->app['orm.em']->flush($Order);
     if (!is_object($Delivery)) {
         $Delivery = $this->createDelivery();
         foreach ($Payments as $Payment) {
             $PaymentOption = new PaymentOption();
             $PaymentOption->setDeliveryId($Delivery->getId())->setPaymentId($Payment->getId())->setDelivery($Delivery)->setPayment($Payment);
             $Payment->addPaymentOption($PaymentOption);
             $this->app['orm.em']->persist($PaymentOption);
             $this->app['orm.em']->flush($PaymentOption);
         }
         $this->app['orm.em']->flush($Payment);
     }
     $DeliveryFee = $this->app['eccube.repository.delivery_fee']->findOneBy(array('Delivery' => $Delivery, 'Pref' => $Pref));
     $fee = 0;
     if (is_object($DeliveryFee)) {
         $fee = $DeliveryFee->getFee();
     }
     $Shipping = new Shipping();
     $Shipping->copyProperties($Customer);
     $Shipping->setPref($Pref)->setDelivery($Delivery)->setDeliveryFee($DeliveryFee)->setShippingDeliveryFee($fee)->setShippingDeliveryName($Delivery->getName());
     $Order->addShipping($Shipping);
     $Shipping->setOrder($Order);
     $this->app['orm.em']->persist($Shipping);
     $this->app['orm.em']->flush($Shipping);
     if (empty($ProductClasses)) {
         $Product = $this->createProduct();
         $ProductClasses = $Product->getProductClasses();
     }
     foreach ($ProductClasses as $ProductClass) {
         $Product = $ProductClass->getProduct();
         $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($quantity)->setTaxRule($TaxRule->getCalcRule()->getId())->setTaxRate($TaxRule->getTaxRate());
         $this->app['orm.em']->persist($OrderDetail);
         $OrderDetail->setOrder($Order);
         $this->app['orm.em']->flush($OrderDetail);
         $Order->addOrderDetail($OrderDetail);
         $ShipmentItem = new ShipmentItem();
         $ShipmentItem->setShipping($Shipping)->setOrder($Order)->setProductClass($ProductClass)->setProduct($Product)->setProductName($Product->getName())->setProductCode($ProductClass->getCode())->setPrice($ProductClass->getPrice02())->setQuantity($quantity);
         $Shipping->addShipmentItem($ShipmentItem);
         $this->app['orm.em']->persist($ShipmentItem);
         $this->app['orm.em']->flush($ShipmentItem);
     }
     $subTotal = $Order->calculateSubTotal();
     // TODO 送料無料条件は考慮していない. 必要であれば Order から再集計すること.
     $Order->setDeliveryFeeTotal($Shipping->getShippingDeliveryFee());
     $Order->setSubTotal($subTotal);
     $Order->setCharge($Order->getCharge() + $add_charge);
     $Order->setDiscount($Order->getDiscount() + $add_discount);
     $total = $Order->getTotalPrice();
     $Order->setTotal($total);
     $Order->setPaymentTotal($total);
     $tax = $Order->calculateTotalTax();
     $Order->setTax($tax);
     $this->app['orm.em']->flush($Order);
     return $Order;
 }