Since youyour UI doesn'tdoes not work, and your users doesn'tdoes not understand the generation - you need to automate the process. If there is an existing invoice, the pdf-file needs to be deleted from the folder as soon as something is changed on the order, then recreated as soon as the users prints it again.
Usually you don't send the invoice before the products have been shipped, and you use that picking list as reference of what was actually sent. There are cases where you can't pick the complete order, and need to make a partial delivery. In that case you could send an invoice of the shipped goods.
I think you need to redo the whole order process and automate the invoice process making it impossible to invoice wrong. What is shipped is invoiced.