Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Acumatica 在任何屏幕上显示GI in选项卡_Acumatica_Acumatica Kb - Fatal编程技术网

Acumatica 在任何屏幕上显示GI in选项卡

Acumatica 在任何屏幕上显示GI in选项卡,acumatica,acumatica-kb,Acumatica,Acumatica Kb,我想在任何屏幕的某个选项卡上显示GI 例如,我希望在SO屏幕上的新选项卡上显示OrderMargin的新自定义GI,该选项卡将仅显示特定订单的订单保证金 OrderMargin是一种简单的GI,具有SOOrder、SOLine和InventoryItem表联接,并且很少有列需要使用边距计算的列 有人能提出建议吗?假设您创建了一个名为SalesOrderMargin的GI,其中包含两个隐藏参数: 要将此GI嵌入到“销售订单”页面,您应遵循以下步骤: 为SOOrder声明新的未绑定字段,以返回Sa

我想在任何屏幕的某个选项卡上显示GI

例如,我希望在SO屏幕上的新选项卡上显示OrderMargin的新自定义GI,该选项卡将仅显示特定订单的订单保证金

OrderMargin是一种简单的GI,具有SOOrder、SOLine和InventoryItem表联接,并且很少有列需要使用边距计算的列


有人能提出建议吗?

假设您创建了一个名为SalesOrderMargin的GI,其中包含两个隐藏参数:

