2017-06-24 5 views
1

Ich schreibe ein Zahlungs-Gateway für Woocommerce und ich ändere den Bestellstatus nach der Zahlung ist Erfolg. Wenn sich der Status in Bearbeitung ändert, reduziere ich den Bestellbestand. Alles läuft gut.WooCommerce Bestellstatus & reduzieren Lager

Durch die Art und Weise in den Plugin-Einstellungen der Administrator den Status für Erfolg Zahlungen ... Verarbeitung oder abgeschlossen ändern (physische oder virtuelle Produkte für)

function setOrderPaid($OrderID, $status){ 
     $order = new WC_Order($OrderID);  
     if(!$order){ 
      return false; 
      }else{ 
        $order->update_status($status);      
        if($status=="processing") $order->reduce_order_stock(); 
        WC()->cart->empty_cart();       
        return true; 
       } 
    } 

Nach einem Erfolg Zahlung mit den Auftragsstatus an sich ändernde Verarbeitung, ich gehe und ändern Sie das Statushandbuch zu abgeschlossen (Backoffice Woocommerce-> Bestellungen) und das System reduzieren den Auftragsbestand wieder.

Ich muss den Bestand nach der erfolgreichen Zahlung reduzieren, um Probleme mit anderen Aufträgen auf dem gleichen Produkt zu verhindern. Wie kann ich dieses Problem beheben?

Ich finde diese Woocommerce set_status. Vielleicht hilft das ... bool $ manual_update ist dies eine manuelle Bestellstatusänderung? Das System weiß also, dass der Bestand bereits reduziert ist ???

Antwort

0

Dies hat zu tun, was als bezahlt Auftragsstatus in woocommerce gelten. Sie können die Liste der bezahlten Bestellstatus anpassen. Die obige Funktion wird jedes Mal ausgelöst, wenn die Bestellung einen dieser bezahlten Bestellstatus eingibt.

Jetzt wäre Ihr erster Instinkt, die bezahlte Statusliste zu kürzen. Dies mag in einigen Fällen ratsam sein, aber in diesem speziellen Fall ist der Instinkt falsch.

Sie müssen stattdessen den aktuellen Bestellstatus überprüfen. Wenn der Status kein bezahlter Status ist, sollten Sie nur die Funktion "Aktien reduzieren" auslösen. Dies setzt voraus, dass die Bestellung nicht wiederholt zwischen einem bezahlten und einem unbezahlten Status springt.

Verwandte Themen