Desenvolvimento Magento 2

Código para criar um pedido no Magento 2

Como criar um pedido programaticamente. Código para criar um pedido no Magento 2

<?php
use Magento\Framework\App\Bootstrap;

require __DIR__ . '/app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);

$objectManager = $bootstrap->getObjectManager();

// Load customer by id
$customerId = 1; // Customer id
$customer = $objectManager->create('Magento\Customer\Model\Customer')->load($customerId);

// Load product by sku
$productSku = 'sample-sku'; // Product sku
$product = $objectManager->create('Magento\Catalog\Model\Product')->loadByAttribute('sku', $productSku);

// Create order
$orderData = [
    'currency_id'  => 'USD',
    'email'        => $customer->getEmail(),
    'shipping_address' => [
        'firstname' => 'John',
        'lastname'  => 'Doe',
        'street'    => '123 Main St',
        'city'      => 'Anytown',
        'country_id'=> 'US',
        'region'    => 'Florida',
        'postcode'  => '12345',
        'telephone' => '555-555-1212'
    ],
    'items' => [
        [
            'product_id' => $product->getId(),
            'qty' => 1
        ]
    ]
];

$objectManager->get('Magento\Checkout\Model\Cart')->truncate();

$cart = $objectManager->create('Magento\Checkout\Model\Cart');

foreach ($orderData['items'] as $item) {
    $product = $objectManager->create('Magento\Catalog\Model\Product')->load($item['product_id']);
    $cart->addProduct($product, $item);
}

$cart->save();

$customer = $objectManager->create('Magento\Customer\Model\Customer')->load($customerId);
$quote = $objectManager->create('Magento\Quote\Model\Quote')->loadByCustomer($customer);

$billingAddress = $quote->getBillingAddress()->addData($orderData['shipping_address']);
$shippingAddress = $quote->getShippingAddress()->addData($orderData['shipping_address']);

$shippingAddress->setCollectShippingRates(true)->collectShippingRates()->setShippingMethod('flatrate_flatrate');
$quote->setPaymentMethod('checkmo');
$quote->setInventoryProcessed(false);
$quote->save();

$quote->getPayment()->importData(['method' => 'checkmo']);

$quote->collectTotals();

$quote->save();

$order = $objectManager->create('Magento\Quote\Model\QuoteManagement')->submit($quote);

$order->setEmailSent(0);
$order->save();

echo 'Order Id: ' . $order->getIncrementId() . ' has been created successfully!';
Esse código carrega um cliente e um produto por seus respectivos IDs ou SKUs, cria uma matriz de dados do pedido com informações como moeda, e-mail e endereço de entrega, adiciona o produto ao carrinho e cria um pedido com o método submit().

Observe que o código acima é apenas um exemplo e você deve modificá-lo para atender às suas necessidades específicas. Além disso, vale a pena mencionar que a criação de pedidos programaticamente pode ser complexa e deve ser feita com cuidado.

Post Recentes

CNPJ alfanumérico Magento 2: módulo grátis com máscara e validação

Módulo gratuito Roger_CnpjAlfanumerico que aplica máscara e validação do novo CNPJ alfanumérico no checkout e formulários do Magento 2 e…

4 dias atrás

CNPJ alfanumérico no WooCommerce: plugin grátis de máscara e validação

A partir de 06/07/2026 a Receita passa a emitir CNPJ alfanumérico. Conheça o plugin grátis que aplica máscara e validação…

4 dias atrás

Como remover um modulo do Magento 2

Para remover um módulo do Magento 2, siga os passos abaixo: 1. Desabilitar o módulo Primeiro, desabilite o módulo usando…

1 ano atrás

Criar um memorando de crédito (cancelar) invoice no Magento 2

Para cancelar 100% do pedido e criar um crédito para todos os itens através da API REST do Magento 2,…

2 anos atrás

Consultando no banco quantidade disponivel para Venda (estoque)

No Magento 2, a quantidade "reservada" na "Salable Quantity" é gerenciada principalmente pelos módulos MSI (Multi-Source Inventory). A "Salable Quantity"…

2 anos atrás

Admin do Magento 2 não acessa

Como corrigir o erro ao acessar o Admin do Magento 2. Mesmo após fazer o login, permanece na tela de…

2 anos atrás