public function registerPreOrder(Customer $Customer, $preOrderId)
{
$this->em = $this->app['orm.em'];
// 受注情報を作成
$Order = $this->getNewOrder($Customer);
$Order->setPreOrderId($preOrderId);
$this->em->persist($Order);
// 配送業者情報を取得
$deliveries = $this->getDeliveriesCart();
// お届け先情報を作成
$Order = $this->getNewShipping($Order, $Customer, $deliveries);
// 受注明細情報、配送商品情報を作成
$Order = $this->getNewDetails($Order);
// 小計
$subTotal = $this->orderService->getSubTotal($Order);
// 消費税のみの小計
$tax = $this->orderService->getTotalTax($Order);
// 配送料合計金額
$Order->setDeliveryFeeTotal($this->getShippingDeliveryFeeTotal($Order->getShippings()));
// 小計
$Order->setSubTotal($subTotal);
// 配送料無料条件(合計金額)
$this->setDeliveryFreeAmount($Order);
// 配送料無料条件(合計数量)
$this->setDeliveryFreeQuantity($Order);
// 初期選択の支払い方法をセット
$payments = $this->app['eccube.repository.payment']->findAllowedPayments($deliveries);
$payments = $this->getPayments($payments, $subTotal);
if (count($payments) > 0) {
$payment = $payments[0];
$Order->setPayment($payment);
$Order->setPaymentMethod($payment->getMethod());
$Order->setCharge($payment->getCharge());
} else {
$Order->setCharge(0);
}
$Order->setTax($tax);
// 合計金額の計算
$this->calculatePrice($Order);
$this->em->flush();
return $Order;
}