Microsoft Dynamics AX calculates the available-to-promise (ATP) quantity based on the "cumulative ATP with look-ahead" method. The main advantage to this method of calculating ATP is that it can handle instances when the sum of issues between receipts is bigger than the latest receipt, that is, when it is necessary to use a quantity from an earlier receipt to meet a requirement. By including all of the issues until the cumulative quantity to receive is bigger than the cumulative quantity to issue, the ATP quantity in an earlier period considers the need to use some of that quantity in a later period.
The ATP quantity is the uncommitted inventory balance in the first period and is normally calculated for each period in which a receipt is scheduled. The program calculates the ATP period in days, and calculates the current date as the first date for the ATP quantity. In the first period, ATP includes on-hand inventory less customer orders that are due and overdue.
Microsoft Dynamics AX calculates the ATP using the following formula:
ATP = ATP for the previous period + the receipts for the current period - the issues for the current period - the net issue quantity for each future period until the period when the sum of receipts for all future periods, up to and including the future period, is greater than the sum of issues, up to and including the future period.
When there are no more issues or receipts to consider, the ATP quantity for the following dates is the same as the latest calculated ATP quantity.
If all of the dimensions used for an item are not given when the ATP check is done, they might still be specified on the issue and receipts. In this case, in the ATP calculation, the receipts and issues must be aggregated to the existing dimensions, to reduce the number of receipt and issue lines used in the ATP calculation.
The ATP quantity shown is always > = 0. If the calculation returns a negative ATP quantity (for example, if a larger quantity than the available quantity has been promised earlier), the program automatically sets the quantity to 0.