How to add custom column name to Base LotSerialNbr Selector in SOTranSplit table?

  • 14 January 2021
  • 7 replies
  • 343 views

Userlevel 4
Badge +1

How to add custom field to Base LotserialNbr Selector  ??

I am able to add custom field in Lot Serial Nbr Selector.But Display names are showing Tablename_FieldName or fieldnames instead of DAC display names...How to get DAC displaynames in this scenario??

In my custom screen I defind LotSerialNbr selector by Inheriting from INLotSerialNbrAttribute as

 

LotSerialNbr Selector in My custom screen:
--------------------------------------------------------------
[TSLotSerialNbrAttribute.TSAllocationLotSerialNbr(typeof(TSProdMTranSplit.inventoryID),
           typeof(TSProdMTranSplit.subItemID), typeof(TSProdMTranSplit.siteID),
           typeof(TSProdMTranSplit.locationID), typeof(TSProdMTranSplit.lotSerialNbr), FieldClass = "LotSerial")]

 

Inheriting from Base INLotSerialNbrAttribute

---------------------------------------------------------------

 public class TSLotSerialNbrAttribute : INLotSerialNbrAttribute
    {
        private TSLotSerialNbrAttribute() { }

        public TSLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type LocationType)
        {
            var itemType = BqlCommand.GetItemType(InventoryType);
            if (!typeof(ILSMaster).IsAssignableFrom(itemType))
            {
                throw new PXArgumentException(PX.Objects.IN.Messages.TypeMustImplementInterface, itemType.GetLongName(), typeof(ILSMaster).GetLongName());
            }

            _InventoryType = InventoryType;
            _SubItemType = SubItemType;
            _LocationType = LocationType;

            Type SearchType;
            PXSelectorAttribute attr;

            SearchType = BqlTemplate.OfCommand <Search2<INLotSerialStatus.lotSerialNbr,
                LeftJoin<TSNewQCOrderSpecializedTest,
               On<TSNewQCOrderSpecializedTest.inventoryID, Equal<INLotSerialStatus.inventoryID>,
               And<TSNewQCOrderSpecializedTest.locationID, Equal<INLotSerialStatus.locationID>,
                   And<TSNewQCOrderSpecializedTest.lotNo, Equal<INLotSerialStatus.lotSerialNbr>>>>>,
                Where<INLotSerialStatus.inventoryID, Equal<Current<TSProdMTranSplit.inventoryID>>,
               And<INLotSerialStatus.siteID, Equal<Current<TSProdMTranSplit.siteID>>,
                 And<INLotSerialStatus.locationID, Equal<Current<TSProdMTranSplit.locationID>>>>>>>
                .Replace<BqlPlaceholder.A>(InventoryType)
                .Replace<BqlPlaceholder.B>(SubItemType)
                .Replace<BqlPlaceholder.C>(LocationType).ToType();


            attr = new PXSelectorAttribute(SearchType,
                                                                 typeof(INLotSerialStatus.lotSerialNbr),
                                                                 typeof(INLotSerialStatus.siteID),
                                                                 typeof(INLotSerialStatus.qtyOnHand),
                                                                 typeof(INSiteLotSerial.qtyAvail),
                                                                 typeof(INLotSerialStatus.expireDate),
                                                                 typeof(TSNewQCOrderSpecializedTest.qCOrderNbr),
                                                                 typeof(TSNewQCOrderSpecializedTest.result));

            _Attributes.Add(attr);
            _SelAttrIndex = _Attributes.Count - 1;
        }

        public TSLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type LocationType, Type ParentLotSerialNbrType)
            : this(InventoryType, SubItemType, LocationType)
        {
            _Attributes[_DefAttrIndex] = new PXDefaultAttribute(ParentLotSerialNbrType) { PersistingCheck = PXPersistingCheck.NullOrBlank };
        }

        public override void GetSubscriber<ISubscriber>(List<ISubscriber> subscribers)
        {
            if (typeof(ISubscriber) == typeof(IPXFieldVerifyingSubscriber) || typeof(ISubscriber) == typeof(IPXFieldDefaultingSubscriber) || typeof(ISubscriber) == typeof(IPXRowPersistingSubscriber))
            {
                subscribers.Add(this as ISubscriber);
            }
            else if (typeof(ISubscriber) == typeof(IPXFieldSelectingSubscriber))
            {
                base.GetSubscriber<ISubscriber>(subscribers);

                subscribers.Remove(this as ISubscriber);
                subscribers.Add(this as ISubscriber);
                subscribers.Reverse();
            }
            else
            {
                base.GetSubscriber<ISubscriber>(subscribers);
            }
        }

        public class TSAllocationLotSerialNbrAttribute : TSLotSerialNbrAttribute
        {
            public TSAllocationLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type SiteType, Type LocationType)
            {
                var itemType = BqlCommand.GetItemType(InventoryType);
                if (!typeof(ILSMaster).IsAssignableFrom(itemType))
                {
                    throw new PXArgumentException(nameof(itemType), PX.Objects.IN.Messages.TypeMustImplementInterface, itemType.GetLongName(), typeof(ILSMaster).GetLongName());
                }

                _InventoryType = InventoryType;
                _SubItemType = SubItemType;
                _LocationType = LocationType;

                Type SearchType;
                PXSelectorAttribute attr;

                SearchType = BqlTemplate.OfCommand < Search2 < INLotSerialStatus.lotSerialNbr,
                LeftJoin<TSNewQCOrderSpecializedTest,
               On<TSNewQCOrderSpecializedTest.inventoryID, Equal<INLotSerialStatus.inventoryID>,
               And<TSNewQCOrderSpecializedTest.locationID, Equal<INLotSerialStatus.locationID>,
                   And<TSNewQCOrderSpecializedTest.lotNo, Equal<INLotSerialStatus.lotSerialNbr>>>>>,
                Where<INLotSerialStatus.inventoryID, Equal<Current<TSProdMTranSplit.inventoryID>>,
               And<INLotSerialStatus.siteID, Equal<Current<TSProdMTranSplit.siteID>>,
                 And<INLotSerialStatus.locationID, Equal<Current<TSProdMTranSplit.locationID>>>>>>>
                .Replace<BqlPlaceholder.A>(InventoryType)
                .Replace<BqlPlaceholder.B>(SubItemType)
                .Replace<BqlPlaceholder.C>(LocationType).ToType();


                attr = new PXSelectorAttribute(SearchType,
                                                                     typeof(INLotSerialStatus.lotSerialNbr),
                                                                     typeof(INLotSerialStatus.siteID),
                                                                     typeof(INLotSerialStatus.qtyOnHand),
                                                                     typeof(INSiteLotSerial.qtyAvail),
                                                                     typeof(INLotSerialStatus.expireDate),
                                                                     typeof(TSNewQCOrderSpecializedTest.qCOrderNbr),
                                                                     typeof(TSNewQCOrderSpecializedTest.result));

                _Attributes.Add(attr);
                _SelAttrIndex = _Attributes.Count - 1;
            }

            public TSAllocationLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type SiteType, Type LocationType, Type ParentLotSerialNbrType)
                : this(InventoryType, SubItemType, SiteType, LocationType)
            {
                _Attributes[_DefAttrIndex] = new PXDefaultAttribute(ParentLotSerialNbrType) { PersistingCheck = PXPersistingCheck.NullOrBlank };
            }
        }

}

       
    
   

 


