![]() |
#1 |
Участник
|
Скидка с датой.
Может уже обсуждалось...
Есть скидка у которой указан интервал: март 2006 - 5% Есть скидка у которой интервал не указан - 10% Логика: в марте 2006 запланировали клиенту отпускать по 5%, все остальное время по 10%. Но у меня не подставляется скидка в 5%, если я создаю заказ мартовской датой. В чем причина? |
|
![]() |
#2 |
Moderator
|
Для Аксапты относительно ваших настроек в марте действительны обе скидки, и она предлагает наиболее выгодную для клиента, о чем прямо указано в хелпе. Поиграйтесь с галочкой "Найти далее", а лучше задайте жесткие непересекающиеся интервалы дат.
__________________
Андрей. |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
Для Аксапты относительно ваших настроек в марте действительны обе скидки, и она предлагает наиболее выгодную для клиента
1. Почему должна Акса действовать с позиции выгоды клиента а не предприятия (по вашим словам)? 2. Меняя значения скидки местами происходит тоже самое; |
|
![]() |
#4 |
Moderator
|
Это я не рассуждаю, а пишу о реализации как есть. Номер соответствующей главы из "Управления торговлей и логистикой" не приведу, т.к. не помню.
Цитата:
Сообщение от slava09
Меняя значения скидки местами происходит тоже самое;
__________________
Андрей. |
|
![]() |
#5 |
Участник
|
Есть скидка у которой указан интервал: март 2006 - 10%
Есть скидка у которой интервал не указан - 5% Аксапта выбирает всеравно скидку 5% Вот что я имел ввиду. |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
Поиск другой сделки после нахождения первой попавшейся определяется упомянутой галочкой "Найти далее".
|
|
![]() |
#7 |
Moderator
|
Цитата:
Сообщение от slava09
Это не просто поиск, это суммирование скидок.
__________________
Андрей. |
|
![]() |
#8 |
Участник
|
Ну всетаки. Возвращаясь к теме.
По всей видимости Аксапта игнорирует скидку с интервалом, если есть скидка без интервала. Независимо выгодна ли она клиенту или нет. Но, если следовать такому логическому рассуждению, что скидка с интервалом должна уточнять условия в определенный интервал времени, то выходит что Аксапта работает не правильно. А если не следовать, то работает не понятно как ![]() Последний раз редактировалось slava09; 14.12.2005 в 18:49. |
|
![]() |
#9 |
Участник
|
Обратите внимание - класс PriceDisc, метод findDisc()
X++: while select priceDiscTable index [u]PriceDiscIdx[/u] // equals order by QuantityAmount where ... Либо разбивайте бессрочную скидку на две - одна действует до начала (например, 28.02.2005), а другая - после начала (например, 02.03.2006) дополнительной скидки. Либо настройте дополнительную скидку таким образом, чтобы значение одного из полей, входящих в индекс, было меньше чем для бессрочной (если это возможно)
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#10 |
Участник
|
Сталкивался с такой ФИЧЕЙ на проекте. Спасло только создание 3-х строк с конкретными датами действия скидки. В код не лезли по определенным причинам.
![]()
__________________
ИМХО. С уважением, Владимир Ю. |
|
![]() |
#11 |
Модератор
|
Цитата:
Сообщение от slava09
Но, если следовать такому логическому рассуждению, что скидка с интервалом должна уточнять условия в определенный интервал времени, то выходит что Аксапта работает не правильно
У Вас текущая дата попадает в ДВА интервала - какой из них "правильнее" ? Где в документации можно почитать про принцип "уточнения" одного интервала другим ? ![]() А закладываться на Код: index PriceDiscIdx // equals order by QuantityAmount Код: order by QuantityAmount ![]()
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#12 |
Участник
|
Так согласно findDisc, или согласно того что выгоднее клиенту?
Мне тут сказали, что в документации так и написано. Конечно, для вас это очевидно, что пустая дата, это "01.01.1900", но для пользователя, это выглядит несколько иначе. В документации про "принцип уточнения" ничего не сказано, я же сказал - по моему личному мнению. Не надо меня тыкать носом в документацию. Кстати, в конечной дате стоит тоже пустое значение, а следовательно "01.01.1900", так что у меня только одна текущая дата получается! |
|
![]() |
#13 |
Участник
|
2 vadik
Цитата:
А закладываться на PriceDiscIdx по-моему как-то нездОрово - ибо, судя по комментариям, какой-либо сортировки по ДАТЕ здесь не планировалось
Добавление order by QuantityAmount принципиально ситуацию не изменит (это поле и так входит в индекс).
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#14 |
Модератор
|
Цитата:
Сообщение от slava09
или согласно того что выгоднее клиенту? Мне тут сказали, что в документации так и написано
Цитата:
Не надо меня тыкать носом в документацию.
![]() Цитата:
Кстати, в конечной дате стоит тоже пустое значение, а следовательно "01.01.1900", так что у меня только одна текущая дата получается!
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#15 |
Модератор
|
Цитата:
Сообщение от AndyD
2 vadik
Добавление order by QuantityAmount принципиально ситуацию не изменит (это поле и так входит в индекс). - какая-нибудь неугомонная личность отключит индексные хинты на уровне конфигурации - она же закомментирует index hint или укажет в нем другой индекс - она же изменит индекс, поменяв поля местами на "а ты не лезь туда грязными руками" отвечу только, что не всем повезло работать с клиентами, пересчитывающими прайс в нескольких валютах каждый день и желающих хранить историю по прайсу "хотя бы" пару месяцев ![]() а ORDER BY - он и в африке ORDER BY ![]()
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#16 |
Moderator
|
Цитата:
Сообщение от slava09
Так согласно findDisc, или согласно того что выгоднее клиенту?
Мне тут сказали, что в документации так и написано. ![]() А механизм поиска по дате работает одинаково что для цен, что для скидок.
__________________
Андрей. |
|
![]() |
#17 |
Участник
|
Цитата:
Сообщение от Vadik
Извините, больше не буду. Это же шутка была
![]() Насчет заботы о клиентах, это слова товарища Dron AKA andy. Он имел ввиду цены. По поводу интервалов: конечно можно представить самый простой случай когда текущая дата попадает в несколько интервалов заданных в прайсах (даже без пустых дат). И можно сказать, что Аксапта не имеет никакого предпочтения в их выборе. Согласен, что ситуация когда нужно разбивать на несколько интервалов, чтобы добиться желаемого эффекта вполне нормальна, но достаточно хлопотна. |
|
![]() |
#18 |
Участник
|
2 vadik
Во-первых, против лома нет приема. Во-вторых, QuantityAmount являетеся далеко не первым полем в индексе. Если строить сортировку только по нему, то предсказать, какая из скидок сработает будет весьма затруднительно - для этого придется проверять какая из записей создавалась ранее. По-моему, порядок сортировки должен быть такой ORDER BY itemCode, accountCode, QuantityAmount, FromDate В-третьих. Если есть желание и возможность изменять чтобы-то ни было - это ваше право. Но какое это имеет отношение к работе стандартного приложения? Или вы не согласны, что стандартная Axapta выбирает скидки именно так? 2 slava09 Цитата:
Конечно, для вас это очевидно, что пустая дата, это "01.01.1900", но для пользователя, это выглядит несколько иначе.
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#19 |
Модератор
|
Цитата:
Сообщение от AndyD
Во-первых, против лома нет приема
![]() Цитата:
Во-вторых, QuantityAmount являетеся далеко не первым полем в индексе. Если строить сортировку только по нему, то предсказать, какая из скидок сработает будет весьма затруднительно - для этого придется проверять какая из записей создавалась ранее. По-моему, порядок сортировки должен быть такой
ORDER BY itemCode, accountCode, QuantityAmount, FromDate P.S. А вообще - наличие скидок на несколько пересекающихся периодов при включенном "найти далее" (а поле по умолчанию включается при ручном вводе) позволяет обеспечить клиентам хорошую "халяву" Причем сугубо штатными средствами ![]()
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#20 |
Участник
|
Вдогонку.
index idx и index hint idx - это разные вещи и первое не отключишь конфигурационной утилитой. Цитата:
Все верно. Маленькое уточнение - сортировки по QuantityAmount достаточно, потому что все остальные поля уже "зажаты" в WHERE
PS Точнее запутался ![]()
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 14.12.2005 в 22:42. |
|