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: Kopieren eines Versandmoduls

    scroll

    • Fördermitglied
    • Beiträge: 51
    Kopieren eines Versandmoduls
    am: 15. Juli 2010, 17:27:02
    Hallo,
    habe das Versandmodul table nach dieser Anleitung kopiert: Tutorial: Kopieren eines Versandmoduls
    Ich bin im festen Glauben dabei keine Fehler gemacht zu haben... :-(

    Hintergrund: Ich möchte es einmal nur für den Versand in Deutschland nutzen (Versandkostenfrei ab 20,- EUR) und einmal fürs Ausland (Versandkostenfrei ab 120,- EUR).
    Shopversion 1.04

    Hier der ersetze Code der table.php:

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: ausland.php 1002 2005-07-10 16:11:37Z mz $  

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(ausland.php,v 1.27 2003/02/05); www.oscommerce.com
       (c) 2003      nextcommerce (ausland.php,v 1.8 2003/08/24); www.nextcommerce.org

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


      class ausland {
        var $code, $title, $description, $icon, $enabled;

        function ausland() {
          global $order;

          $this->code = 'ausland';
          $this->title = MODULE_SHIPPING_AUSLAND_TEXT_TITLE;
          $this->description = MODULE_SHIPPING_AUSLAND_TEXT_DESCRIPTION;
          $this->sort_order = MODULE_SHIPPING_AUSLAND_SORT_ORDER;
          $this->icon = '';
          $this->tax_class = MODULE_SHIPPING_AUSLAND_TAX_CLASS;
          $this->enabled = ((MODULE_SHIPPING_AUSLAND_STATUS == 'True') ? true : false);

          if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_AUSLAND_ZONE> 0) ) {
            $check_flag = false;
            $check_query = xtc_db_query("select zone_id from " . AUSLAND_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_AUSLAND_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
            while ($check = xtc_db_fetch_array($check_query)) {
              if ($check['zone_id'] <1) {
                $check_flag = true;
                break;
              } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
                $check_flag = true;
                break;
              }
            }

            if ($check_flag == false) {
              $this->enabled = false;
            }

          }
        }

        function quote($method = '') {
          global $order, $shipping_weight, $shipping_num_boxes,$xtPrice;

          if (MODULE_SHIPPING_AUSLAND_MODE == 'price') {
            $order_total = $xtPrice->xtcRemoveCurr($_SESSION['cart']->show_total());
          } else {
            $order_total = $shipping_weight;
          }

          $ausland_cost = preg_split("/[:,]/" , MODULE_SHIPPING_AUSLAND_COST); // Hetfield - 2009-08-18 - replaced deprecated function split with preg_split to be ready for PHP>= 5.3
          $size = sizeof($ausland_cost);
          for ($i=0, $n=$size; $i<$n; $i+=2) {
            if ($order_total <= $ausland_cost[$i]) {
              $shipping = $ausland_cost[$i+1];
              break;
            }
          }

          if (MODULE_SHIPPING_AUSLAND_MODE == 'weight') {
            $shipping = $shipping * $shipping_num_boxes;
          }

          $this->quotes = array('id' => $this->code,
                                'module' => MODULE_SHIPPING_AUSLAND_TEXT_TITLE,
                                'methods' => array(array('id' => $this->code,
                                                         'title' => MODULE_SHIPPING_AUSLAND_TEXT_WAY,
                                                         'cost' => $shipping + MODULE_SHIPPING_AUSLAND_HANDLING)));

          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);

          return $this->quotes;
        }

        function check() {
          if (!isset($this->_check)) {
            $check_query = xtc_db_query("select configuration_value from " . AUSLAND_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_AUSLAND_STATUS'");
            $this->_check = xtc_db_num_rows($check_query);
          }
          return $this->_check;
        }

        function install() {
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_SHIPPING_AUSLAND_STATUS', 'True', '6', '0', 'xtc_cfg_select_option(array(\'True\', \'False\'), ', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_AUSLAND_ALLOWED', '', '6', '0', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_AUSLAND_COST', '25:8.50,50:5.50,10000:0.00', '6', '0', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_AUSLAND_MODE', 'weight', '6', '0', 'xtc_cfg_select_option(array(\'weight\', \'price\'), ', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_AUSLAND_HANDLING', '0', '6', '0', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_AUSLAND_TAX_CLASS', '0', '6', '0', 'xtc_get_tax_class_title', 'xtc_cfg_pull_down_tax_classes(', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_AUSLAND_ZONE', '0', '6', '0', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())");
          xtc_db_query("insert into " . AUSLAND_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_AUSLAND_SORT_ORDER', '0', '6', '0', now())");
        }

        function remove() {
          xtc_db_query("delete from " . AUSLAND_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
        }

        function keys() {
          return array('MODULE_SHIPPING_AUSLAND_STATUS', 'MODULE_SHIPPING_AUSLAND_COST', 'MODULE_SHIPPING_AUSLAND_MODE', 'MODULE_SHIPPING_AUSLAND_HANDLING','MODULE_SHIPPING_AUSLAND_ALLOWED', 'MODULE_SHIPPING_AUSLAND_TAX_CLASS', 'MODULE_SHIPPING_AUSLAND_ZONE', 'MODULE_SHIPPING_AUSLAND_SORT_ORDER');
        }
      }
    ?>

    Hier die Sprachdatei aus dem lang-Ordner:

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: table.php 899 2005-04-29 02:40:57Z hhgag $  

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(ausland.php,v 1.6 2003/02/16); www.oscommerce.com
       (c) 2003      nextcommerce (ausland.php,v 1.4 2003/08/13); www.nextcommerce.org

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    define('MODULE_SHIPPING_AUSLAND_TEXT_TITLE', 'Auslands-Versandkosten');
    define('MODULE_SHIPPING_AUSLAND_TEXT_DESCRIPTION', 'Auslands-Versandkosten');
    define('MODULE_SHIPPING_AUSLAND_TEXT_WAY', 'Bester Weg');
    define('MODULE_SHIPPING_AUSLAND_TEXT_WEIGHT', 'Gewicht');
    define('MODULE_SHIPPING_AUSLAND_TEXT_AMOUNT', 'Menge');

    define('MODULE_SHIPPING_AUSLAND_STATUS_TITLE' , 'Auslands-Versandkosten aktivieren');
    define('MODULE_SHIPPING_AUSLAND_STATUS_DESC' , 'Möchten Sie Auslands-Versandkosten anbieten?');
    define('MODULE_SHIPPING_AUSLAND_ALLOWED_TITLE' , 'Erlaubte Versandzonen');
    define('MODULE_SHIPPING_AUSLAND_ALLOWED_DESC' , 'Geben Sie <b>einzeln</b> die Zonen an, in welche ein Versand möglich sein soll. (z.B. AT,DE (lassen Sie dieses Feld leer, wenn Sie alle Zonen erlauben wollen))');
    define('MODULE_SHIPPING_AUSLAND_COST_TITLE' , 'Versandkosten');
    define('MODULE_SHIPPING_AUSLAND_COST_DESC' , 'Die Versandkosten basieren auf Gesamtkosten oder Gesamtgewicht der bestellten Waren. Beispiel: 25:5.50,50:8.50,etc.. Bis 25 werden 5.50 verrechnet, darüber bis 50 werden 8.50 verrechnet, etc');
    define('MODULE_SHIPPING_AUSLAND_MODE_TITLE' , 'Versandkosten Methode');
    define('MODULE_SHIPPING_AUSLAND_MODE_DESC' , 'Die Versandkosten basieren auf Gesamtkosten oder Gesamtgewicht der bestellten Waren.');
    define('MODULE_SHIPPING_AUSLAND_HANDLING_TITLE' , 'Handling Gebühr');
    define('MODULE_SHIPPING_AUSLAND_HANDLING_DESC' , 'Handling Gebühr für diese Versandmethode');
    define('MODULE_SHIPPING_AUSLAND_TAX_CLASS_TITLE' , 'Steuerklasse');
    define('MODULE_SHIPPING_AUSLAND_TAX_CLASS_DESC' , 'Folgende Steuerklasse an Versandkosten anwenden');
    define('MODULE_SHIPPING_AUSLAND_ZONE_TITLE' , 'Versandzone');
    define('MODULE_SHIPPING_AUSLAND_ZONE_DESC' , 'Wenn eine Zone ausgewählt ist, wird diese Versandmethode ausschließlich für diese Zone angewendet');
    define('MODULE_SHIPPING_AUSLAND_SORT_ORDER_TITLE' , 'Sortierreihenfolge');
    define('MODULE_SHIPPING_AUSLAND_SORT_ORDER_DESC' , 'Reihenfolge der Anzeige');
    ?>

    Folgende Fehlermeldung erhalte ich im Backend:

    1146 - Table 'usr_web229_2.AUSLAND_CONFIGURATION' doesn't exist

    select configuration_value from AUSLAND_CONFIGURATION where configuration_key = 'MODULE_SHIPPING_AUSLAND_STATUS'

    [XT SQL Error]

    Kann mir jemand sagen was ich verkehrt gemacht habe?

    Gruß Michael

    [EDIT Tomcraft 03.05.2018: Link korrigiert.]

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

    web28

    • modified Team
    • Beiträge: 9.404
    Kopieren eines Versandmoduls
    Antwort #1 am: 15. Juli 2010, 22:28:48
    Oh Mann, das ist ja wirklich ein unglückliches Beispiel mit der table.php

    AUSLAND_CONFIGURATION gibt es NICHT, das muss weiterhin TABLE_CONFIGURATION lauten.

    TABLE hat hier nichts mit dem Modul zu tun, das ist die Definition der Tabelle configuration.

    Das selbe gilt für AUSLAND_ZONES_TO_GEO_ZONES, auch das ist eine Tabellendefinition. Also auch hier wieder in TABLE_ZONES_TO_GEO_ZONES ändern.

    Bei dpd.php wäre Dir das nicht passiert

    Man kann bei solchen Dingen nicht alles per Suchen & Ersetzen erledigen, jeder Eintrag muss gecheckt werden.

    Gruss Web28

    doni

    • Frisch an Board
    • Beiträge: 84
    Kopieren eines Versandmoduls
    Antwort #2 am: 15. Juli 2010, 22:39:09
    Du musst die TABLE_CONFIGURATION lassen.
    Also NICHT "... configuration_value from " . AUSLAND_CONFIGURATION . " where conf...".
    Sondern "... configuration_value from " . TABLE_CONFIGURATION . " where conf...".

    Jedenfalls überall wo AUSLAND_CONFIGURATION steht durch TABLE_CONFIGURATION ersetzen.

    scroll

    • Fördermitglied
    • Beiträge: 51
    Kopieren eines Versandmoduls
    Antwort #3 am: 17. Juli 2010, 04:12:48
    Hallo,

    bin erst gerade dazu gekommen den Fehler zu korrigieren.
    Hatte es vorher tatsächlich auch schon mit der dpd.php probiert wo alles reibungslos funktionierte.
    Nun denn, jetzt läuft es!

    Gruß Michael

    4 Antworten
    4144 Aufrufe
    01. September 2010, 11:14:05 von Ironmyron
    10 Antworten
    6547 Aufrufe
    25. Juli 2011, 13:03:39 von DokuMan
    28 Antworten
    13353 Aufrufe
    10. Oktober 2009, 00:16:35 von zx6r
    1 Antworten
    2127 Aufrufe
    16. April 2013, 13:26:26 von Webi