Recently I extended the credit limit functionality in Dynamics AX 2012 for a customer. In developing the changes I did quite a bit of research on the existing classes and decided to document them here. Given that, here are the important pieces of credit limits in AX:
1. The CustParameters table and the CustParameters form define and persist what credit limits can be applied to. In AX the options are free text invoices and sales orders. The customer I was working for wanted the functionality expanded so credit limits were also verified on sales quotations.
2. The class CustCreditLimit is the base class for credit limit functionality. The class is extended by the two types of documents credit limits can be checked on free text invoices and sales orders.
-The extension classes are CustCreditLimit_CustInvoiceTable, CustCreditLimit_SalesTable and CustCreditLimit_SalesParmTable. The SalesParmTable accounts for sales orders that have been partially delivered.
-The construct method on CustCreditLimit instantiates one of the extending classes.
-The initQuery method defines the query used to retrieve open sales orders so it is arguably the most important method. The method is called by the balanceEstimate and calculateBalance methods in the CustCreditLimit class when calculating the current open balance of sales orders is for a customer.
3. The SalesTable table has three important pieces. The method checkAgainstCreditLimit instantiates the CustCreditLimit class, passing in the current sales order and runs the credit limit check. The update and validateWriteServer methods on SalesTable call the checkAgainstCreditLimit method. When a user enters a sales order for a customer that has a credit limit and the sales order goes beyond their credit limit, the validateWriterServer method is called when the sales order is saved. It fires up the credit check and the CustCreditLimit class throws the message to the infolog that says what the customer’s open balance is, and how much they’ve exceeded their limit by.
4. Credit limits are displayed on the customer, on sales orders and on free text invoices. For example, in AX go to Accounts Receivable > Common > Customers > All customers and select a customer. Click the Balance button in the ribbon at the top of the form, and in the form that opens will be a Credit limit and a Credit remaining amount. The Credit limit value is how much the customer can spend. The Credit remaining is how much they have left out of that credit limit. The same kind of values are displayed on a sales order and a free text invoice. When these totals/balances forms are opened they call into the CustCreditLimit class to retrieve the totals, so they use the same functionality that is used when the a sales order is entered and exceeds the credit limit.