Entfernen Sie einen Artikel aus dem Admin-Bestellangebot und fügen Sie programmgesteuert einen neuen Artikel hinzu
-
13-12-2019 - |
Frage
Ich arbeite an einem Projekt, das optimiert werden muss admin Auftragserstellung funktion von Magento.
Ich muss einen Artikel entfernen und dann programmgesteuert einen weiteren Artikel hinzufügen, während ich eine Bestellung erstelle.
Zum Beispiel sind bereits einige Artikel zur Bestellung hinzugefügt, jetzt, wenn die Produkt-ID mit übereinstimmt my_product_id
, entfernen Sie dieses Produkt von quote
und neues Produkt hinzufügen (my_new_product
) Bestellen.
Es wird nicht von sein observer
, da ich eine hinzufügen muss Schaltfläche um diese Aktion aufzurufen und die Arbeit zu erledigen.
Ich habe erfolgreich eine Schaltfläche hinzugefügt und mit meinem benutzerdefinierten Controller verknüpft.
Ich habe viele Links durchgesehen, aber kein Glück.
Bitte schlagen Sie vor.
Lösung 2
Nach dem Graben für ein paar Tage konnte ich das Ergebnis erzielen.
ein großer dank von @lloiacono , um mich auf die richtige Richtung zu zeigen, jedoch war seine / ihre Antwort nicht gut genug.
in meiner Controller-Datei:
generasacodicetagpre.Andere Tipps
Update
Da Sie nur die vorhandene Admin-Auftragserstellung optimieren müssen, an die Sie sich anschließen können: verkauf_bestellen_speichern oder adminhtml-Verkauf -Bestellung - Prozessdaten erstellen aber stellen Sie sicher, dass Sie dies in die <adminhtml>
knoten in Ihrem config.xml
.
Einmal in deinem Beobachter.php können Sie die gewünschten Elemente entfernen, ich würde stattdessen versuchen, mich auch in der an ein Zitatereignis anzuschließen <adminhtml>
knoten und entfernen Sie dann den Artikel, wenn möglich, auf Angebotsebene.
So fügen Sie dem Angebot einen Artikel hinzu:
$quote->addProduct($product, new Varien_Object($eventArgs));
$quote->save();
So entfernen Sie einen Artikel aus dem Angebot:
$quote->removeItem($item->getItemId())->save();
Dann können Sie Magento die Admin-Bestellung erstellen lassen:
$adminSalesOrderCreate = Mage::getSingleton('adminhtml/sales_order_create');
$adminSalesOrderCreate->setQuote($quote)->save();
Hier gibt es eine sehr vollständige Antwort: https://magento.stackexchange.com/a/15050/5913