要将此GI嵌入到“销售订单”页面,您应遵循以下步骤:

  • 为SOOrder声明新的未绑定字段,以返回SalesOrderMargin GI的绝对URL:

    public class SOOrderExt : PXCacheExtension<SOOrder>
    {
        public abstract class marginGiUrl : IBqlField { }
        [PXString]
        [PXUIField(Visible = false)]
        public string MarginGiUrl
        {
            get
            {
                if (string.IsNullOrEmpty(Base.OrderType) || 
                    string.IsNullOrEmpty(Base.OrderNbr)) return string.Empty;
    
                string inqName = "SalesOrderMargin";
                var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL)
                    .Append("?name=").Append(inqName)
                    .Append("&SOOrderType=").Append(Base.OrderType);
                    .Append("&SOOrderNbr=").Append(Base.OrderNbr);
                    .Append("&hidePageTitle=true");
                return PX.Common.PXUrl.SiteUrlWithPath().TrimEnd('/') + 
                    url.ToString().Remove(0, 1);
            }
        }
    }
    
    公共类SOOrderExt:PXCacheExtension
    {
    公共抽象类marginGiUrl:IBqlField{}
    [字符串]
    [PXUIField(可见=假)]
    公共字符串MarginGiUrl
    {
    收到
    {
    if(string.IsNullOrEmpty(Base.OrderType)|
    IsNullOrEmpty(Base.OrderNbr))返回string.Empty;
    字符串inqName=“SalesOrderMargin”;
    var url=新的StringBuilder(PXGenericInqGrph.INQUIRY\u url)
    .Append(“?name=”).Append(inqName)
    .Append(“&SOOrderType=”).Append(Base.OrderType);
    .Append(“&SOOrderNbr=”).Append(Base.OrderNbr);
    .Append(&hidePageTitle=true);
    返回PX.Common.PXUrl.SiteUrlWithPath().TrimEnd('/')+
    url.ToString().Remove(0,1);
    }
    }
    }
    
  • 在Sales Orders屏幕上,添加新选项卡,其中PXSmartPanel容器设置为渲染为iframe:

    <px:PXTabItem Text="Margins" >
        <Template>
            <px:PXSmartPanel runat="server" ID="panelMarginGI" RenderIFrame="True" 
                AutoSize-Enabled="true" SkinID="Frame" LoadOnDemand="true"/>
        </Template>
    </px:PXTabItem>
    
    
    
  • 将步骤1中声明的自定义SOOrder unbound字段的输入控件放置在Sales Orders顶级PXFormView容器中的某个位置(输入控件将始终对用户隐藏,并且仅需要为PXSmartPanel分配源URL):

    
    ...
    
  • 在SO301000.aspx中,插入JavaScript代码为PXSmartPanel分配源URL:

    <script type="text/javascript" language="javascript">
        function commandResult(ds, context) {
            var commands = ["ReloadPage", "Save", "Cancel", "Insert", "First", "Previous", "Next", "Last"];
            if (commands.indexOf(context.command) >= 0) {
                var marginGiUrl = px_alls["edMarginGiUrl"];
                var smartpanel = px_alls["panelMarginGI"];
                if (marginGiUrl || smartpanel) {
                    var url = marginGiUrl.getValue();
                    smartpanel.setPageUrl(url);
                    smartpanel.repaint();
                }
            }
        }
    </script>
    
    
    函数commandResult(ds,上下文){
    var命令=[“重新加载页面”、“保存”、“取消”、“插入”、“第一个”、“上一个”、“下一个”、“最后一个”];
    if(commands.indexOf(context.command)>=0){
    var marginGiUrl=px_all[“edMarginGiUrl”];
    var smartpanel=px_all[“panelMarginGI”];
    if(marginGiUrl | |智能面板){
    var url=marginGiUrl.getValue();
    smartpanel.setPageUrl(url);
    smartpanel.repaint();
    }
    }
    }
    
  • 订阅PXDataSource的CommandPerformed事件以调用commandResult JavaScript函数:

    <px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%" TypeName="PX.Objects.SO.SOOrderEntry" PrimaryView="Document">
        <ClientEvents CommandPerformed="commandResult" />
        ...
    </px:PXDataSource>
    
    
    ...
    
  • 以下是您的SalesOrderMargin GI在Sales Orders屏幕上的显示方式:

    假设您创建了一个名为SalesOrderMargin的GI,其中包含两个隐藏参数:

    要将此GI嵌入到“销售订单”页面,您应遵循以下步骤:

  • 为SOOrder声明新的未绑定字段,以返回SalesOrderMargin GI的绝对URL:

    public class SOOrderExt : PXCacheExtension<SOOrder>
    {
        public abstract class marginGiUrl : IBqlField { }
        [PXString]
        [PXUIField(Visible = false)]
        public string MarginGiUrl
        {
            get
            {
                if (string.IsNullOrEmpty(Base.OrderType) || 
                    string.IsNullOrEmpty(Base.OrderNbr)) return string.Empty;
    
                string inqName = "SalesOrderMargin";
                var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL)
                    .Append("?name=").Append(inqName)
                    .Append("&SOOrderType=").Append(Base.OrderType);
                    .Append("&SOOrderNbr=").Append(Base.OrderNbr);
                    .Append("&hidePageTitle=true");
                return PX.Common.PXUrl.SiteUrlWithPath().TrimEnd('/') + 
                    url.ToString().Remove(0, 1);
            }
        }
    }
    
    公共类SOOrderExt:PXCacheExtension
    {
    公共抽象类marginGiUrl:IBqlField{}
    [字符串]
    [PXUIField(可见=假)]
    公共字符串MarginGiUrl
    {
    收到
    {
    if(string.IsNullOrEmpty(Base.OrderType)|
    IsNullOrEmpty(Base.OrderNbr))返回string.Empty;
    字符串inqName=“SalesOrderMargin”;
    var url=新的StringBuilder(PXGenericInqGrph.INQUIRY\u url)
    .Append(“?name=”).Append(inqName)
    .Append(“&SOOrderType=”).Append(Base.OrderType);
    .Append(“&SOOrderNbr=”).Append(Base.OrderNbr);
    .Append(&hidePageTitle=true);
    返回PX.Common.PXUrl.SiteUrlWithPath().TrimEnd('/')+
    url.ToString().Remove(0,1);
    }
    }
    }
    
  • 在Sales Orders屏幕上,添加新选项卡,其中PXSmartPanel容器设置为渲染为iframe:

    <px:PXTabItem Text="Margins" >
        <Template>
            <px:PXSmartPanel runat="server" ID="panelMarginGI" RenderIFrame="True" 
                AutoSize-Enabled="true" SkinID="Frame" LoadOnDemand="true"/>
        </Template>
    </px:PXTabItem>
    
    
    
  • 将步骤1中声明的自定义SOOrder unbound字段的输入控件放置在Sales Orders顶级PXFormView容器中的某个位置(输入控件将始终对用户隐藏,并且仅需要为PXSmartPanel分配源URL):

    
    ...
    
  • 在SO301000.aspx中,插入JavaScript代码为PXSmartPanel分配源URL:

    <script type="text/javascript" language="javascript">
        function commandResult(ds, context) {
            var commands = ["ReloadPage", "Save", "Cancel", "Insert", "First", "Previous", "Next", "Last"];
            if (commands.indexOf(context.command) >= 0) {
                var marginGiUrl = px_alls["edMarginGiUrl"];
                var smartpanel = px_alls["panelMarginGI"];
                if (marginGiUrl || smartpanel) {
                    var url = marginGiUrl.getValue();
                    smartpanel.setPageUrl(url);
                    smartpanel.repaint();
                }
            }
        }
    </script>
    
    
    函数commandResult(ds,上下文){
    var命令=[“重新加载页面”、“保存”、“取消”、“插入”、“第一个”、“上一个”、“下一个”、“最后一个”];
    if(commands.indexOf(context.command)>=0){
    var marginGiUrl=px_all[“edMarginGiUrl”];
    var smartpanel=px_all[“panelMarginGI”];
    if(marginGiUrl | |智能面板){
    var url=marginGiUrl.getValue();
    smartpanel.setPageUrl(url);
    smartpanel.repaint();
    }
    }
    }
    
  • 订阅PXDataSource的CommandPerformed事件以调用commandResult JavaScript函数:

    <px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%" TypeName="PX.Objects.SO.SOOrderEntry" PrimaryView="Document">
        <ClientEvents CommandPerformed="commandResult" />
        ...
    </px:PXDataSource>
    
    
    ...
    
  • 以下是您的SalesOrderMargin GI在Sales Orders屏幕上的显示方式: