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: Artikelanzahl dem Lager gutschreiben - passiert wo?

    Zaldoran

    • Fördermitglied
    • Beiträge: 417
    Moin,

    wenn ich im Admin eine Bestellung lösche, kann ich ja die Artikelanzahl wieder dem Lager gutschreiben lassen. Kann mir jemand sagen, in welcher PHP das abgehandelt wird?

    Vielen Dank!

    Zaldo

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

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Re: Artikelanzahl dem Lager gutschreiben - passiert wo?
    Antwort #1 am: 21. Juni 2012, 14:22:34
    Schau mal in der Datei admin/orders_edit.php

    Code: PHP  [Auswählen]
    // Löschen eines Artikels aus der Bestellung Anfang:
    if ($action == 'product_delete') {

      xtc_db_query("delete from ".TABLE_ORDERS_PRODUCTS_ATTRIBUTES." where orders_products_id = '".(int)($_POST['opID'])."'");
      xtc_db_query("delete from ".TABLE_ORDERS_PRODUCTS." where orders_id = '".(int)($_POST['oID'])."' and orders_products_id = '".(int)($_POST['opID'])."'");

      //BOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders
      xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_quantity = products_quantity + ".xtc_db_input($_POST['del_qty'])." WHERE products_id = " . (int)$_POST['del_pID']);
      //EOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders

      xtc_redirect(xtc_href_link(FILENAME_ORDERS_EDIT, 'edit_action=products&oID='.(int)$_POST['oID']));
    }
    // Löschen eines Artikels aus der Bestellung Ende:

    Zaldoran

    • Fördermitglied
    • Beiträge: 417
    Re: Artikelanzahl dem Lager gutschreiben - passiert wo?
    Antwort #2 am: 21. Juni 2012, 14:38:40
    Super, Danke!

    Zaldoran

    • Fördermitglied
    • Beiträge: 417
    Re: Artikelanzahl dem Lager gutschreiben - passiert wo?
    Antwort #3 am: 21. Juni 2012, 15:55:24
    Hmmm, das hat mich leider nur halb weitergebracht, da es anscheinend nur auf das löschen von Einzelartikeln aus einer Bestellung zutrifft, dort funktioniert meine Ergänzung aber schonmal:

    Code: PHP  [Auswählen]
            //BOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders
            xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_quantity = products_quantity + ".xtc_db_input($_POST['del_qty'])." WHERE products_id = " . (int)$_POST['del_pID']);
            //EOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders

            // BOF Zaldoran - 2012-06-19 - OOAK Items
            $products_query = xtc_db_query("
            select products_ooak
            from "
    .TABLE_PRODUCTS."
            WHERE products_id = "
    . (int)$_POST['del_pID']);
            $products_values = xtc_db_fetch_array($products_query);
            if ($products_values['products_ooak'] == 2) {
                    xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_ooak = '1' WHERE products_id = " . (int)$_POST['del_pID']);
            }
            // EOF Zaldoran - 2012-06-19 - OOAK Items
     

    Nun soll aber auch beim löschen einer gesamten Bestellung, beim gutbuchen des Lagerbestands für jeden Artikel geprüft werden ob "products_ooak=2" ist und ggfs. wieder auf "1" zurückgesetzt werden. Da bin ich aber einzig in der /admin/includes/functions/general.php fündig geworden, dort komme ich aber mit dem Query nicht zurecht.

    Code: PHP  [Auswählen]
      function xtc_remove_order($order_id, $restock = false) {
        if ($restock == 'on') {
          xtc_db_query("update ".TABLE_PRODUCTS." p
                        join "
    .TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
                        set p.products_quantity = p.products_quantity + o.products_quantity,
                            p.products_ordered = p.products_ordered - o.products_quantity
                        where o.orders_id = '"
    .xtc_db_input($order_id)."'");
     

    Nun bin ich in MySQL nicht so weit, und sitze nun schon ne weile über der join Anweisung im Referenzhandbuch, aber ich werd nicht so richtig daraus schlau. Ich bin mir noch nicht mal sicher ob das damit überhaupt funktioniert wie ich mir das vorstelle  :-?

    LG
    Zaldo

    Zaldoran

    • Fördermitglied
    • Beiträge: 417
    Re: Artikelanzahl dem Lager gutschreiben - passiert wo?
    Antwort #4 am: 21. Juni 2012, 16:45:38
    Habs schon. Wenn man nicht mehr weiter weiß, einfach mal 10 Minuten Blumen gießen gehen  :-D

    Code: PHP  [Auswählen]
        if ($restock == 'on') {
          xtc_db_query("update ".TABLE_PRODUCTS." p
                        join "
    .TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
                        set p.products_quantity = p.products_quantity + o.products_quantity,
                            p.products_ordered = p.products_ordered - o.products_quantity
                        where o.orders_id = '"
    .xtc_db_input($order_id)."'");

          xtc_db_query("update ".TABLE_PRODUCTS." p
                        join "
    .TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
                        set p.products_ooak = 1
                        where o.orders_id = '"
    .xtc_db_input($order_id)."' AND p.products_ooak = 2");


        }
     
    2 Antworten
    2678 Aufrufe
    07. April 2012, 19:12:51 von jumpM
    0 Antworten
    3113 Aufrufe
    09. Februar 2011, 12:19:49 von adaptershop
    5 Antworten
    2645 Aufrufe
    28. September 2014, 11:39:26 von mcm
    29 Antworten
    14958 Aufrufe
    25. Februar 2015, 12:12:33 von swolfram [templatix]