如何在Acumatica事件处理程序中检查状态(活动/非活动)?

时间:2015-05-21 05:10:15

标签: acumatica

有人可以告诉我如何检查Acumatica中的客户状态是处于活动状态还是处于非活动状态。我正在使用以下代码,但无法弄清楚应该是什么的真正价值:

if (row != null){
        if (row.Status == <status.Active>){
          //DO SOMETHING
        }
        else{
          //DO SOMETHING ELSE
        }
      }

如果我想检查客户状态是否有效,我可以更换什么?

谢谢, ģ

2 个答案:

答案 0 :(得分:3)

我想如果你有类似的东西:

if (row.status == Customer.status.Active)

它应该工作。您需要拥有AR对象的使用/参考。

答案 1 :(得分:0)

通过在设计模式下打开客户表单,您可以查看状态字段中的属性。通过这样做,您可以看到它实际上在DAC中的哪个字段以及该字段的下拉列表中可用的字段。以下是状态字段的属性。

new string[] { Active, Hold, CreditHold, Inactive, OneTime },
new string[] { CR.Messages.Active, CR.Messages.Hold,CR.Messages.CreditHold, CR.Messages.Inactive, CR.Messages.OneTime }) { }
}}
[PXDBString(1, IsFixed = true)]
[PXDefault(status.Active)]
[PXUIField(DisplayName = "Status")]
[status.List()]

// below are the values for the CR.Messages if you care to see

public const string Active = "Active";
public const string Hold = "On Hold";
public const string HoldPayments = "Hold Payments";
public const string Inactive = "Inactive";
public const string OneTime = "One-Time";
public const string CreditHold = "Credit Hold";

对源代码的进一步审查表明,客户状态字段实际上是BAccount表中名为Status的字段。它是单个字符字段,Active ='A',Inactive ='I'的值。 (还有更多值)

因此,如果您只是想知道客户是否处于活动状态,与Max发布的类似,您只需在当前行定义为行的事件处理程序中执行此操作:

if (row.status == 'A')  // if customer status is Active...
{
//do something
}

你可以使用一个常数,这会更好。