Frage

Entschuldigung, ich bin sehr neu in Magento.

Ich folge Dieses Tutorial So erstellen Sie eine neue Zahlungsmethode. Es bietet voll Beispielcode hier.

Im Tutorial, wenn man davon spreche StandardController.php::successAction(), es sagt,

Wenn alles überprüft, können wir den Status der Bestellung von state_pending_payment in state_new ändern, sodass es bereit ist, jemanden im Geschäft zu versenden und zu vervollständigen. Hier werden wir auch das Angebot in eine Rechnung umwandeln und es als bezahlt markieren.

Ich kann diesen ersten Satz im Code finden, aber ich kann den zweiten Teil nicht finden, das "das Zitat in eine Rechnung umwandeln und als bezahlt markieren":

if($state == Mage_Sales_Model_Order::STATE_PENDING_PAYMENT){

    $msg = 'Payment completed via MockPay.';
    $order->setState(Mage_Sales_Model_Order::STATE_NEW ,true,$msg,false);
    $order->save();

    $quote = Mage::getSingleton('checkout/session')->getQuote();
    $quote->setIsActive(false)->save();

}

Vielleicht hat der Autor vergessen, diesen Teil des Codes aufzunehmen. Ich habe versucht, die Magento -Dokumente zu lesen und konnte es nur schaffen, in eine Bestellung zu zitieren, nicht in eine Rechnung:

    $convertQuote = Mage::getSingleton('sales/convert_quote');
    $order = $convertQuote->toOrder($quote);

Was sollte der Code hier sein, um "das Zitat in eine Rechnung umzuwandeln und als bezahlt zu markieren"?

War es hilfreich?

Lösung

Sie können kein Angebot in eine Rechnung konvertieren, Sie müssen das Angebot in eine Bestellung umwandeln und dann eine Rechnung erstellen. Auch die Zahlungsmethode sollte das Angebot nicht in eine Bestellung konvertieren, dies wird durch die Save -Bestellaktion während der Kasse durchgeführt.

Um eine Rechnung zu erstellen, die Sie verwenden können:

$invoice = $order->prepareInvoice();
$invoice->register()->capture();

Mage::getModel('core/resource_transaction')
    ->addObject($invoice)
    ->addObject($invoice->getOrder())->save();

Sie können diesen Code in der Folge in der Standardcontroller.php Ihres Moduls hinzufügen.

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