v2.0.x Systematischer Fehler bei Versandart "Versandkostenfrei"?

Thema wurde von Avenger, 3. März 2015 erstellt.

  1. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Wenn eine Bestellung die "Versandkostenfrei"-Bedingung erfüllt, wird immer die Versandart "Versandkostenfrei" erzwungen....

    Obwohl es ja durch aus noch möglich sein muss, z.B. die "Selbstabholung" zu definieren:

    Beispiel aus "CartShippingCostsControl.inc.php":

    Wenn der "Versandkostenfrei"-Wert erreicht ist, dann wird die Versandart "Versandkostenfrei" erzwungen...

    PHP:
            if ($this->v_shipping_class->is_shipping_free($t_selected_country))
            {
                
    $coo_lang_file_master->init_from_lang_file('lang/' $_SESSION['language'] . '/modules/order_total/ot_shipping.php');
                
    $t_modules_array['free' $this->v_module_method_separator 'free'] = FREE_SHIPPING_TITLE;
                
    $_SESSION['cart_shipping_module'] = 'free';
                
    $_SESSION['cart_shipping_method'] = 'free';
                return 
    $t_modules_array;
            }
    Erschwerend kommt hier m.E. hinzu, dass es das Versandmodul "free" gar nicht mehr gibt, das heißt jetzt "freeamount":

    Das Problem ist auch in 2.1 enthalten....
     
  2. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Weiteres Beispiel:

    in ot_shipping.php

    PHP:
      function process() {
        global 
    $order$xtPrice;

        if (
    MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {
          switch (
    MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
            case 
    'national':
              if (
    $order->delivery['country_id'] == STORE_COUNTRY$pass true; break;
            case 
    'international':
              if (
    $order->delivery['country_id'] != STORE_COUNTRY$pass true; break;
            case 
    'both':
              
    $pass true; break;
            default:
              
    $pass false; break;
          }

          
    $t_shipping_free_over = (double)MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER;
          if(
    $_SESSION['customers_status']['customers_status_show_price_tax'] == 0
            
    && (int)MODULE_ORDER_TOTAL_SHIPPING_TAX_CLASS 0)
          {
            
    $t_shipping_free_over $t_shipping_free_over / ($xtPrice->TAX[MODULE_ORDER_TOTAL_SHIPPING_TAX_CLASS] / 100);
          }
          if ( (
    $pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) >= $xtPrice->xtcFormat($t_shipping_free_over,false,0,true)) ) {
            
    $order->info['shipping_method'] = $this->title;
            
    $order->info['total'] -= $order->info['shipping_cost'];
            
    $order->info['shipping_cost'] = 0;
          }
        }
    Auch hier wird die Versandart "Versandkostenfrei" erzwungen.....
     
  3. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    Hallo,

    das sind zwei verschiedene Sachen. Wenn du unter Module -> Zusammenfassung -> Versandkosten eine Versandkostenfreigrenze aktivierst, führt das zu diesem Pseudo-Versandmodul „free“, dessen Verwendung dann auch erzwungen wird. Alternativ kann man unter Module -> Versandarten auch das Versandkostenfrei-Modul (freeamount) konfigurieren, das dem Kunden dann die Wahl zwischen Selbstabholung, versandkostenfreiem Standardversand und z.B. teurerem Premium-Versand lässt.

    It’s not a bug, it’s a feature.
     
  4. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    In 2.1 ist aber kein Shipping-Modul "free.php" mehr vorhanden????
     
  5. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    In 2.0 auch nicht....
     
  6. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    Richtig, „free“ ist nur eine Pseudo-Versandart. Das ist nur der symbolische Name für den über die Konfiguration von ot_shipping erzwungenen kostenfreien Versand.
     
  7. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Aufgrund dieses Codes wird aber in der Versandkostenermittlung im Warenkorb keine Auswahlmöglichkeit mehr angeboten, es wird zwangsweise "Versandkostenfrei" gewählt.

    PHP:
            if ($this->v_shipping_class->is_shipping_free($t_selected_country))
            {
                
    $coo_lang_file_master->init_from_lang_file('lang/' .  $_SESSION['language'] . '/modules/order_total/ot_shipping.php');
                
    $t_modules_array['free' $this->v_module_method_separator 'free'] = FREE_SHIPPING_TITLE;
                
    $_SESSION['cart_shipping_module'] = 'free';
                
    $_SESSION['cart_shipping_method'] = 'free';
                return 
    $t_modules_array;
            }
     
  8. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    is_shipping_free() wird aber nur true, wenn die Versandkostenfreigrenze in ot_shipping aktiv ist. Das darf sie aber gerade nicht sein, wenn man die Wahlmöglichkeit über freeamount bieten will.
     
  9. jim-panse

    jim-panse Mitglied

    Registriert seit:
    30. Juni 2014
    Beiträge:
    12
    Danke erhalten:
    0
    Danke vergeben:
    3
    Wo finde ich denn dieses "ot_shipping"? Im Gambio Admin-Bereich?
    Bei uns im Shop wird ebenfalls ab 10 Euro Bestellwert über das Modul "freeamount" der kostenfreie Versand erzwungen. Das soll aber nur für den Versand per DPD gelten. Wir müssen den Paketversand an Packstationen davon ausnehmen, ist das möglich? Und natürlich wäre es toll wenn, trotz Versandkostenfreiheit, der Kunde die Möglichkeit der Selbstabholung auswählen könnte.
     
  10. jim-panse

    jim-panse Mitglied

    Registriert seit:
    30. Juni 2014
    Beiträge:
    12
    Danke erhalten:
    0
    Danke vergeben:
    3
    Sorry, " Module -> Zusammenfassung -> Versandkosten" hatte ich überlesen. Das bringt uns aber nicht weiter. Die Abfrage der Versandkostenfreigrenze darf ja erst NACH der Auswahl der Versandart erfolgen. Ansonsten hat der Kunde weder die Möglichkeit der Selbstabholung noch des Paketversands an Packstationen. Muss das programmiert werden? Bin ich tatsächlich der erste mit diesem Problem?