Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Zahlung per Rechnung / Nachnahme - Bestellstatus wird nicht geändert

    Kneumi

    • Fördermitglied
    • Beiträge: 134
    Ich habe die Zahlungsoptionen Nachnahme und Rechnung so eingestellt, dass unter

    Zitat
    Bestellstatus festlegen
    Bestellungen, welche mit diesem Modul gemacht werden, auf diesen Status setzen

    "Vorbereitung Versand (NN/RE)" (Stauts ID=9) steht. Bestellungen per Nachnahme oder Rechnung sollten also direkt nach Bestellabschluss auf diesen Status gesetzt werden. Was nun aber bei solchen Bestellungen passiert ist:

    In der Übersicht der Bestellungen im Admin-Bereich (admin/orders.php) ist der Bestellstatus richtig und sofort nach Bestellung aktualisiert („Vorbereitung Versand“). In der Detailansicht der Bestellung (z.B. http://www.meinedomain.de/admin/orders.php?page=1&oID=9021&action=edit) fehlt jedoch in der Bestellhistorie die Status-Aktualisierung und es steht immer noch der erste Status „Offen/Zahlung steht aus“ (Status ID=1) dort. Der Fehler betrifft Bestellung per Nachnahme und Rechnung gleichermaßen und ist reproduzierbar. Error_log gibt nix her.

    Bei paypal Kaufabwicklung und Sofortüberweisung funktioniert die automatische Statusaktualisierung.

    Weiß jemand Rat?

    PS: Die Bestellstatus-Aktualisierung bei Nachnahme und Rechnung hat bei mir schon im alten XTC 3.04 nicht funktioniert. Die Definition der Bestellstati wurde in den modified-Shop übernommen, inzwischen ist die Zahl der Bestellstati aber durch Zahlungsmodule wie paypal Kaufabwicklung auf 26 angewachsen..

    Linkback: https://www.modified-shop.org/forum/index.php?topic=31667.0

    Kneumi

    • Fördermitglied
    • Beiträge: 134
    Nachtrag: Es ist egal, welchen Bestellstatus ich im Modul Nachnahme bzw. Rechnung als Standard für die Bezahlart festlege: In der Bestellübersicht wird der Bestellstatus richtig angezeigt, in der Einzelansicht der Bestellung ist er hingegen nicht aktualisiert. Das ist seltsam, es scheint fast so, als würden die Bestellübersichts-Seite und die Detailansicht einer Bestellung auf unterschiedliche Datenquellen zurückgreifen.

    Könnte es evtl. am Modul Schnellbearbeitung liegen?

    In der Datenbank-Tabelle "orders" ist bei Testbestellungen unter order_status der Korrekte Status (9 = "Vorbereitung Versand (NN/RE)") gespeichert. Umso verwunderlicher ist, dass in der Bestellbearbeitung trotzdem der Status 1 (Zahlung offen) angezeigt wird. In der Spalte last_modified steht. "NULL", der Bestellstatus wurde also noch nie geändert, auch nicht automatisch.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.370
    • Geschlecht:
    Das liegt nicht am "", sondern daran, dass in den Modulen "cod.php" und "invoice.php" die Status-Aktualisierung für die History fehlte. Sehr merkwürdig, dass das bisher niemandem aufgefallen ist! :-?

    Suche in den beiden Modulen:

    Code: PHP  [Auswählen]
                            xtc_db_query("UPDATE ".TABLE_ORDERS." SET orders_status='".$this->order_status."' WHERE orders_id='".$insert_id."'");

    und füge danach ein:

    Code: PHP  [Auswählen]
                            xtc_db_query("UPDATE ".TABLE_ORDERS_STATUS_HISTORY." SET orders_status_id='".$this->order_status."' WHERE orders_id='".$insert_id."'");

    Habe ich bei dir im Shop bereits ergänzt.

    Grüße

    Torsten

    Kneumi

    • Fördermitglied
    • Beiträge: 134
    Na dann Danke!  :thx: Schön zu wissen, dass es a) ausnahmsweise nicht am mir lag ;) und b) nebenbei ein kleiner Bug im Shop behoben werden konnte.

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Ich habe die besagte Zeile auch noch anderswo gefunden - hier scheint auch das Update der TABLE_ORDER_STATUS_HISTORY zu fehlen, oder sehe ich das falsch?

    • In includes/external/shopgate/base/includes/modules/payment/shopgate.php
    • In includes/modules/paypal_ipn.php
    • In includes/modules/payment/amoneybrokers.php
    • In includes/modules/payment/cash.php
    • In includes/modules/payment/cc.php
    • In includes/modules/payment/cod.php
    • In includes/modules/payment/eustandardtransfer.php
    • In includes/modules/payment/invoice.php
    • In includes/modules/payment/moneyorder.php
    • In includes/modukes/payment/paypal_ipn.php

    Soweit ich das erkennen kann, wird der Status der Tabelle nur in banktransfer.php geändert.

    Soll ich die nun alle ergänzen?

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Ich möchte nicht unhöflich sein oder drängeln, da ich aber einen Shop bereits produktiv betreibe, würde ich gerne wissen, wie ich hier verfahren soll.

    Könnte sich das mal jemand ansehen?

    web0null

    • Experte
    • Beiträge: 1.998
    Code: PHP  [Auswählen]
    xtc_db_query("UPDATE ".TABLE_ORDERS_STATUS_HISTORY." SET orders_status_id='".$this->order_status."' WHERE orders_id='".$insert_id."'");

    Warum auf die "TABLE_ORDERS_STATUS_HISTORY" ein UPDATE machen, das ist eine History Tabelle, also gehört in diese Tabelle meiner Meinung nach, ein neuer Eintrag?

    Sonst würde diese Tabelle ja nichts bringen.

    Abgesehen davon würden mit "dem" UPDATE ALLE evtl. vorhandenen History-Einträge die schon für diese "orders_id" vorhanden sind, überschrieben mit dem "einen" Status.
    Somit wäre das History für diese Order verloren.

    Gruß

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    ... scheint, als hätten wir da eine Baustelle entdeckt, oder? Hülfäääääää ....

     :-?

    Kneumi

    • Fördermitglied
    • Beiträge: 134
    Warum auf die "TABLE_ORDERS_STATUS_HISTORY" ein UPDATE machen, das ist eine History Tabelle, also gehört in diese Tabelle meiner Meinung nach, ein neuer Eintrag?

    Abgesehen davon würden mit "dem" UPDATE ALLE evtl. vorhandenen History-Einträge die schon für diese "orders_id" vorhanden sind, überschrieben mit dem "einen" Status.
    Somit wäre das History für diese Order verloren.

    Tomcrafts Änderung bewirkt tatsächlich, dass direkt nach der Bestellung in der History nix anderes steht, als der unter Module/Zahlungsoptionen voreingesteltle Bestellstatus. Das Modul Paypal Kaufabwicklung macht es hingegen so, wie es Dir vorschwebt und legt direkt nach erfolgreicher Zahlungsabwicklung (= in der Regel einige Sekunden nach Generierung der Bestellung) einen oder mehrere zusätzliche Einträge in der History an. Sofortüberweisung legt einen zusätzlichen Eintrag an. Bei mir sieht es so aus:

    Zitat
    Nachnahme oder Rechnungs-Bestellung:
    07.12.2014 19:00:00  Vorbereitung Versand (NN/RE)

    Sofortüberweisung-Bestellung:

    07.12.2014 19:18:13    Offen/Zahlung steht aus         
    07.12.2014 19:18:13    Versand wird vorbereitet    Bestellung mit SOFORT Überweisung erfolgreich übermittelt.

    Paypal Bestellung:

    07.12.2014 19:23:57    Offen/Zahlung steht aus         
    07.12.2014 19:24:00    Offen PP wartend
    07.12.2014 19:24:17    Versand wird vorbereitet    PayPal IPN Completed...

    Ich kann jetzt als User aber keinen direkten Nachteil davon erkennen. dass bei meinen Nachnahme- und Rechnungs-Bestellungen der erste Status "Offen/Zahlung steht aus" nicht erhalten bleibt, sondern direkt durch den von mir eingestellten Status überschrieben wird. Bei paypal und Sofortüberweisung ist die history relevant, weil es im Bezahlungsvorgang selbst zu Abbrüchen kommen kann. Aber bei Nachnahme/Rechnung wird die Bestellung doch gar nicht erst generiert, wenn der Kunde den Vorgang abbricht.

    Zitat
    Abgesehen davon würden mit "dem" UPDATE ALLE evtl. vorhandenen History-Einträge die schon für diese "orders_id" vorhanden sind, überschrieben mit dem "einen" Status.
    Somit wäre das History für diese Order verloren.

    Die UPDATE Funktion wird aber doch nur einmalig bei der Generierung der Bestellung aufgerufen und somit auch nur einmalig der erste (=tendenziell nchtssagende) Bestellstatus überschrieben?! Ich find deine Lösung, den ersten Status beizubehalten und den neuen Status auch bei Nachnahme/Rechnung nur zu ergänzen, mindestens genauso gut, versteh mich nicht falsch. Aber bisher erkenne ich hier eher ein kosmetisches Problem, als ein funktionales.

    @sixtyseven: Hast du denn alle die von dir genannten Zahlungsmodule aktiv und kannst die Probleme bestätigen? Paypal Kaufabwicklung funktioniert zB mit einer anderen Logik und problemlos, siehe oben.

    web0null

    • Experte
    • Beiträge: 1.998
    Zitat
    Die UPDATE Funktion wird aber doch nur einmalig bei der Generierung der Bestellung aufgerufen und somit auch nur einmalig der erste Bestellstatus überschrieben

    Wenn es nur einmal ausgeführt wird, ist es natürlich nicht schlimm.
    Ich fand es nur seltsam dass man bei einer History-Tabelle bestehende Werte ändert.

    Wenn es praktisch nur eine Korrektur der kurz zuvor eingetragenen Werte ist, kann man es so machen, Wobei ich mich dann aber frage warum man nicht von Anfang an, "richtige" Werte einträgt.

    Ich finde man sollte diese Tabelle, wenn es sie schon gibt, auch richtig verwenden, damit kann man eben leichter erkennen ob beim "Bestellprozess" etwas schief gegangen ist.

    Aber ja... man könnte so einiges anpassen :-D

    Gruß
    2 Antworten
    3609 Aufrufe
    19. Mai 2015, 17:36:04 von webald
    1 Antworten
    1816 Aufrufe
    04. September 2012, 10:03:53 von morphaeus
    3 Antworten
    2831 Aufrufe
    17. April 2013, 12:13:12 von Ben Tanabe