0
votes

I am trying to have a print invoice Action on my new process screen which points to new custom report taking Customer Ref Nbr as a parameter. Any help on how to start with this?

1

1 Answers

1
votes

In Acumatica redirection to another page (points to new custom report) is done by throwing redirection exceptions. For redirecting to a report page the exception you should use is 'PXReportRequiredException'.

Code for launching your custom report with parameter:

    public PXAction<Customer> printInvoice;

    [PXUIField(DisplayName = "Print Invoice", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
    public virtual IEnumerable PrintInvoice(PXAdapter adapter)
    {
        Customer customer = [fetch desired customer record here];

        if (customer != null && customer.RefNbr != null)
        {
            // Add your report parameters to a Dictionary<string, string> collection.
            // The dictionary key is the parameter name as shown in the report editor.
            // The dictionary value is the value you assign to that parameter.
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            parameters["RefNbr"] = customer.RefNbr;

            // Provide your custom report ReportID
            string reportID = "AR641000";

            // Provide a title name for your report page
            string reportName = "Customer Invoice"

            // Redirect to report page by throwing a PXReportRequiredException object 
            throw new PXReportRequiredException(parameters, reportID, reportName);
        }

        return adapter.Get();
    }

You can look up the parameter names in the Parameters tab of the Schema Builder dialog of Acumatica Report Designer: enter image description here