31.07.2015, 19:06 | #1 |
Талантливый разгвоздяй
|
AX 2012 R3: Ошибка разноски ошибок округления по журналу операций
AX 2012 R3 CU8 (на R2 баг отсутствует).
В AX 2012 R3 при разноске журнала операций в модуле "Розница" (statement) при разноске ошибок округления при включенной корреспонденции возникает ошибка (точный текст не помню, но что-то вроде "Счет клиента не указан"):
Последний раз редактировалось Kabardian; 31.07.2015 в 19:08. |
|
02.08.2015, 13:16 | #2 |
Талантливый разгвоздяй
|
Забыл написать очевидный хотфикс - нужно переместить кусок кода из п. 1 выше п. 2 (аналогично тому, как это было в R2):
X++: // <GEERU> if (correspondenceEnabled) { offsetAccountNum = RetailStatementPaymentJournal::getNativeNonLedgerAccount(transTable.custAccount, LedgerJournalACType::Cust); } // </GEERU> 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 && transTable.type != RetailTransactionType::CustomerOrder && !transTable2.incomeExpenseAmount && !transTable2.salesInvoiceAmount && !transTable2.salesOrderAmount; totalRoundAmountCur = this.postRoundingDifference(transTable2 // <GEERU> , LedgerJournalACType::Cust , offsetAccountNum // </GEERU> ); |
|
03.08.2015, 18:43 | #3 |
Талантливый разгвоздяй
|
Хотфикс выше неправильный - при тестировании была обнаружена ошибка. Рабочий вариант исправления:
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> ); |
|
|
|