微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于 acumatica,有没有办法从一个表中获取一个变量并将其用作另一个表的 id 的一部分?

如何解决关于 acumatica,有没有办法从一个表中获取一个变量并将其用作另一个表的 id 的一部分?

“客户”表单有一个名为 AcctReferenceNbr (Variable that I'm trying to grab shown in yellow) 的变量,它采用客户名称的两个字母缩写。我目前正在编辑 Projects 表单,我想使用这个缩写作为外部参考的一部分。

附加的图像 End Result I'm trying to achieve 显示了最终结果应该是什么样子。 QuoteID 中的数字附加到缩写后。

我能够成功获取 QuoteID,因为它是 Projects 表的一部分,但我目前无法从 Customer 表中获取 AcctReference Nbr。

我在 QuoteID 字段上有一个 RowSelected 事件,如下所示:


    namespace PX.Objects.PM
    {
      public class ProjectEntry_Extension : PXGraphExtension<ProjectEntry>
      {
        #region Event Handlers
    
        
        protected void PMProject_RowSelected(PXCache cache,PXRowSelectedEventArgs e)
        {
          
          PMProject row = (PMProject)e.Row;
          if (row.ContractCD != null) {
            PMProject item = PXSelectorAttribute.Select<PMProject.contractCD>(cache,row) as PMProject;
            
            // The "UP" string is where the abbreviation is supposed to be,// but I just added two letters to test if the appending works,which it does.
    
            row.ExtRefNbr = "UP" + item.ContractCD;
          }
          
        }
    
        #endregion
      }
    }

到目前为止我尝试过的:

  • 访问 Customer 表命名空间以获取值并将其传递给 Projects 表单,这不起作用,因为它不接受 Projects 表单中的 Customer 类型。

  • 将 PXDefault 属性添加到外部参考。 Nbr 会尝试使用 sql 获取变量。

我对我可以尝试的其他方法有些困惑。任何帮助将不胜感激:)

更新

下面是我尝试从 Customer 表中获取 AcctReferenceNbr 值的方法

我尝试使用 PXSelectorAttribute 方法的原因是我将 AcctReferenceNbr 作为列添加到报价 ID 选择器中(选择器显示在上面名为“我正在尝试实现的最终结果”的链接中)。

所以我想我可以尝试在 Customer 命名空间中获取该值,因为这是变量所在的位置,并将其传递给上面的 Project 命名空间。

然后,我将在 Project 命名空间中调用下面的公共方法获取所需的缩写:

// instead of this
row.ExtRefNbr = "UP" + item.ContractCD;

// it would be this
row.ExtRefNbr = PX.Objects.AR.CustomerMaint_Extension.getAcctReferenceNbr(cache,e) + item.ContractCD;
    namespace PX.Objects.AR
    {
      public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
      {
        #region Event Handlers
    
        public static string getAcctReferenceNbr(PXCache cache,PXRowSelectedEventArgs e)
        {
          
            BAccount row = (BAccount)e.Row;
          
            BAccount item = PXSelectorAttribute.Select<BAccount.acctReferenceNbr>(cache,row) as BAccount;
    
            return item.acctReferenceNbr;
          }
          
        }
    
        #endregion
      }
    }

是否有针对实际表的正确方法

解决方法

试试这个。我还没有测试过这个,但试一试。

    protected void PMProject_RowSelected(PXCache cache,PXRowSelectedEventArgs e)
    {
      
      PMProject row = (PMProject)e.Row;
      if (row.ContractCD != null && row.CustomerID != null) 
      {

        BAccount ba = (BAccount )PXSelectorAttribute.Select<PMProject.customerID>(cache,row) ;    
        row.ExtRefNbr = ba.AcctReferenceNbr+ row.ContractCD;
      }
      
    }

您当然不需要扩展 CustomerMaint 图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。