06.01.2011, 20:16 | #1 |
Участник
|
Dynamics AX Sustained Engineering: POS Transaction with Sales Order that nets to $0.00 posting failure in statement
Источник: http://blogs.technet.com/b/dynamicsa...statement.aspx
============== AX Retail R1: POS Transaction with Sales Order that nets to $0.00 posting failure in statement Problem: When a POS transaction contains a payment against a Sales Order and the net amount of the transaction is $0.00, the statement that contains the transaction will fail to post in Dynamics AX. Reproducing the Error: 1. In AX Headquarters, create a Sales Order for a customer that contains one item for ($100). 2. In the POS, add this sales order to a transaction for the customer. 3. In the same POS transaction, add a Return item for the same price. Make sure that the “balance” of the transaction is $0.00 (customer owes no money). 4. Use the “Exact” button to finalize the transaction. 5. In AX Headquarters, run a P-job to pull the transaction into AX. 6. In AX Headquarters, create a new statement and use a date interval that will include the transaction you created. 7. Attempt to post the statement. Result: The posting fails with an error: “Transactions on voucher xxx do not balance” Resolution: This issue is scheduled for resolution in R2 of Dynamics AX for Retail. To address the issue in R1, make the following code changes to these two methods: \Classes\RBOStatementPost::postToCustomer() \Classes\RBOStatementPost::postAggregatedCustomerVouchers(): Change 1: Move the “sCurrency…” line from inside the “if” and “while” block. Old: if (transactionPaymentTrans.AmountTendered) totalAmountPaid += transactionPaymentTrans.AmountTendered; else totalAmountPaid += (transactionPaymentTrans.AmountCur * transactionPaymentTrans.ExchRate) / 100; sCurrency = storeTable.Currency; } } select sum(AmountCur) New: if (transactionPaymentTrans.AmountTendered) totalAmountPaid += transactionPaymentTrans.AmountTendered; else totalAmountPaid += (transactionPaymentTrans.AmountCur * transactionPaymentTrans.ExchRate) / 100; } } sCurrency = storeTable.Currency; select sum(AmountCur) Change 2: Change the following line. Old: if (totalAmountPaid ) New: if ((-totalAmountPaid + tTransactionOrderInvoiceTrans.AmountCur) != 0) Источник: http://blogs.technet.com/b/dynamicsa...statement.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|