AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.12.2005, 16:34   #1  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Скидка с датой.
Может уже обсуждалось...
Есть скидка у которой указан интервал: март 2006 - 5%
Есть скидка у которой интервал не указан - 10%

Логика: в марте 2006 запланировали клиенту отпускать по 5%, все остальное время по 10%.

Но у меня не подставляется скидка в 5%, если я создаю заказ мартовской датой.

В чем причина?
Старый 14.12.2005, 17:16   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Для Аксапты относительно ваших настроек в марте действительны обе скидки, и она предлагает наиболее выгодную для клиента, о чем прямо указано в хелпе. Поиграйтесь с галочкой "Найти далее", а лучше задайте жесткие непересекающиеся интервалы дат.
__________________
Андрей.
Старый 14.12.2005, 17:27   #3  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Цитата:
Сообщение от Dron AKA andy
Для Аксапты относительно ваших настроек в марте действительны обе скидки, и она предлагает наиболее выгодную для клиента
Красиво рассуждаете.
1. Почему должна Акса действовать с позиции выгоды клиента а не предприятия (по вашим словам)?
2. Меняя значения скидки местами происходит тоже самое;
Старый 14.12.2005, 17:34   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Это я не рассуждаю, а пишу о реализации как есть. Номер соответствующей главы из "Управления торговлей и логистикой" не приведу, т.к. не помню.
Цитата:
Сообщение от slava09
Меняя значения скидки местами происходит тоже самое;
Не понял, что и с чем вы меняете. Поиск другой сделки после нахождения первой попавшейся определяется упомянутой галочкой "Найти далее".
__________________
Андрей.
Старый 14.12.2005, 17:43   #5  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Есть скидка у которой указан интервал: март 2006 - 10%
Есть скидка у которой интервал не указан - 5%

Аксапта выбирает всеравно скидку 5%
Вот что я имел ввиду.
Старый 14.12.2005, 17:58   #6  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Цитата:
Сообщение от Dron AKA andy
Поиск другой сделки после нахождения первой попавшейся определяется упомянутой галочкой "Найти далее".
Это не просто поиск, это суммирование скидок.
Старый 14.12.2005, 18:01   #7  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от slava09
Это не просто поиск, это суммирование скидок.
Да, согласен, перепутал с ценовыми соглашениями.
__________________
Андрей.
Старый 14.12.2005, 18:32   #8  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Ну всетаки. Возвращаясь к теме.
По всей видимости Аксапта игнорирует скидку с интервалом, если есть скидка без интервала.
Независимо выгодна ли она клиенту или нет.

Но, если следовать такому логическому рассуждению, что скидка с интервалом должна уточнять условия в определенный интервал времени, то выходит что Аксапта работает не правильно.

А если не следовать, то работает не понятно как Точнее, не так как я ожидал (я только про себя говорю).

Последний раз редактировалось slava09; 14.12.2005 в 18:49.
Старый 14.12.2005, 19:06   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Обратите внимание - класс PriceDisc, метод findDisc()

X++:
    while select priceDiscTable
        index [u]PriceDiscIdx[/u]  // equals order by QuantityAmount
        where ...
В индекс PriceDiscIdx входит поле FromDate - дата начала действия скидки. Если не указывать дату в этом поле, то в таблицу запишется значение "01.01.1900". Т.е. при прочих равных условиях будет выбрана первой запись без срока начала действия. Из нее и выберется скидка.

Либо разбивайте бессрочную скидку на две - одна действует до начала (например, 28.02.2005), а другая - после начала (например, 02.03.2006) дополнительной скидки.

Либо настройте дополнительную скидку таким образом, чтобы значение одного из полей, входящих в индекс, было меньше чем для бессрочной (если это возможно)
__________________
Axapta v.3.0 sp5 kr2
Старый 14.12.2005, 19:07   #10  
Владимир Ю. is offline
Владимир Ю.
Участник
Аватар для Владимир Ю.
 
251 / 9 (1) +
Регистрация: 26.09.2003
Адрес: СПб
Сталкивался с такой ФИЧЕЙ на проекте. Спасло только создание 3-х строк с конкретными датами действия скидки. В код не лезли по определенным причинам.
__________________
ИМХО.
С уважением, Владимир Ю.
Старый 14.12.2005, 19:15   #11  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от slava09
Но, если следовать такому логическому рассуждению, что скидка с интервалом должна уточнять условия в определенный интервал времени, то выходит что Аксапта работает не правильно
Скидка ищется согласно \Classes\PriceDisc\findDisc

У Вас текущая дата попадает в ДВА интервала - какой из них "правильнее" ? Где в документации можно почитать про принцип "уточнения" одного интервала другим ?

А закладываться на
Код:
index PriceDiscIdx  // equals order by QuantityAmount
по-моему как-то нездОрово - ибо, судя по комментариям, какой-либо сортировки по ДАТЕ здесь не планировалось

Код:
order by QuantityAmount
тоже imho не помешало бы.. так, на всякий случай
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.12.2005, 19:23   #12  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Так согласно findDisc, или согласно того что выгоднее клиенту?
Мне тут сказали, что в документации так и написано.
Конечно, для вас это очевидно, что пустая дата, это "01.01.1900", но для пользователя, это выглядит несколько иначе.
В документации про "принцип уточнения" ничего не сказано, я же сказал - по моему личному мнению.
Не надо меня тыкать носом в документацию.
Кстати, в конечной дате стоит тоже пустое значение, а следовательно "01.01.1900", так что у меня только одна текущая дата получается!
Старый 14.12.2005, 19:44   #13  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 vadik
Цитата:
А закладываться на PriceDiscIdx по-моему как-то нездОрово - ибо, судя по комментариям, какой-либо сортировки по ДАТЕ здесь не планировалось
Это к чему?
Добавление order by QuantityAmount принципиально ситуацию не изменит (это поле и так входит в индекс).
__________________
Axapta v.3.0 sp5 kr2
Старый 14.12.2005, 19:53   #14  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от slava09
или согласно того что выгоднее клиенту? Мне тут сказали, что в документации так и написано
Мне о такой трогательной заботе о клиентах неизвестно. Может быть, имелся в виду способ расчета скидки при наличии скидки по строке и многострочной (Расчеты с клиентами \ Параметры \ Цены \ Скидка) ?

