2012-04-10 6 views
0

Ich habe Attribute erstellt, die direkt zu einem Zitat Artikel in meiner checkout_cart_product_add_after Observer-Methode wird nicht beibehalten den Wert, wie es nach dem Observer Exits zurückgesetzt werden scheint.Magento Custom Pricing/Attribute auf ein Angebot Artikel

Siehe Codebeispiele unter:

config.xml (Snippet):

<checkout_cart_product_add_after> 
    <observers> 
     <module> 
     <type>model</type> 
     <class>NativeRemedies_OrderGroove_Model_Observer</class> 
     <method>productAddAfter</method> 
     </module> 
    </observers> 
    </checkout_cart_product_add_after> 

Observer.php (Snippet):

public function handleOrderGroove() 
{  
    foreach($this->og->products as $_product){ 
     if($_product->every>0){ 
      foreach($this->_quote->getAllVisibleItems() as $_item){ 
       //if sku is in the active list of recurring products selected add quote item id to array 
       if($_item->getSku()==$_product->id){ 
        Mage::helper('nrordergroove')->setRecurringItem($_item->getItemId()); 
        $_item->setOrdergrooveActive(true)->save(); 
        $_item->getProduct()->setPrice(2); 
        $_item->setCustomPrice(2); 
        $_item->setOriginalCustomPrice(2); 
        $_item->getProduct()->setIsSuperMode(true); 
       } 
      } 
     } // else, do nothing 
    } 

Das $ _ITEM Objekt in Dieses Beispiel bietet nicht die Möglichkeit, das Attribut als gesetzt zu behalten - selbst beim Aufruf von ->save().

Vielen Dank im Voraus für Ihre Hilfe. Ich habe alle Tutorials zum Einstellen von benutzerdefinierten Preisen und Attributen gesehen - nichts scheint die Situation zu verbessern!

Edit 1

ich so zu fühlen fange ist ein Fehler in 1.6+. Ich habe in verschiedenen Gremien viel darüber diskutiert, in> = 1.4 zu arbeiten.

Edit 2

Nur absolut klar zu sein, ist das Problem hier, dass das benutzerdefinierte Pricing Attribut wird durch das Produktmodell oder die collectTotals Methoden effektiv überschrieben werden. Ich brauche einen Workaround.

+0

erstellt haben Sie die Felder in sales_flat_quote Geschichte? –

+0

Ja, in der Tabelle 'sales_flat_quote_item', da dies ein Entitätstyp von Zitat_Element ist. – philwinkle

+0

seit 1.4 das Zitat ist in sales_flat_quote gespeichert und wenn Sie etwas hinzufügen fügen Sie sie als Felder zu dieser Tabelle, wo sie gespeichert werden. –

Antwort

1

Wie es hier meine Arbeits Code passiert hat, in der Tat, Arbeit. Ein Erweiterungskonflikt mit den Special Promotions von Amasty führte dazu, dass die benutzerdefinierten Preise nicht festgelegt wurden. Dies wird als die Arbeit mit den folgenden Magento-Versionen getestet:

  • 1,5 Gemeinschaft
  • 1.6.1 Gemeinschaft
  • 1.11.1.1 Unternehmen
0

Hier ist die Antwort auf Ihre Frage ist, ist ja dies in der neueren Version von Magento 1.5+:

Wenn Elemente aus einem Zitat auf eine Bestellung umgewandelt Check-out erhalten, bei dem das Attribut Punkt verloren gehen.

Sie müssten etwas ähnlich wie diese Beobachter, um für Ihre Attribute an der Kasse behalten hinzuzufügen:

<sales_convert_quote_item_to_order_item> 
    <observers> 
     <extra_options> 
      <type>model</type> 
      <class>extra_options/observer</class> 
      <method>salesConvertQuoteItemToOrderItem</method> 
     </extra_options> 
    </observers> 
</sales_convert_quote_item_to_order_item> 

Hier bewegen wir die Option aus dem Angebot Artikel der Auftragsposition.

public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer) 
{ 
    $quoteItem = $observer->getItem(); 
    if ($additionalOptions = $quoteItem->getOptionByCode('additional_options')) { 
     $orderItem = $observer->getOrderItem(); 
     $options = $orderItem->getProductOptions(); 
     $options['additional_options'] = unserialize($additionalOptions->getValue()); 
     $orderItem->setProductOptions($options); 
    } 
} 

Schauen Sie hier für weitere Informationen: Magento - Quote/order product item attribute based on user input

+0

Ich schätze Ihre Verwendung von zusätzlichen Optionen, um es zu entführen - aber das Problem hier zur Hand ist der tatsächliche Preis im Warenkorb angezeigt. Nicht in der Umstellung auf eine Auftragsposition. – philwinkle

+0

Ja, das ist ein Beispiel von dem Link, den ich gesendet habe, aber das Problem ist sehr ähnlich, dass seit dem 1.5 Informationen verloren geht, die Umwandlung von einem Angebot zu einer Bestellung. –

+0

salesConvertQuoteItemToOrderItem ruft nicht auf. Ich setze meine benutzerdefinierte Option in sales_quote_collect_totals_before und es ist konfigurierbares Produkt –

Verwandte Themen