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: Korrekte Anzeige der Versandkosten im Warenkorb bei Zonen per Kategorie

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Guten Morgen,

    ich habe das Modul "MODUL: Versandkosten im Warenkorb anzeigen mit Länderdropdown" eingebaut und versuche nun zu bewerkstelligen, dass bei zusätzlicher Installation des Moduls "MODUL: Versandkosten nach Zonen UND Kategorien" die Versandkosten bei einer nicht erlaubten Kategorie so angezeigt werden, wie es der Fall ist, wenn bei einem Versandmodul ein Land ausgewählt wird, in das nicht versendet wird.

    Zur Verdeutlichung habe ich Screenshots angehängt.

    Da ich keinen Schimmer habe, wo und wie das im Standardshop programmiert ist, bin ich ein wenig aufgeschmissen...  :-?
    Nimmt mich jemand an die Hand ?  :-D

    Viele Grüße
    Lionne


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

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Lionne,

    meine grundlegende Verständnisfrage ist:
    Was soll denn angezeigt werden, wenn ich eine Kategorie habe die nicht erlaubt ist?

    Viele Grüße

    Franky

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Moin Babysitter  ;-),

    Mein Minimumwunsch ist, daß nur der Produktpreis angezeigt wird (s. Screenshots in meinem vorigen Text).
    Im Idealfall wird zusätzlich ein Hinweistext angezeigt.  :-D

    Viele Grüße
    Lionne

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Lionne,

    würde aber im Umkehrschluß bedeuten, dass gar keine Versandkosten aufgelistet werden.
    Und dann würdest Du die Produkte ohne Versandkosten verkaufen? ;)
    Glaube ich nicht, dass dieses Deine Absicht ist oder?

    Viele Grüße

    Franky

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Hallo Franky,

    das ist in der Tat nicht meine Absicht.  :-)

    Ich habe zur Verdeutlichung mal ein 2. Versandmodul aktiviert und die Screenshots für nicht erlaubte Kategorie und nicht erlaubtes Land angehängt.

    Beide Module aktiv, aber für das Land biete ich Hermes nicht an:

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Beide Module aktiv, aber für diese Kategorie gilt Versandart SG-UPS nicht:

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Der Kunde soll im Warenkorb keinen Unterschied sehen.

    Aber mir ist beim Schreiben gerade aufgegangen, daß ein Hinweistext bei nicht erlaubter Kategorie Quatsch ist.  :datz:

    Viele Grüße
    Lionne

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Moin aus dem stűrmischen Hamburg,

    ich habe die letzten Tage ein wenig weiter geforscht.
    Ich denke, es muss ein entsprechender Code in die (zum Warenkorbmodul gehörende) "/includes/shipping_estimate.php".

    In der "zones.php" ist folgender Code:

    Code: PHP  [Auswählen]
      if (($is_zcategory))
            {
         $this->quotes = array('id' => $this->code,
                               'module' => MODULE_SHIPPING_ZONES_TEXT_TITLE,
                               'methods' => array(array('id' => $this->code,
                                                        'title' => $shipping_method,
                                                        'cost' => $shipping_cost)));
            }

         if ($this->tax_class > 0) {
           $this->quotes['tax'] = xtc_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
         }

         if (xtc_not_null($this->icon)) $this->quotes['icon'] = xtc_image($this->icon, $this->title);

         if ($error == true) $this->quotes['error'] = MODULE_SHIPPING_ZONES_INVALID_ZONE;

         return $this->quotes;
       }

    Könnte der Code teilweise helfen ?

    Viele Grüße
    Lionne

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Wie war das doch gleich mit dem Eichhörnchen ?

    Mit folgendem Code kriege ich es hin, daß ein entsprechender Text angezeigt wird:

    Code: PHP  [Auswählen]
    if ($is_zcategory = true)
    $smarty->assign('error' , MEIN_TEXT);

    Ich nehme es mal irritiert hin, daß ich den Wert "true" setzen muss, obwohl ich Kategorien ausschließe.
    Um sicherzustellen, daß ich keinen Gedankenfehler mache, habe ich nur 1 Versandmodul aktiviert und ein Produkt aus einer nicht erlaubten Kategorie in den Warenkorb gelegt.

    Irgendwo in diesem Code aus der "/includes/shipping_estimates.php" versteckt sich vermutlich eine Anweisung, das Modul bei nicht erlaubter Zone auszublenden.

    Code: PHP  [Auswählen]
    <?php
    // http://neunzehn83.de/blog/2011/03/09/xtc-land-dropdown-im-warenkorb/
    // http://www.modified-shop.org/forum/topic.php?id=9883

    require_once (DIR_WS_CLASSES.'order.php');
    require_once (DIR_FS_INC.'xtc_get_country_list.inc.php');

    $order = new order();
    $total_weight = $_SESSION['cart']->show_weight();
    $total_count = $_SESSION['cart']->count_contents();
    $selected = isset($_SESSION['customer_country_id']) ? $_SESSION['customer_country_id'] : STORE_COUNTRY;
    if (!isset($_SESSION['customer_id'])) {

        if (isset($_SESSION['country'])) {
            $selected = $_SESSION['country'];
         } else {
            $selected = STORE_COUNTRY;
        }
        $module_smarty->assign('SELECT_COUNTRY', xtc_get_country_list(array ('name' => 'country'), $selected, 'onchange="this.form.submit()"'));
    }

    if (!isset($order->delivery['country']['iso_code_2']) || $order->delivery['country']['iso_code_2'] == '') {
      unset($_SESSION['shipping']);
      $delivery_zone = xtc_db_fetch_array(xtc_db_query("SELECT countries_id, countries_iso_code_2, countries_name FROM ".TABLE_COUNTRIES." WHERE countries_id = ". $selected));
      $order->delivery['country']['iso_code_2'] = $delivery_zone['countries_iso_code_2'];
      $order->delivery['country']['title'] = $delivery_zone['countries_name'];
      $order->delivery['country']['id'] = $delivery_zone['countries_id'];
    }

    $_SESSION['delivery_zone'] = $order->delivery['country']['iso_code_2'];
    require (DIR_WS_CLASSES.'shipping.php');
    $shipping = new shipping;
    $quotes = $shipping->quote();

    $free_shipping = $free_shipping_freeamount = false;
    if (defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (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;
        }
        if (($pass == true) && ($order->info['total'] >= $xtPrice->xtcFormat(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER, false, 0, true))) {
            $free_shipping = true;
        }
    }
    $has_freeamount = false;
    foreach ($quotes as $quote) {
        if ($quote['id'] == 'freeamount') {
            $has_freeamount = true;
            if (isset($quote['methods'])) {
                $free_shipping_freeamount = true;
                break;
            }
        }
    }
    include (DIR_WS_LANGUAGES.$_SESSION['language'].'/modules/order_total/ot_shipping.php');

    $total = $_SESSION['cart']->show_total();

    $shipping_content = array ();
    if ($free_shipping == true) {
        $shipping_content[] = array(
            'NAME' => FREE_SHIPPING_TITLE,
            'VALUE' => $xtPrice->xtcFormat(0, true, 0, true)
        );
    } else if ($free_shipping_freeamount) {
        $shipping_content[] = array(
            'NAME' => $quote['module'] . '  - ' . $quote['methods'][0]['title'],
            'VALUE' => $xtPrice->xtcFormat(0, true, 0, true)
        );
    } else {
        if ($has_freeamount) {
            $module_smarty->assign('FREE_SHIPPING_INFO', sprintf(FREE_SHIPPING_DESCRIPTION, $xtPrice->xtcFormat(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER, true, 0, true)));
        }
        $i = 0;
        foreach ($quotes AS $quote) {
          if ($quote['id'] != 'freeamount') {
          $quote['methods'][0]['cost'] = $xtPrice->xtcCalculateCurr($quote['methods'][0]['cost']);
          $total += ((isset($quote['tax']) && $quote['tax'] > 0) ? $xtPrice->xtcAddTax($quote['methods'][0]['cost'],$quote['tax']) : (!empty($quote['methods'][0]['cost']) ? $quote['methods'][0]['cost'] : '0'));
          $shipping_content[$i] = array(
          //  'NAME' => $quote['module'] . ' - ' . $quote['methods'][0]['title'],  // Lionne
             'NAME' => $quote['module'] . ' ' . $quote['methods'][0]['title'],
                'VALUE' => $xtPrice->xtcFormat(((isset($quote['tax']) && $quote['tax'] > 0) ? $xtPrice->xtcAddTax($quote['methods'][0]['cost'],$quote['tax']) : (!empty($quote['methods'][0]['cost']) ? $quote['methods'][0]['cost'] : '0')), true)
                );
              $i++;
            }
        }
    }
    #unset($_SESSION['billto']);
    unset($_SESSION['delivery_zone']);
    $module_smarty->assign('shipping_content', $shipping_content);
    $module_smarty->assign('COUNTRY', $order->delivery['country']['title']);

    if (count($shipping_content) <= 1) {
        $module_smarty->assign('total', $xtPrice->xtcFormat($total, true));
    }
    //Lionne
    if (count($shipping_content) == 0) {
    $smarty->assign('error' , ERROR_MODULE_SHIPPING_ZONES_INVALID_ZONE);
    }
    //Lionne
    //EOF - GTB - show Shipping in cart

    if ($is_zcategory = true)
     $module_smarty->assign('SELECT_COUNTRY', xtc_get_country_list(array ('name' => 'country'), $selected, 'onchange="this.form.submit()"'));

     ?>

    Jetzt nur noch :lol: das Ganze auf Kategorie umschreiben...

    Viele Grüße
    Lionne

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Hello again,

    das Problem ist noch immer nicht gelöst. Ich probiere es immer wieder, komme aber nicht weiter.

    GTB und nkr kennen das Modul der Anzeige der Versandkosten in Warenkorb.
    Vielleicht kann einer der beiden zur Lösung beitragen.

    Viele Grüße
    Lionne

    Lionne

    • Mitglied
    • Beiträge: 189
    • Geschlecht:
    Hallo Community,

    Mich lässt dieses Problem nicht los..
    Ich wäre extrem dankbar, wenn jemand das Schweigen brechen und mir vielleicht zumindest Denkansätze geben könnte !

    Inzwischen habe ich auch das Versandkostenmodul UPS so modifiziert, dass Kategorien ausgeblendet werden können. Ich wollte wissen, ob das Problem evtl. nur mit der zones.php auftritt. Es tritt aber auch mit der ups.php auf.

    Im Anhang ist ein Screenshot, wie es aussieht, wenn für eine Kategorie nur 3 von 5 Modulen zugelassen sind.
    Eine der nicht erlaubten Versandarten im roten Kasten ist UPS Standard.
    Die Versandart UPS, die als 1. Position im Warenkorb auftaucht, ist eine unbenannte zones.php

    Alles, was nach "L-I-O-N-N-E" kommt ist eine Art Lesezeichen für mein Spiel "Was passiert, wenn ich..."
    Ohne diese Lesezeichen stünde da 0,00 € ohne Text.

    Viele Grüße
    Lionne
    0 Antworten
    2240 Aufrufe
    23. April 2013, 22:34:53 von olibert
    22 Antworten
    10803 Aufrufe
    23. Februar 2015, 07:05:07 von sl-chickery
               
    anything