【问题标题】:Magento: create bundle order programmaticallyMagento:以编程方式创建捆绑订单
【发布时间】:2013-07-31 16:02:03
【问题描述】:

我有这个代码:http://pastebin.com/iFwyKM7G

在客户注册后执行的事件观察器类中。它会自动创建订单,适用于简单的产品。但是,我一生都无法弄清楚如何使它与捆绑产品一起使用!

如何使用捆绑产品进行这项工作?

【问题讨论】:

标签: php magento


【解决方案1】:

我做到了!

我将代码更改为以下内容:

$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');

而且它有效!以为客户没有收到通知。我现在想弄清楚。

【讨论】:

  • 我们如何在 magento 2 中做同样的事情
  • @mjdevloper - 你找到 M2 的解决方案了吗?
猜你喜欢
  • 2016-08-11
  • 2012-11-15
  • 2012-05-18
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多