Для того чтобы организовать торговлю в Интернет-магазине компании потребуется наличие всего одного Менеджера, контролирующего процесс автоматической работы магазина как из офиса компании, так и из любого места в Сети.
Каталог прайсов интернет магазинов - разместите свой прайс бесплатно
  Главная  |    О компании  |    Новости  |    Статьи  |    Форум  |    Клиенты  |    Обратная связь  |    Карта сайта
Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Запомнить
Пароль
   
Форум
 Программа iNETsHOP » Работа с программой
        UAH и USD одновременно!!!
Первая страница 1 2 » Последняя страница
UAH и USD одновременно!!!

22.07.2013 16:30

tehnoreal


Пользователь iNETsHOP

Количество сообщений   8
Зарегистрирован:   06-12-2012, 18:26:18
Отображение цен в UAH и USD одновременно
Добрый день!
Как сделать одновременное отображение UAH и USD одного товара, учитывая что товары имеют разные формулы наценки?

Обозначения:
1) "Цена продажи №1" - цена в USD;
2) "Цена продажи №3" - цена в UAH;
3) "курс" - курс USD к UAH;

Пример:

"Цена продажи №3" = "Цена продажи №1" * "курс".
Пользователь оффлайн Распечатать
 

22.07.2013 16:41

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Рассчет цен №1-№3 производится по одному и тому же алгоритму, от цены закупки товара у поставщика. Т.е. цены продажи зависят только от цены закупки и формулы наценки, и никак не взаимосвязаны между собой.

Вы имеете возможность в окне "Администрирование" на закладке "Пользовательские запросы" добавить скрипт для расчета цены №3. Он может работать как на все товары, так и на выделенные товары в таблице товаров в справочнике.
Пользователь оффлайн Распечатать
 

22.07.2013 17:49

tehnoreal


Пользователь iNETsHOP

Тема начата

Количество сообщений   8
Зарегистрирован:   06-12-2012, 18:26:18
Можно маленький пример. А то не получается.
Скриншот моей работы прикреплён в этом сообщении.
Прикрепленные файлы
query.jpg   ( 19 Просмотров | 92 KB )
Пользователь оффлайн Распечатать
 

22.07.2013 18:15

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Добавленный вами скрипт не зависит от справочников и таблиц. При вызове будет выполнен SQL-скрипт независимо от открытого справочника и/или выбраных строк какой-либо таблицы.

Если вы хотите одним вызовом пересчитать все цены №3 в товарах, товам лучше всего создать курсор на набор записей

SELECT G_ID FROM TBL_GOODS

и в цикле по всему набору для каждой строки выполнить например следующее изменение цены №3

UPDATE TBL_GOODS SET price3=price*8.2 WHERE G_ID = @G_ID, где 8.2 - пример курса USD, @G_ID - код товара полученный из курсора

Почему обновление лучше делать в курсоре? Да потому, что это не создаст нагрузку на подсистему логирования (которая при большом количестве обновляемых строк может сильно тормозить) и не будет одной общей транзакции, т.е. в момент запуска пересчета цены пользователи не будут заблокированы.
Пользователь оффлайн Распечатать
 

23.07.2013 12:26

tehnoreal


Пользователь iNETsHOP

Тема начата

Количество сообщений   8
Зарегистрирован:   06-12-2012, 18:26:18
Создал переменную запроса (PriceUA), как её использовать в программе,
мой скрипт:

Код
DECLARE @IdPriceUSD CURSOR
SET @IdPriceUSD = CURSOR LOCAL SCROLL FOR
SELECT G_ID FROM TBL_GOODS

OPEN @IdPriceUSD

FETCH NEXT FROM @IdPriceUSD
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE TBL_GOODS SET price3 = price * 8.17 WHERE G_ID = @IdPriceUSD

FETCH NEXT FROM @IdPriceUSD
END
CLOSE @IdPriceUSD
DEALLOCATE @IdPriceUSD


Скриншот прилагается
Прикрепленные файлы
queryCursor.jpg   ( 8 Просмотров | 124.7 KB )
Пользователь оффлайн Распечатать
 

23.07.2013 13:15

Admin


Администратор


Количество сообщений   135
Зарегистрирован:   23-08-2007, 09:03:21
У вас неверный код. Скрипт должен выглнядеть приблизительно так:

Код

DECLARE @GID int;
DECLARE gGoods CURSOR LOCAL FOR
SELECT G_ID FROM TBL_GOODS
WHERE price3 <> price * 8.17;

OPEN gGoods;

FETCH NEXT FROM gGoods INTO @GID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN

UPDATE TBL_GOODS SET price3 = price * 8.17 WHERE G_ID = @GID;
FETCH NEXT FROM gGoods INTO @GID;
END;
CLOSE gGoods;
DEALLOCATE gGoods;


Перед выполнением/запуском скрипта дайте нужным пользователям полномочия для этого.

Запустить скрипт на выполнение можно из основного окна в меню пользовательских скриптов (скриншот прилагается)

Так же можно создать переменную для ввода курса валюты перед выполнением данного SQL-запроса, или переделать его только на запуск по выделенным товарам в справочнике товаров.









Прикрепленные файлы
user_queries_technoreal_1.jpg   ( 10 Просмотров | 101 KB )
user_queries_technoreal_2.jpg   ( 7 Просмотров | 48 KB )
user_queries_technoreal_3.jpg   ( 9 Просмотров | 41.7 KB )
Пользователь оффлайн Распечатать
 

