2012-05-15 19 views
7

Nella versione più recente di Magento (1.7) è disponibile un'opzione per impostare i prezzi dei gruppi di clienti, tuttavia non riesco a trovare alcuna documentazione su come farlo a livello di programmazione. Ho provato il seguente codice, ma non ha funzionato. Qualcuno sa come impostare il prezzo del gruppo di clienti?Magento 1.7 - impostazione del prezzo di gruppo del cliente a livello di programmazione

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

risposta

4

Bene finalmente ho capito, per coloro che sono alla ricerca di una soluzione: è necessario effettuare una serie di dati, tra cui website_id, cust_group, prezzo e, se necessario, di eliminazione. Questo è disponibile nella nuova versione di 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

Questa risposta non è molto utile. Dove passare quell'array, perché se utilizzo alcuni metodi API dei prodotti, ignora l'array dei prezzi di gruppo, mentre salva l'array dei prezzi di livello, che è configurato in modo simile. – feeela

18

Se si sta in realtà utilizza l'oggetto di Magento (non l'API), questi sono i comportamenti che ho trovato. Speriamo che l'applicazione abbia senso, indipendentemente da come stai acquisendo i dati.

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

In questo esempio, sostituirebbe tutti i prezzi di gruppo precedenti per il prodotto, quindi in modo saggio.

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

rimuoverà i prezzi di gruppo.

Un altro comportamento che ho notato relativo all'impostazione dell'id del negozio sul prodotto che si sta aggiornando causerà l'aggiunta del prezzo del gruppo. In questo modo se stai caricando un gruppo di prezzi di gruppo per un negozio specifico, non devi preoccuparti di perdere il set di prezzi di gruppo contro un altro negozio.

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

Questo è conveniente se avete a che fare con lotti di pricing gruppo su un singolo negozio, ma non quello di influire su altri prezzi negozi del gruppo. Non so se questo è il meccanismo più semplice, ma ha funzionato finora per me.

+0

prova a usare '$ product-> getData ('tier_price');' dopo aver caricato il prodotto, aggiungi l'array al tuo e puoi salvare senza sovrascrivere quelli esistenti. Modifica: sembra essere 'tier_price' in EE, e' group_price' in CE – DWils

+1

La quotazione dei prezzi e la tariffazione di gruppo sono due caratteristiche abbastanza separate. Il prezzo di base consente "Acquista 1 per $ 5/ciascuno o 5 per $ 4/ciascuno". I prezzi di gruppo consentono a "I clienti abituali pagano $ 5 e i clienti VIP pagano $ 4" (indipendentemente dalla quantità). I prezzi di gruppo sono stati introdotti in CE 1.7 e EE 1.12 e non sono disponibili nelle versioni precedenti. –

Problemi correlati