我有一个关于按代码添加产品等级价格的问题。我做了一些研究,有一个magento API可以用来增加等级价格。但是,由于我已经定制了我们的magento并在层级价格中添加了一个新字段,即“生产时间”,我不知道如何通过API再添加层价格。
以下是示例代码
$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";
}
我会收到一个错误,上面写着“无效等级价格”。
知道为什么会这样吗?或者还有其他方法来增加等级价格吗?
谢谢。
答案 0 :(得分:2)
我发现最简单的方法是加载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);
答案 1 :(得分:0)
和我一样想知道为什么等级价格没有更新时考虑到website_id这是因为@Tyler V.代码中存在错误,或者api代码已经更改。
这是格式化新等级价格的正确方法:
$tierPrices[] = array(
'customer_group_id' => 'all',
'qty' => 1,
'price' => 5.99,
'website' => 0
);
当您将网站指定为等级价格数组时,不再是 website_id ,而是网站!
答案 2 :(得分:-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