Estás leyendo la publicación: Establecer la dirección de envío y facturación desde el pedido hasta la dirección del cliente en Magento 2
espacio de nombres Proveedor\Módulo\Ayudante;
use Magento\Framework\App\Helper\Context;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Cliente\Modelo\CustomerFactory;
use Magento\Sales\Model\OrderFactory;
use Magento\Cliente\Modelo\AddressFactory;
clase Datos extiende AbstractHelper
{
privado $storeManager;
privado $customerFactory;
privado $orderFactory;
$addressFactory privado;
función pública __construir
(
Contexto $contexto,
StoreManagerInterface $storeManager,
fábrica de clientes $ fábrica de clientes,
fábrica de pedidos $ fábrica de pedidos,
fábrica de direcciones $ fábrica de direcciones
)
{
$this->storeManager = $storeManager;
$this->customerFactory = $customerFactory;
$this->orderFactory = $orderFactory;
$this->addressFactory = $addressFactory;
padre::__construcción($contexto);
}
función pública setCustomerAddress($orderId)
{
$cliente = $this->customerFactory->create();
$websiteId = $this->storeManager->getStore()->getWebsiteId();
$orderData = $this->orderFactory->create()->load($orderId);
$cliente->setWebsiteId($websiteId);
/* El cliente ya existe */
$customerModel = $customer->loadByEmail($orderData->getCustomerEmail());
$clienteId = $clienteModelo->getId();
/* guardar dirección de facturación */
$dirección = $this->addressFactory->create();
$dirección->setData($orderData->getBillingAddress()->getData());
$dirección->setCustomerId($customerId)
->setIsDefaultBilling(‘1’)
->establecerEsEnvíoPredeterminado(‘0’)
->setSaveInAddressBook(‘1’);
$dirección->guardar();
/* guarda la dirección de envío */
if (!$orderData->getIsVirtual()) {
$dirección = $this->addressFactory->create();
$dirección->setData($orderData->getShippingAddress()->getData());
$dirección->setCustomerId($customerId)
->setIsDefaultBilling(‘0’)
->establecerEsEnvíoPredeterminado(‘1’)
->setSaveInAddressBook(‘1’);
$dirección->guardar();
}
}
}