PXDBScalar SOOrderKvExt 属性 bool
PXDBScalar SOOrderKvExt attribute bool
我正在尝试使用 PXDBScalar 将布尔属性从“销售订单”用户定义的字段选项卡引入“发货”屏幕。
我发现另一个有助于创建 SOOrderKvExt DAC 的堆栈溢出 post,我能够通过我的 PXDBScalar 属性检索 valueNumeric(十进制)字段的值,但我找不到将值转换为 bool 的方法,以便它在屏幕上正确显示为复选框。我尝试将未绑定字段的数据类型设置为 bool,但出现数据类型转换错误。我还尝试将该字段保留为小数并仅更改屏幕上的控件类型,但无论值如何,它始终显示为已选中。知道如何在 PXDBScalar 属性或其他解决方案中将十进制值转换为布尔值吗?
下面提供了代码片段。
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; }
}
}
PXDBS 标量
#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
谢谢
斯科特
我会添加一个布尔计算字段。与此类似:
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
}
我正在尝试使用 PXDBScalar 将布尔属性从“销售订单”用户定义的字段选项卡引入“发货”屏幕。
我发现另一个有助于创建 SOOrderKvExt DAC 的堆栈溢出 post,我能够通过我的 PXDBScalar 属性检索 valueNumeric(十进制)字段的值,但我找不到将值转换为 bool 的方法,以便它在屏幕上正确显示为复选框。我尝试将未绑定字段的数据类型设置为 bool,但出现数据类型转换错误。我还尝试将该字段保留为小数并仅更改屏幕上的控件类型,但无论值如何,它始终显示为已选中。知道如何在 PXDBScalar 属性或其他解决方案中将十进制值转换为布尔值吗?
下面提供了代码片段。
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; }
}
}
PXDBS 标量
#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
谢谢 斯科特
我会添加一个布尔计算字段。与此类似:
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
}