将时间戳添加到Acumatica的库存批次/序列历史记录页面

时间:2017-08-17 20:54:31

标签: acumatica

目前,Lot / Serial History页面上的交易日期纯粹是日期,而不是日期时间。

如果事务有时间组件,那么在排序事务的顺序和调试生产问题时非常有用。数据库似乎存储了00:00:00时间戳的trandate,因此如果没有使用创建或修改的日期,数据甚至不可用,这些日期也不可用。

我正在寻找关于如何在此窗口中显示时间戳的建议。是否有访问创建日期时间的最佳实践?或者我是否需要创建一个新字段并自己存储时间?欢迎其他精彩建议;我也创造了这个作为Acuamtica的想法。 https://feedback.acumatica.com/ideas/ACU-I-1322

1 个答案:

答案 0 :(得分:1)

您可以在INTranSplit DAC中创建一个引用“CreatedDateTime”的自定义非绑定字段,并在掩码中设置特定的显示格式。

问题在于,有许多INTranSplit DAC,而您正在使用的DAC并未声明CreatedDateTime。你可以做的是使用另一个包含CreatedDateTime和PXDBScalar的INTranSplit DAC或INTran DAC。

  1. 批/历史使用:

    • PX.Objects。的 IN.InventoryLotSerInq.INTranSplit
  2. CreatedDateTime位于另一个具有相同名称但位于不同命名空间的DAC中:

    • PX.Objects。的 IN.INTranSplit
  3. CreatedDateTime也在INTran DAC中:

    • PX.Objects。的 IN.INTran
  4. 以下是如何扩展InventoryLotSerInq.INTranSplit DAC以添加访问IN.INTran.CreatedDateTime的字段。注意'g'是显示日期和时间的日期时间格式,如果需要,您可以使用其他.Net格式:

    namespace PX.Objects.IN
    {
      public class INTranSplitExt : PXCacheExtension<PX.Objects.IN.InventoryLotSerInq.INTranSplit>
      {
          public abstract class usrTranTimestamp : PX.Data.IBqlField { }
    
          // You can also substitute 'IN.INTranSplit.' by 'IN.INTran.'
          [PXDBScalar(typeof(Search<IN.INTranSplit.createdDateTime, 
                             Where<IN.INTranSplit.docType, Equal<InventoryLotSerInq.INTranSplit.docType>, 
                             And<IN.INTranSplit.refNbr, Equal<InventoryLotSerInq.INTranSplit.refNbr>,
                             And<IN.INTranSplit.lineNbr, Equal<InventoryLotSerInq.INTranSplit.lineNbr>>>>>))]
          [PXDate(DisplayMask = "g", InputMask = "g")]
          [PXUIField(DisplayName="Tran. Timestamp")]
          public virtual DateTime? UsrTranTimestamp { get; set; }
      }
    }
    

    新的自定义未绑定字段将显示创建的日期时间,但它与使用TranDate不同,因为在设置TranDate的同时未设置这些CreatedDateTime字段: enter image description here