Magento-Nachbestellung mit bestehendem Bestellpreis
-
28-09-2020 - |
Frage
Ich habe eine Anforderung, bei der eine Bestellung aus einer vorhandenen Bestellung erstellt werden muss, d. h. die Nachbestellungsfunktion von Magento, aber programmgesteuert.Ein Cron-Job löst auf der Grundlage bestimmter Bedingungen ein Nachbestellungsereignis aus.Der folgende Code sucht nach der Bestell-ID und erstellt erfolgreich eine neue Bestellung.Bei der neuen Bestellung wird jedoch der aktualisierte Preis des Produkts ausgewählt, während dieser mit dem Preis der vorherigen Bestellung identisch sein muss.Wie kann ich es ändern, um die Preise der letzten Bestellung festzulegen?
$order = Mage::getModel('sales/order')->loadByIncrementId($lastOrderId);
$order_model = Mage::getSingleton('adminhtml/sales_order_create');
try {
$order->setReordered(true);
$order->getPayment()->getMethodInstance()->getInfoInstance();
$order_model->getSession()->setUseOldShippingMethod(true);
$reorder = $order_model->initFromOrder($order);
$newOrder = $reorder->createOrder();
$newOrderId = $newOrder->getIncrementId();
} catch (Exception $e) {
Mage::log('Renewal for Profile #'.$profileId.': '.$e, null, 'prosub-debug.log');
Mage::logException($e);
}
Lösung
Ich denke, Sie sollten alle Artikel beider Bestellungen durchlaufen und die Preise für jeden einzelnen anpassen.(Berücksichtigen Sie row_total und die Rabatte, die auf die ursprüngliche Bestellung angewendet wurden.)
Wenn Sie den Unterschied anzeigen möchten, können Sie dies belassen price
und gewähren Sie einen Rabatt, andernfalls kopieren Sie einfach alle preisbezogenen Felder:
- Preis
- Grundpreis
- Original Preis
- base_original_price
Das sollte ausreichen.