当我使用Acumatica代码在销售订单屏幕上单击自定义操作时,如何附加报告PDF / Excel文件

问题描述 投票:2回答:1

[我们有一个要求是在销售订单屏幕上创建新操作,当我们单击该自定义操作时,我们正在打开电子邮件活动屏幕以在该电子邮件中发送电子邮件,我们希望在不单击报告操作的情况下附加报告PDF / Excel文件按钮,但是当我们通过代码单击自定义操作按钮时,它应该会发生。

当我们单击自定义操作按钮而不是报告操作时,是否可以附加报告文件。

提前感谢。

acumatica acumatica-kb
1个回答
0
投票

在您的自定义操作中可以使用PXReportToolsPX.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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.