13.11.2012, 14:07 | #1 |
Участник
|
Расчёт сумм при печати доп. листа книги продаж/покупок
Печатаем дополнительный лист книги продаж, содержащий исправления предыдущего месяца. В столбец "В том числе продажи, облагаемые налогом по ставке 18 процентов (5) сумма НДС(5б)" выводится завышенная сумма.
Запрос "Итоги" на форме книги продаж отображает коректные значения. Также в этом запросе видно, что присутствует не нулевое значение поля "Восстановление НДС > НДС 18% > Стоимость без НДС" При печати именно на эту величину не идёт указанное значение. Т.е. эта величина дважды учитывается при расчёте значении колонки 5б. Анализ кода показал, что в SalesBook_AddList_PrintExcel_RU.calcTotal(): X++: ... bookAmountsEngine.fetchTaxMap(); sumTotalAmount += bookAmountsEngine.getAmountInclVAT(); salesAmountExclVAT20 += bookAmountsEngine.getAmountVATStandard().amountLiableToVAT(); taxAmountVAT20 += bookAmountsEngine.getAmountVATStandard().taxAmountVAT(); salesAmountExclVAT20Tmp += bookAmountsEngine.getAmountVATStandard20().amountLiableToVAT(); taxAmountVAT20Tmp += bookAmountsEngine.getAmountVATStandard20().taxAmountVAT(); salesAmountExclVAT10 += bookAmountsEngine.getAmountVATReduced().amountLiableToVAT(); taxAmountVAT10 += bookAmountsEngine.getAmountVATReduced().taxAmountVAT(); ... Внутри этого метода происходит приращение значений переменных: X++: public BookStructSmallVATAmounts_RU getAmountVATStandard() { amountVATStandardDomestic.addAmounts2(amountVATStandardExport); amountVATStandardDomestic.addAmounts2(amountVATStandardRestored); return amountVATStandardDomestic; } Что это? Корявая реализация механизма отложенных вычислений? Подскажите у кого в приложении в каком состоянии присутствуют эти классы? Может в каком KB это уже пофикшено? |
|
|
За это сообщение автора поблагодарили: Pustik (2), iCloud (2). |
13.11.2012, 15:11 | #2 |
Enjoy!
|
Про какой RollUp речь идет? И какая АХ?
|
|
13.11.2012, 15:21 | #3 |
Участник
|
AX2009 RollUp восьмой ставлю. Может чего не поставилось?
|
|
13.11.2012, 19:44 | #4 |
Участник
|
возможно проблема в RU8. в Нём много проблем с расчётом налогов
DAX2009 SP1 RU8 Перестал правильно считаться НДС |
|
13.11.2012, 21:01 | #5 |
Участник
|
Замечательно, и опять суффикс _RU.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
14.11.2012, 09:25 | #6 |
Enjoy!
|
Поставилось скорей всего все верно.
Такие же мысли меня посещают. Сравню с RollUp6 пожалуй. *Сравнил. Ошибка не повторилась. Значит код смотреть буду. Последний раз редактировалось iCloud; 14.11.2012 в 09:28. Причина: * |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
14.11.2012, 10:40 | #7 |
Enjoy!
|
Я делал доработку кстати, вспомнил
Этот класс же используется для вывода Итогов в печатную форму Доп. листа. И я ему не поверил тоже! Заменил calcTotal() на calcTotalNew() ну и его вызов из printTotal(): X++: private void calcTotalNew() { SalesBook_Print_Excel_RU salesBook_Print_Excel_RU; SalesBookTable_RU salesBookTable_RU; ; salesBook_Print_Excel_RU = new SalesBook_Print_Excel_RU(); salesBook_Print_Excel_RU.parmBookId(correctedBookId); select firstOnly salesBookTable_RU where salesBookTable_RU.BookId == correctedBookId; salesBook_Print_Excel_RU.parmFromDate(salesBookTable_RU.LastUpdateDate); salesBook_Print_Excel_RU.parmToDate(salesBookTable_RU.ClosingDate); [sumTotalAmount, salesAmountExclVAT20, taxAmountVAT20, salesAmountExclVAT20Tmp, taxAmountVAT20Tmp, salesAmountExclVAT10, taxAmountVAT10, sumSalesAmountVAT0, sumAmountWithOutTaxes] = salesBook_Print_Excel_RU.calculateToAddList(); } X++: protected container calculateToAddList() { SalesBookTrans_RU salesBookTrans; PurchBookTrans_RU purchBookTrans; Query query; ; isOldBook = false; queryRun = new QueryRun(SalesBook_Print_RU::createDefaultQuery(bookId, null, fromDate, toDate)); //скопировал из initParmDefault() this.initBookDateNumDelimiter(); this.changeQueryRun(); queryRun.reset(); while (queryRun.next()) { salesBookTrans = queryRun.get(tablenum(SalesBookTrans_RU)); sumTotalAmount += salesBookTrans.AmountInclVAT; purchBookTrans = SalesBook_Print_RU::salesBookTrans2PurchBookTrans(salesBookTrans, isOldBook); if (salesBookTrans.TransType != SalesPurchBookTransType_RU::Prepayment && salesBookTrans.TransType != SalesPurchBookTransType_RU::PrepaymentStorno) { salesAmountExclVAT20 += SalesBook_Print_RU::isCreditNote(salesBookTrans, isOldBook) ? #AmountLiableToVAT20_Purch(purchBookTrans,0) : #AmountLiableToVAT20_Sales(salesBookTrans,0); salesAmountExclVAT20Tmp += SalesBook_Print_RU::isCreditNote(salesBookTrans, isOldBook) ? #AmountLiableToVAT20_Purch(purchBookTrans,1) : #AmountLiableToVAT20_Sales(salesBookTrans,1); salesAmountExclVAT10 += salesBookTrans.AmountLiableToVAT10; } taxAmountVAT20 += SalesBook_Print_RU::isCreditNote(salesBookTrans, isOldBook) ? #TaxAmountVAT20_Purch(purchBookTrans,0) : #TaxAmountVAT20_Sales(salesBookTrans,0); taxAmountVAT20Tmp += SalesBook_Print_RU::isCreditNote(salesBookTrans, isOldBook) ? #TaxAmountVAT20_Purch(purchBookTrans,1) : #TaxAmountVAT20_Sales(salesBookTrans,1); taxAmountVAT10 += salesBookTrans.TaxAmountVAT10; sumSalesAmountVAT0 += salesBookTrans.AmountLiableToVAT0; sumAmountWithOutTaxes += salesBookTrans.AmountNotLiableToVAT; } return [sumTotalAmount, salesAmountExclVAT20, taxAmountVAT20, salesAmountExclVAT20Tmp, taxAmountVAT20Tmp, salesAmountExclVAT10, taxAmountVAT10, sumSalesAmountVAT0, sumAmountWithOutTaxes]; } Последний раз редактировалось iCloud; 14.11.2012 в 12:36. |
|
15.11.2012, 12:57 | #8 |
Enjoy!
|
Прошу прощения, в методе calcTotalNew() заменить:
X++: select firstOnly salesBookTable_RU where salesBookTable_RU.BookId == correctedBookId; salesBook_Print_Excel_RU.parmFromDate(salesBookTable_RU.LastUpdateDate); salesBook_Print_Excel_RU.parmToDate(salesBookTable_RU.ClosingDate); X++: //select firstOnly salesBookTable_RU // where salesBookTable_RU.BookId == correctedBookId; salesBook_Print_Excel_RU.parmFromDate(fromDate); salesBook_Print_Excel_RU.parmToDate(toDate); |
|
Теги |
ax2009, ru8, баг, доп лист, локализация, ошибка, печатная форма, счет-фактура |
|
|