Acumatica 如何更改“销售订单”页面中选项卡的顺序

Acumatica 如何更改“销售订单”页面中选项卡的顺序,acumatica,acumatica-kb,Acumatica,Acumatica Kb,是否有方法更改“销售订单”页面中选项卡的顺序 免责声明 所示方法只是如何更改选项卡顺序的示例。 在产品中使用之前,请确保此方法对您的产品是安全的 没有选项可以从自定义中指定选项卡位置,Screen Editor不支持拖放选项卡,即使您在编辑ASPX页面中更改选项卡的顺序,按Generate Customization Script也会回滚所有更改,因此唯一剩下的方法是使用Javascript中的选项卡 如果我们检查页面的DOM结构,我们将发现与tabs表相对应的以下部分: 我将使用中的交换功能

是否有方法更改“销售订单”页面中选项卡的顺序

免责声明
所示方法只是如何更改选项卡顺序的示例。
在产品中使用之前,请确保此方法对您的产品是安全的

没有选项可以从自定义中指定选项卡位置,Screen Editor不支持拖放选项卡,即使您在编辑ASPX页面中更改选项卡的顺序,按Generate Customization Script也会回滚所有更改,因此唯一剩下的方法是使用Javascript中的选项卡

如果我们检查页面的DOM结构,我们将发现与tabs表相对应的以下部分:

我将使用中的交换功能,并编写一个交换详细信息和税务选项卡的功能:

function swapElements(parent,elemA,elemB){
    if(!parent||parent.constructor.toString().search('HTML')===-1) return;
    var children = parent.children;
    if(typeof elemA!=='number' || typeof elemB!=='number' || elemA===elemB || !children[elemA] || !children[elemB]) return;

    elemB = elemA<elemB ? elemB--:elemB;
    var childNumb = children.length - 1;

    var a = parent.removeChild(children[elemA]);
    var b = parent.removeChild(children[elemB]);
    append(elemB,a);
    append(elemA,b);

       function append(a,b){
          childNumb===a ? parent.appendChild(b) : parent.insertBefore(b,children[a]);
       }
}

function swapDetailsAndTaxes()
{
    swapElements(document.querySelector("#"+px_all.ctl00_phG_tab.tabTable.id+ " tr"),0,1)
}
功能交换组件(父级、elemA、elemB){
如果(!parent | | parent.constructor.toString().search('HTML')=-1)返回;
var children=parent.children;
if(typeof elemA!='number'| | typeof elemB!='number'| | elemA===elemB | |!children[elemA]| |!children[elemB])返回;

elemB=elemA注意到这是一个有答案的老问题,但只想通过自定义编辑器工具更新/添加另一个选项来更改选项卡的顺序,请参见以下内容:

<Page path="~/pages/so/so301000.aspx" pageSource="YOURPAGESOURCE">
<PXTab ID="tab" ParentId="phG_tab" TypeFullName="PX.Web.UI.PXTab">
    <Children Key="Items" >
               <PXTabItem Text="Document Details" OriginalIndex="3" />
               <PXTabItem Text="Financial Settings" OriginalIndex="2" />
               <PXTabItem Text="Commissions" OriginalIndex="1" />
            </Children>
</PXTab>
-确保将屏幕添加到自定义项目的屏幕部分

-然后单击文件->编辑项目项,如下所示:

<Page path="~/pages/so/so301000.aspx" pageSource="YOURPAGESOURCE">
<PXTab ID="tab" ParentId="phG_tab" TypeFullName="PX.Web.UI.PXTab">
    <Children Key="Items" >
               <PXTabItem Text="Document Details" OriginalIndex="3" />
               <PXTabItem Text="Financial Settings" OriginalIndex="2" />
               <PXTabItem Text="Commissions" OriginalIndex="1" />
            </Children>
</PXTab>

-然后选择/突出显示要更改其选项卡顺序的屏幕

-然后,在底部选择后,通过添加PXTab标记一段代码(片段)来编辑页面,以更改选项卡的顺序,请参见以下内容:

<Page path="~/pages/so/so301000.aspx" pageSource="YOURPAGESOURCE">
<PXTab ID="tab" ParentId="phG_tab" TypeFullName="PX.Web.UI.PXTab">
    <Children Key="Items" >
               <PXTabItem Text="Document Details" OriginalIndex="3" />
               <PXTabItem Text="Financial Settings" OriginalIndex="2" />
               <PXTabItem Text="Commissions" OriginalIndex="1" />
            </Children>
</PXTab>

-发布您的自定义设置,并使用Ctrl+F5(Windows)刷新浏览器。请参见以下结果:


希望这能有所帮助。

基于最初让我绊倒的几件事,使用PxTabItem Text和OriginalIndex=“n”对前面的答案进行一些澄清

OriginalIndex是一个从零开始的索引,用于指示选项卡在移动之前的位置。例如,对于项目表单:

诀窍是按您希望的顺序列出子项Key=“Items”-以其原始的从零开始的索引作为参数。 最好以正确的顺序包含所有选项卡-在您将代码添加到aspx页面后-Cust Proj编辑器将删除不必要的选项卡,只留下所需的选项卡。这非常有用-但如果您不知道这一点,则需要技巧。。 如果你不想包括所有的标签-你必须至少包括最后一个未更改的标签,然后再进行更改

另外,PS-不要忘记在pageSource标记后添加代码后,在末尾添加/Page标记。即在现有代码末尾将/>更改为>,然后添加:-

项目重新排序的示例

<PXTab ID="tab" ParentId="phG_tab" TypeFullName="PX.Web.UI.PXTab">
    <Children Key="Items">
        <PXTabItem Text="Tasks" OriginalIndex="1" />
        <PXTabItem Text="Balances" OriginalIndex="4" />
        <PXTabItem Text="Cost Budget" OriginalIndex="3" />
        <PXTabItem Text="Change Requests" OriginalIndex="8" />
        <PXTabItem Text="Attributes" OriginalIndex="14" />
        <PXTabItem Text="Compliance" OriginalIndex="17" />
        <PXTabItem Text="Contacts" OriginalIndex="19" />
        <PXTabItem Text="Lien Waiver Settings" OriginalIndex="18" />
        <PXTabItem Text="Activity History" OriginalIndex="10" />
        <PXTabItem Text="Settings" OriginalIndex="13" />
        <PXTabItem Text="Mailing Settings" OriginalIndex="16" />
        <PXTabItem Text="Approval Details" OriginalIndex="15" />
        <PXTabItem Text="Equipment" OriginalIndex="12" />
        <PXTabItem Text="Union Locals" OriginalIndex="9" />
        <PXTabItem Text="Estimates" OriginalIndex="21" />
        <PXTabItem Text="Production Orders" OriginalIndex="20" />
    </Children>
</PXTab>

有趣的方法,我能问一下原始索引是什么吗?我曾尝试用不同的选项卡名称修改PXtabItems节点,但它将始终默认为原始代码段中的内容,例如折扣详细信息始终显示为OriginalIndex=“6”