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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.06.2009, 14:46   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Метод LineAmountInclTax() на custInvoiceTrans
Коллеги помогите разобраться :
Метод custInvoiceTrans.LineAmountInclTax()

X++:
display LineAmount lineAmountInclTax()
{
    return this.lineAmount + this.lineAmountTax;
}
Судя по названию должен возвращать сумму по строке с НДС.
Но реально поле lineAmountTax заполняется только в случае когда в шапке заказа при обработке была взведена галка InclTax т.е. это поле по смыслу содержит сумму НДС которая была включена в цену. Если цена не включает налог то lineAmountTax - нуль, и метод lineAmountInclTax() возвратит сумму без налога.

Мне кажется правильнее было бы написать так
X++:
display LineAmount lineAmountInclTax()
{
    return this.lineAmount + this.TaxAmount;
}
т.е. поле TaxAmount содержит сумму НДС по строке независимо от того включен налог в цену или нет.
(Правда для того чтобы система заполняла custInvoiceTrans.TaxAmount в настройках должна быть взведена TaxParameters.TaxSpecifyLine - "Налог по каждой строке фактуры" - а она, как правило, взведена)

P.S.
Описал все для Ax3SP5
В Ax2009 lineAmountInclTax() - не меняли. - Должно быть аналогичное поведение, но я не проверял.
Старый 04.06.2009, 15:25   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от Logger Посмотреть сообщение
Коллеги помогите разобраться :
Метод custInvoiceTrans.LineAmountInclTax()

X++:
display LineAmount lineAmountInclTax()
{
    return this.lineAmount + this.lineAmountTax;
}
Судя по названию должен возвращать сумму по строке с НДС.
...
По-моему субъективному мнению данный метод работает корректно, и должен возвращать сумму по строке с налогом включенным в цену. (поскольку метка edt - lineAmountTax - налог, включенный в цену)

P.S. По идее и в vendInvoiceTrans тоже нужно данный метод менять?
Старый 04.06.2009, 17:55   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
P.S. По идее и в vendInvoiceTrans тоже нужно данный метод менять?
Да там все аналогично.
Старый 04.06.2009, 17:57   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от SRF Посмотреть сообщение
По-моему субъективному мнению данный метод работает корректно, и должен возвращать сумму по строке с налогом включенным в цену. (поскольку метка edt - lineAmountTax - налог, включенный в цену)
Что же в таком случае он возвращает ?
Сумму с НДС если inclTax взведена и сумму без НДС если наоборот.

А смысл ? Не могу придумать разумного использования такой странной величины.
Старый 05.06.2009, 09:00   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от Logger Посмотреть сообщение
Что же в таком случае он возвращает ?
Сумму с НДС если inclTax взведена и сумму без НДС если наоборот.

А смысл ? Не могу придумать разумного использования такой странной величины.
Он возвращает сумму по строке накладной, которая определяется скидкой, ценой и налогом, включенным в стоимость, независимо включен налог в стоимость или нет. (извините за тавтологию)

Название метода
X++:
lineAmountInclTax
можно интерпретировать по разному, можно так, как описали Вы (сумма по строке с учетом налога по строке, правильно?), либо так - сумма по строке с учетом налога, включенного в сумму(грубо говоря - сумму по строке накладной)(так и реализовано). Как говорится - "На вкус и цвет товарищей нет"

Теперь, если взглянуть на использование данного метода : РсК\Запросы\Накладная\Журнал\Строки - поле сумма.
А теперь представьте картину : 6 ед. продукции, за 1 ед. стоимость 2 рубля, а в сумме стоит 13,8 рублей, а не 12(что логичнее, неправда ли?). И потом иди докажи клиенту, что это налог, а не баг в системе, и что напечаталось все правильно.

P.S. В крайнем случае - изменить название метода или создать свой раз уж нужно видеть сумму с налогом, независимо от того включен он в стоимоть или нет.

Последний раз редактировалось SRF; 05.06.2009 в 09:07. Причина: уточнение
За это сообщение автора поблагодарили: belugin (3).
Старый 05.06.2009, 12:11   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Честно говоря не понял ваш пример.

А вообще суть претензии в том, что название метода сбивает с толку. Запутывает.
Люди обычно привыкли воспринимать либо чистую сумму без налогов, либо сумму со всеми налогами. Это практика жизни. Потому что сумме со всеми налогами соответствует выручка и дебиторка, поэтому она всех и интересует. А отображать в системе сумму которая в одном случае означает одно, в другом другое можно конечно, но по-моему пользы мало. Лишняя путаница в головах пользователей.

Плюс при таком подходе lineAmountTax непонятно что отображает. Для чего знать налог включенный в цену ? Как правило, интересен просто налог. Пользователь хочет знать какой НДС по строке. Не важно включен он в цену или нет. Кого может интересовать величина в одних случаях равная НДС а в других неравная ?

Плюс немного программистское
Посмотрите на методы
\Data Dictionary\Maps\SalesPurchLine\Methods\calcGrossAmountExclTax
\Data Dictionary\Maps\SalesPurchLine\Methods\calcLineAmountExclTax
\Data Dictionary\Tables\SalesLine\Methods\amountExclTax
\Data Dictionary\Tables\SalesLine\Methods\calcGrossAmountExclTax
\Data Dictionary\Tables\SalesLine\Methods\calcLineAmountExclTax
\Data Dictionary\Tables\SalesLine\Methods\lineAmountMSTExclTax
\Classes\Tax\baseAmountExclTax

в этих методах дается сумма без налогов - везде в названии есть ExclTax
В соответствие с правилами наименования полей и методов определенных в BestPractice, логично предположить что метод lineAmountInclTax() вернет сумму с налогом. Особенно если заглянуть в код и увидеть что там идет сумма полей.

Ан нет! Подстава в том что поле с наименованием lineAmountTax не обязательно содержит НДС ! (В то время как custInvoiceTrans.LineAmount всегда содержит сумму без НДС.)

В общем, видишь метод или поле - не верь глазам своим! Все перепроверяй!

P.S.
Если я параноик, то это не значит что за вами не следят !
За это сообщение автора поблагодарили: Кирен (1), leva (1), gl00mie (7).
Старый 05.07.2017, 09:31   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
lineAmountInclTax еще возвращает лажу если при обработке была коррекция налога.
Причина в том что коррекция не попадает в поле lineAmountTax ( но попадает в поле TaxAmount)
Поэтому для товарных накладных (по заказу) правильнее было бы
X++:
display LineAmount lineAmountInclTax()
{
    return this.lineAmount + this.TaxAmount;
}
Но это для накладных по заказу.
Если накладная на услуги (создана по CustInvoiceTable или LedgerJournalTrans) то TaxAmount тоже может не подойти. Но там зато другие поля есть
За это сообщение автора поблагодарили: mazzy (2).
Теги
ax2009, ax3.0, tax, налоги

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как вызвать метод для поля в FormDataSource? Maxim Gorbunov DAX: Программирование 3 08.05.2007 11:28
Дисплей метод таблицы который вызывается из ГРИДА 3oppo DAX: Программирование 10 23.05.2006 06:47
display метод с параметром Андре DAX: Программирование 5 11.01.2006 19:04
Как вызвать метод на COMVariant? Andronov DAX: Программирование 2 06.08.2003 08:29
Передача массива VARIANTов в Automation метод Maximin DAX: Программирование 0 09.10.2002 19:31

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

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

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