In the real world, you may experience timeouts when emailing invoices in batch due to sending limits of Online Exchange. Namely, sending message rate limit is 30 messages per minute, which can easily be exceeded when emailing takes place in batch. To overcome this problem […]
Tag: Invoice (40)
Printing Invoice to Sales Order Attachments
You can use Docentric File print destination to output reports to Attachments of the underlying entity, i.e. the context record of the executing report. Unlike the built-in File print destination, when using Docentric you can output reports in batch, e.g. save them to Azure storage, […]
Some print management report destinations are not valid for batch processing
Some print management report destinations are not valid for batch processing warning occurs when posting and printing sales invoices in batch. In this article we will investigate this warning but let's first examine how posting and printing an invoice in batch differs when Print Management […]
Print Sales Invoice to printer from code
You can print an existing Sales invoice to a printer through the following code, no matter how the Print Management setup of Sales Invoice might look like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
public static void printSalesInvoiceToPrinter() { SalesInvoiceController salesInvoiceController; SalesInvoiceContract salesInvoiceContract; CustInvoiceJour custInvoiceJour; SalesInvoiceJournalPrint salesInvoiceJournalPrint; SRSPrintDestinationSettings srsPrintDestSettings; DocPrintDestSettingsPrinter printerPrintDestSettings; Args args = new Args(); select firstOnly custInvoiceJour where custInvoiceJour.SalesId != ''; args.record(custInvoiceJour); salesInvoiceController = new SalesInvoiceController(); // Set the SalesInvoice.Report as SSRS Report Design. salesInvoiceController.parmReportName( PrintMgmtDocType::construct(PrintMgmtDocumentType::SalesOrderInvoice).getDefaultReportFormat()); // Set the report data contract with parameters. salesInvoiceContract = salesInvoiceController.parmReportContract().parmRdpContract(); salesInvoiceContract.parmRecordId(custInvoiceJour.RecId); // Create print destination settings. srsPrintDestSettings = new SRSPrintDestinationSettings(); // Set the selected print destination to Docentric Printer print destination. srsPrintDestSettings.printMediumType(SRSPrintMediumType::Printer_DC); printerPrintDestSettings = DocPrintDestSettingsPrinter::constructWithDefaultPrinter(); srsPrintDestSettings.parmPrinterPrintDestSettings_DC(printerPrintDestSettings); // Set print destination settings. salesInvoiceController.parmReportContract().parmPrintSettings(srsPrintDestSettings); // Initalize SalesInvoiceJournalPrint class instance because there is no other way // NOT to use the Print Management setup. salesInvoiceJournalPrint = SalesInvoiceJournalPrint::construct(); salesInvoiceJournalPrint.parmPrintFormletter(NoYes::Yes); salesInvoiceJournalPrint.parmUsePrintManagement(false); salesInvoiceJournalPrint.parmUseUserDefinedDestinations(true); salesInvoiceJournalPrint.parmPrinterSettingsFormLetter( salesInvoiceController.parmReportContract().parmPrintSettings().pack()); args.caller(salesInvoiceJournalPrint); args.parmEnumType(enumNum(PrintCopyOriginal)); args.parmEnum(PrintCopyOriginal::Original); salesInvoiceController.parmArgs(args); salesInvoiceController.parmShowDialog(false); salesInvoiceController.startOperation(); } |
Print Sales Invoice to PDF file from code
You can print an existing Sales invoice to a PDF file named as SalesInvoice_<InvoiceId>.pdf through the following code, regardless of how the Print Management setup of Sales Invoice might look like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
public static void printSalesInvoiceToPdfFile() { SalesInvoiceController salesInvoiceController; SalesInvoiceContract salesInvoiceContract; CustInvoiceJour custInvoiceJour; SalesInvoiceJournalPrint salesInvoiceJournalPrint; SRSPrintDestinationSettings srsPrintDestSettings; DocPrintDestSettingsFile filePrintDestSettings; Args args = new Args(); select firstOnly custInvoiceJour where custInvoiceJour.SalesId != ''; args.record(custInvoiceJour); salesInvoiceController = new SalesInvoiceController(); // Set the SalesInvoice.Report as SSRS Report Design. salesInvoiceController.parmReportName( PrintMgmtDocType::construct(PrintMgmtDocumentType::SalesOrderInvoice).getDefaultReportFormat()); // Set the report data contract with parameters. salesInvoiceContract = salesInvoiceController.parmReportContract().parmRdpContract(); salesInvoiceContract.parmRecordId(custInvoiceJour.RecId); salesInvoiceContract.parmCountryRegionISOCode(SysCountryRegionCode::countryInfo()); // Create print destination settings. srsPrintDestSettings = new SRSPrintDestinationSettings(); // Set the selected print destination to Docentric File print destination. srsPrintDestSettings.printMediumType(SRSPrintMediumType::File_DC); filePrintDestSettings = new DocPrintDestSettingsFile(); srsPrintDestSettings.parmFilePrintDestSettings_DC(filePrintDestSettings); // Set the Docentric File print destination settings. // -- Name of the output file. filePrintDestSettings.parmOutputFilename(@'\\Shared\SalesInvoice_@FIELD_InvoiceId@.pdf'); // -- Output file format. filePrintDestSettings.parmOutputFileFormat(DocOutputFileFormat::PDF); // Set print destination settings. salesInvoiceController.parmReportContract().parmPrintSettings(srsPrintDestSettings); // Initalize SalesInvoiceJournalPrint class instance because there is no other way // NOT to use the Print Management setup. salesInvoiceJournalPrint = SalesInvoiceJournalPrint::construct(); salesInvoiceJournalPrint.parmPrintFormletter(NoYes::Yes); salesInvoiceJournalPrint.parmUsePrintManagement(false); salesInvoiceJournalPrint.parmUseUserDefinedDestinations(true); salesInvoiceJournalPrint.parmPrinterSettingsFormLetter( salesInvoiceController.parmReportContract().parmPrintSettings().pack()); args.caller(salesInvoiceJournalPrint); args.parmEnumType(enumNum(PrintCopyOriginal)); args.parmEnum(PrintCopyOriginal::Original); salesInvoiceController.parmArgs(args); salesInvoiceController.parmShowDialog(false); salesInvoiceController.startOperation(); } |