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

добавит в зону отдельный город


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

По умолчанию - никак.

Зоны только дле регионов.

Разве что брать что-то типа - City Tax Rates - http://addons.oscommerce.com/info/5427

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

Этот модуль, если я правильно помню, добавляет возможноть в настройках зон указывать города.

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

Как и ожидалось лезет ошибочка


<?php
/* -----------------------------------------------------------------------------------------
$Id: index.php 1321 2007-02-06 19:20:03 VaM $
VaM Shop - open source ecommerce solution
http://vamshop.ru
http://vamshop.com
Copyright (c) 2007 VaM Shop
-----------------------------------------------------------------------------------------
based on:
(c) 2000-2001 The Exchange Project (earlier name of osCommerce)
(c) 2002-2003 osCommerce(default.php,v 1.84 2003/05/07); www.oscommerce.com
(c) 2003 nextcommerce (default.php,v 1.13 2003/08/17); www.nextcommerce.org
(c) 2004 xt:Commerce (default.php,v 1.13 2003/08/17); xt-commerce.com
Released under the GNU General Public License
-----------------------------------------------------------------------------------------
Third Party contributions:
Enable_Disable_Categories 1.3 Autor: Mikel Williams | mikel@ladykatcostumes.com
Customers Status v3.x (c) 2002-2003 Copyright Elari elari@free.fr | www.unlockgsm.com/dload-osc/ | CVS : http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/elari/?sortby=date#dirlist
Released under the GNU General Public License
---------------------------------------------------------------------------------------*/
include ('includes/application_top.php');
// create template elements
$vamTemplate = new vamTemplate;
// include boxes
require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');
// the following cPath references come from application_top.php
$category_depth = 'top';
if (isset ($cPath) && vam_not_null($cPath)) {
$categories_products_query = "select count(p.products_id) as total from ".TABLE_PRODUCTS_TO_CATEGORIES." as ptc, products as p where ptc.categories_id = '".$current_category_id."' and ptc.products_id=p.products_id and p.products_status='1'";
$categories_products_query = vamDBquery($categories_products_query);
$cateqories_products = vam_db_fetch_array($categories_products_query, true);
if ($cateqories_products['total'] > 0) {
$category_depth = 'products'; // display products
} else {
$category_parent_query = "select count(*) as total from ".TABLE_CATEGORIES." where parent_id = '".$current_category_id."'";
$category_parent_query = vamDBquery($category_parent_query);
$category_parent = vam_db_fetch_array($category_parent_query, true);
if ($category_parent['total'] > 0) {
$category_depth = 'nested'; // navigate through the categories
} else {
$category_depth = 'products'; // category has no products, but display the 'no products' message
}
}
}
require (DIR_WS_INCLUDES.'header.php');
include (DIR_WS_MODULES.'default.php');
$vamTemplate->assign('language', $_SESSION['language']);
$vamTemplate->caching = 0;
if (!defined(RM)) $vamTemplate->load_filter('output', 'note');
$template = (file_exists('templates/'.CURRENT_TEMPLATE.'/'.FILENAME_DEFAULT.'_'.$cID.'.html') ? CURRENT_TEMPLATE.'/'.FILENAME_DEFAULT.'_'.$cID.'.html' : CURRENT_TEMPLATE.'/index.html');
$vamTemplate->display($template);
include ('includes/application_bottom.php');
?>
[/CODE] Вот чего на правил и с 781 строки
[CODE]
function vam_get_tax_class($class_id, $country_id = -1, $zone_id = -1) {
global $customer_zone_id, $customer_country_id, $customer_id;
//get customers info
$customer_city_query = vam_db_query("select entry_city, entry_zone_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customer_id . "'");
$customer_city = vam_db_fetch_array($customer_city_query);
$customer_city['entry_city'] = strtoupper($customer_city['entry_city']);
//set tax rate if city and zone id match
$customer_city_rate_query = vam_db_query("select CITY, RATE from citysalesrate where CITY = '" . $customer_city['entry_city'] . "'");
if (($customer_city_rate = vam_db_fetch_array($customer_city_rate_query)) && ($customer_zone_id == STORE_ZONE)) {
return $customer_city_rate['RATE'];}

elseif ( ($country_id == -1) && ($zone_id == -1) ) {
if (!vam_session_is_registered('customer_id')) {
$country_id = STORE_COUNTRY;
$zone_id = STORE_ZONE;
} else {
$country_id = $customer_country_id;
$zone_id = $customer_zone_id;
}
}
$tax_query = vam_db_query("select SUM(tax_class) as tax_class from " . TABLE_tax_classS . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za ON tr.tax_zone_id = za.geo_zone_id left join " . TABLE_GEO_ZONES . " tz ON tz.geo_zone_id = tr.tax_zone_id WHERE (za.zone_country_id IS NULL OR za.zone_country_id = '0' OR za.zone_country_id = '" . $country_id . "') AND (za.zone_id IS NULL OR za.zone_id = '0' OR za.zone_id = '" . $zone_id . "') AND tr.tax_class_id = '" . $class_id . "' GROUP BY tr.tax_priority");
if (vam_db_num_rows($tax_query)) {
$tax_multiplier = 0;
while ($tax = vam_db_fetch_array($tax_query)) {
$tax_multiplier += $tax['tax_class'];
}
return $tax_multiplier;
} else {
return 0;
}
}
////
// Return the tax description for a zone / class
// TABLES: tax_classs;
function vam_get_tax_description($class_id, $country_id, $zone_id) {
global $customer_id, $customer_zone_id;


//get customers info
$customer_city_query = vam_db_query("select entry_city, entry_zone_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customer_id . "'");
$customer_city = vam_db_fetch_array($customer_city_query);
$customer_city['entry_city'] = strtoupper($customer_city['entry_city']);
//set tax description if city and zone id match
$customer_city_rate_query = vam_db_query("select CITY, RATE from citysalesrate where CITY = '" . $customer_city['entry_city'] . "'");
$customer_city_rate = vam_db_fetch_array($customer_city_rate_query);
$customer_city_rate['CITY'] = strtoupper($customer_city_rate['CITY']);
if (($customer_city_rate['CITY'] == $customer_city['entry_city']) && ($customer_zone_id == STORE_ZONE)) {
return $customer_city_rate['CITY'] . ' TAX ' . $customer_city_rate['RATE'] . '%';

$tax_query = vam_db_query("select tax_description from " . TABLE_tax_classS . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za ON tr.tax_zone_id = za.geo_zone_id left join " . TABLE_GEO_ZONES . " tz ON tz.geo_zone_id = tr.tax_zone_id WHERE (za.zone_country_id IS NULL OR za.zone_country_id = '0' OR za.zone_country_id = '" . $country_id . "') AND (za.zone_id IS NULL OR za.zone_id = '0' OR za.zone_id = '" . $zone_id . "') AND tr.tax_class_id = '" . $class_id . "' order by tr.tax_priority");

}elseif (vam_db_num_rows($tax_query)) {

$tax_description = '';
while ($tax = vam_db_fetch_array($tax_query)) {
$tax_description .= $tax['tax_description'] . ' + ';
}
$tax_description = substr($tax_description, 0, -3);
return $tax_description;
}

else {
return TEXT_UNKNOWN_tax_class;
}
}
в дженерал вставил SQL запрос выполнил как в инсталере

CREATE TABLE `citysalesrate` (
`CITY` varchar(255) default NULL,
`RATE` float(5,2) default NULL,
`recid` int(8) NOT NULL auto_increment,
PRIMARY KEY (`recid`)
);
[/code] SQL error log
[CODE]
29/12/2011 19:12:38 | 1054 - Unknown column 'city_tax_rates' in 'field list' | select `city_tax_rates` from admin_access where customers_id = '1' | /mirra/admin/city_tax_rates.php
29/12/2011 19:12:46 | 1054 - Unknown column 'city_tax_rates' in 'field list' | select `city_tax_rates` from admin_access where customers_id = '1' | /mirra/admin/city_tax_rates.ph

city_tax_rates.php

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

Так само собой, что код надо адаптировать под VamShop и просто так не заработает.

Это шишь основа, которую можно взять для решения проблемы.

Есть ещё один модуль так же.

Можно найти по city zone

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

В admin_access нужно добавлять новую колонку city_tax_rates

Пример Sql кода ну например в 1.61 патче есть, в SQL файле.

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

Саш в инструкции говорится о

in catalog/includes/functions/general.php replace tep_get_tax_rate and tep_get_tax_description functions:

это какой файл в ВАмшопе?

такого не нашел

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

Видимо.

/inc/vam_get_tax_rate.inc.php

если есть такой файл.

Либо в /includes/classes/vam_price.php посмотреть как налог высчитывается, возможно, что по-другому.

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

Файл настроил.

он даст возможность добавить ставку к расчету цены доставки?, как я понимаю?

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

как бы все срабатывает, но вылезает ошибка при выборе способа доставки


Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /home/s/сайт/public_html/inc/vam_db_num_rows.inc.php on line 26
[/CODE]

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

так же там используется функция

strtoupper

я ее правильно по менял на utf8_strtoupper ?

кстати дополнения делаются в

vam_get_tax_description.inc.php

и в

vam_get_tax_rate.inc.php

точнее они меняются.

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

и еще в них странная, отличная от других строк конструкция запроса к БД


$customer_city_rate_query = vam_db_query("select CITY, RATE from citysalesrate where CITY = '" . $customer_city['entry_city'] . "'");
[/CODE] по идее должно ж быть
[CODE]
$customer_city_rate_query = vam_db_query("select CITY, RATE from " . TABLE_CITYSALESRATE . " where CITY = '" . $customer_city['entry_city'] . "'");
но если ставлю данную конструкцию то выдает что

10/09/2012 22:09:34 | 1146 - Table 'БД.CITYSALESRATE' doesn't exist | select CITY, RATE from CITYSALESRATE where CITY = '' | /
[/code]

хотя она создана и в ней есть значения

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

Почему странный sql?

Нормальный.

Просто нужно в /admin/includes/application_top.php добавить константу TABLE_CITYSALERATE

и в /includes/database_tables.php тоже добавить, если этот код из каталога.

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

а


Warning: mysql_num_rows() expects parameter 1 to be resource, null given in O:\home\localhost\www\mirmebeli\inc\vam_db_num_rows.inc.php on line 26
[/CODE]

почему может вылезать?

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

да.

Почему странный sql?

Нормальный.

Просто нужно в /admin/includes/application_top.php добавить константу TABLE_CITYSALERATE

и в /includes/database_tables.php тоже добавить, если этот код из каталога.

да. эта ошибка уже вылезает при выборе способа доставки.

как бы все остальное нормально работает

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

Видимо, ошибка какая-то в sql запросе, может переменная не определена, может ещё что.

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

vam_get_tax_rate


function vam_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) {
global $customer_zone_id, $customer_country_id, $customer_id;
//get customers info
$customer_city_query = vam_db_query("select entry_city, entry_zone_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customer_id . "'");
$customer_city = vam_db_fetch_array($customer_city_query);
$customer_city['entry_city'] = strtoupper($customer_city['entry_city']);
//set tax rate if city and zone id match
$customer_city_rate_query = vam_db_query("select CITY, RATE from " . TABLE_CITYSALESRATE . " where CITY = '" . $customer_city['entry_city'] . "'");
if (($customer_city_rate = vam_db_fetch_array($customer_city_rate_query)) && ($customer_zone_id == STORE_ZONE)) {
return $customer_city_rate['RATE'];}

elseif ( ($country_id == -1) && ($zone_id == -1) ) {
if (!vam_session_is_registered('customer_id')) {
$country_id = STORE_COUNTRY;
$zone_id = STORE_ZONE;
} else {
$country_id = $customer_country_id;
$zone_id = $customer_zone_id;
}
}
$tax_query = vam_db_query("select SUM(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za ON tr.tax_zone_id = za.geo_zone_id left join " . TABLE_GEO_ZONES . " tz ON tz.geo_zone_id = tr.tax_zone_id WHERE (za.zone_country_id IS NULL OR za.zone_country_id = '0' OR za.zone_country_id = '" . $country_id . "') AND (za.zone_id IS NULL OR za.zone_id = '0' OR za.zone_id = '" . $zone_id . "') AND tr.tax_class_id = '" . $class_id . "' GROUP BY tr.tax_priority");
if (vam_db_num_rows($tax_query)) {
$tax_multiplier = 0;
while ($tax = vam_db_fetch_array($tax_query)) {
$tax_multiplier += $tax['tax_rate'];
}
return $tax_multiplier;
} else {
return 0;
}
}
[/CODE] но болячка в vam_get_tax_description
[CODE]
function vam_get_tax_description($class_id, $country_id, $zone_id) {
global $customer_id, $customer_zone_id;

//get customers info
$customer_city_query = vam_db_query("select entry_city, entry_zone_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customer_id . "'");
$customer_city = vam_db_fetch_array($customer_city_query);
$customer_city['entry_city'] = strtoupper($customer_city['entry_city']);
//set tax description if city and zone id match
$customer_city_rate_query = vam_db_query("select CITY, RATE from " . TABLE_CITYSALESRATE . " where CITY = '" . $customer_city['entry_city'] . "'");
$customer_city_rate = vam_db_fetch_array($customer_city_rate_query);
$customer_city_rate['CITY'] = strtoupper($customer_city_rate['CITY']);
if (($customer_city_rate['CITY'] == $customer_city['entry_city']) && ($customer_zone_id == STORE_ZONE)) {
return $customer_city_rate['CITY'] . ' TAX ' . $customer_city_rate['RATE'] . '%';

$tax_query = vam_db_query("select tax_description from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za ON tr.tax_zone_id = za.geo_zone_id left join " . TABLE_GEO_ZONES . " tz ON tz.geo_zone_id = tr.tax_zone_id WHERE (za.zone_country_id IS NULL OR za.zone_country_id = '0' OR za.zone_country_id = '" . $country_id . "') AND (za.zone_id IS NULL OR za.zone_id = '0' OR za.zone_id = '" . $zone_id . "') AND tr.tax_class_id = '" . $class_id . "' order by tr.tax_priority");

}elseif (vam_db_num_rows($tax_query)) {

$tax_description = '';
while ($tax = vam_db_fetch_array($tax_query)) {
$tax_description .= $tax['tax_description'] . ' + ';
}
$tax_description = substr($tax_description, 0, -3);
return $tax_description;
}

else {
return TEXT_UNKNOWN_TAX_RATE;
}

}

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

Нужно ведь идти от простого к сложному.

Для начала, к примеру, просто запрос поменяйте на:

$customer_city_rate_query = vam_db_query("select CITY, RATE from citysalesrate where CITY = 'Москва'");

ещё можно в phpMyAdmin просто выполнить этот запрос и посмотреть, что он вернёт.

Наверное просто пустой запрос получается, поэтому и ошибка.

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

select CITY, RATE from citysalesrate where CITY = 'Иваново'

(Иваново уже забито в БД)

запрос выдал строку


CITY RATE
Иваново 10.00
[/CODE]

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