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);
}   
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top