public function testSetOrderCurrency() { $currency = 'USD'; $this->localeSettings->expects($this->once())->method('getCurrency')->willReturn($currency); $order = new Order(); $this->handler->setOrderCurrency($order); $this->assertEquals($currency, $order->getCurrency()); }
protected function setUp() { $this->orderCurrencyHandler = $this->getMockBuilder('OroB2B\\Bundle\\OrderBundle\\Model\\OrderCurrencyHandler')->disableOriginalConstructor()->getMock(); $this->orderCurrencyHandler->expects($this->any())->method('setOrderCurrency')->willReturnCallback(function (Order $order) { $order->setCurrency(self::CURRENCY); }); $this->subtotalsProvider = $this->getMockBuilder('OroB2B\\Bundle\\OrderBundle\\Provider\\SubtotalsProvider')->disableOriginalConstructor()->getMock(); $this->converter = new QuoteToOrderConverter($this->orderCurrencyHandler, $this->subtotalsProvider); }
protected function setUp() { $this->securityFacade = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\SecurityFacade')->disableOriginalConstructor()->getMock(); $this->provider = $this->getMockBuilder('OroB2B\\Bundle\\OrderBundle\\Provider\\OrderAddressSecurityProvider')->disableOriginalConstructor()->getMock(); $this->paymentTermProvider = $this->getMockBuilder('OroB2B\\Bundle\\PaymentBundle\\Provider\\PaymentTermProvider')->disableOriginalConstructor()->getMock(); $this->orderCurrencyHandler = $this->getMockBuilder('OroB2B\\Bundle\\OrderBundle\\Model\\OrderCurrencyHandler')->disableOriginalConstructor()->getMock(); $this->orderCurrencyHandler->expects($this->any())->method('setOrderCurrency')->will($this->returnCallback(function ($order) { if ($order instanceof Order) { $order->setCurrency('USD'); } })); $this->type = new OrderType($this->securityFacade, $this->provider, $this->paymentTermProvider, $this->orderCurrencyHandler); }
/** * {@inheritDoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { /** @var Order $order */ $order = $options['data']; $this->orderCurrencyHandler->setOrderCurrency($order); $builder->add('poNumber', 'text', ['required' => false, 'label' => 'orob2b.order.po_number.label'])->add('shipUntil', OroDateType::NAME, ['required' => false, 'label' => 'orob2b.order.ship_until.label'])->add('customerNotes', 'textarea', ['required' => false, 'label' => 'orob2b.order.customer_notes.frontend.label'])->add('lineItems', OrderLineItemsCollectionType::NAME, ['type' => FrontendOrderLineItemType::NAME, 'add_label' => 'orob2b.order.orderlineitem.add_label', 'cascade_validation' => true, 'options' => ['currency' => $order->getCurrency()]]); if ($this->orderAddressSecurityProvider->isAddressGranted($order, AddressType::TYPE_BILLING)) { $builder->add('billingAddress', OrderAddressType::NAME, ['label' => 'orob2b.order.billing_address.label', 'order' => $options['data'], 'required' => false, 'addressType' => AddressType::TYPE_BILLING]); } if ($this->orderAddressSecurityProvider->isAddressGranted($order, AddressType::TYPE_SHIPPING)) { $builder->add('shippingAddress', OrderAddressType::NAME, ['label' => 'orob2b.order.shipping_address.label', 'order' => $options['data'], 'required' => false, 'addressType' => AddressType::TYPE_SHIPPING]); } $builder->addEventListener(FormEvents::SUBMIT, [$this, 'updateLineItemPrices']); }
/** * {@inheritDoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { /** @var Order $order */ $order = $options['data']; $this->orderCurrencyHandler->setOrderCurrency($order); $builder->add('account', AccountSelectType::NAME, ['label' => 'orob2b.order.account.label', 'required' => true])->add('accountUser', AccountUserSelectType::NAME, ['label' => 'orob2b.order.account_user.label', 'required' => false])->add('poNumber', 'text', ['required' => false, 'label' => 'orob2b.order.po_number.label'])->add('shipUntil', OroDateType::NAME, ['required' => false, 'label' => 'orob2b.order.ship_until.label'])->add('customerNotes', 'textarea', ['required' => false, 'label' => 'orob2b.order.customer_notes.label'])->add('priceList', PriceListSelectType::NAME, ['required' => false, 'label' => 'orob2b.order.price_list.label'])->add('currency', 'hidden')->add('lineItems', OrderLineItemsCollectionType::NAME, ['add_label' => 'orob2b.order.orderlineitem.add_label', 'cascade_validation' => true, 'options' => ['currency' => $order->getCurrency()]]); if ($this->orderAddressSecurityProvider->isAddressGranted($order, AddressType::TYPE_BILLING)) { $builder->add('billingAddress', OrderAddressType::NAME, ['label' => 'orob2b.order.billing_address.label', 'order' => $options['data'], 'required' => false, 'addressType' => AddressType::TYPE_BILLING]); } if ($this->orderAddressSecurityProvider->isAddressGranted($order, AddressType::TYPE_SHIPPING)) { $builder->add('shippingAddress', OrderAddressType::NAME, ['label' => 'orob2b.order.shipping_address.label', 'order' => $options['data'], 'required' => false, 'addressType' => AddressType::TYPE_SHIPPING]); } if ($this->isOverridePaymentTermGranted()) { $builder->add('paymentTerm', PaymentTermSelectType::NAME, ['label' => 'orob2b.order.payment_term.label', 'required' => false, 'attr' => ['data-account-payment-term' => $this->getAccountPaymentTermId($order), 'data-account-group-payment-term' => $this->getAccountGroupPaymentTermId($order)]]); } }
/** * @param Quote $quote * @param AccountUser|null $user * @param array|null $selectedOffers * @return Order */ public function convert(Quote $quote, AccountUser $user = null, array $selectedOffers = null) { $accountUser = $user ?: $quote->getAccountUser(); $account = $user ? $user->getAccount() : $quote->getAccount(); $order = new Order(); $order->setAccount($account)->setAccountUser($accountUser)->setOwner($quote->getOwner())->setOrganization($quote->getOrganization()); if (!$selectedOffers) { foreach ($quote->getQuoteProducts() as $quoteProduct) { /** @var QuoteProductOffer $productOffer */ $productOffer = $quoteProduct->getQuoteProductOffers()->first(); $order->addLineItem($this->createOrderLineItem($productOffer)); } } else { foreach ($selectedOffers as $selectedOffer) { /** @var QuoteProductOffer $offer */ $offer = $selectedOffer[self::FIELD_OFFER]; $order->addLineItem($this->createOrderLineItem($offer, (double) $selectedOffer[self::FIELD_QUANTITY])); } } $this->orderCurrencyHandler->setOrderCurrency($order); $this->fillSubtotals($order); return $order; }