29.09.2004, 11:01 | #1 |
Участник
|
Создание системы накопительных скидок
Здравствуйте, значит задача такая:
Добавить в систему возможность начисления накопительной скидки при расчете с клиентами. Я пошел следующим образом: я перерабатывал следующие объекты: \Forms\PriceDiscActivationPurch \Forms\PriceDiscGroup \Projects\ETK_AccumulateDiscUpgrade\CustomerObjects \Forms\PriceDiscTable \Data Dictionary\Tables\PriceDiscTable \Data Dictionary\Base Enums\PriceType \Data Dictionary\Tables\PriceDiscGroup \Data Dictionary\Base Enums\PriceGroupType \Data Dictionary\Tables\PriceAccumDiscGroupValues \Data Dictionary\Tables\PriceAccumDiscGroup \Forms\PriceAccumDiscGroup т.е. добавил в перечислимый тип скидки - свой "накопительная скидка" переделал кнопки и т.д., но весь гемморой в том, что между модулями Заказы/Закупки используется одна форма - Группы Цен/Скидок -> Коммерческие соглашения -> цена. И все поля на гриде и кнопки изменяются программно - смотря из какого модуля запущены... Вот теперь конкретно - что не получается: Как мне оставить при выборе "накопительная скидка" - в форме "Цены" только нужные поля, тобишь "валюта, скидка, сумма, про.ск.1,2 и т.д." Кто делал может, ПОМОГИТЕ. заранее спасибо.
__________________
Смотрим в книгу - видим фигу. |
|
29.09.2004, 13:18 | #2 |
Участник
|
я бы предложил способ с меншими модфикациями.
Каждый уровнень накопительных скидок - отдельное соглашение по скидкам. Если накопительные скидки вы учитываете в общих, то будет столько общих скидок, сколько уровней накопительных скидок у вас существует. Периодическим заданием вы рассчитываете уровень накопительной скидки и устанавливаете в параметре клиента соответствующий код общей скидки. В заказе ничего динамически не рассчитывается. Код менять не надо. Надо только дописать логику, которая изменяет параметр в клиенте. Отвечая на ваш вопрос. В init формы вроде все прописано control.visible(boolean). Что конкртено непонятно? Есть ли универсальный механизм? Нет, универсального для нового типа скидок нет. Надо switch'ик расширять. Везде, где идет работа с ценами. |
|
29.09.2004, 13:52 | #3 |
Участник
|
Если я правильно понял - берем оборот по клиенту, выбираем из таблицы скидку, соответствующему этому обороту, затем пихаем это значение в "общую скидку" и далее рассчитываем как обычно...
Да, но как тогда расчитывать дополнительно "Общую скидку"?
__________________
Смотрим в книгу - видим фигу. |
|
29.09.2004, 13:58 | #4 |
Участник
|
Общая скидка рассчитывается в заказе в кнопке Функции в нижней части окна.
Хорошо, используйте скидки по строке. Если у вас проблемы с общей. Главное: не программируйте Сделайте несколько групп скидок и перемещайте клиента дополнительным заданием между этими группами. По русски это звучит следуюшим образом: периодически перемещайте вашего клиента в другую колонку прайс-листа. Программист должен запрограммировать только логику, которая решает, в какую колонку надо переместить клиента. |
|
29.09.2004, 16:34 | #5 |
NavAx
|
Mazzy на 200% прав! (Как почти всегда)
Мы тоже начали писать свой механизм скидок... И только сделав прочитали таки документацию Не тот случай когда вообще нужно программировать
__________________
И все они создания природы... |
|
30.09.2004, 05:19 | #6 |
Участник
|
Спасибо, за участие! Будем делать ...
__________________
Смотрим в книгу - видим фигу. |
|
30.09.2004, 08:24 | #7 |
Участник
|
Процесс оказался легче чем я думал - занял всего 20 минут.
Работает следующим образм: В группе общей скидки мы создаем например гр. Накопительной скидки, и указываем в ней значения, сумма - процент скидки. Затем в форме заказы указываем в гр.Общей скидки - Нашу группу накопительной скидки, и в строках выполняем расчет "Накопительной скидки", система укажет скидку, взависимости от оборота по клиенту... ну и всё. Может кто может посоветовать как доработать/улучшить буду благодарен. Прикрепленный файл проекта - AccumDiscUpgrade
__________________
Смотрим в книгу - видим фигу. |
|