The issue is occurring because Sales Orders, to be invoiced, are retrieved based on "ParmId" from the CustInvoiceJour table and one "ParmId" is maintained by a Batch Job.
Fix is to add a condition based on ‘PrintedOriginals’, while building the Journal List for Invoices. ‘PrintedOriginals’ is the field on CustInvoiceJour table, which indicates the count of invoice printed
Note: This recommendation is for invoices only. Similar issue can exist for confirmations/picking list/packing slip documents.
This fix is applied in \Classes\SalesFormLetterEndMultiThread\method\buildJournalList
while select custInvoiceJour
where custInvoiceJour.ParmId == updateParmId
&& !custInvoiceJour.PrintedOriginals //Condition added
If the print medium is PrintArchive, following code changes need to be included in \Reports\SalesInvoice\Methods\fetch Line
If (salesFormLetterReport.getCurrentPrintSetting().parmType() == PrintMgmtDocInstanceType::Original &&
(element.printJobSettings().getTarget() == PrintMedium::Printer ||
element.printJobSettings().getTarget() == PrintMedium::PrintArchive)) //Condition added