【问题标题】:PXDBScalar SOOrderKvExt attribute boolPXDBScalar SOOrderKvExt 属性 bool
【发布时间】:2021-06-03 12:39:45
【问题描述】:

我正在尝试使用 PXDBScalar 将布尔属性从销售订单用户定义字段选项卡引入到发货屏幕。

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

下面提供的代码 sn-ps。

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; }
}  
  
  
}

PXDB标量

   #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 

谢谢 斯科特

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    我会添加一个布尔计算字段。类似这样:

    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
      }
    

    【讨论】:

    • 嗨 Rick,您是否建议我添加第二个自定义未绑定字段,该字段使用 PXDBScalar 从第一个字段计算布尔值?我想那会奏效。感谢您的帮助
    • 正确。第二个自定义字段。
    • 成功了,感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 2017-02-25
    • 2013-11-11
    • 1970-01-01
    • 2013-11-29
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多