Assume that you print the invoice in two work stations in parallel, one in Accounting department and the other in warehouse for the driver. If it is done in the same time, then one of the report is empty.
This issue is fixed by capturing the CratedTransactionId of salesinvoiceHeaderFootertmp table in classes\SalesInvoiceController\preRunModifyContract() method and then passed down to
SalesInvoiceDP.useExistingReportData(). Here we can select the temp table data by filtering with CratedTransactionId and jourRecId.