Magento: Programowo twórz produkty powiązane z zamówieniami i produkty konfigurowalne

Próbowałem użyć następującego kodu zVinai w tworzeniu zamówienia, ale działa tylko w prostych produktach. Próbowałem już grać z kluczami i wartościami w $ buyInfo, ale wydaje się, że zamówienie nie będzie kontynuowane. Może czegoś mi brakuje?

<code>$quote = Mage::getModel('sales/quote')
        ->setStoreId(Mage::app()->getStore('default')->getId());

if ('do customer orders') {
        // for customer orders:
        $customer = Mage::getModel('customer/customer')
                ->setWebsiteId(1)
                ->loadByEmail('[email protected]');
        $quote->assignCustomer($customer);
} else {
        // for guesr orders only:
        $quote->setCustomerEmail('[email protected]');
}

// add product(s)
$product = Mage::getModel('catalog/product')->load(8);
$buyInfo = array(
        'qty' => 1,
        // custom option id => value id
        // or
        // configurable attribute id => value id
);
$quote->addProduct($product, new Varien_Object($buyInfo));

$addressData = array(
        'firstname' => 'Test',
        'lastname' => 'Test',
        'street' => 'Sample Street 10',
        'city' => 'Somewhere',
        'postcode' => '123456',
        'telephone' => '123456',
        'country_id' => 'US',
        'region_id' => 12, // id from directory_country_region table
);

$billingAddress = $quote->getBillingAddress()->addData($addressData);
$shippingAddress = $quote->getShippingAddress()->addData($addressData);

$shippingAddress->setCollectShippingRates(true)->collectShippingRates()
                ->setShippingMethod('flatrate_flatrate')
                ->setPaymentMethod('checkmo');

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

$quote->collectTotals()->save();

$service = Mage::getModel('sales/service_quote', $quote);
$service->submitAll();
$order = $service->getOrder();
</code>

Masz pomysł na to, jak sprawić, by działał również w pakietach i konfigurowalnych produktach? Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion