[我们有一个要求是在销售订单屏幕上创建新操作,当我们单击该自定义操作时,我们正在打开电子邮件活动屏幕以在该电子邮件中发送电子邮件,我们希望在不单击报告操作的情况下附加报告PDF / Excel文件按钮,但是当我们通过代码单击自定义操作按钮时,它应该会发生。
当我们单击自定义操作按钮而不是报告操作时,是否可以附加报告文件。
提前感谢。
在您的自定义操作中可以使用PXReportTools
和PX.SM.FileInfo
。正如Dmitrii Naumov在注释中指出的那样,the method posted by Joshua Van Hoesen这样做,您只需要设置所需的报告并设置期望的参数即可。
这是发现此问题的任何人的必需代码:
public class ARInvoiceEntryExtension : PXGraphExtension<ARInvoiceEntry>
{
public PXAction<ARInvoice> attachReport;
[PXUIField(DisplayName = "Attach Report")]
[PXButton]
public virtual IEnumerable AttachReport(PXAdapter adapter)
{
//Report Paramenters
Dictionary<String, String> parameters = new Dictionary<String, String>();
parameters["ARInvoice.DocType"] = Base.Document.Current.DocType;
parameters["ARInvoice.RefNbr"] = Base.Document.Current.RefNbr;
//Report Processing
PX.Reports.Controls.Report _report = PXReportTools.LoadReport("AR641000", null);
PXReportTools.InitReportParameters(_report, parameters,
SettingsProvider.Instance.Default);
ReportNode reportNode = ReportProcessor.ProcessReport(_report);
//Generation PDF
byte[] data = PX.Reports.Mail.Message.GenerateReport(reportNode,
ReportProcessor.FilterPdf).First();
PX.SM.FileInfo file = new PX.SM.FileInfo(reportNode.ExportFileName + ".pdf", null, data);
UploadFileMaintenance graph = new UploadFileMaintenance();
graph.SaveFile(file);
PXNoteAttribute.AttachFile(Base.Document.Cache, Base.Document.Current, file);
return adapter.Get();
}
}