23.07.2013 14:06

tehnoreal


Пользователь iNETsHOP

Тема начата

Количество сообщений   8
Зарегистрирован:   06-12-2012, 18:26:18
После окончания выполнения запроса выскакивает окошко с ошибкой "Parameter ID not found."
В чём может быть причина?

Скриншот прилагается.
Прикрепленные файлы
errorQueryCursor.jpg   ( 8 Просмотров | 254.2 KB )
Пользователь оффлайн Распечатать
 

23.07.2013 16:13

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Какой тип SQL-запроса вы указали при его создании? Параметр :ID используется для вызова SQL-запросов для вібраніх строк в таблицах интерфейса. В него передаётся первичный ключ основной таблицы базы данных из которой формируется отображаемый рекорд-сет в интерфейса. Т.е. если делать запрос для таблицы товаров "справочника товаров", то в параметр :ID будет передан первичный ключ таблицы TBL_GOODS.G_ID. У вас же, запрос не зависит от выбранных товаров и какого-либо открытого откна, он просто вызывается и что-то делает, потому в настройках этого запроса нужно указать тип "Общий"

Так же такая ошибка наблюдалась в начальных версиях данного механизма когда тип "Общий" воспринимался как зависимый от выбранных строк. Обновите версию программы и базы данных.
Пользователь оффлайн Распечатать
 

23.07.2013 16:23

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Или добавьте в начало запроса пустой параметр ID

Код

DECLARE @ID int;
SET @ID = :ID;


После этого не забудьте добавить параметр в таблицу параметров запроса (справа от поля редактирования)


Пользователь оффлайн Распечатать
 

23.07.2013 18:58

MaXX


Пользователь iNETsHOP


Количество сообщений   64
Зарегистрирован:   11-11-2008, 04:35:57
Фича супер! Давно хотел попробовать да руки не доходили. Такой расчет я бы лучше добавил в триггер чтоб не запускать каждый раз.
Пользователь оффлайн Распечатать
 

23.07.2013 19:27

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Есть масса вариантов для запуска и выполнения такого расчета:

  • триггер
  • скрипт в SQL Query Analyzer
  • вызов в скрипте VBScript, PHP, ASP, и.т.п.
  • создание мелкой программы на любом языке который умеет работать с MS SQL, OleDB, ODBC, и.т.д
  • запуск из интерфейса программы iNETsHOP


У каждого из этих способов есть свои плюсы и минусы, но зато из интерфейса можно запустить скрипт по выделенным (выбранным) строкам в таблице.
Пользователь оффлайн Распечатать
 

25.07.2013 12:10

tehnoreal


Пользователь iNETsHOP

Тема начата

Количество сообщений   8
Зарегистрирован:   06-12-2012, 18:26:18
Обновил версию программы и базу данных, ошибка исчезла.
Огромное спасибо за помощь!

P.S.
Тему можно закрывать.
Пользователь оффлайн Распечатать
 

25.07.2013 14:25

MaXX


Пользователь iNETsHOP


Количество сообщений   64
Зарегистрирован:   11-11-2008, 04:35:57
Пользовательский запрос по выбраным товарам
А если мне не нужно по всем товарам а токо те которые выделил в табличке, как лучше сделать?
Пользователь оффлайн Распечатать
 

25.07.2013 18:35

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Пример работы пользовательского SQL-запроса по выделенным товарам
Настройка такого запроса выглядит приблизительно так:


Т.е. в запрос передается переменная первичного ключа :ID, которая для такблицы товаров справочника товаров соответствует полю TBL_GOODS.G_ID. Вторая числовая переменная - сам курс, который нужно ввести перед запуском.

Запрос, который выполняется для каждой выделенной(помеченой) строки должен находиться на закладке "Основной". Так же должен быть указан соответствующий тип самого SQL-запроса, в данном случае "Справочник товаров : Товары".

Так же не забываем полномочия пользователей на запуск и выполнение скриптов.



Сам SQL-запрос с настройками можно скачать в новом разделе "Пользовательские SQL-запросы": SQL-Запрос по выделенным товарам
Пользователь оффлайн Распечатать
 

12.11.2013 19:25

prodact


Пользователь iNETsHOP


Количество сообщений   115
Зарегистрирован:   15-06-2010, 14:24:19
Помогите разобраться, на некоторых позициях не получается задать цену в гривне ((( Если я выполняю запрос, база показывает значок запроса, но ничего не изменяется и там где не было цен они не появляются, а также не получается обновить цены если курс изменился. Если я наступаю на какую то позицию и ввожу ее код (G_ID) выдает ошибку. См. print screen.
Прикрепленные файлы
ошибка.jpg   ( 4 Просмотров | 330.2 KB )
цена в гривне.jpg   ( 3 Просмотров | 401.5 KB )
Пользователь оффлайн Распечатать
 

Распечатать  |  Следующая тема  |  Предыдущая тема
Перейти
Первая страница 1 2 » Последняя страница  

Статистика форума
Тем: 506, Сообщений: 3222, Пользователей: 2257
Приветствуем новичка по имени L9800708
Ближайшие дни рождения
Сегодня именинников нет


iNETsHOP - программа для формирования каталога товаров интернет-магазина и обработки прайсов Copyright 2007-2015 "Программа iNETsHOP - работа с прайс-листами поставщиков для интернет магазинов ®" iNETsHOP - обработка, объединение, анализ прайсов поставщиков и конкурентов