Acumatica-将报告下拉列表添加到Opportunity屏幕

Acumatica-将报告下拉列表添加到Opportunity屏幕,acumatica,Acumatica,希望这将是一个简单的问题 我已经为Acumatica Opportunity屏幕创建了一个新报告,我想将其添加到屏幕本身。我之前已经在现有的REPORTS下拉列表中添加了一个新的报告,但是我没有充分使用自动化步骤来创建报告下拉列表(如果它还不存在的话) 是否有人可以提供说明或向我指出适当文档的方向 编辑:所以,我遇到的是,Opportunity没有可添加的报告部分;我必须创造它 到目前为止,我在屏幕上看到了一个报告按钮,但它不是下拉菜单,似乎没有任何作用 public class Opportu

希望这将是一个简单的问题

我已经为Acumatica Opportunity屏幕创建了一个新报告,我想将其添加到屏幕本身。我之前已经在现有的REPORTS下拉列表中添加了一个新的报告,但是我没有充分使用自动化步骤来创建报告下拉列表(如果它还不存在的话)

是否有人可以提供说明或向我指出适当文档的方向


编辑:所以,我遇到的是,Opportunity没有可添加的报告部分;我必须创造它

到目前为止,我在屏幕上看到了一个报告按钮,但它不是下拉菜单,似乎没有任何作用

public class OpportunityMaint_Extension : PXGraphExtension<OpportunityMaint>
{
    #region Event Handlers

    #endregion

    #region Actions

    public PXAction<CROpportunity> report;
    [PXUIField(DisplayName = "Reports", MapEnableRights = PXCacheRights.Select)]
    [PXButton(SpecialType = PXSpecialButtonType.Report)]
    protected virtual IEnumerable Report(PXAdapter adapter,
        [PXString(8, InputMask = "CC.CC.CC.CC")]
        [PXStringList(new string[] { "IOCR6410" }, new string[] { "Quote" })]
        string reportID)
    {
        List<CROpportunity> list = adapter.Get<CROpportunity>().ToList();
        if (!String.IsNullOrEmpty(reportID))
        {
            Base.Save.Press();
            int i = 0;
            Dictionary<string, string> parameters = new Dictionary<string, string>();

            foreach (CROpportunity opp in list)
            {                   
                if (reportID == "IOCR6410")
                {
                    parameters["CROpportunity.OpportunityID" + i.ToString()] = opp.OpportunityID;                      
                }
                i++;
            }
            if (i > 0)
            {
                throw new PXReportRequiredException(parameters, reportID, string.Format("Report {0}", reportID));                  
            }
        }
        return list;
    }

    #endregion
}

对于这种类型的更改,最好不要在自动化步骤中进行更改,而是遵循中建议的方法

下面是代码片段的稍微更新版本,这将导致以下结果:


所以,我遇到的是,Opportunity没有一个报告部分可以添加;我必须创造它。编辑了原始问题。June,你能检查一下我上面更新的答案吗?
public class OpportunityMaint_Extension : PXGraphExtension<OpportunityMaint>
{
    public override void Initialize()
    {
        Report.AddMenuAction(QuoteReport);
        Report.MenuAutoOpen = true;
    }

    public PXAction<CROpportunity> Report;
    [PXButton]
    [PXUIField(DisplayName = "Reports", MapEnableRights = PXCacheRights.Select)]
    protected void report()
    { }

    public PXAction<CROpportunity> QuoteReport;
    [PXButton]
    [PXUIField(DisplayName = "Quote", MapEnableRights = PXCacheRights.Select)]
    protected IEnumerable quoteReport(PXAdapter adapter)
    {
        var reportID = "IOCR6410";
        List<CROpportunity> list = adapter.Get<CROpportunity>().ToList();
        Base.Save.Press();
        int i = 0;
        Dictionary<string, string> parameters = new Dictionary<string, string>();

        foreach (CROpportunity opp in list)
        {
            parameters["CROpportunity.OpportunityID" + i.ToString()] = opp.OpportunityID;
            i++;
        }
        if (i > 0)
        {
            throw new PXReportRequiredException(parameters, reportID, string.Format("Report {0}", reportID));
        }
        return list;
    }
}