Question

Tout d'abord je vous expliquer au sujet de la fonctionnalité actuall:

  1. client achète dans la boutique via PayPal
  2. les opérateurs Boutique appellent l'ordre d'un logiciel externe (wawi, ne savent pas en) et le logiciel définit l'état complet pour
  3. Boutique opérateurs collectent l'argent à paypal, en fonction de leur compte vendeur, du client
  4. Une fois que, Paypal envoie après un certain temps un retour de demande automatique IPN magento et réglez le dos de l'ordre à l'attente

La chose est d'empêcher paypal (ou Ipn Model) de définir l'ordre de l'état fini de retour en attente.

Nous allready avons apporté quelques modifications à la classe: Mage_Paypal_Model_Ipn en Mage / Paypal / Modèle / ipn.php. À mon avis est-il le code responsable _registerPaymentCapture (). Voici nos modifications (marqués Edit):

 if ($this->getRequestData('transaction_entity') == 'auth') {
        return;
    }
    $this->_importPaymentInformation();
    $payment = $this->_order->getPayment();

    /* Edit: check if order state is complete */
    $orderStateComplete = (Mage_Sales_Model_Order::STATE_COMPLETE == $this->_order->getState());

    $orderStatusBefore = $this->_order->getStatus();
    $payment->setTransactionId($this->getRequestData('txn_id'))
        ->setPreparedMessage($this->_createIpnComment(''))
        ->setParentTransactionId($this->getRequestData('parent_txn_id'))
        ->setShouldCloseParentTransaction('Completed' === $this->getRequestData('auth_status'))
        ->setIsTransactionClosed(0)
        ->registerCaptureNotification($this->getRequestData('mc_gross'));

    /* Edit: reset state and status, if order was already complete before */
    if ($orderStateComplete) {
        $this->_order->setState(Mage_Sales_Model_Order::STATE_COMPLETE)
            ->setStatus($orderStatusBefore);
    }
    $this->_order->save();

    // notify customer
    $invoice = $payment->getCreatedInvoice();
    if ($invoice && !$this->_order->getEmailSent()) {
        $this->_order->sendNewOrderEmail()->addStatusHistoryComment(
            Mage::helper('paypal')->__('Notified customer about invoice #%s.', $invoice->getIncrementId())
        )
        ->setIsCustomerNotified(true)
        ->save();
    }

Le problème est toujours là et je ne sais pas où éditer le fichier afin d'éviter les changements d'état de la commande.

greetz et merci à l'avance

Était-ce utile?

La solution

Nous y sommes arrivés. Le problème est que le logiciel ERP de l'état de la commande n'a pas défini, tout l'état, de sorte que la condition n'a pas woked.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top