Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Количество сообщений
16
Зарегистрирован:
03-03-2015, 21:13:23
Вопрос по ценообразованию?
День добрый! Приобрел вашу программу все вроде отлично работает. Подскажите пожалуйста как сделать так, чтобы цена бралась от поставщика у которого первое: минимальная цена и второе: количество больше 4. Я так понимаю нужно поменять "Цена продажи №1" с автоматически на SQL запрос. Вот как написать SQL-запрос? Заранее спасибо.
Количество сообщений
16
Зарегистрирован:
03-03-2015, 21:13:23
Вопрос по ценообразованию?
Количество товаров у всех поставщиков, у меня суммируется и выводится одним остатком. Просто цену выбирает минимальную. А хотелось бы вот так:
Поставщик 1, количество-3 шт цена 1000 руб.
Поставщик 2, количество-10 шт цена 1200 руб.
Поставщик 3, количество-12 шт цена 1300 руб.
Поставщик 4, количество-20 шт цена 1400 руб.
Поставщик 5, количество-30 шт цена 1500руб.
Нужно чтобы выгружалась минимальная цена из тех поставщиков у которых наличие товара больше 4. В данном случае "Поставщик 2".
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Вариантов решения данной задачи по сути два:
1. добавить в схему импорта скрипт который будет для товаров, свободный остаток которых менее какой-то заданной пороговой величины, устанавливать признак наличия как "нет в наличии"
2. добавить пользовательский sql-скрипт выбора цены поставщика, который будет игнорировать товары с остатком меньше гранично допустимого.
Код
DECLARE @PF_ID int;
SET @Price =
(
SELECT MIN(price)
FROM TBL_SUPPLIERS_GOODS
WHERE SG_G_ID = @G_ID AND SG_PRESENT = 1 AND (SG_REST = 0 OR SG_REST > 4)
);
IF ISNULL(@Price, 0) > 0
BEGIN
SET @G_PRESENT = 1;
END;
Уточнения:
1. Скрипт настраивается в справочнике приоритетов поставщиков, и это скрипт выбора цены поставщика (не расчета цен продажи)
2. Так как у части поставщиков может отсутствовать остаток в числовом эквиваленте, товары у которых остаток равен нулю но они отмечены в справочнике товаров поставщиков как "есть в наличии" определяются алгоритмом как их остаток удовлетворяет исходное условие отбора.
3. После настроки пользовательского sql-скрипта нужно выполнить пересчет цен. Кнопка пересчета доступна в справочнике приоритетов поставщиков и пересчитывает цены товаров с выбранным приоритетом поставщиков.
Количество сообщений
16
Зарегистрирован:
03-03-2015, 21:13:23
Спасибо! Все вроде работает, но есть один момент теперь, если отсутствует товар с количеством больше или равно 4 цена не выбирается.
поставщик 1 товар 1 количество 3 цена 1000
поставщик 2 товар 1 количество 1 цена 1200
поставщик 3 товар 1 количество 2 цена 1400
поставщик 4 товар 1 количество 1 цена 1500
Можно как-то сделать чтобы при таком раскладе выбиралась цена максимальная в данном случае 1500.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Можно, но вам лучше продумать заранее полностью все возможные случаи и на предмет других нюансов. Например в начальном посте речь шла о "количество больше 4", теперь вы немного изменили условие на "с количеством больше или равно 4"
Так же вы ничего не упомянули об алгоритме определения наличия товара, т.е. при каких условиях товар должен определяться как "Есть в наличии".
Количество сообщений
16
Зарегистрирован:
03-03-2015, 21:13:23
Вопрос по ценообразованию?
День добрый! Постарался изложить условия максимально детально.
Условия:
Если количество товара хотя-бы у одного из поставщиков больше или равно 4 то цена берется минимальная(из тех поставщиков у которых количество товара больше или равно 4);
поставщик 1 товар 1 количество 4 цена 1000
поставщик 2 товар 1 количество 1 цена 1200
поставщик 3 товар 1 количество 12 цена 1400
поставщик 4 товар 1 количество 1 цена 1500
в данном случае поставщик 1.
Если количество товаров меньше или равно 3 и не равно 0 то берем максимальную цену(из тех поставщиков у которых количество товара меньше или равно 3)
поставщик 1 товар 1 количество 3 цена 1000
поставщик 2 товар 1 количество 1 цена 1200
поставщик 3 товар 1 количество 2 цена 1400
поставщик 4 товар 1 количество 1 цена 1500
в данном случае поставщик 4.
Товар определяется как "Есть в наличии" при условии:
остатки > 0 (у любого из поставщиков);
цена > 0 (у любого из поставщиков);
Заранее спасибо!
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Дополнительный sql-скрипт выбора цены поставщика по вашему алгоритму для справочника приоритетов поставщиков будет выглядеть приблизительно так:
Код
SET @Price =
(
SELECT MIN(price)
FROM TBL_SUPPLIERS_GOODS
WHERE SG_G_ID = @G_ID AND SG_PRESENT = 1 AND SG_REST >= 4
);
IF ISNULL(@Price, 0) = 0
BEGIN
SET @Price =
(
SELECT MAX(price)
FROM TBL_SUPPLIERS_GOODS
WHERE SG_G_ID = @G_ID AND SG_PRESENT = 1 AND SG_REST > 0 AND SG_REST < 4
);
END;
IF ISNULL(@Price, 0) > 0
BEGIN
SET @G_PRESENT = 1;
END;
Стоит отметить, что для того, чтобы цена товаров автоматически пересчитывалась при изменении остатков товаров поставщиков (товаров из прайс-листов), у поставщиков должна быть включена настройка "Учет наличия по остатку" (настраивается в справочнике "Поставщики").