首页 文章

通过代码而不是自动化步骤添加报告菜单项

提问于
浏览
0

我试图通过代码而不是使用自动化步骤将报告添加到SO订单输入页面的“报告”菜单中 . 我使用的代码如下,但产生错误:错误CS0122:由于其保护级别错误CS0119:'PX,'PX.Objects.SO.SOOrderEntry.Report(PX.Data.PXAdapter,string)'无法访问 . Objects.SO.SOOrderEntry.Report(PX.Data.PXAdapter,string)'是'方法',在给定的上下文中无效

public SOOrderEntry_Extension()
 {
    Base.Report.AddMenuAction(sOAcknowledgementReport);
 }

public PXAction<SOOrder> sOAcknowledgementReport;
    [PXButton]
    [PXUIField(DisplayName = "SO Acknowledgement Report")]
    protected void SOAcknowledgementReport()
       {
          if (Base.Document.Current.OrderNbr != string.Empty)
        {
           throw newPXReportRequiredException(Base.Document.Current, "SO641010", string.Empty);
        }
      }

有没有人建议如何通过代码而不是使用自动化步骤将报告添加到报告菜单?

2 回答

  • 1

    我认为你可以覆盖Initialize()方法并在那里添加Report to report菜单 . 请参阅SOOrderEntry图表扩展下面的代码段:

    public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry>
    {
    
    
        public override void Initialize()
        {
            Base.report.AddMenuAction(sOAcknowledgementReport);
        }
    
    
        public PXAction<SOOrder> sOAcknowledgementReport;
        [PXButton]
        [PXUIField(DisplayName = "SO Acknowledgement Report")]
        protected void SOAcknowledgementReport()
        {
            if (Base.Document.Current.OrderNbr != string.Empty)
            {
               throw new PXException("Test");
            }
        }
    
    }
    
  • 0

    首先,您要在Initialize调用中执行菜单添加,并使用“report”vs“Report” .

    public override void Initialize()
    {
        base.Initialize();
        //Edit:  use report vs Report as HB_ACUMATICA mentioned
        Base.report.AddMenuAction(sOAcknowledgementReport);
    }
    

    其次,您需要通过扩展RowSelected将该按钮指示为已启用 . 我认为自动化功能会自动禁用按钮,因此必须使用启用按钮所需的任何条件来关闭按钮 .

    public virtual void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected del)
    {
        del?.Invoke(sender, e);
        sOAcknowledgementReport.SetEnabled(true);
    }
    

相关问题