7 replies

Userlevel 7
Badge +17

Hi @girik06 ,

 

You can add the below CacheAttached code for that particular field to display the required display name in the custom graph and verify.

 

Custom Graph.cs file

[PXMergeAttributes(Method = MergeMethod.Append)]
        [PXUIField(DisplayName = "Required DisplayName")]
        protected virtual void DACName_FieldName_CacheAttached(PXCache cache)
        {
        }

 

Hope this helps!!

 

Userlevel 4
Badge +1

Hi @Naveen B I tried with that cache attached for the field names in custom graph.It didn't worked in selector level columns scenario.

Whatever column I added in lot selector is getting from join with InLotSerialStatus and Custom table..

Any other approach for this

Thanks!

Userlevel 4
Badge +1

siteID,qtyOnHand,expireDate are INLotSerialStatus Table fields and Status field is displaying like
TSNewQCOrderSpecilizedTest_Result..In this Scenario how to display DAC display names??

Userlevel 7
Badge +17

Hi @girik06 

 

Oh Okay… Have you tried “SetDisplayName”?

If NOT, Please add the below code in that particular RowSelected event and verify.

 

  protected void DACName_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {

         PXUIFieldAttribute.SetDisplayName<DACName.FieldName>(sender, “Displayname”)

        }

       

Hope this helps!!

 

Userlevel 4
Badge +1

Hi @Naveen B.I tried with above solution.It didn’t worked.Below is the code for LotSerialNbr Selector


In my DAC LotSerialNbr field will be like below:

#region LotSerialNbr
        public abstract class lotSerialNbr : PX.Data.IBqlField
        {
        }
        protected string _LotSerialNbr;
        [TSLotSerialNbr(typeof(TSProdMTranSplit.inventoryID), typeof(TSProdMTranSplit.subItemID),
            typeof(TSProdMTranSplit.locationID), typeof(TSProdMTranSplit.lotSerialNbr),
            FieldClass = "LotSerial")]
        [PXUIField(DisplayName = "LotSerial")]
        public virtual string LotSerialNbr
        {
            get
            {
                return this._LotSerialNbr;
            }
            set
            {
                this._LotSerialNbr = value;
            }
        }
        #endregion
        

        And TSLotSerialNbrAttribute Class is like below:

public TSLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type LocationType, Type ParentLotSerialNbrType)
        {
            var itemType = BqlCommand.GetItemType(InventoryType);
            if (!typeof(ILSMaster).IsAssignableFrom(itemType))
            {
                throw new PXArgumentException(PX.Objects.IN.Messages.TypeMustImplementInterface,
                    itemType.GetLongName(), typeof(ILSMaster).GetLongName());
            }
            _InventoryType = InventoryType;
            _SubItemType = SubItemType;
            _LocationType = LocationType;

            Type SearchType;
            PXSelectorAttribute attr;

            SearchType = BqlTemplate.OfCommand<Search2<INLotSerialStatus.lotSerialNbr,
                LeftJoin<TSNewQCOrderSpecializedTest,
               On<TSNewQCOrderSpecializedTest.inventoryID, Equal<INLotSerialStatus.inventoryID>,
               And<TSNewQCOrderSpecializedTest.locationID, Equal<INLotSerialStatus.locationID>,
                   And<TSNewQCOrderSpecializedTest.lotNo, Equal<INLotSerialStatus.lotSerialNbr>>>>>,
                Where<INLotSerialStatus.inventoryID, Equal<Current<TSProdMTranSplit.inventoryID>>,
               And<INLotSerialStatus.siteID, Equal<Current<TSProdMTranSplit.siteID>>,
                 And<INLotSerialStatus.locationID, Equal<Current<TSProdMTranSplit.locationID>>>>>>>
                .Replace<BqlPlaceholder.A>(InventoryType)
                .Replace<BqlPlaceholder.B>(SubItemType)
                .Replace<BqlPlaceholder.C>(LocationType).ToType();

            attr = new PXSelectorAttribute(SearchType,
                                                                 typeof(INLotSerialStatus.lotSerialNbr),
                                                                 typeof(INLotSerialStatus.siteID),
                                                                 typeof(INLotSerialStatus.qtyOnHand),
                                                                 typeof(INSiteLotSerial.qtyAvail),
                                                                 typeof(INLotSerialStatus.expireDate),
                                                                 typeof(TSNewQCOrderSpecializedTest.qCOrderNbr),
                                    
                                                                 typeof(TSNewQCOrderSpecializedTest.result));
           
            _Attributes.Add(attr);
            _SelAttrIndex = _Attributes.Count - 1;
        }

Userlevel 7
Badge +17

Hi @girik06 


Can you please also share the below DAC files, so that I can verify from my end?
 

  1. TSProdMTranSplit DAC
  2. TSNewQCOrderSpecializedTest DAC
Userlevel 4
Badge +1

Hi @Naveen B Thanks for that.Sending required fields with 2 DACS to sort out the issue.

1.TSProdMtranSplit DAC

using System;
using PX.Common;
using PX.Data;
using PX.Data.BQL;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.Objects.CS;
using PX.Objects.GL;
using PX.Objects.IN;
using PX.Objects.PM;
using Test;

[System.SerializableAttribute()]
public class TSProdMTranSplit : PX.Data.IBqlTable
{
#region InventoryID
public abstract class inventoryID : PX.Data.IBqlField
{
}
protected int? _InventoryID;
[Inventory(Enabled = false, Visible = false)]
public virtual int? InventoryID
{
get
{
return this._InventoryID;
}
set
{
this._InventoryID = value;
}
}
#endregion
#region SubItemID
public abstract class subItemID : PX.Data.IBqlField
{
}
protected int? _SubItemID;
[SubItem(typeof(TSProdMTranSplit.inventoryID), typeof(LeftJoin<INSiteStatus, On<INSiteStatus.subItemID, Equal<INSubItem.subItemID>, And<INSiteStatus.inventoryID, Equal<Optional<TSProdMTranSplit.inventoryID>>, And<INSiteStatus.siteID, Equal<Optional<TSProdMTranSplit.siteID>>>>>>))]
[PXDefault(typeof(Search<InventoryItem.defaultSubItemID, Where<InventoryItem.inventoryID, Equal<Current<TSProdMTranSplit.inventoryID>>, And<InventoryItem.defaultSubItemOnEntry, Equal<boolTrue>>>>))]
[PXFormula(typeof(Default<TSProdMTranSplit.inventoryID>))]

[PXUIField(DisplayName = "SubItemID")]
public virtual int? SubItemID
{
get
{
return this._SubItemID;
}
set
{
this._SubItemID = value;
}
}
#endregion

#region LocationID
public abstract class locationID : PX.Data.IBqlField
{
}
protected int? _LocationID;
[PX.Objects.IN.LocationAvail(typeof(TSProdMTranSplit.inventoryID), typeof(TSProdMTranSplit.subItemID), typeof(TSProdMTranSplit.siteID), false, true, false, DisplayName = "Location ID")]
public virtual int? LocationID
{
get
{
return this._LocationID;
}
set
{
this._LocationID = value;
}
}
#endregion
#region LotSerialNbr
public abstract class lotSerialNbr : PX.Data.IBqlField
{
}
protected string _LotSerialNbr;
[TSLotSerialNbr(typeof(TSProdMTranSplit.inventoryID), typeof(TSProdMTranSplit.subItemID),
typeof(TSProdMTranSplit.locationID))]
[PXUIField(DisplayName = "LotSerial")]
public virtual string LotSerialNbr
{
get
{
return this._LotSerialNbr;
}
set
{
this._LotSerialNbr = value;
}
}
#endregion
#region CreatedByID
public abstract class createdByID : PX.Data.IBqlField
{
}
protected Guid? _CreatedByID;
[PXDBCreatedByID]
public virtual Guid? CreatedByID
{
get
{
return this._CreatedByID;
}
set
{
this._CreatedByID = value;
}
}
#endregion
#region CreatedByScreenID
public abstract class createdByScreenID : PX.Data.IBqlField
{
}
protected string _CreatedByScreenID;
[PXDBCreatedByScreenID]
public virtual string CreatedByScreenID
{
get
{
return this._CreatedByScreenID;
}
set
{
this._CreatedByScreenID = value;
}
}
#endregion
#region CreatedDateTime
public abstract class createdDateTime : PX.Data.IBqlField
{
}
protected DateTime? _CreatedDateTime;
[PXDBCreatedDateTime]
public virtual DateTime? CreatedDateTime
{
get
{
return this._CreatedDateTime;
}
set
{
this._CreatedDateTime = value;
}
}
#endregion
#region LastModifiedByID
public abstract class lastModifiedByID : PX.Data.IBqlField
{
}
protected Guid? _LastModifiedByID;
[PXDBLastModifiedByID]
public virtual Guid? LastModifiedByID
{
get
{
return this._LastModifiedByID;
}
set
{
this._LastModifiedByID = value;
}
}
#endregion
#region LastModifiedByScreenID
public abstract class lastModifiedByScreenID : PX.Data.IBqlField
{
}
protected string _LastModifiedByScreenID;
[PXDBLastModifiedByScreenID]
public virtual string LastModifiedByScreenID
{
get
{
return this._LastModifiedByScreenID;
}
set
{
this._LastModifiedByScreenID = value;
}
}
#endregion
#region LastModifiedDateTime
public abstract class lastModifiedDateTime : PX.Data.IBqlField
{
}
protected DateTime? _LastModifiedDateTime;
[PXDBLastModifiedDateTime]
public virtual DateTime? LastModifiedDateTime
{
get
{
return this._LastModifiedDateTime;
}
set
{
this._LastModifiedDateTime = value;
}
}
#endregion
#region tstamp
public abstract class Tstamp : PX.Data.IBqlField
{
}
protected byte[] _tstamp;
[PXDBTimestamp()]
public virtual byte[] tstamp
{
get
{
return this._tstamp;
}
set
{
this._tstamp = value;
}
}
#endregion

}
public class TSLotSerialNbrAttribute : INLotSerialNbrAttribute
{
public TSLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type LocationType, Type[] colsType)
{
}

public TSLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type LocationType) : base(InventoryType, SubItemType, LocationType)
{
}
public TSLotSerialNbrAttribute(Type InventoryType, Type SubItemType, Type LocationType, Type ParentLotSerialNbrType)
{
var itemType = BqlCommand.GetItemType(InventoryType);
if (!typeof(ILSMaster).IsAssignableFrom(itemType))
{
throw new PXArgumentException(PX.Objects.IN.Messages.TypeMustImplementInterface,
itemType.GetLongName(), typeof(ILSMaster).GetLongName());
}
_InventoryType = InventoryType;
_SubItemType = SubItemType;
_LocationType = LocationType;


PXSelectorAttribute attr;

Type SearchType = BqlTemplate.OfCommand<Search2<INLotSerialStatus.lotSerialNbr,
LeftJoin<TSNewQCOrderSpecializedTest,
On<TSNewQCOrderSpecializedTest.inventoryID, Equal<INLotSerialStatus.inventoryID>,
And<TSNewQCOrderSpecializedTest.locationID, Equal<INLotSerialStatus.locationID>,
And<TSNewQCOrderSpecializedTest.lotNo, Equal<INLotSerialStatus.lotSerialNbr>>>>>,
Where<INLotSerialStatus.inventoryID, Equal<Current<TSProdMTranSplit.inventoryID>>,
And<INLotSerialStatus.locationID, Equal<Current<TSProdMTranSplit.locationID>>>>>>
.Replace<BqlPlaceholder.A>(InventoryType)
.Replace<BqlPlaceholder.B>(SubItemType)
.Replace<BqlPlaceholder.C>(LocationType).ToType();

attr = new PXSelectorAttribute(SearchType, new Type[] {
typeof(INLotSerialStatus.lotSerialNbr), typeof(INLotSerialStatus.siteID),
typeof(INLotSerialStatus.qtyOnHand),
typeof(INSiteLotSerial.qtyAvail),
typeof(INLotSerialStatus.expireDate),

typeof(TSNewQCOrderSpecializedTest.result)});

_Attributes.Add(attr);
_SelAttrIndex = _Attributes.Count - 1;
}

}

}

2.TSNewQcOrderSpecializwedTest DAC


using System;
using PX.Data;
using PX.Objects.CS;
using PX.Objects.IN;

