如果您实际使用的是 magento 对象(而不是 api),这些是我发现的行为。希望应用程序有意义,无论您如何获取数据。
// get my product
$product = Mage::getModel('catalog/product')->load(x);
// the group data is expecting an array of arrays that look like..
// array ('website_id'=>y, 'cust_group'=>z, 'price'=>n)
$groupPricingData = array (
// for website 2, customer group 2
array ('website_id'=>2, 'cust_group'=>2, 'price'=>10),
// for all websites, not logged in
array ('website_id'=>0, 'cust_group'=>0, 'price'=>15)
);
$product->setData('group_price',$groupPricingData);
$product->save();
在此示例中,它将替换该产品之前的所有团体定价,因此同样明智。
$product->setData('group_price',array());
$product->save();
将取消团体定价。
我注意到的另一个与在您正在更新的产品上设置商店 ID 相关的行为会导致附加组价。这样,如果您要为特定商店上传一堆团体定价,您不必担心会丢失针对另一家商店的团体定价。
// add a pricing to store 4
$product = Mage::getModel('catalog/product')->setStoreId(4)->load(1234);
$product->setData('group_price',array (
array (
"website_id" => 3,
"cust_group" => 4,
"price" => 99
)));
$product->save();
// add a pricing to store 1
$product = Mage::getModel('catalog/product')->setStoreId(1)->load(1234);
$product->setData('group_price',array (
array (
"website_id" => 1,
"cust_group" => 2,
"price" => 105
)));
$product->save();
// remove group pricing from store 2
$product = Mage::getModel('catalog/product')->setStoreId(2)->load(1234);
$product->setData('group_price',array ());
$product->save();
如果您正在处理单个商店的批量团体定价,这很方便,但不要影响其他商店的团体定价。我不知道这是否是最简单的机制,但到目前为止它对我有用。