実際に (API ではなく) magento オブジェクトを使用している場合、これらは私が見つけた動作です。どのようにデータを取得しているかに関係なく、アプリケーションが理にかなっていることを願っています。
// 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();
これは、1 つのストアでグループ価格設定のバッチを処理している場合に便利ですが、他のストアのグループ価格設定に影響を与えるものではありません。これが最も単純なメカニズムかどうかはわかりませんが、これまでのところうまくいきました。