blog@grafikmaker.de

News, Tips und Tricks für Ecommerce, Webdesign, Programmierung, XTCommerce und xtcModified von grafikmaker.de

XTCommerce – Bestellung stornieren

XTC-Shops und deren Forks haben keine generelle Stornofunktion für Bestellungen. Der Shop bietet hier nur die Möglichkeit nicht gewollte Bestellungen zu löschen. Dies führt aber dazu, daß man keine Möglichkeit hat alle Bestellvorgänge später nach zuweisen/zuvollziehen. Gerade beim Thema Finanzamt wird es kompliziert, wenn auf einmal in der Buchhaltung einfach Bestellungen wieder verschwinden.

Aus diesem Grund hab ich mal eine einfache Möglichkeit geschaffen Bestellungen im Shop zu stornieren, ohne das diese gleich komplett aus dem Shop verschwinden.

Als Basis für diese Funktion diente mir hier ein xtcModified-Shop in der Version 1.05

 

1. Neuen Bestellstaus im Admin  anlegen “Storno”
(bei mir die order_status_id 4)

Um jetzt nochmal zu Kontrollieren welche ID mein neuer Bestellstatus erhalten hat, ohne dafür extra in der Datenbank nach zuschauen, einfach den neuen Status anklicken.

Jetz kann man in der Browserleiste die ID am Ende der URL ablesen.

2. admin/includes/functions/generel.php
suche:

xtc_db_query("delete from ".TABLE_ORDERS." where orders_id = '".xtc_db_input($order_id)."'");
xtc_db_query("delete from ".TABLE_ORDERS_PRODUCTS." where orders_id = '".xtc_db_input($order_id)."'");
xtc_db_query("delete from ".TABLE_ORDERS_PRODUCTS_ATTRIBUTES." where orders_id = '".xtc_db_input($order_id)."'");
xtc_db_query("delete from ".TABLE_ORDERS_STATUS_HISTORY." where orders_id = '".xtc_db_input($order_id)."'");
xtc_db_query("delete from ".TABLE_ORDERS_TOTAL." where orders_id = '".xtc_db_input($order_id)."'");
}

füge danach folgendes ein:

//BOF new storno-function for orders by grafikmaker.de
function xtc_storno_order($order_id, $restock = false) {

$order_status_id = 4; // ID vom OrderStatus = Storno

if ($restock == 'on') {
$order_query = xtc_db_query("select products_id, products_quantity from ".TABLE_ORDERS_PRODUCTS." where orders_id = '".xtc_db_input($order_id)."'");
while ($order = xtc_db_fetch_array($order_query)) {
xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = products_quantity + ".$order['products_quantity'].", products_ordered = products_ordered -

".$order['products_quantity']." where products_id = '".$order['products_id']."'");
}
}

xtc_db_query("update ".TABLE_ORDERS." set orders_status = ".$order_status_id." where orders_id = '".xtc_db_input($order_id)."'");
xtc_db_query("update ".TABLE_ORDERS_TOTAL." set value = '0.0000' where orders_id = '".xtc_db_input($order_id)."'");
xtc_db_query("update ".TABLE_ORDERS_TOTAL." set text = '' where orders_id = '".xtc_db_input($order_id)."'");
}
//EOF new storno-function for orders by grafikmaker.de

3. admin/orders.php
suche:

xtc_remove_order($oID, $_POST['restock']);

ersetze es mit:

//BOF new storno-function for orders by grafikmaker.de
//xtc_remove_order($oID, $_POST['restock']);
xtc_storno_order($oID, $_POST['restock']);
//EOF new storno-function for orders bygrafikmaker.de

So, wenn man im Admin nun bei der Bestellung auf Löschen klickt, wird diese nicht gelöscht sondern nur der Status auf Storno gestellt. Ebenso wird (wenn so im Admin eingestellt) der Lagerbestand wieder aktualisiert und auch die Umsatzstatistik sollte somit passen.

Ich würde mich über ausreichende Tests und Feedback von euch freuen.

Viel Spaß damit und weiterhin gute Geschäfte!

 

  • Dieser Beitrag wurde geschrieben von Thomas am 20. Apr 2011

