2012-05-15 15 views
7

magentoの最新バージョン(1.7)には、顧客グループ価格を設定するオプションがありますが、これをプログラムで行う方法に関するドキュメントは見つかりません。私は次のコードを試したが、うまくいかなかった。誰もが顧客グループの価格を設定する方法を知っていますか?Magento 1.7 - お客様のグループ価格をプログラムで設定

$_product->setCustomerGroupId($_price->getCustomerGroupId()); 
$_product->setGroupPrice($price); 
$_product->save(); 

答えて

4

さて、私は最終的に解決策を探している人のために、それを考え出した:あなたはwebsite_id、cust_group、価格や削除、必要な場合など、データの配列を作成する必要があります。あなたが実際にこれらは、私が発見した行動は、Magentoのオブジェクト(ないAPI)を使用している場合、これは新しい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"] 
           ); 
          } 
+2

この回答は役に立ちません。その配列を渡す場所は、いくつかの製品APIメソッドを使用するとグループ価格配列を無視し、同じように設定されたティア価格配列を保存するためです。 – feeela

18

で利用可能です。うまくいけば、データをどのように取得しているかにかかわらず、アプリケーションは理にかなっています。

// 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つのストアでのグループの価格設定のバッチを扱っている場合には便利ですが、他の店舗のグループの価格設定に影響を与えることはありません何。私はこれが最も単純なメカニズムであるかどうかは分かりませんが、これまでのところ私のために働いています。

+0

製品をロードした後、 '$ product-> getData( 'tier_price');'を使って試してみて、あなたの配列を追加して、既存のものを上書きすることなく保存することができます。編集:EEでは 'tier_price'、CEでは – DWils

+1

の' group_price'のようです。ティアプライシングとグループ価格設定は全く別の2つの機能です。ティアの価格設定では、1人につき5ドルまたはそれぞれ4ドルのシナリオを購入することができます。グループ価格設定では、「通常の顧客は$ 5、VIPの顧客は$ 4を支払う」シナリオ(数量とは無関係)が可能です。グループ価格はCE 1.7およびEE 1.12で導入され、旧バージョンでは利用できません。 –

関連する問題