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

Дубль "Модуль расчёта доставки по тарифам почты России."


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

Установил "Модуль расчёта доставки по тарифам почты России."

Все вроде работает.

Ну кроме того, что доставка этим способом доступна и по Москве, хотя Москва отсутствует во всех Зонах.  Ну да ладно. С этим я смерился.

Но тут стал делать копию этого модуля, чтобы сделать ещё и авиа-доставку.

Всё сделал как в статье http://vamshop.ru/support/modules/smartfaq/faq.php?faqid=42

Что не раз уже делал ...

Залил на сайт..

В админки он виден. Нажимаю Установить. Вылетает белый лист с DB_ERR_MSG.

В файле mysql_db_error.log

09/02/2008 22:02:07 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 | insert into zones_to_geo_zones (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values | /admin/modules.php?set=shipping&module=emsavia&action=install

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

А мокажи переделанный файл /includes/modules/shipping/emsavia.php

<?php

/* -----------------------------------------------------------------------------------------

   $Id: emsavia.php,v 1 2005/10/04 08:41:38 $

   XT-Commerce - community made shopping

   http://www.xt-commerce.com

   Copyright © 2003 XT-Commerce

   -----------------------------------------------------------------------------------------

   based on:

   © 2000-2001 The Exchange Project  (earlier name of osCommerce)

   © 2002-2003 osCommerce zones.php from which you can get more info on how it works and its limitations. www.oscommerce.com

   emspost12.zip by Aleg http://www.uralhobby.com/'>http://www.uralhobby.com/

   Copyright © Aleg Studio http://www.uralhobby.com

   emspost_zones.zip by A. Berezin

   Copyright © A. Berezin

   ported to XTC by Dmitriy Godunov http://godunovstudio.ru

   Copyright © Dmitriy Godunov Studio http://godunovstudio.ru

   Released under the GNU General Public License

   -----------------------------------------------------------------------------------------

*/

define('MODULE_SHIPPING_EMSAVIA_ZONES', 6); // Customize This Setting For The Number Of Zones Needed

class emsavia {

var $code, $title, $description, $enabled, $num_domestic_zones, $num_inter_zones, $num_zones;

// class constructor

function emsavia() {

$this->code = 'emsavia';

$this->title = MODULE_SHIPPING_EMSAVIA_TEXT_TITLE;

$this->description = MODULE_SHIPPING_EMSAVIA_TEXT_DESCRIPTION;

$this->sort_order = MODULE_SHIPPING_EMSAVIA_SORT_ORDER;

$this->icon = DIR_WS_ICONS . 'ruspoch.gif';

$this->tax_class = MODULE_SHIPPING_EMSAVIA_TAX_CLASS;

$this->enabled = ((MODULE_SHIPPING_EMSAVIA_STATUS == 'True') ? true : false);

}

// class methods

function quote($method = '') {

global $order, $currencies, $shipping_weight, $shipping_num_boxes;

//var_dump($shipping_weight);echo '<br>';

if (!vam_not_null($order->delivery['zone_id']))

$order->delivery['zone_id'] = vam_get_zone_by_postcode($order->delivery['postcode']);

$zones_array = array();

for ($i=1; $i<=MODULE_SHIPPING_EMSAVIA_ZONES; $i++) {

$zones_array[] = constant('MODULE_SHIPPING_EMSAVIA_ZONES_' . $i);

$zones_cost[constant('MODULE_SHIPPING_EMSAVIA_ZONES_' . $i)] = constant('MODULE_SHIPPING_EMSAVIA_COST_' . $i);

$zones_hand[constant('MODULE_SHIPPING_EMSAVIA_ZONES_' . $i)] = constant('MODULE_SHIPPING_EMSAVIA_HANDLING_' . $i);

}

$geo_zones_query = vam_db_query("select zone_country_id, zone_id, geo_zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id in ('" . implode("', '", $zones_array) . "') and zone_country_id=" . $order->delivery['country_id] . "' and (zone_id='" . $order->delivery['zone_id'] . "' or zone_id=0')");

$geo_zones = vam_db_fetch_array($geo_zones_query);

if (vam_db_num_rows($geo_zones_query) != 1) {

$this->quotes['error] = MODULE_SHIPPING_EMSAVIA_INVALID_ZONE;

} else {

$cost_table = split("[:,]" , str_replace(" ", '', $zones_cost[$geo_zones['geo_zone_id']]));

$shipping = 0;

for ($i = 0, $n = sizeof($cost_table); $i < $n; $i += 2) {

if ($shipping_weight <= $cost_table[$i]) {

$shipping = $cost_table[$i+1] * $shipping_num_boxes;

# $shipping = $shipping/$currencies->get_value(MODULE_SHIPPING_EMSAVIA_CURRENCY);

# $shipping = $shipping/$currencies->MODULE_SHIPPING_EMSAVIA_CURRENCY;

$shipping_method = MODULE_SHIPPING_EMSAVIA_TEXT_WAY . ' ' . $shipping_weight . MODULE_SHIPPING_EMSAVIA_TEXT_UNITS . ($shipping_num_boxes > 1 ? ' x ' . $shipping_num_boxes : "");

break;

}

}

if ($shipping == 0) {

$this->quotes['error'] = MODULE_SHIPPING_EMSAVIA_UNDEFINED_RATE;

} else {

$shipping_cost = $shipping + $zones_hand[$geo_zones['geo_zone_id']];

}

}

$this->quotes = array('id' => $this->code,

'module' => MODULE_SHIPPING_EMSAVIA_TEXT_TITLE,

'methods' => array(array('id' => $this->code,

'title' => $shipping_method,

'cost' => $shipping_cost)));

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() {

if (!isset($this->_check)) {

$check_query = vam_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_EMSAVIA_STATUS'");

$this->_check = vam_db_num_rows($check_query);

}

return $this->_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_EMSAVIA_STATUS', 'True', '6', '0', '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_EMSAVIA_ALLOWED', '', '6', '0', 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_EMSAVIA_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, date_added) values ('MODULE_SHIPPING_EMSAVIA_SORT_ORDER', '31', '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_EMSAVIA_CURRENCY', '" . DEFAULT_CURRENCY . "', '6', '0', 'vam_cfg_pull_down_currencies(', now())");

// http://www.russianpost.ru/resp_engine.asp?Path=RU/Home/EMS#m1

// внутренняя тарифная зона 0:

vam_db_query("insert into " . TABLE_GEO_ZONES . " (geo_zone_id, geo_zone_name, geo_zone_description, last_modified, date_added) values ('', 'Зона 0 ', 'Зона 0 ', NULL, NOW())");

$geo_zone_id = vam_db_insert_id();

vam_db_query("insert into " . TABLE_ZONES_TO_GEO_ZONES . " (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values");

            $ems_desc[1] = 'Зона 0 ';

$ems_zones[1] = $geo_zone_id;

$ems_hands[1] = 0;

$ems_costs[1] = '100:450, 500:480, 1000:510, 1500:540, 2000:570, 3000:630, 4000:690, 5000:750, 6000:810, 7000:870, 8000:930, 9000:990, 10000:1050, 11000:1110, 12000:1170, 13000:1230, 14000:1290, 15000:1350, 16000:1410, 17000:1470, 18000:1530, 19000:1590, 20000:1650';

// внутренняя тарифная зона 1:

vam_db_query("insert into " . TABLE_GEO_ZONES . " (geo_zone_id, geo_zone_name, geo_zone_description, last_modified, date_added) values ('', 'Зона 1', 'Зона 1', NULL, NOW())");

$geo_zone_id = vam_db_insert_id();

vam_db_query("insert into " . TABLE_ZONES_TO_GEO_ZONES . " (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values");

$ems_desc[2] = 'Зона 1';

$ems_zones[2] = $geo_zone_id;

$ems_hands[2] = 0;

$ems_costs[2] = '100:490, 500:530, 1000:570, 1500:610, 2000:650, 3000:730, 4000:810, 5000:890, 6000:970, 7000:1050, 8000:1130, 9000:1210, 10000:1290, 11000:1370, 12000:1450, 13000:1530, 14000:1610, 15000:1690, 16000:1770, 17000:1850, 18000:1930, 19000:2010, 20000:2090';

// внутренняя тарифная зона 2:

vam_db_query("insert into " . TABLE_GEO_ZONES . " (geo_zone_id, geo_zone_name, geo_zone_description, last_modified, date_added) values ('', 'Зона 2', 'Зона 2', NULL, NOW())");

$geo_zone_id = vam_db_insert_id();

vam_db_query("insert into " . TABLE_ZONES_TO_GEO_ZONES . " (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values");

$ems_desc[3] = 'Зона 2';

$ems_zones[3] = $geo_zone_id;

$ems_hands[3] = 0;

$ems_costs[3] = '100:530, 500:580, 1000:630, 1500:680, 2000:730, 3000:830, 4000:930, 5000:1030, 6000:1130, 7000:1230, 8000:1330, 9000:1430, 10000:1540, 11000:1630, 12000:1730, 13000:1830, 14000:1930, 15000:2030, 16000:2130, 17000:2230, 18000:2330, 19000:2430, 20000:2530';

// внутренняя тарифная зона 3:

vam_db_query("insert into " . TABLE_GEO_ZONES . " (geo_zone_id, geo_zone_name, geo_zone_description, last_modified, date_added) values ('', 'Зона 3', 'Зона 3', NULL, NOW())");

$geo_zone_id = vam_db_insert_id();

vam_db_query("insert into " . TABLE_ZONES_TO_GEO_ZONES . " (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values");

$ems_desc[4] = 'Зона 3';

$ems_zones[4] = $geo_zone_id;

$ems_hands[4] = 0;

$ems_costs[4] = '100:570, 500:630, 1000:690, 1500:750, 2000:810, 3000:930, 4000:1050, 5000:1170, 6000:1290, 7000:1410, 8000:1530, 9000:1650, 10000:1770, 11000:1890, 12000:2010, 13000:2130, 14000:2250, 15000:2370, 16000:2490, 17000:2610, 18000:2730, 19000:2850, 20000:2970';

// внутренняя тарифная зона 4:

vam_db_query("insert into " . TABLE_GEO_ZONES . " (geo_zone_id, geo_zone_name, geo_zone_description, last_modified, date_added) values ('', 'Зона 4', 'Зона 4', NULL, NOW())");

$geo_zone_id = vam_db_insert_id();

vam_db_query("insert into " . TABLE_ZONES_TO_GEO_ZONES . " (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values");

$ems_desc[5] = 'Зона 4';

$ems_zones[5] = $geo_zone_id;

$ems_hands[5] = 0;

$ems_costs[5] = '100:630, 500:700, 1000:770, 1500:840, 2000:910, 3000:1050, 4000:1190, 5000:1330, 6000:1470, 7000:1610, 8000:1750, 9000:1890, 10000:2030, 11000:2170, 12000:2310, 13000:2450, 14000:2590, 15000:2730, 16000:2870, 17000:3010, 18000:3150, 19000:3290, 20000:3430';

// внутренняя тарифная зона 5:

vam_db_query("insert into " . TABLE_GEO_ZONES . " (geo_zone_id, geo_zone_name, geo_zone_description, last_modified, date_added) values ('', 'Зона 5', 'Зона 5', NULL, NOW())");

$geo_zone_id = vam_db_insert_id();

vam_db_query("insert into " . TABLE_ZONES_TO_GEO_ZONES . " (association_id, zone_country_id, zone_id, geo_zone_id, date_added) values");

$ems_desc[6] = 'Зона 5';

$ems_zones[6] = $geo_zone_id;

$ems_hands[6] = 0;

$ems_costs[6] = '100:1115, 500:1255, 1000:1530, 1500:1755, 2000:1950, 3000:2145, 4000:2335, 5000:2525, 6000:2715, 7000:2905, 8000:3095, 9000:3285, 10000:3475, 11000:3665, 12000:3855, 13000:4045, 14000:4235, 15000:4425, 16000:4615, 17000:4805, 18000:4995, 19000:5185, 20000:5375';

for ($i = 1; $i <= MODULE_SHIPPING_EMSAVIA_ZONES; $i++) {

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_EMSAVIA_ZONES_" . $i ."', '" . $ems_zones[$i] . "', '6', '0', 'vam_cfg_pull_down_zone_classes(', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_EMSAVIA_COST_" . $i ."', '" . $ems_costs[$i]  ." ', '6', '0', 'vam_cfg_textarea_in(', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_EMSAVIA_HANDLING_" . $i."', '". $ems_hands[$i] ." ', '6', '0', now())");

}

}

function remove() {

for ($i=1; $i<=MODULE_SHIPPING_EMSAVIA_ZONES; $i++) {

vam_db_query("delete from " . TABLE_GEO_ZONES . " where geo_zone_id=" . constant('MODULE_SHIPPING_EMSAVIA_ZONES_' . $i) . "'");

vam_db_query("delete from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id='" . constant('MODULE_SHIPPING_EMSAVIA_ZONES_' . $i) . "'");

}

vam_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

}

function keys() {

$keys = array('MODULE_SHIPPING_EMSAVIA_STATUS', 'MODULE_SHIPPING_EMSAVIA_ALLOWED', 'MODULE_SHIPPING_EMSAVIA_TAX_CLASS', 'MODULE_SHIPPING_EMSAVIA_SORT_ORDER'/*, 'MODULE_SHIPPING_EMSAVIA_CURRENCY'*/);

for ($i=1; $i<=MODULE_SHIPPING_EMSAVIA_ZONES; $i++) {

$keys[] = 'MODULE_SHIPPING_EMSAVIA_ZONES_' . $i;

$keys[] = 'MODULE_SHIPPING_EMSAVIA_COST_' . $i;

$keys[] = 'MODULE_SHIPPING_EMSAVIA_HANDLING_' . $i;

}

return $keys;

}

}

/*if (!function_exists('vam_cfg_pull_down_currencies')){

function vam_cfg_pull_down_currencies($currencies_id, $key = '') {

$name = (($key) ? 'configuration[' . $key . ]' : 'configuration_value');

$currencies_query = vam_db_query("select code from " . TABLE_CURRENCIES);

$currencies_array = array();

while ($currencies = vam_db_fetch_array($currencies_query)) {

$currencies_array[] = array('id' => $currencies['code'],

'text' => $currencies['code']);

}

return vam_draw_pull_down_menu($name, $currencies_array, $currencies_id);

}

}

*/

if (!function_exists('vam_cfg_textarea_in')){

function vam_cfg_textarea_in($text, $key = '') {

$name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value');

return vam_draw_textarea_field($name, false, 35, 5, $text);

}

}

?>

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

А можешь именно прикрепил файл, так можно просто не так что-то сохранить.

и вопрос, а ты когда файл правил точно его в utf8 сохранял?

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

Вот попробуй файл /includes/modules/shipping/emsavia.php

Сделал его из emspostshipping или как там он.

emsavia.zip

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

А у меня нормально выглядит.

Вот смотри.

Ничего не делал, просто сначала установил обычный ems, т.е. переписал файлы, загрузил три sql файл, затем emsavia в админке установил.

post-1-1304838271,8186_thumb.png

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

Трабл решён. Просто после установки первого модуля, переименовал зоны, как мне удобно и как нужно.  Поэтому и вылезала эта фигня. Снова установив зоны, какие были изначально после установки - всё заработало. Спасибо большое за помощь.

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