There is not currently a database transaction around the allocation/dispatch routine, we have found that if a process gets interrupted for any reason (Sage/Network/Terminal issues) the process is not rolled back and this leaves corruption in the database that is a major issue to fix. Currently the balance ledgers routine is not clever enough to sort out all of these issues across all of the tables in the database, especially around traceable stock. The amount of time spent in support for issues relating to this is enormous. Simply adding a transaction around this would save us 100's man hours each year.