20 Kommentare zu “XTCommerce – Bestellung stornieren”

  1. Torsten Krüger schreibt:

    Tolles Tutorial! nur ein kleiner Fehler ist mir ins Auge gesprungen:
    admin/includes/functions/generell.php

    Ist natürlich die general.php *g*

    Kannst du gerne bei uns noch ins Forum schreiben mit Quellangabe deines Blogs.

    Grüße

    Torsten

  2. Thomas schreibt:

    Hallo Torsten, danke für die Info. Hab das gleich mal im Beitrag geändert.
    Werde das die Tage noch ins Forum bringen.

    danke und Grüße

  3. Sebastian schreibt:

    Hast du noch weitere Informationen darueber ?

  4. Thomas schreibt:

    Hallo Sebastian,
    was für Informationen suchst du denn genau?

  5. GraueEminenz schreibt:

    Hallo,
    ich habe die Änderungen bei mir eingebaut. Soweit, so gut.
    Aber wenn ich auf ‘löschen’ drücke passiert nichts.
    Ich kann selbst umstellen auf ‘Storniert’.
    Aber der Artikel lässt sich nicht mehr vollkommen löschen?
    Ist das beabsichtigt?
    Danke, ansonsten finde ich den Ansatz sehr gut.
    Tschüß
    GE

  6. Thomas schreibt:

    Wenn alles korrekt eingebaut wurde, dann sollte beim KLICK auf löschen der Status der Bestellung auf “storniert” wechseln.
    Komplett aus dem System wird in dem Fall die Bestellung nicht mehr gelöscht. Genau dies ist auch beabsichtigt, da man somit einen lückenlosen Nachweis der Bestellungen hat und eine fortlaufende Bestellnummer ohne Lücken existiert. Wie oben im Artikel beschrieben, ist dies alles beim Thema Buchhaltung besonders wichtig.

    Aber für Ideen bin ich immer offen ;)

  7. Klaus schreibt:

    Hallo Thomas
    ich hab das Storno Tutorial eingebaut, aber die Artikel werden dem Lager nicht gutgeschrieben?

  8. Thomas schreibt:

    Hallo Klaus, hier sollte dann nochmal der Einbau Schritt für Schritt kontrolliert werden. Wechselt denn der Status der Bestellung auf “stoniert”?

  9. Klaus schreibt:

    Hallo Thomas,
    ja, der status wechselt auf storniert. Den code hab ich mit copy/paste eingefügt und die storno id auf 8 geändert.
    Kontrolliert hab ich den Code auch schon mehrmals. Geht aber immer noch nicht.

    Wenn ich die Bestellung storniere und der Status sich ändert, dann wird automatisch der Artikel dem Lagerbestand hinzugerechnet?
    Gruß
    Klaus

  10. Thomas schreibt:

    Hallo Klaus, genau so funktioniert das. Du mußt nur beachten, daß du vorher den Haken setzt im Feld “Artikel dem Lagerbestand gutschreiben”!

  11. Klaus schreibt:

    vielen dank Thomas, ich hab nur die Bestellung gelöscht. Dachte das geht dann von allein.
    Gruß
    Klaus
    PS: tolles Tutorial

  12. Thomas schreibt:

    Hallo Klaus, danke für die Rückmeldung und die netten Worte.
    Viel Erfolg und Gute Geschäfte.

  13. Ricardo schreibt:

    Super – genau was ich gesucht hab!
    Danke!!
    einfach und gut beschrieben – ich liebe einfach Sachcen, die soo gut funktionieren .

    Gruß
    Ricardo

  14. Thomas schreibt:

    Hallo Ricardo, danke für die lobenden Worte ;)

  15. Tobias schreibt:

    Super!

    Vielen Dank hat auch bei 3.04 SP2.1 wunderbar funktionert.

    Gruß
    Tobias

  16. Thomas schreibt:

    Hallo Tobias, danke für das Feedback. Viel Erfolg mit deinem Projekt.

  17. Christian schreibt:

    Ist es auch möglich das der Kunde über die Änderrung, also die Stornierrung informiert wird. So wie wenn ich den Status ändere und dann ein der Kunde eine Email bekommt das von in Bearbeitung auf Storniert gestellt wurde?

  18. Thomas schreibt:

    Hallo Christian,

    man könnte diese Funktion auch individuell erweitern. Dazu müßten zum einen die Mailfunktion hinzu gefügt werden um den Kunden zu informieren und zum anderen muß eine extra Templatevorlage für diese Stornomail erstellt werden.

    Je nachdem was du alles in der Mail an Infos zur Verfügung stellen willst, muß man nun schauen das all diese Infos in der Stornofunktion auch gesammelt werden um dem Kunden zu senden.

  19. Mirko schreibt:

    Hi

    gibt es auch die Möglichkeit – die Funktion als zusätzlichen Button zu integrieren! Also Storno neben Löschen?

    grüße

  20. Thomas schreibt:

    Hallo Mirko, klar könnte man dies auch dahin erweitern, jedoch ist der eigentliche Sinn der Stornofunktion damit nicht mehr gegeben.

Schreibe einen Kommentar


Copyright © 2012 Thomas Wernecke - Grafiker // Webdesigner // Programmierer // made width Wordpress