Acumatica PXDBScalar SOOrderKvExt属性布尔

Acumatica PXDBScalar SOOrderKvExt属性布尔,acumatica,Acumatica,我试图使用PXDBScalar将一个布尔属性从销售订单用户定义字段选项卡引入发货屏幕 我找到了另一个有助于创建SOOrderKvExt DAC的堆栈溢出帖子,我能够通过我的PXDBScalar属性检索valueNumeric(decimal)字段的值,但我找不到将该值转换为bool的方法,因此它在屏幕上正确显示为复选框。我尝试将未绑定字段的数据类型设置为bool,但出现数据类型转换错误。我还尝试将字段保留为十进制,只更改屏幕上的控件类型,但无论值是多少,它始终显示为选中。知道如何在PXDBSca

我试图使用PXDBScalar将一个布尔属性从销售订单用户定义字段选项卡引入发货屏幕

我找到了另一个有助于创建SOOrderKvExt DAC的堆栈溢出帖子,我能够通过我的PXDBScalar属性检索valueNumeric(decimal)字段的值,但我找不到将该值转换为bool的方法,因此它在屏幕上正确显示为复选框。我尝试将未绑定字段的数据类型设置为bool,但出现数据类型转换错误。我还尝试将字段保留为十进制,只更改屏幕上的控件类型,但无论值是多少,它始终显示为选中。知道如何在PXDBScalar属性或其他解决方案中将十进制值转换为bool吗

下面提供了代码片段

SOOrderKvExt

[PXCacheName("SO Order Attributes")]
[Serializable]
public class SOOrderKvExt : IBqlTable
{
    public abstract class recordID : BqlGuid.Field<recordID> { }
    [PXDBGuid(IsKey = true)]
    public Guid? RecordID { get; set; }

    public abstract class fieldName : BqlString.Field<fieldName> { }
    [PXDBString(50,IsKey = true)]
    [PXUIField(DisplayName ="Name")]
    public string FieldName { get; set; }

    public abstract class valueNumeric : BqlDecimal.Field<valueNumeric> { }
    [PXDBDecimal(8)]
    [PXUIField(DisplayName = "Value Numeric")]
    public decimal? ValueNumeric { get; set; }

    public abstract class valueDate : BqlDateTime.Field<valueDate> { }
    [PXDBDate]
    [PXUIField(DisplayName = "Value Date")]
    public DateTime? ValueDate { get; set; }

    public abstract class valueString : BqlString.Field<valueString> { }
    [PXDBString(256)]
    [PXUIField(DisplayName = "Value String")]
    public string ValueString { get; set; }

    public abstract class valueText : BqlString.Field<valueText> { }
    [PXDBString]
    [PXUIField(DisplayName = "Value Text")]
    public string ValueText { get; set; }
}  
  
  
}
[PXCacheName(“SO订单属性”)]
[可序列化]
公共类SOOrderKvExt:IBqlTable
{
公共抽象类recordID:BqlGuid.Field{}
[PXDBGuid(IsKey=true)]
公共Guid?记录ID{get;set;}
公共抽象类字段名:BqlString.Field{}
[PXDBString(50,IsKey=true)]
[PXUIField(DisplayName=“Name”)]
公共字符串字段名{get;set;}
公共抽象类valueNumeric:BqlDecimal.Field{}
[PXDBDecimal(8)]
[PXUIField(DisplayName=“Value Numeric”)]
公共十进制?ValueNumeric{get;set;}
公共抽象类valueDate:BqlDateTime.Field{}
[PXDBDate]
[PXUIField(DisplayName=“生效日期”)]
public DateTime?ValueDate{get;set;}
公共抽象类valueString:BqlString.Field{}
[PXDBString(256)]
[PXUIField(DisplayName=“Value String”)]
公共字符串值字符串{get;set;}
公共抽象类valueText:BqlString.Field{}
[PXDBString]
[PXUIField(DisplayName=“Value Text”)]
公共字符串ValueText{get;set;}
}  
}
PXDBScalar

   #region UsrSOBlindShip
    [PXDecimal(8)]
    [PXUIField(DisplayName="SO Blind Ship", IsReadOnly=true)]
    [PXDBScalar(typeof(Search2<SOOrderKvExt.valueNumeric,
        LeftJoin<SOOrder, On<SOOrder.noteID, Equal<SOOrderKvExt.recordID>>,
        LeftJoin<SOShipLine, On<SOShipLine.origOrderNbr, Equal<SOOrder.orderNbr>>>>,      
        Where<SOShipLine.shipmentNbr, Equal<SOShipment.shipmentNbr>>>))]
    public virtual decimal? UsrSOBlindShip{ get; set; }
    public abstract class usrSOBlindShip: PX.Data.BQL.BqlDecimal.Field<usrSOBlindShip> { }
    #endregion 
#地区美国义务
[第(8)款]
[PXUIField(DisplayName=“SO Blind Ship”,IsReadOnly=true)]
[PXDBScalar(typeof(Search2))]
公共虚拟十进制?UsrSOBlindShip{get;set;}
公共抽象类usrSOBlindShip:PX.Data.BQL.BqlDecimal.Field{}
#端区
谢谢
Scott

我想添加一个布尔计算字段。与此类似:

public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine>
  {
    #region UsrIsZero
    [PXBool]
    [PXUIField(DisplayName="Is Zero")]
    [PXFormula(typeof(Switch< Case<Where<SOLine.orderQty, Greater<decimal0>>, False>, True >))]
    public virtual bool? UsrIsZero { get; set; }
    public abstract class usrIsZero : PX.Data.BQL.BqlBool.Field<usrIsZero> { }
    #endregion
  }
公共类solinext:PXCacheExtension
{
#区域UsrIsZero
[PXBool]
[PXUIField(DisplayName=“为零”)]
[PX公式(类型(开关)]
公共虚拟bool?UsrIsZero{get;set;}
公共抽象类usrIsZero:PX.Data.BQL.BqlBool.Field{}
#端区
}

嗨,里克,你是不是建议我添加第二个自定义未绑定字段,用PXDBScalar从第一个字段计算布尔值?我想那会有用的。谢谢你的帮助。第二个自定义字段。这就成功了,谢谢你的建议。