
Hello all,
I have an issue which I was trying to solve on saveral ways but unfortunetly nothing works.
Objective here is to export pro forma invoice to pdf file from code (not to use a standard printing process). Let's say that I want to create a button to make such export.
I tried to use is code which seems to work but nothing happen:
SalesTable salesTable;
PrintJobSettings printJobSettings;
SalesFormLetter formLetter;
select firstOnly salesTable
where salesTable.SalesId == 'YOUR_SALES_ID';
formLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
printJobSettings = new PrintJobSettings(formLetter.printerSettingsFormletter());
printJobSettings.setTarget(PrintMedium::File);
printJobSettings.format(PrintFormat::PDF);
printJobSettings.fileName(@'C:\Temp\proforma_invoice.pdf');
formLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
formLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());
formLetter.update(salesTable,
systemDateGet(),
SalesUpdate::All,
AccountOrder::None,
NoYes::Yes,
NoYes::Yes);
Version: AX 2012 R3
Please help!
Hi,
i store the pdf to the print archive and then get the pdf as binary buffer or bin container from the docuref.
public FormLetterToPrintArchiveResponse saveInvoiceFormLetterToPrintArchive(SalesId _salesId, SalesUpdate _specQty, boolean _proforma)
{
FormLetterToPrintArchiveResponse ret = new FormLetterToPrintArchiveResponse();
SalesFormLetter salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
SalesParmLine parmLine;
SalesLine salesline;
SalesTable localSalesTable;
SRSPrintDestinationSettings printerSettings = new SRSPrintDestinationSettings();
guid uid = newGuid();
str fn_noext = guid2Str(uid);
Filename fn = strFmt("%1.pdf", fn_noext);
localSalesTable = SalesTable::find(_salesId);
SRSPrintArchiveContract ac = new SRSPrintArchiveContract(SRSReportFileFormat::PDF);
printerSettings.parmSRSPrintArchiveContract(ac);
printerSettings.printMediumType(SRSPrintMediumType::Archive);
printerSettings.fileFormat(SRSReportFileFormat::PDF);
printerSettings.overwriteFile(true);
printerSettings.fileName(fn);
salesFormLetter.updatePrinterSettingsFormLetter(printerSettings.pack());
salesFormLetter.update(localSalesTable, systemDateGet(), _specQty, AccountOrder::None, _proforma, true, false);
DocuRef docuRef;
select firstonly docuRef
where docuRef.RefTableId == tableNum(PrintJobHeader)
&& docuRef.Name == fn_noext
&& docuRef.ActualCompanyId == curExt();
ret.parmDocuRef(docuRef);
ret.parmFileName(fn);
ret.parmFileNameWithoutExtension(fn_noext);
ret.parmPrinJobHeaderRecId(docuRef.RefRecId);
return ret;
}