Domanda

Siamo spiacenti, io sono molto nuovo per Magento.

sto seguendo questo tutorial per creare un nuovo metodo di pagamento. Esso fornisce completa codice di esempio qui .

Nel tutorial, quando si parla di StandardController.php::successAction(), si dice,

Se tutto procede, siamo in grado di modificare lo stato dell'ordine da STATE_PENDING_PAYMENT a STATE_NEW, quindi la sua pronta per qualcuno sul negozio di spedire e completo. Questo è anche il luogo dove ci convertiremo la citazione in una fattura e segnare come pagamento.

Sono in grado di trovare quella prima frase del codice, tuttavia non riesco a trovare la seconda parte, che è quello di "trasformare la citazione in una fattura e segnare come pagato":

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();

}

Forse l'autore ha dimenticato di includere quella parte del codice. Ho provato a leggere la documentazione Magento e potrebbe gestire solo per convertire citare in un ordine, non una fattura:

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

Quale dovrebbe essere il codice qui a "convertire il preventivo in una fattura, e segnare come carico"?

È stato utile?

Soluzione

Non è possibile convertire un preventivo a una fattura, è necessario convertire la citazione di un ordine e poi creare una fattura. Anche il metodo di pagamento non deve convertire il preventivo in un ordine, questo viene fatto il salvataggio azione ordine durante il controllo.

Per creare una fattura si può usare:

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

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

Puoi aggiungere questo codice nel successAction nel StandardController.php del modulo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top