for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Не фоксом единым
   :: Помощь сайту :: 

Структурировать не структурируемое
Аспид
Автор

Сообщений: 3177
Откуда: Москва
Дата: 02.07.18 20:46:22ОтветитьЦитировать
Есть различные условия формирования цены.

Речь о скидках при продаже одному покупателю
1. Назначаем строку, на которую назначаем скидку в %.
Пример. Назначаем 10 сироку, 15%
Т.е. если покупатель купил 10 товаров, то на 10 строке будет скидка 15%
2. Назначаем кол-во в строке,на которую назначаем скидку в %. - это просто.
3. Сумма предыдущих N строк> S скидка F
Пример.
5 строк, сумма 500 руб, сикда 8%
Покупатель купил в сумме на 5 стсроках больше 500р, скидка на эти 5 строк, 8%.

Ясно, рассчитать это элементарно.
А вот как хранить?
Просто в ini файле, в xml, хотелось бы в табличке...

Может кто сталкивался с таким...
И что еще не нравится, ясно что каждую продажу, придется пробегать по всем условиям.
(по времени не страшно - коду много)))
А таких условий может быть много.


------------------
Ratings: 0 negative/0 positive

Re: Структурировать не структурируемое
S-type

Сообщений: 2375
Дата: 03.07.18 00:29:09ОтветитьЦитировать
Аспид
А вот как хранить?
Хранить что? Факт, что предоставлена скидка? Тогда, в той же записи, что "документ-продажа" добавить колонки "процент скидки" и "сумма скидки". Так не получится? Или, хранить что то ещё?
Ratings: 0 negative/0 positive

Re: Структурировать не структурируемое
pasha_usue

Сообщений: 2950
Откуда: Е-бург
Дата: 03.07.18 07:35:30ОтветитьЦитировать
При такой навороченной логике я бы каждую скидку сделал тупо отдельным объектом. А в базе бы держал таблицу с идентификаторами объектов. Плюс граф начисления скидок, который задаёт очередность и ветвления при применении объектов. По-жизни такой граф чаще всего вырождается в дерево скидок. Либо лес скидок, зависимый от условий реализации.
Документ последовательно по дереву скармливается объектам. А в сам документ записывается идентификатор объекта-скидки, а так же объекты и место его применения. Лучше, если запись идёт в отдельные таблицы, которые будут иметь ссылки на строки, группы строк и/или заголовок документа.

Соответственно, 1 - группа строк, на которые применяется скидка по бизнес-логике объекта. Плюс место применения - 10-я строка.
2 - объект применения и место применения совпадают со строкой, где сработала количественная скидка.
3 - объект применения и место применения совпадают с группой из 5-и строк, где набралась условная сумма.

Можно не хранить объект и место применения, конечно, - тупо %-ик подставил и нормально. Но потом обычно начинают спрашивать отчёты: "а как применялась такая-то скидка"? "А за год покажите"?

Вот когда начнут спрашивать, как оно применялось, и как повлияло на рентабельность отдельных товаров/групп, тогда придётся делать свёртку структуры начисленных скидок до той аналитики, которую попросили показать. Часто оказывается, что скидка отнесена на конкретную строку, а потерю рентабельности необходимо раскидать на всю группу объектов применения. Вот тогда избыточность структуры начинает оправдываться.
Ratings: 0 negative/0 positive

Re: Структурировать не структурируемое
Аспид
Автор

Сообщений: 3177
Откуда: Москва
Дата: 03.07.18 07:46:07ОтветитьЦитировать
pasha_usue
Спасибо за мысль. Хоть что то отличное, от тупого скармливания дока всем условиям, после любого изменения...
Надо осмыслить.

Может какие то альтернативы?...


------------------
Ratings: 0 negative/0 positive

Re: Структурировать не структурируемое
Igor Korolyov

Сообщений: 32097
Дата: 03.07.18 14:57:34ОтветитьЦитировать
Однозначно не стоит хранить логику в БД - всякие "формулы", свой "птичий язык" или тот же фоксовый код.
Справочник "скидок" и ссылка на него из документов применявших ту или иную скидку - это другое дело. Но не сама логика.

А что, порядок внесения товаров в чек влияет на скидку? По-моему это ущербная логика. Ну хорошо, я куплю 9 разных упаковок жевательной резинки, а на 10 позицию попрошу какой мега-крутой телевизор за 5к зелени
Скидка должна быть простой и не позволяющей её "трактовать" так или иначе, как порой у нас с законами происходит...


------------------
WBR, Igor
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 45 leonid  and Guests: 44


© 2000-2018 Fox Club 
Яндекс.Метрика