Цитата:
Не надо меня тыкать носом в документацию.
Извините, больше не буду. Это же шутка была

Цитата:
Кстати, в конечной дате стоит тоже пустое значение, а следовательно "01.01.1900", так что у меня только одна текущая дата получается!
Если Вы имеет в виду то, что "сегодня" не должно попадать в период "с 1900.01.01 по 1900.01.01", попадает-попадает, и не только при поиске скидок. Довольно удобно, на мой взгляд
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.12.2005, 20:02   #15  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от AndyD
2 vadik
Добавление order by QuantityAmount принципиально ситуацию не изменит (это поле и так входит в индекс).
ситуация изменится, если
- какая-нибудь неугомонная личность отключит индексные хинты на уровне конфигурации
- она же закомментирует index hint или укажет в нем другой индекс
- она же изменит индекс, поменяв поля местами

на "а ты не лезь туда грязными руками" отвечу только, что не всем повезло работать с клиентами, пересчитывающими прайс в нескольких валютах каждый день и желающих хранить историю по прайсу "хотя бы" пару месяцев

а ORDER BY - он и в африке ORDER BY
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.12.2005, 20:03   #16  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от slava09
Так согласно findDisc, или согласно того что выгоднее клиенту?
Мне тут сказали, что в документации так и написано.
Написал же выше, что перепутал с ценовыми соглашениями, где как раз ищется минимальное по величине значение цены (т.е. выгодное клиенту) при прочих равных.
А механизм поиска по дате работает одинаково что для цен, что для скидок.
__________________
Андрей.
Старый 14.12.2005, 20:06   #17  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Цитата:
Сообщение от Vadik
Извините, больше не буду. Это же шутка была
Вы тоже меня звиняйте. Настроение никудышное совсем. Сорвался.

Насчет заботы о клиентах, это слова товарища Dron AKA andy. Он имел ввиду цены.

По поводу интервалов: конечно можно представить самый простой случай когда текущая дата попадает в несколько интервалов заданных в прайсах (даже без пустых дат). И можно сказать, что Аксапта не имеет никакого предпочтения в их выборе.
Согласен, что ситуация когда нужно разбивать на несколько интервалов, чтобы добиться желаемого эффекта вполне нормальна, но достаточно хлопотна.
Старый 14.12.2005, 21:44   #18  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 vadik

Во-первых, против лома нет приема.

Во-вторых, QuantityAmount являетеся далеко не первым полем в индексе. Если строить сортировку только по нему, то предсказать, какая из скидок сработает будет весьма затруднительно - для этого придется проверять какая из записей создавалась ранее. По-моему, порядок сортировки должен быть такой

ORDER BY itemCode, accountCode, QuantityAmount, FromDate

В-третьих. Если есть желание и возможность изменять чтобы-то ни было - это ваше право. Но какое это имеет отношение к работе стандартного приложения? Или вы не согласны, что стандартная Axapta выбирает скидки именно так?

2 slava09
Цитата:
Конечно, для вас это очевидно, что пустая дата, это "01.01.1900", но для пользователя, это выглядит несколько иначе.
Извините, но Axapta'у не я писал. И что должно быть очевидно для пользователей - не мне решать. Я лишь описал почему так происходит. И не понимаю в чем провинился перед вами
__________________
Axapta v.3.0 sp5 kr2
Старый 14.12.2005, 22:19   #19  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от AndyD
Во-первых, против лома нет приема
Факт

Цитата:
Во-вторых, QuantityAmount являетеся далеко не первым полем в индексе. Если строить сортировку только по нему, то предсказать, какая из скидок сработает будет весьма затруднительно - для этого придется проверять какая из записей создавалась ранее. По-моему, порядок сортировки должен быть такой

ORDER BY itemCode, accountCode, QuantityAmount, FromDate
Все верно. Маленькое уточнение - сортировки по QuantityAmount достаточно, потому что все остальные поля уже "зажаты" в WHERE

P.S. А вообще - наличие скидок на несколько пересекающихся периодов при включенном "найти далее" (а поле по умолчанию включается при ручном вводе) позволяет обеспечить клиентам хорошую "халяву"

Причем сугубо штатными средствами
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.12.2005, 22:34   #20  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вдогонку.

index idx и index hint idx - это разные вещи и первое не отключишь конфигурационной утилитой.

Цитата:
Все верно. Маленькое уточнение - сортировки по QuantityAmount достаточно, потому что все остальные поля уже "зажаты" в WHERE
Точно! Стормозил

PS Точнее запутался А FromDate?
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 14.12.2005 в 22:42.
Теги
как правильно, скидка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Скидка - "Найти далее" AlexeyBP DAX: Функционал 13 11.08.2006 16:57
Скидка по оплате в предложении по оплате AlexeyBP DAX: Функционал 1 19.04.2006 10:57
Сопоставление выбранной датой Ann DAX: Функционал 4 17.05.2005 15:35
Ошибка при закрытии склада, при закрытии более ранней датой, чем пересчет Berkoff DAX: Функционал 2 25.10.2004 17:52
Скидка по строке и многострочная скидка efim DAX: Функционал 0 18.06.2003 16:32

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:44.