Seite 1 von 1

Bei Versankostenfreie Lieferung die Versandart auswählen

Verfasst: 07.08.2013, 13:07
von wolfschw
Hallo Ralf,

gibt es die Möglichkeit bei Versandkostenfreie Lieferung, das der Kunden die Versandart auswählen kann?

jetzt wird ja immer die günstigste Versandart ausgewählt.

gruß

Wolfgang

Verfasst: 07.08.2013, 13:50
von r23
Hallo,

Die Logik aus dem Versandkostenfreien Modul müsste in die Versandmodule übernommen werden..

Code: Alles auswählen

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

        if ( ($pass == true) && ( ($oOrder->info['total'] - $oOrder->info['shipping_cost']) >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
          $oOrder->info['shipping_method'] = $this->title;
          $oOrder->info['total'] -= $oOrder->info['shipping_cost'];
          $oOrder->info['shipping_cost'] = 0;
        }
      }
und eben angepasst...

d.h. im Modul für item... zum Beispiel

Code: Alles auswählen

      $this->quotes = array('id' => $this->code,
                            'module' => $aLang['module_shipping_item_text_title'],
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $aLang['module_shipping_item_text_way'],
                                                     'cost' => (MODULE_SHIPPING_ITEM_COST * $total_count) + MODULE_SHIPPING_ITEM_HANDLING)));
müsste man 'cost' => (MODULE_SHIPPING_ITEM_COST * $total_count) + MODULE_SHIPPING_ITEM_HANDLING) ändern...

ich würde evtl. den Inhalt von 'title' => $aLang['module_shipping_item_text_way], noch ändnern in "Versandkostenfrei per'

Beste Grüße

Ralf

Verfasst: 07.08.2013, 18:59
von wolfschw
Hallo Ralf,

in welcher Datei muß wo was geändert werden?

gruß

Wolfgang

Verfasst: 08.08.2013, 03:17
von r23
Hallo,

in

~/shop/inlcudes/pages/checkout_shipping.php

prüft der Shop mit

Code: Alles auswählen

  if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
    switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
      case 'national':
        if ($oOrder->delivery['country_id] == STORE_COUNTRY) $pass = true; break;

      case 'international':
        if ($oOrder->delivery['country_id] != STORE_COUNTRY) $pass = true; break;

      case 'both':
        $pass = true; break;

      default:
        $pass = false; break;
    }

    $free_shipping = false;
    if ( ($pass == true) && ($oOrder->info['subtotal] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
      $free_shipping = true;

      require 'includes/languages/' . $sLanguage . '/modules/order_total/ot_shipping.php';
    }
  } else {
    $free_shipping = false;
  }
ob Versandkostenfrei geliefert werden soll. D.h. aus den o.g. Zeilen wird

Code: Alles auswählen

$free_shipping = false;
Damit der Shop nun Versandkostenfrei leifern kann, muss man die Versandarten bearbeiten. Die Scripte liegen in dem Verzeichnis
~/shop/includes/modules/shipping.php

zum Beispiel itm.php

Dieser Bereich

Code: Alles auswählen

      $this->quotes = array('id' => $this->code,
                            'module' => $aLang['module_shipping_item_text_title],
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $aLang['module_shipping_item_text_way],
                                                     'cost' => (MODULE_SHIPPING_ITEM_COST * $total_count) + MODULE_SHIPPING_ITEM_HANDLING)));

ist für die Datestellung und Berechnung der versandkosten verantwortlich.

man füt zuerst für cost und für title einen Sting ein.

Code: Alles auswählen

$cost = (MODULE_SHIPPING_ITEM_COST * $total_count) + MODULE_SHIPPING_ITEM_HANDLING;
$title = $aLang['module_shipping_item_text_way];
      $this->quotes = array('id' => $this->code,
                            'module' => $aLang['module_shipping_item_text_title],
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $title,
                                                     'cost' => $cost));
für die Versandkostenfreie Überprüfung erweitern wir die o.g. Zeilen um

Code: Alles auswählen

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

        if ( ($pass == true) && ( $oOrder->info['total] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
          $title = 'Versandkostenfrei mit' . $aLang['module_shipping_item_text_way];
          $cost = 0;
        } else {
$cost = (MODULE_SHIPPING_ITEM_COST * $total_count) + MODULE_SHIPPING_ITEM_HANDLING;
$title = $aLang['module_shipping_item_text_way];
       }
    }


      $this->quotes = array('id' => $this->code,
                            'module' => $aLang['module_shipping_item_text_title],
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $title,
                                                     'cost' => $cost));
Hoffe die Antwort hilft weiter.

ralf

Verfasst: 09.08.2013, 07:57
von wolfschw
Hallo Ralf,

könntest du bitte die Änderung ab den 02.09.2013 vornehmen ?

mir ist das grad zu viel.

Rechnung dann wie gehabt.

Gruß

Wolfgang

Verfasst: 09.08.2013, 14:49
von r23
Hallo,

danke für den Auftrag! Baue ich dir am 02.09 ein.

Beste Grüße

Ralf

Verfasst: 01.09.2013, 12:03
von r23
Hallo,

Modul ist fertig :)
:thumbsup:

und baue ich euch am Montag zwischen 11 und 15 uhr in den Shop ein.

Beste Grüße

Ralf