At present, Check-Out will create a new invoice if the current invoice is finalised.
If the Check-Out workflow is cancelled after the invoice as been finalised, a new invoice will be created when Check-Out is run again.
This can result in 0 invoices being finalised.
To avoid this:
do not create a new invoice if the current invoice is finalised. Display the finalised invoice, read-only
warn if there are unbilled charges
provide a New button to create a new invoice. When pressed, unbilled charges should be automatically applied