簡體   English   中英

Magento:以編程方式創建捆綁訂單

[英]Magento: create bundle order programmatically

我有以下代碼: http : //pastebin.com/iFwyKM7G

在事件觀察者類中,該類在客戶注冊后執行。 它會自動創建一個訂單,適用於簡單的產品。 但是,我一生都無法弄清楚如何使其與捆綁產品一起使用!

如何使用捆綁的產品進行此項工作?

我做的!

我將代碼更改為以下內容:

$customer = Mage::getSingleton('customer/customer')->load($observer->getCustomer()->getId());
        $session = Mage::getSingleton('adminhtml/session_quote');
        $order_create_model = Mage::getSingleton('adminhtml/sales_order_create');
        Mage::log($customer->debug(), null, 'toszodj_meg.log');
        //$transaction = Mage::getModel('core/resource_transaction');
        $storeId = $customer->getStoreId();
        Mage::log($customer->getDefaultBillingAddress()->debug(), null, 'toszodj_meg.log');
        $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);
        $session->setCustomerId((int) $customer->getId());
        $session->setStoreId((int) $storeId);
        $orderData = array(
        'session'       => array(
            'customer_id'   => $customer->getId(),
            'store_id'      => $storeId,
        ),
        'payment'       => array(
            'method'    => 'banktransfer',
            'po_number' => (string) '-',
        ),
        // 123456 denotes the product's ID value
        'add_products'  =>array(
            '2'    => array(
                    'qty' => 1,
                    'bundle_option' => array(
                        2 => 2,
                        1 => 1,
                    ),
                    'bundle_option_qty' => array(
                        2 => 1,
                        1 => 1,
                        ),
                    ),
                ),
        'order'         => array(
            'currency'  => 'EUR',
            'account'   => array(
                'group_id'  => $customer->getGroupId(),
                'email'     => (string) $customer->getEmail(),
            ),
            'comment'           => array('customer_note' => 'API ORDER'),
            'send_confirmation' => 1,
            'shipping_method'   => 'flatrate_flatrate',
            'billing_address'   => array(
                'customer_address_id' => $customer->getDefaultBillingAddress()->getEntityId(),
                'prefix'             => $customer->getDefaultBillingAddress()->getPrefix(),
                'firstname'           => $customer->getDefaultBillingAddress()->getFirstname(),
                'middlename'          => $customer->getDefaultBillingAddress()->getMiddlename(),
                'lastname'            => $customer->getDefaultBillingAddress()->getLastname(),
                'suffix'             => $customer->getDefaultBillingAddress()->getSuffix(),
                'company'              => $customer->getDefaultBillingAddress()->getCompany(),
                'street'               => $customer->getDefaultBillingAddress()->getStreet(),
                'city'                   => $customer->getDefaultBillingAddress()->getCity(),
                'country_id'           => $customer->getDefaultBillingAddress()->getCountryId(),
                'region'               => $customer->getDefaultBillingAddress()->getRegion(),
                'region_id'           => $customer->getDefaultBillingAddress()->getRegionId(),
                'postcode'               => $customer->getDefaultBillingAddress()->getPostcode(),
                'telephone'           => $customer->getDefaultBillingAddress()->getTelephone(),
                'fax'                   => $customer->getDefaultBillingAddress()->getFax(),
            ),
            'shipping_address'  => array(
                'customer_address_id' => $customer->getDefaultShippingAddress()->getEntityId(),
                'prefix'               => $customer->getDefaultShippingAddress()->getPrefix(),
                'firstname'           => $customer->getDefaultShippingAddress()->getFirstname(),
                'middlename'           => $customer->getDefaultShippingAddress()->getMiddlename(),
                'lastname'               => $customer->getDefaultShippingAddress()->getLastname(),
                'suffix'               => $customer->getDefaultShippingAddress()->getSuffix(),
                'company'               => $customer->getDefaultShippingAddress()->getCompany(),
                'street'               => $customer->getDefaultShippingAddress()->getStreet(),
                'city'                   => $customer->getDefaultShippingAddress()->getCity(),
                'country_id'           => $customer->getDefaultShippingAddress()->getCountryId(),
                'region'               => $customer->getDefaultShippingAddress()->getRegion(),
                'region_id'           => $customer->getDefaultShippingAddress()->getRegionId(),
                'postcode'               => $customer->getDefaultShippingAddress()->getPostcode(),
                'telephone'           => $customer->getDefaultShippingAddress()->getTelephone(),
                'fax'                   => $customer->getDefaultShippingAddress()->getFax(),
            ),
        ),
    );
    $order_create_model->importPostData($orderData['order']);
    $order_create_model->getBillingAddress();
    $order_create_model->setShippingAsBilling(true);
    $order_create_model->addProducts($orderData['add_products']);
    $order_create_model->collectShippingRates();
    $order_create_model->getQuote()->getPayment()->addData($orderData['payment']);
    $order_create_model
             ->initRuleData()
             ->saveQuote();
    $order_create_model->getQuote()->getPayment()->addData($orderData['payment']);
    $order_create_model->setPaymentData($orderData['payment']);
    $order_create_model
                         ->importPostData($orderData['order'])
                         ->createOrder();
    $session->clear();
    Mage::unregister('rule_data');
    Mage::log('Order Successfull', null, 'siker_bammer.log');

而且有效! 以為客戶沒有收到通知。 我現在想找出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM