Перейти к содержанию
Форум поддержки пользователей VamShop

Ошибка при клонировании модуля доставки


Рекомендуемые сообщения

Здравствуйте!
Мне нужно было клонировать модуль бесплатной доставки (freeamount). Переделывал модуль (deliv) Сделал все по инструкции из faq. Получилось с ошибками - невозможно ввести значение мин. суммы для бесплатной доставки (нет даже надписей над соответствующем полем в режиме редактирования). Т.е. значение ввести можно, но оно не сохраняется.
Несколько раз аккуратно и внимательно перезаписывал все данные из freeamount, менял все что нужно, но увы... Другие модули переделал - все ок.
Подскажите. пожалуйста, где ошибка. 

post-52046-0-91484500-1378453173_thumb.p


код из  /lang/russian/modules/shipping/flat.php:
 

<?php
/* -----------------------------------------------------------------------------------------
   $Id: deliv.php 1288 2007/02/07 13:24:46 VaM $
 
   VaM Shop - open source ecommerce solution
 
   Copyright © 2007 VaM Shop
   -----------------------------------------------------------------------------------------
   based on: 
   © 2000-2001 The Exchange Project  (earlier name of osCommerce)
   © 2002-2003 osCommerce( deliv.php,v 1.01 2002/01/24 03:25:00); www.oscommerce.com 
   © 2003 nextcommerce (deliv.php,v 1.4 2003/08/13); www.nextcommerce.org
   © 2004 xt:Commerce (deliv.php,v 1.4 2003/08/13); xt-commerce.com
 
   Released under the GNU General Public License 
   -----------------------------------------------------------------------------------------
   Third Party contributions:
   delivv2-p1         Autor: dwk
 
   Released under the GNU General Public License 
   ---------------------------------------------------------------------------------------*/
 
define('MODULE_SHIPPING_DELIV_TEXT_TITLE', 'Бесплатная доставка  по Мос. обл. (сумма заказа от 5000 руб.)');
define('MODULE_SHIPPING_DELIV_TEXT_DESCRIPTION', 'Бесплатная доставка  по Мос. обл. (сумма заказа от 5000 руб.)');
define('MODULE_SHIPPING_DELIV_TEXT_WAY', 'Бесплатная доставка для заказов свыше: %s');
define('MODULE_SHIPPING_DELIV_SORT_ORDER', 'Порядок сортировки');
 
define('MODULE_SHIPPING_DELIV_ALLOWED_TITLE' , 'Разрешённые страны');
define('MODULE_SHIPPING_DELIV_ALLOWED_DESC' , 'Укажите коды стран, для которых будет доступен данный модуль (например RU,DE (оставьте поле пустым, если хотите что б модуль был доступен покупателям из любых стран))');
define('MODULE_SHIPPING_DELIV_STATUS_TITLE' , 'Разрешить Бесплатная доставка  по Мос. обл. (сумма заказа от 5000 руб.)');
define('MODULE_SHIPPING_DELIV_STATUS_DESC' , 'Вы хотите разрешить модуль Бесплатная доставка  по Мос. обл. (сумма заказа от 5000 руб.)?');
define('MODULE_SHIPPING_DELIV_DISPLAY_TITLE' , 'Показывать уведомление о Бесплатная доставка  по Мос. обл. (сумма заказа от 5000 руб.)');
define('MODULE_SHIPPING_DELIV_DISPLAY_DESC' , 'Показывать текст уведомления о возможной бесплатной доставки заказа при достижении определённой суммы заказа?');
define('MODULE_SHIPPING_DELIV_AMOUNT_TITLE' , 'Минимальная сумма заказа');
define('MODULE_SHIPPING_DELIV_AMOUNT_DESC' , 'Минимальная сумма заказа для Бесплатная доставка  по Мос. обл. (сумма заказа от 5000 руб.).');
define('MODULE_SHIPPING_DELIV_TAX_CLASS_TITLE' , 'Налог');
define('MODULE_SHIPPING_DELIV_TAX_CLASS_DESC' , 'Использовать налог.');
define('MODULE_SHIPPING_DELIV_ZONE_TITLE' , 'Зона');
define('MODULE_SHIPPING_DELIV_ZONE_DESC' , 'Если выбрана зона, то данный модуль доставки будет виден только покупателям из выбранной зоны.');
define('MODULE_SHIPPING_DELIV_SORT_ORDER_TITLE' , 'Порядок сортировки');
define('MODULE_SHIPPING_DELIV_SORT_ORDER_DESC' , 'Порядок сортировки модуля.');
?>

код из /includes/modules/shipping/flat.php:

<?php
/* -----------------------------------------------------------------------------------------
   $Id: deliv.php 1306 2007-02-06 21:19:57 VaM $   
 
   VaM Shop - open source ecommerce solution
 
   Copyright © 2007 VaM Shop
   -----------------------------------------------------------------------------------------
   based on: 
   © 2000-2001 The Exchange Project  (earlier name of osCommerce)
   © 2002-2003 osCommerce(deliv.php,v 1.01 2002/01/24); www.oscommerce.com 
   © 2003 nextcommerce (deliv.php,v 1.12 2003/08/24); www.nextcommerce.org
   © 2004 xt:Commerce (deliv.php,v 1.12 2003/08/24); xt-commerce.com
 
   Released under the GNU General Public License 
   ---------------------------------------------------------------------------------------*/
 
 
  class deliv {
    var $code, $title, $description, $icon, $enabled;
 
 
    function deliv() {
      global $order;
 
      $this->code = 'deliv';
      $this->title = MODULE_SHIPPING_DELIV_TEXT_TITLE;
      $this->description = MODULE_SHIPPING_DELIV_TEXT_DESCRIPTION;
      $this->icon ='';   // change $this->icon =  DIR_WS_ICONS . 'shipping_ups.gif'; to some freeshipping icon
      $this->tax_class = MODULE_SHIPPING_DELIV_TAX_CLASS;
      $this->sort_order = MODULE_SHIPPING_DELIV_SORT_ORDER;
      $this->enabled = ((MODULE_SHIPPING_DELIV_STATUS == 'True') ? true : false);
 
      if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_DELIV_ZONE > 0) ) {
        $check_flag = false;
        $check_query = vam_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_DELIV_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
        while ($check = vam_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 $vamPrice;
 
 if (( $vamPrice->RemoveCurr($_SESSION['cart']->show_total()) < MODULE_SHIPPING_DELIV_AMOUNT ) && MODULE_SHIPPING_DELIV_DISPLAY == 'False')
 return;
 
      $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_DELIV_TEXT_TITLE);
 
      if ( $vamPrice->RemoveCurr($_SESSION['cart']->show_total()) < MODULE_SHIPPING_DELIV_AMOUNT )
        $this->quotes['error'] = sprintf(MODULE_SHIPPING_DELIV_TEXT_WAY,$vamPrice->Format(MODULE_SHIPPING_DELIV_AMOUNT,true,0,true));
      else
  $this->quotes['methods'] = array(array('id'    => $this->code,
                                               'title' => sprintf(MODULE_SHIPPING_DELIV_TEXT_WAY,$vamPrice->Format(MODULE_SHIPPING_DELIV_AMOUNT,true,0,true)),
                                               'cost'  => 0));
 
      if ($this->tax_class > 0) {
        $this->quotes['tax'] = vam_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
      }
      
      if (vam_not_null($this->icon)) $this->quotes['icon'] = vam_image($this->icon, $this->title);
 
      return $this->quotes;
    }
 
    function check() {
      $check = vam_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_DELIV_STATUS'");
      $check = vam_db_num_rows($check);
 
      return $check;
    }
 
    function install() {
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_DELIV_STATUS', 'True', '6', '7', 'vam_cfg_select_option(array(\'True\', \'False\'), ', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DELIV_ALLOWED', '', '6', '0', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_DELIV_DISPLAY', 'True', '6', '7', 'vam_cfg_select_option(array(\'True\', \'False\'), ', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DELIV_AMOUNT', '50.00', '6', '8', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_DELIV_TAX_CLASS', '0', '6', '0', 'vam_get_tax_class_title', 'vam_cfg_pull_down_tax_classes(', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_DELIV_ZONE', '0', '6', '0', 'vam_get_zone_class_title', 'vam_cfg_pull_down_zone_classes(', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DELIV_SORT_ORDER', '0', '6', '4', now())");
    }
 
    function remove() {
      vam_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }
 
    function keys() {
      return array('MODULE_SHIPPING_DELIV_STATUS','MODULE_SHIPPING_DELIV_ALLOWED', 'MODULE_SHIPPING_DELIV_DISPLAY', 'MODULE_SHIPPING_DELIV_AMOUNT','MODULE_SHIPPING_DELIV_TAX_CLASS','MODULE_SHIPPING_DELIV_ZONE','MODULE_SHIPPING_DELIV_SORT_ORDER');
    }
  }
?>

 

Ссылка на сообщение
Поделиться на другие сайты

А почему не используете какой-то из уже существующих модулей, что б не копаться в коде, просто переименовав его в /lang/russian/modules/shipping/

Ссылка на сообщение
Поделиться на другие сайты

А почему не используете какой-то из уже существующих модулей, что б не копаться в коде, просто переименовав его в /lang/russian/modules/shipping/

Модулей с бесплатной доставкой только один, а мне нужно три.

Ссылка на сообщение
Поделиться на другие сайты

Судя по коду, всё выглядит правильно, может у Вас в базе какой-то мусор.

 

Ради эксперимента, попробуйте в чистую версию VamShop переписать два своих новых deliv.php файла.

Ссылка на сообщение
Поделиться на другие сайты

Судя по коду, всё выглядит правильно, может у Вас в базе какой-то мусор.

 

Ради эксперимента, попробуйте в чистую версию VamShop переписать два своих новых deliv.php файла.

сделал клон freeamount из dp - все отлично. Так что теперь имею три нужных модуля. А с deliv"ом решил не заморачиваться, тогда.

Спасибо!

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...