For Prides (NAV) we have developed a more robust inventory allocation system where certain users can allocate current and future inventory, separate from what is entered on sales orders / invoices. It allows, for example, open blanket orders to have inventory allocated to them before being converted to a sales order. Start and end dates can be used to allocate only within a certain period of time. New sales orders can only be pulled from inventory that is unallocated. The allocation system also takes into account purchase orders, transfer orders and assembly orders.
It can allow for inventory reservation within a company as opposed to a first in, first out type of rule with respect to sales orders entered. The calculation has sources of inventory "supply" and "demand" which can be tweaked for individual companies.