Hi, Cogswell.
In my opinion, the safest, reliable solution is to use a scripted SET FIELD from the invoice file.
Set Field "Inventory::New Bal", "Inventory::Curr Bal" - "Quantity"
.
.
Set Field "Inventory::Curr Bal", "Inventory::New Bal"
The reason for the gap is that the second script step sets the thing in concrete. Up to then you can cope with changes in the Invoice and also cover 'out of stock' situations.
Alternatively, you could leave it until the user accepts the invoice but then you can't do much in the way of editing without being extremely annoying to the user.
HTH Cheers,
Paul J.