2012-05-10 20 views
2

Vinaiから次のコードを使用して注文を試みましたが、単純な商品でのみ動作します。私はすでに$ buyInfoのキーと値で遊んでみましたが、注文は進まないようです。私は何か不足しているかもしれない?Magento:注文商品と設定可能な商品をプログラムで作成

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

バンドルされた設定可能な製品でも動作させる方法はありますか?ありがとう! budle製品を作るために

+0

これに関するアップデートはありますか? – AKnox

答えて

1

あなたは、これは使用してコードイムある

に「バンドル」にprodtypeIDを設定する必要があります。

$__magproduct = new Mage_Catalog_Model_Product(); 



    // Build the product 
    $__magproduct->setSku(trim($sku_of_product)); 
    $__magproduct->setAttributeSetId('4');# 4 is for default 
    $__magproduct->setTypeId($prodtype); 
    $__magproduct->setName($getprodId->ProductName); 
    //$__magproduct->setCategoryIds(array(42)); # some cat id's, 
    $__magproduct->setWebsiteIDs(array(1)); # Website id, 1 is default 
    //$__magproduct->setDescription($getprodId->Description); 
    //$__magproduct->setShortDescription($getprodId->Description); 
    $__magproduct->setPrice($prodprice); # Set some price 

    //Default Magento attribute 
    $__magproduct->setWeight($getprodId->Weight); 

    $__magproduct->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); 
    $__magproduct->setStatus(1); 
    $__magproduct->setTaxClassId(2); # default tax class 


    $__magproduct->setCreatedAt(strtotime('now')); 

    try { 
    $__magproduct->save(); 

    if (!($stockItem = $product->getStockItem())) { 
       $stockItem = Mage::getModel('cataloginventory/stock_item'); 
       $stockItem->assignProduct($__magproduct) 
          ->setData('stock_id', 1) 
          ->setData('store_id', 1); 
      } 

      $stockItem->setData('qty', $qty) 
         ->setData('is_in_stock', $isinstock) 
         ->setData('manage_stock', 1) 
         ->setData('use_config_manage_stock', 0) 
         ->save(); 

     unset($__magproduct,$stockItem); 

その後バンドルオプション挿入します

$productCheck = Mage::getModel('catalog/product')->loadByAttribute('sku',$getprodId->Code);   
Mage::register('product', $productCheck); 









      $position = 0; 

      $optionRawData = array(); 

      $selectionRawData = array(); 
      $selectionRawData[0] = array(); 

     foreach ($materials as $material) { 
       $material = (array) $material; 

       $komponenta = $client->GetProductSimple($material["ProductID"]); 
       $komponenta = (array) $komponenta; 

       echo "&nbsp;&nbsp;&nbsp;assigned: ".$komponenta["Code"]." ".$komponenta["ProductName"]." ks(".$material["Count"].")<br>\n"; 

       $itemSKU = Mage::getModel('catalog/product')->getIdBySku(trim($getprodId->Code)); 
       $materialSKU = Mage::getModel('catalog/product')->getIdBySku(trim($komponenta["Code"])); 

       if (($itemSKU != "") && ($materialSKU != "")) 
        { 

       $position++; 

$optionRawData[$position] = array(
    'required' => 1, 
    'option_id' => '', 
    'position' => '', 
    'type' => 'radio', 
    'title' => 'Komponenta '.$komponenta["ProductName"], 
    'default_title' => 'Komponenta '.$komponenta["ProductName"], 
    'delete' => '', 
); 


$selectionRawData[$position][] = array(
    'product_id' => $materialSKU, 
    'selection_qty' => $material["Count"], 
    'selection_can_change_qty' => 0, 
    'position' => 0, 
    'is_default' => 1, 
    'selection_id' => '', 
    'selection_price_type' => 0, 
    'selection_price_value' => 0.0, 
    'option_id' => '', 
    'delete' => '' 
); 






        }; 

       unset($material,$komponenta,$itemSKU,$materialSKU); 

     }; 




Mage::register('productCheck', $productCheck); 
Mage::register('current_product', $productCheck); 
$productCheck->setCanSaveConfigurableAttributes(false); 
$productCheck->setCanSaveCustomOptions(true); 
// Set the Bundle Options & Selection Data 
$productCheck->setBundleOptionsData($optionRawData); 
$productCheck->setBundleSelectionsData($selectionRawData); 
$productCheck->setCanSaveBundleSelections(true); 
$productCheck->setAffectBundleProductSelections(true); 

$productCheck->save(); 

同梱のアイテムは、設定可能なものと同じではありません!

関連する問題