Ax2009 метод \Classes\FactureTransCreateCust_RU\calcAmounts()
X++:
FactureTrans_RU tmpTrans, tmpTransSec;
(...)
select sum(Qty),
sum(LineAmount),
sum(vat),
sum(Excise),
sum(TaxAmount),
sum(LineAmountMST),
sum(vatAmountMST),
sum(ExciseAmountMST),
sum(TaxAmountMST)
from tmpTrans
where tmpTrans.InvoiceId == custInvoiceTrans.InvoiceId &&
tmpTrans.InvoiceDate == custInvoiceTrans.InvoiceDate &&
tmpTrans.InvoiceLineNum == custInvoiceTrans.LineNum && // <-- ???
tmpTrans.NumberSequenceGroup == custInvoiceTrans.NumberSequenceGroup &&
tmpTrans.FactureLineType == FactureLineType_RU::InvoiceLine &&
tmpTrans.Module == FactureModule_RU::Cust;
Кто-нибудь может пояснить, в чем смысл использования для идентификации при поиске ранее созданных строк фактур порядкового номера строки LineNum, а не номер лота InventTransId?
Проблема в том, что у нас через заказы на продажу выписывают услуги. И при создании накладных пользователи любят давать одинаковые номера накладным в подобных операциях. Как следствие, имеем много накладных с одинаковыми номерами, содержащими всего одну строку. Иногда совпадают и даты накладных.
В результате, данный запрос находит строки фактур, относящихся к другим накладным и, как следствие, сумма и количество фактуры получается "произвольной". В общем случае, отличной от суммы накладной.
Это ошибка кода или так специально было задумано?