|
04.06.2009, 14:46 | #1 |
Участник
|
Метод 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; } (Правда для того чтобы система заполняла custInvoiceTrans.TaxAmount в настройках должна быть взведена TaxParameters.TaxSpecifyLine - "Налог по каждой строке фактуры" - а она, как правило, взведена) P.S. Описал все для Ax3SP5 В Ax2009 lineAmountInclTax() - не меняли. - Должно быть аналогичное поведение, но я не проверял. |
|
04.06.2009, 15:25 | #2 |
Участник
|
Цитата:
P.S. По идее и в vendInvoiceTrans тоже нужно данный метод менять? |
|
04.06.2009, 17:57 | #3 |
Участник
|
Цитата:
Сумму с НДС если inclTax взведена и сумму без НДС если наоборот. А смысл ? Не могу придумать разумного использования такой странной величины. |
|
05.06.2009, 09:00 | #4 |
Участник
|
Цитата:
Название метода X++: lineAmountInclTax Теперь, если взглянуть на использование данного метода : РсК\Запросы\Накладная\Журнал\Строки - поле сумма. А теперь представьте картину : 6 ед. продукции, за 1 ед. стоимость 2 рубля, а в сумме стоит 13,8 рублей, а не 12(что логичнее, неправда ли?). И потом иди докажи клиенту, что это налог, а не баг в системе, и что напечаталось все правильно. P.S. В крайнем случае - изменить название метода или создать свой раз уж нужно видеть сумму с налогом, независимо от того включен он в стоимоть или нет. Последний раз редактировалось SRF; 05.06.2009 в 09:07. Причина: уточнение |
|
|
За это сообщение автора поблагодарили: belugin (3). |
04.06.2009, 17:55 | #5 |
Участник
|
Цитата:
P.S. По идее и в vendInvoiceTrans тоже нужно данный метод менять?
|
|
05.06.2009, 12:11 | #6 |
Участник
|
Честно говоря не понял ваш пример.
А вообще суть претензии в том, что название метода сбивает с толку. Запутывает. Люди обычно привыкли воспринимать либо чистую сумму без налогов, либо сумму со всеми налогами. Это практика жизни. Потому что сумме со всеми налогами соответствует выручка и дебиторка, поэтому она всех и интересует. А отображать в системе сумму которая в одном случае означает одно, в другом другое можно конечно, но по-моему пользы мало. Лишняя путаница в головах пользователей. Плюс при таком подходе 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 |
Участник
|
lineAmountInclTax еще возвращает лажу если при обработке была коррекция налога.
Причина в том что коррекция не попадает в поле lineAmountTax ( но попадает в поле TaxAmount) Поэтому для товарных накладных (по заказу) правильнее было бы X++: display LineAmount lineAmountInclTax() { return this.lineAmount + this.TaxAmount; } Если накладная на услуги (создана по CustInvoiceTable или LedgerJournalTrans) то TaxAmount тоже может не подойти. Но там зато другие поля есть |
|
|
За это сообщение автора поблагодарили: mazzy (2). |