/** * {@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)]]); } }
/** * @dataProvider permissionsDataProvider * @SuppressWarnings(PHPMD.ExcessiveParameterList) * * @param string $userClass * @param string $addressType * @param array|null $isGranted * @param bool $hasAccountAddresses * @param bool $hasAccountUserAddresses * @param bool $hasEntity * @param bool $isAddressGranted * @param bool $isAccountAddressGranted * @param bool $isAccountUserAddressGranted */ public function testIsAddressGranted($userClass, $addressType, $isGranted, $hasAccountAddresses, $hasAccountUserAddresses, $hasEntity, $isAddressGranted, $isAccountAddressGranted, $isAccountUserAddressGranted) { $this->orderAddressProvider->expects($this->any())->method('getAccountAddresses')->willReturn($hasAccountAddresses); $this->orderAddressProvider->expects($this->any())->method('getAccountUserAddresses')->willReturn($hasAccountUserAddresses); $this->securityFacade->expects($this->any())->method('getLoggedUser')->willReturn(new $userClass()); $this->securityFacade->expects($this->any())->method('isGranted')->with($this->isType('string'))->will($this->returnValueMap((array) $isGranted)); $order = null; $account = null; $accountUser = null; if ($hasEntity) { $account = new Account(); $accountUser = new AccountUser(); } $order = (new Order())->setAccount($account)->setAccountUser($accountUser); $this->assertEquals($isAddressGranted, $this->provider->isAddressGranted($order, $addressType)); $this->assertEquals($isAccountAddressGranted, $this->provider->isAccountAddressGranted($addressType, $account)); $this->assertEquals($isAccountUserAddressGranted, $this->provider->isAccountUserAddressGranted($addressType, $accountUser)); }