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

    Werbung / Banner buchen
    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
               
    anything