Хотфикс выше неправильный - при тестировании была обнаружена ошибка. Рабочий вариант исправления:
X++:
if (lastInvoiceId != transTable.invoiceId)
{
postCreditLedgerJournalLine();
// Unblock the customer
custUnblocker.unblockCustomer(transTable.custAccount);
select sum(grossAmount), sum(paymentAmount) from transTable2
group by store, businessDate, custAccount, currency, exchRate, invoiceId
where transTable2.statementId == statementTable.statementId
&& transTable2.invoiceId == transTable.invoiceId
&& transTable2.type != RetailTransactionType::Logoff
&& transTable2.type != RetailTransactionType::Logon
&& transTable2.type != RetailTransactionType::Payment
&& transTable2.type != RetailTransactionType::CustomerOrder
&& transTable2.type != RetailTransactionType::PendingSalesOrder
&& !transTable2.incomeExpenseAmount
&& !transTable2.salesInvoiceAmount
&& !transTable2.salesOrderAmount;
custTable = CustTable::find(transTable.custAccount);
if (custTable.InvoiceAccount)
{
invoiceAccount = custTable.InvoiceAccount;
}
else
{
invoiceAccount = custTable.AccountNum;
}
// <GEERU>
if (correspondenceEnabled)
{
offsetAccountNum = RetailStatementPaymentJournal::getNativeNonLedgerAccount(invoiceAccount, LedgerJournalACType::Cust);
}
// </GEERU>
totalRoundAmountCur = this.postRoundingDifference(transTable2
// <GEERU>
, LedgerJournalACType::Cust
, offsetAccountNum
// </GEERU>
);