![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-sales/Block/Adminhtml/Order/Create/Form/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Block\Adminhtml\Order\Create\Form; use Magento\Backend\Model\Session\Quote; use Magento\Framework\App\ObjectManager; use Magento\Framework\Data\Form\Element\AbstractElement; use Magento\Framework\Pricing\PriceCurrencyInterface; use Magento\Customer\Api\Data\AddressInterface; use Magento\Eav\Model\AttributeDataFactory; /** * Order create address form * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Address extends \Magento\Sales\Block\Adminhtml\Order\Create\Form\AbstractForm { /** * Customer Metadata form factory * * @var \Magento\Customer\Model\Metadata\FormFactory */ protected $_customerFormFactory; /** * Framework Json encoder * * @var \Magento\Framework\Json\EncoderInterface */ protected $_jsonEncoder; /** * Directory helper Data * * @var \Magento\Directory\Helper\Data */ protected $directoryHelper; /** * Customer options * * @var \Magento\Customer\Model\Options */ protected $options; /** * Address service - AddressRepositoryInterface * * @var \Magento\Customer\Api\AddressRepositoryInterface */ protected $addressService; /** * Customer Address helper * * @var \Magento\Customer\Helper\Address */ protected $_addressHelper; /** * Search criteria builder for getList calls * * @var \Magento\Framework\Api\SearchCriteriaBuilder */ protected $searchCriteriaBuilder; /** * Filter builder for getList calls * * @var \Magento\Framework\Api\FilterBuilder */ protected $filterBuilder; /** * @var \Magento\Customer\Model\Address\Mapper */ protected $addressMapper; /** * @var \Magento\Directory\Model\ResourceModel\Country\Collection */ private $countriesCollection; /** * @var \Magento\Backend\Model\Session\Quote */ private $backendQuoteSession; /** * Constructor * * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Backend\Model\Session\Quote $sessionQuote * @param \Magento\Sales\Model\AdminOrder\Create $orderCreate * @param PriceCurrencyInterface $priceCurrency * @param \Magento\Framework\Data\FormFactory $formFactory * @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor * @param \Magento\Directory\Helper\Data $directoryHelper * @param \Magento\Framework\Json\EncoderInterface $jsonEncoder * @param \Magento\Customer\Model\Metadata\FormFactory $customerFormFactory * @param \Magento\Customer\Model\Options $options * @param \Magento\Customer\Helper\Address $addressHelper * @param \Magento\Customer\Api\AddressRepositoryInterface $addressService * @param \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder * @param \Magento\Framework\Api\FilterBuilder $filterBuilder * @param \Magento\Customer\Model\Address\Mapper $addressMapper * @param array $data * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Backend\Model\Session\Quote $sessionQuote, \Magento\Sales\Model\AdminOrder\Create $orderCreate, PriceCurrencyInterface $priceCurrency, \Magento\Framework\Data\FormFactory $formFactory, \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor, \Magento\Directory\Helper\Data $directoryHelper, \Magento\Framework\Json\EncoderInterface $jsonEncoder, \Magento\Customer\Model\Metadata\FormFactory $customerFormFactory, \Magento\Customer\Model\Options $options, \Magento\Customer\Helper\Address $addressHelper, \Magento\Customer\Api\AddressRepositoryInterface $addressService, \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder, \Magento\Framework\Api\FilterBuilder $filterBuilder, \Magento\Customer\Model\Address\Mapper $addressMapper, array $data = [] ) { $this->options = $options; $this->directoryHelper = $directoryHelper; $this->_jsonEncoder = $jsonEncoder; $this->_customerFormFactory = $customerFormFactory; $this->_addressHelper = $addressHelper; $this->addressService = $addressService; $this->searchCriteriaBuilder = $criteriaBuilder; $this->filterBuilder = $filterBuilder; $this->addressMapper = $addressMapper; $this->backendQuoteSession = $sessionQuote; parent::__construct( $context, $sessionQuote, $orderCreate, $priceCurrency, $formFactory, $dataObjectProcessor, $data ); } /** * Get config * * @param string $path * @return string|null */ public function getConfig($path) { return $this->_scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE); } /** * Retrieve current customer address DATA collection. * * @return \Magento\Customer\Api\Data\AddressInterface[] */ public function getAddressCollection() { if ($this->getCustomerId()) { $filter = $this->filterBuilder ->setField('parent_id') ->setValue($this->getCustomerId()) ->setConditionType('eq') ->create(); $this->searchCriteriaBuilder->addFilters([$filter]); $searchCriteria = $this->searchCriteriaBuilder->create(); $result = $this->addressService->getList($searchCriteria); return $result->getItems(); } return []; } /** * Return Customer Address Collection as JSON * * @return string */ public function getAddressCollectionJson() { $defaultCountryId = $this->directoryHelper->getDefaultCountry($this->getStore()); $emptyAddressForm = $this->_customerFormFactory->create( 'customer_address', 'adminhtml_customer_address', [AddressInterface::COUNTRY_ID => $defaultCountryId] ); $data = [0 => $emptyAddressForm->outputData(AttributeDataFactory::OUTPUT_FORMAT_JSON)]; foreach ($this->getAddressCollection() as $address) { $addressForm = $this->_customerFormFactory->create( 'customer_address', 'adminhtml_customer_address', $this->addressMapper->toFlatArray($address), false, false ); $data[$address->getId()] = $addressForm->outputData( AttributeDataFactory::OUTPUT_FORMAT_JSON ); } return $this->_jsonEncoder->encode($data); } /** * Prepare Form and add elements to form * * @return $this * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _prepareForm() { $storeId = $this->getAddressStoreId(); $this->_storeManager->setCurrentStore($storeId); $fieldset = $this->_form->addFieldset('main', ['no_container' => true]); $addressForm = $this->_customerFormFactory->create('customer_address', 'adminhtml_customer_address'); $attributes = $addressForm->getAttributes(); $this->_addAttributesToForm($attributes, $fieldset); $prefixElement = $this->_form->getElement('prefix'); if ($prefixElement) { $prefixOptions = $this->options->getNamePrefixOptions($this->getStore()); if (!empty($prefixOptions)) { $mappedPrefixOptions = []; foreach ($prefixOptions as $prefix) { $mappedPrefixOptions[$prefix] = $prefix; } $fieldset->removeField($prefixElement->getId()); $prefixField = $fieldset->addField($prefixElement->getId(), 'select', $prefixElement->getData(), '^'); $prefixField->setValues($mappedPrefixOptions); if ($this->getAddressId()) { $prefixField->addElementValues($this->getAddress()->getPrefix()); } } } $suffixElement = $this->_form->getElement('suffix'); if ($suffixElement) { $suffixOptions = $this->options->getNameSuffixOptions($this->getStore()); if (!empty($suffixOptions)) { $fieldset->removeField($suffixElement->getId()); $suffixField = $fieldset->addField( $suffixElement->getId(), 'select', $suffixElement->getData(), $this->_form->getElement('lastname')->getId() ); $suffixField->setValues($suffixOptions); if ($this->getAddressId()) { $suffixField->addElementValues($this->getAddress()->getSuffix()); } } } $regionElement = $this->_form->getElement('region_id'); if ($regionElement) { $regionElement->setNoDisplay(true); } $this->_form->setValues($this->getFormValues()); $countryElement = $this->_form->getElement('country_id'); $this->processCountryOptions($countryElement); if ($countryElement->getValue()) { $countryId = $countryElement->getValue(); $countryElement->setValue(null); foreach ($countryElement->getValues() as $country) { if ($country['value'] == $countryId) { $countryElement->setValue($countryId); } } } if ($countryElement->getValue() === null) { $countryElement->setValue( $this->directoryHelper->getDefaultCountry($this->getStore()) ); } // Set custom renderer for VAT field if needed $vatIdElement = $this->_form->getElement('vat_id'); if ($vatIdElement && $this->getDisplayVatValidationButton() !== false) { $vatIdElement->setRenderer( $this->getLayout()->createBlock( \Magento\Customer\Block\Adminhtml\Sales\Order\Address\Form\Renderer\Vat::class )->setJsVariablePrefix( $this->getJsVariablePrefix() ) ); } return $this; } /** * Process country options. * * @param \Magento\Framework\Data\Form\Element\AbstractElement $countryElement * @return void */ private function processCountryOptions(\Magento\Framework\Data\Form\Element\AbstractElement $countryElement) { $storeId = $this->getAddressStoreId(); $options = $this->getCountriesCollection() ->loadByStore($storeId) ->toOptionArray(); $countryElement->setValues($options); } /** * Retrieve Directory Countries collection * * @deprecated 100.1.3 * @see MAGETWO-711174: Introduce deprecated and since doc blocks. * @return \Magento\Directory\Model\ResourceModel\Country\Collection */ private function getCountriesCollection() { if (!$this->countriesCollection) { $this->countriesCollection = ObjectManager::getInstance() ->get(\Magento\Directory\Model\ResourceModel\Country\Collection::class); } return $this->countriesCollection; } /** * Retrieve Backend Quote Session * * @deprecated 100.1.3 * @see MAGETWO-711174: Introduce deprecated and since doc blocks. * @return Quote */ private function getBackendQuoteSession() { if (!$this->backendQuoteSession) { $this->backendQuoteSession = ObjectManager::getInstance()->get(Quote::class); } return $this->backendQuoteSession; } /** * Add additional data to form element * * @param AbstractElement $element * @return $this */ protected function _addAdditionalFormElementData(AbstractElement $element) { if ($element->getId() == 'region_id') { $element->setNoDisplay(true); } return $this; } /** * Return customer address id * * @return false */ public function getAddressId() { return false; } /** * Represent customer address in 'online' format. * * @param \Magento\Customer\Api\Data\AddressInterface $address * @return string */ public function getAddressAsString(\Magento\Customer\Api\Data\AddressInterface $address) { $formatTypeRenderer = $this->_addressHelper->getFormatTypeRenderer('oneline'); $result = ''; if ($formatTypeRenderer) { $result = $formatTypeRenderer->renderArray($this->addressMapper->toFlatArray($address)); } return $this->escapeHtml($result); } /** * Return address store id. * * @return int */ protected function getAddressStoreId() { return $this->getBackendQuoteSession()->getStoreId(); } /** * @inheritdoc */ protected function _getAdditionalFormElementTypes() { return array_merge( parent::_getAdditionalFormElementTypes(), [ 'file' => \Magento\Customer\Block\Adminhtml\Form\Element\Address\File::class, 'image' => \Magento\Customer\Block\Adminhtml\Form\Element\Address\Image::class, ] ); } }