2014-01-27 107 views
1

我有一個代碼添加產品等級價格的問題。我做了一些研究,發現可以用來增加等級價格的magento API。但是,由於我已經定製了我們的magento併爲等級價格添加了一個新的字段,即「生產時間」,我不知道如何通過API添加等級價格。Magento以編程方式添加等級價格,但使用自定義字段

下面是示例代碼

$proxy = new SoapClient(Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'/api/soap/?wsdl'); 
$sessionId = $proxy->login('API user','API Key'); 
$tierPrices[] = array(
    'website'   => 'all', 
    'customer_group_id' => 'all', 
    'production_time => $data[2], 
    'qty'    => $data[3], 
    'price'    => $data[4] 
); 
try { 
     $proxy->call($sessionId, 'product_tier_price.update', array($sku, $tierPrices)); 
    } catch (Exception $e) { 
     $e->getMessage() . "\n"; 
} 

我會得到一個錯誤提示「無效的層價格」。

任何想法爲什麼會發生?還是有其他方法來增加層級價格?

謝謝。

回答

-1

比API那裏是不是所有的功能,你可以使用標準的Magento腳本更好,你只需要在Magento的文件夾放在任何地方:

require("../../app/Mage.php"); 
Mage::init(); 

// Set an Admin Session 
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
Mage::getSingleton('core/session', array('name' => 'adminhtml')); 
$userModel = Mage::getModel('admin/user'); 
$userModel->setUserId(1); 
$session = Mage::getSingleton('admin/session'); 
$session->setUser($userModel); 
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); 


foreach ($youritemlist as $item) { 


    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$item); 

    if(is_object($product)) {    


       $product->setTierPrice($yourprice); 
       echo "..(set).."; 


         $product->save();       

         echo "..saved\n";          

     }; // end testing of product exist    


}; // enf foreach 
+0

它會更有幫助,它顯示瞭如何正確設置$ yourprice。 –

1

我發現,最簡單的方法來加載模型的API使用分層價格,以便通過驗證您的數據爲您提供幫助。

$tierPrices = array(); 

$tierPrices[] = array(
    'customer_group_id' => 1,  // or 'all' or whatever your customer group ID is 
    'qty'    => 1,  // Must be greater than 0 
    'price'    => 5.99, // Use an int here, don't currency format 
    'website_id'  => 0  // or whatever website ID you need to set this to 
); 

// Set more tiered prices here if you'd like... 

$tierPriceModel = Mage::getModel('catalog/product_attribute_tierprice_api'); 

// Assume 12345 is your product ID 
$tierPriceModel->update(12345, $tierPrices); 
0

佛誰喜歡我,誰想知道爲什麼不更新一級價格分別考慮website_id這是因爲在@Tyler五碼,或API代碼錯誤發生了變化。

這是格式化新的板塊價格的正確方法:當您指定的網站變成一線價格陣列

$tierPrices[] = array(
    'customer_group_id' => 'all',  
    'qty'    => 1,  
    'price'    => 5.99,  
    'website'  => 0   
); 

這不再是website_id網站

相關問題