Assume the following scenario:
Question here is: how NAV determines what is the purchase considered to create reservation against? Is costing method relevant here?
First of all, let me explain you what is the role of the costing method. This defines how the cost flows through inventory postings. From this perspective, costing method only applies to ILEs. There wouldn't be any reason to consider an order (ie. purchase, sales) from a costing perspective: we are not sure that the order would finally be brought into stock since it can be cancelled. Also, ILE applications are created while posting the order (receipt, invoice). Thus, do not expect that costing method applies to orders ... unless they are bring into stock which mean it would apply ILE created following costing method.
Based on the above parragraph, order reservation should not be constrained by costing method. Costing is only relevant for ILE application. Reserving an order does not mean an ILE would be created.
Before going to the above specific scenario, the explanation I detailed above is just a standard business process. This is about what NAV is doing. This is about what a generic business process expect about what costing applies to and what reservations are constrained by.
Now, our scenario. What NAV is doing (yes, NAV logic) is to reserve against the purchase with closest due date. Thus, it would reserve the sales order against the purchase on the 15th since this is the purchase with the closest receipt to the demand date. The idea on this logic is to reduce carryng cost. If NAV reserves against the first purchase order, it will increase the carrying costs and cost reduction is one of the premises in SCM philosophy.
Most of the Partners believe that it should be reserved against the first one since there could other sales being created, let's say, for Dec 15th. In this case, the first purchase would be reserved against the second sales while the second purchase against the first sales. That s a mess. I agree. But, if you manually create the orders, why would you choose automatic reservations? If you manually create the orders, you are the one who was the logic about how those orders being created and what should be the most meaningful reservation. From a NAV perspective, the above scenario should result in reserving the sales with the second purchase order (again, reducing carrying cost) and that first purchase should be cancelled.
In any case, if you still consider this logic should be changed, code where this logic is implemented can be found in CU99000845, function AutoReserveOneLine:
IF Positive THEN BEGIN
Search := '+';
NextStep := -1;
IF Item."Costing Method" = Item."Costing Method"::LIFO THEN BEGIN
InvSearch := '+';
InvNextStep := -1;
ND ELSE BEGIN
InvSearch := '-';
InvNextStep := 1;END;
END ELSE BEGINSearch := '-';NextStep := 1;InvSearch := '-';InvNextStep := 1;
In here, it defines the string (‘+’ or ‘-‘) which will later be used with the FIND clause and will determine if the record retrieved is the first one (first purchase order) or the last.