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: Bug in Order-Total-Modul "Mindermengenzuschlag" ot_loworderfee.php + Bug-Fix

    ChristianRothe

    • Mitglied
    • Beiträge: 181
    Das Modul ot_loworderfee.php "Mindermengenzuschlag" besitzt einen Bug, wenn als Versandart die Selbstabholung eingestellt ist ("selfpickup").

    Der Betrag und die MwSt. für den Mindermengenzuschlag berechnet sich anhand der Landes-ID des Versanlandes $order->delivery['country_id']. Da bei Selbstabholung keine Versandadresse existiert, sind  $order->delivery['country_id'] und $order->delivery['zone_id'] immer null, was zur Auswahl des falschen Zuschlags und zur einer falschen Mehrwertsteuerberechnung führt.

    Folgende Änderungen im Code beheben das Problem:

    Aus Zeile 44 (in Shop-Version 2.0.6.0 rev 13500)

    Code: PHP  [Auswählen]
               case 'national':
                if ($order->delivery['country_id'] == STORE_COUNTRY) $pass = true;
                $low_order_fee_value_under = MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER;

    sollte am besten werden:

    Code: PHP  [Auswählen]
               case 'national':
                if ($order->delivery['country_id'] == STORE_COUNTRY || stripos($order->info['shipping_class'], 'selfpickup') !== false) $pass = true;
                $low_order_fee_value_under = MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER;

    Aus Zeile 53 (in Shop-Version 2.0.6.0 rev 13500)

    Code: PHP  [Auswählen]
              case 'both':
                if ($order->delivery['country_id'] == STORE_COUNTRY) {
                  $low_order_fee_value_under = MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER;
                  $low_order_fee_value = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE;
                } else {
                  $low_order_fee_value_under = MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER_INTERNATIONAL;
                  $low_order_fee_value = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE_INTERNATIONAL;
                }

    sollte am besten werden:

    Code: PHP  [Auswählen]
              case 'both':
                if ($order->delivery['country_id'] == STORE_COUNTRY || stripos($order->info['shipping_class'], 'selfpickup') !== false) {
                  $low_order_fee_value_under = MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER;
                  $low_order_fee_value = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE;
                } else {
                  $low_order_fee_value_under = MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER_INTERNATIONAL;
                  $low_order_fee_value = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE_INTERNATIONAL;
                }

    Die obigen Abprüfungen auf "selfpickup" sorgen dafür, dass immer die nationalen inländischen Mindermengenzuschläge verwendet werden.

    Entsprechend muss auch noch die Steuerberechnung angepasst werden. Hier muss die lokale Mehrwertsteuer für das Land des Shops (in dem ja abgeholt wird) verwendet werden. Dazu folgender Lösungsvorschlag:

    Nach den Zeilen 72 und 73

    Code: PHP  [Auswählen]
              $tax = xtc_get_tax_rate(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, $order->delivery['country']['id'], $order->delivery['zone_id']);
              $tax_description = xtc_get_tax_description(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, $order->delivery['country']['id'], $order->delivery['zone_id']);

    fügt man am besten noch ein:

    Code: PHP  [Auswählen]
                   if ( stripos($order->info['shipping_class'], 'selfpickup') !== false ) {
                      $tax = xtc_get_tax_rate(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, STORE_COUNTRY, STORE_ZONE);
                      $tax_description = xtc_get_tax_description(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, STORE_COUNTRY, STORE_ZONE);                                             
                   }

    [EDIT Tomcraft 31.07.2021: Shopversion korrigiert, siehe: FAQ: Wichtiger Hinweis bzgl. Angabe der Shopversion!]

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

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.195
    • Geschlecht:
    Bitte erstelle dafür ein Ticket.
    Alternativ kann das gerne auch "voodoopupp" machen, der dafür den "Moderator informieren" Link missbraucht hat, anstatt selber direkt ein Ticket dafür anzulegen. :-P

    Grüße

    Torsten

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.853
    • Geschlecht:
    Sorry, ich sitze gerade auf der Couch und schau Fussball. :D

    Und bevor es untergeht, hab ich's lieber gemeldet. ;)

    Grüße
    Dominik

    EDIT: Hab das Ticket erstellt.

    ChristianRothe

    • Mitglied
    • Beiträge: 181
    Bitte erstelle dafür ein Ticket.
    [...]

    Und das geht wie? Habe mit Eurem Ticketsystem bisher nix am Hut gehabt.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.195
    • Geschlecht:
    Das Ticket #2067 wurde bereits von "voodoopupp" erstellt. ;-)

    Grüße

    Torsten

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.221
    • Geschlecht:
    Ich kann das hier nur nicht nachstellen.

    Aktuelle Entwicklerversion

    Hast du im Modul Selfpickup auch die Adresse des Shops hinterlegt ?

    Gruss Gerhard

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.195
    • Geschlecht:
    Das Ticket #2067 geschlossen, da wir den Fehler nicht nachvollziehen können und die Rückmeldung von ChristianRothe bisher ausblieb.

    Grüße

    Torsten
    8 Antworten
    286 Aufrufe
    03. Februar 2024, 15:13:33 von Schranzi
    8 Antworten
    2368 Aufrufe
    04. Oktober 2018, 09:34:43 von swolfram [templatix]
    5 Antworten
    4000 Aufrufe
    14. Mai 2012, 19:18:05 von gisela-55
    0 Antworten
    806 Aufrufe
    07. November 2018, 06:51:08 von Shorty
               
    anything