It was a long time ago when Microsoft announced that for D365FO environments on-premises no viewer for SSRS reports would be available – ever. Docentric addressed this shortcoming by introducing an embedded PDF viewer that works in both on-premises and cloud environments. To be honest, […]
Tag: PDF (13)
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(); } |