在magento的最新版本(1.7)中,可以选择设置客户群价格,但是我找不到任何有关如何以编程方式执行此操作的文档。我尝试了以下代码,但它没有用。有谁知道如何设置客户群价?
$_product->setCustomerGroupId($_price->getCustomerGroupId());
$_product->setGroupPrice($price);
$_product->save();
答案 0 :(得分:18)
如果您实际使用的是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();
如果您在单个商店处理批量的团体定价,这很方便,但不会影响其他商店的团体定价。我不知道这是否是最简单的机制,但它对我来说迄今为止起作用。
答案 1 :(得分:4)
我终于想通了,对于那些正在寻找解决方案的人:你需要制作一系列数据,包括website_id,cust_group,price和if if需要删除。这可以在新的magento版本(v1.7)中找到
$group_prices = array(); if(isset($price_data['delete'])) {
$group_prices[] = array(
"website_id" => Mage::getModel('core/store')->load($price_data['store_id'])->getWebsiteId(),
"cust_group" => $price_data['customer_group_id'],
"all_groups" => false,
"delete" => true
);
} else {
$group_prices[] = array(
"website_id" => Mage::getModel('core/store')->load($price_data['store_id'])->getWebsiteId(),
"cust_group" => $price_data['customer_group_id'],
"all_groups" => false,
"price" => $price_data["price"]
);
}