2012-05-15 14 views
7

W najnowszej wersji magento (1.7) istnieje możliwość ustawienia cen grup klientów, jednak nie mogę znaleźć dokumentacji, jak to zrobić programowo. Próbowałem poniższy kod, ale nie działa. Czy ktoś wie, jak ustawić cenę dla grupy klientów?Magento 1.7 - programowanie cen grupowych klientów

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

Odpowiedz

4

No ale w końcu zorientowaliśmy się, dla tych, którzy szukają rozwiązania: trzeba wykonać szereg danych, w tym website_id, cust_group, cena i jeśli potrzeba usunięcia. Funkcja ta jest dostępna w nowej wersji 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

Ta odpowiedź nie jest bardzo pomocna. Gdzie to zrobić, przekaż tę tablicę, ponieważ jeśli użyję niektórych metod API produktów, to zignoruje ona tablicę cen grupowych, a jednocześnie zapamiętuje tablicę cen poziomów, która jest podobna. – feeela

18

Jeśli rzeczywiście korzystania z obiektu (nie magento API), są to zachowania znalazłem. Mam nadzieję, że aplikacja ma sens, niezależnie od tego, w jaki sposób pozyskujesz dane.

// 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(); 

W tym przykładzie zastąpiłoby to wszystkie poprzednie ceny grupowe dla produktu, więc jak mądry.

$product->setData('group_price',array()); 
$product->save(); 

spowoduje usunięcie wyceny grupy.

Inne zachowanie, które zauważyłem w związku z ustawianiem identyfikatora sklepu w aktualizowanym produkcie spowoduje dodanie ceny do grupy. W ten sposób, jeśli przesyłasz pakiet cen grupowych dla określonego sklepu, nie musisz się martwić o utratę zestawu cen grupowych względem innego sklepu.

// 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(); 

Jest to wygodne, jeśli masz do czynienia z partiami cen grupowych w jednym sklepie, ale nie ma to wpływu na ceny innych grup sklepów. Nie wiem, czy to najprostszy mechanizm, ale jak dla mnie zadziałało.

+0

spróbuj użyć '$ product-> getData ('tier_price');' po załadowaniu produktu, następnie dodaj tablicę do swojej i możesz zapisać bez nadpisywania istniejących. Edycja: wydaje się, że jest to "tier_price" w EE, a "group_price" w CE – DWils

+1

Ceny oparte na cenach i ceny grupowe to dwie zupełnie odrębne funkcje. Ceny według poziomu pozwalają na scenariusz "Kup 1 za 5 USD/każdą lub 5 za 4 USD/każdą". Ceny grupowe pozwalają "Stałym klientom płacić 5 USD a klienci VIP płacą 4 $" (niezależnie od ilości). Ceny grupowe zostały wprowadzone w wersjach CE 1.7 i EE 1.12 i nie są dostępne w starszych wersjach. –

Powiązane problemy