namespace Test
{

[System.SerializableAttribute()]
[PXEMailSource]
public class TSNewQCOrderSpecializedTest : PX.Data.IBqlTable
{


#region LocationID
public abstract class locationID : PX.Data.BQL.BqlInt.Field<locationID> { }
protected Int32? _LocationID;
[PX.Objects.IN.LocationAvail(typeof(INSite.siteID), typeof(INSite.siteID), typeof(TSNewQCOrderSpecializedTest.siteID), false, false, true, DisplayName = "Location")]
public virtual Int32? LocationID
{
get
{
return this._LocationID;
}
set
{
this._LocationID = value;
}
}
#endregion

#region InventoryID
public abstract class inventoryID : PX.Data.BQL.BqlInt.Field<inventoryID>
{
}
protected int? _InventoryID;
[Inventory(Filterable =true)]
[PXDefault]
[PXUIField(DisplayName = "Inventory ID")]
public virtual int? InventoryID
{
get
{
return this._InventoryID;
}
set
{
this._InventoryID = value;
}
}
#endregion

#region Description
public abstract class description : PX.Data.BQL.BqlString.Field<description>
{
}
protected string _Description;
[PXFormula(typeof(Selector<inventoryID, InventoryItem.descr>))]
[PXString(255, IsUnicode = true)]
[PXUIField(DisplayName = "Description", IsReadOnly = true)]
public virtual string Description
{
get
{
return this._Description;
}
set
{
this._Description = value;
}
}
#endregion


#region LotNo
public abstract class lotNo : PX.Data.BQL.BqlString.Field<lotNo>
{
}
protected string _LotNo;
[PXDefault]
[PXDBString(30, IsUnicode = true)]
[PXSelector(
typeof(Search<INLotSerialStatus.lotSerialNbr, Where<INLotSerialStatus.inventoryID,
Equal<Current<TSNewQCOrderSpecializedTest.inventoryID>>, And<INLotSerialStatus.siteID, Equal<Current<TSNewQCOrderSpecializedTest.siteID>>, And<INLotSerialStatus.locationID, Equal<Current<TSNewQCOrderSpecializedTest.locationID>>>>>>),
typeof(INLotSerialStatus.lotSerialNbr),
SubstituteKey = typeof(INLotSerialStatus.lotSerialNbr))]

[PXUIField(DisplayName = "Lot Nbr")]
public virtual string LotNo
{
get
{
return this._LotNo;
}
set
{
this._LotNo = value;
}
}
#endregion


#region Result
public abstract class result : PX.Data.BQL.BqlString.Field<result>
{
}
protected string _Result;
//[PXDefault]
[PXDBString(1, IsFixed = true)]
[PXStringList(new string[]
{ "P","F"},
new string[]
{ "Pass", "Fail"})]
[PXUIField(DisplayName = "Result")]
public virtual string Result
{
get
{
return this._Result;
}
set
{
this._Result = value;
}
}
#endregion


#region CreatedDateTime
public abstract class createdDateTime : PX.Data.BQL.BqlDateTime.Field<createdDateTime>
{
}
protected DateTime? _CreatedDateTime;
[PXDBCreatedDateTimeUtc()]
public virtual DateTime? CreatedDateTime
{
get
{
return this._CreatedDateTime;
}
set
{
this._CreatedDateTime = value;
}
}
#endregion
#region CreatedByScreenID
public abstract class createdByScreenID : PX.Data.BQL.BqlString.Field<createdByScreenID>
{
}
protected string _CreatedByScreenID;
[PXDBCreatedByScreenID()]
public virtual string CreatedByScreenID
{
get
{
return this._CreatedByScreenID;
}
set
{
this._CreatedByScreenID = value;
}
}
#endregion
#region CreatedByID
public abstract class createdByID : PX.Data.BQL.BqlGuid.Field<createdByID>
{
}
protected Guid? _CreatedByID;
[PXDBCreatedByID()]
public virtual Guid? CreatedByID
{
get
{
return this._CreatedByID;
}
set
{
this._CreatedByID = value;
}
}
#endregion
#region LastModifiedDateTime
public abstract class lastModifiedDateTime : PX.Data.BQL.BqlDateTime.Field<lastModifiedDateTime>
{
}
protected DateTime? _LastModifiedDateTime;
[PXDBLastModifiedDateTimeUtc()]
public virtual DateTime? LastModifiedDateTime
{
get
{
return this._LastModifiedDateTime;
}
set
{
this._LastModifiedDateTime = value;
}
}
#endregion
#region LastModifiedByScreenID
public abstract class lastModifiedByScreenID : PX.Data.BQL.BqlString.Field<lastModifiedByScreenID>
{
}
protected string _LastModifiedByScreenID;
[PXDBLastModifiedByScreenID()]
public virtual string LastModifiedByScreenID
{
get
{
return this._LastModifiedByScreenID;
}
set
{
this._LastModifiedByScreenID = value;
}
}
#endregion
#region LastModifiedByID
public abstract class lastModifiedByID : PX.Data.BQL.BqlGuid.Field<lastModifiedByID>
{
}
protected Guid? _LastModifiedByID;
[PXDBLastModifiedByID()]
public virtual Guid? LastModifiedByID
{
get
{
return this._LastModifiedByID;
}
set
{
this._LastModifiedByID = value;
}
}
#endregion
#region NoteID
public abstract class noteID : PX.Data.BQL.BqlGuid.Field<noteID>
{
}
protected Guid? _NoteID;
[PXNote()]
public virtual Guid? NoteID
{
get
{
return this._NoteID;
}
set
{
this._NoteID = value;
}
}
#endregion
#region tstamp
public abstract class Tstamp : PX.Data.BQL.BqlByteArray.Field<Tstamp>
{
}
protected byte[] _tstamp;
[PXDBTimestamp()]
public virtual byte[] tstamp
{
get
{
return this._tstamp;
}
set
{
this._tstamp = value;
}
}
#endregion
}
}

 

Reply


About Acumatica ERP system
Acumatica Cloud ERP provides the best business management solution for transforming your company to thrive in the new digital economy. Built on a future-proof platform with open architecture for rapid integrations, scalability, and ease of use, Acumatica delivers unparalleled value to small and midmarket organizations. Connected Business. Delivered.
© 2008 — 2024  Acumatica, Inc. All rights reserved