I have created maintenance tables and I am applying a "PXForeignReference" at drop time. what I want is that if I delete a record from the table that is being used in another, it should show a message which indicates that it is being used in another table.
But in my example it is not being fulfilled, for varo I will indicate where my error is.
here I attach some images.
1.first maintenance table
namespace SKPriceIndex
{
[Serializable]
[PXCacheName("PESKPriceIndexCat")]
public class PESKPriceIndexCat : IBqlTable
{
#region CategoryID
[PXDBIdentity]
[PXUIField(DisplayName = "Category ID")]
public virtual int? CategoryID { get; set; }
public abstract class categoryID : PX.Data.BQL.BqlInt.Field<categoryID> { }
#endregion
#region CategoryCD
[PXDBString(10, IsUnicode = true, InputMask = "", IsKey = true)]
[PXUIField(DisplayName = "Category ID")]
public virtual string CategoryCD { get; set; }
public abstract class categoryCD : PX.Data.BQL.BqlString.Field<categoryCD> { }
#endregion
#region Descripcion
[PXDBString(30, IsUnicode = true, InputMask = "")]
[PXUIField(DisplayName = "Category Description")]
public virtual string Descripcion { get; set; }
public abstract class descripcion : PX.Data.BQL.BqlString.Field<descripcion> { }
#endregion
#region State
[PXDBString(100, IsUnicode = true, InputMask = "")]
[PXUIField(DisplayName = "State")]
[PXSelector(typeof(State.stateID),
typeof(State.stateID), typeof(State.name), typeof(State.countryID),
DescriptionField = typeof(State.name))]
[PXMassMergableField]
public virtual string State { get; set; }
public abstract class state : PX.Data.BQL.BqlString.Field<state> { }
#endregion
#region Active
[PXDBBool()]
[PXDefault(false)]
[PXUIField(DisplayName = "Active")]
public virtual bool? Active { get; set; }
public abstract class active : PX.Data.BQL.BqlInt.Field<active> { }
#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
#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
}
}
2.second maintenance table
namespace SKPriceIndexCST
{
[Serializable]
[PXCacheName("PESKPriceIndex")]
public class PESKPriceIndex : IBqlTable
{
#region CategoryID
[PXDBInt(IsKey = true)]
[PXUIField(DisplayName = "Category ID")]
[PXSelector(typeof(PESKPriceIndexCat.categoryID),
typeof(PESKPriceIndexCat.categoryCD),
typeof(PESKPriceIndexCat.descripcion),
DescriptionField = typeof(PESKPriceIndexCat.descripcion),
SubstituteKey = typeof(PESKPriceIndexCat.categoryCD))]
[PXMassMergableField]
[PXRestrictor(typeof(Where<PESKPriceIndexCat.active, Equal<True>>), "", typeof(PESKPriceIndexCat.active))]
public virtual int? CategoryID { get; set; }
public abstract class categoryID : PX.Data.BQL.BqlInt.Field<categoryID> { }
#endregion
#region CreatedDateTime
[PXDBCreatedDateTime()]
public virtual DateTime? CreatedDateTime { get; set; }
public abstract class createdDateTime : PX.Data.BQL.BqlDateTime.Field<createdDateTime> { }
#endregion
#region CreatedByID
[PXDBCreatedByID()]
public virtual Guid? CreatedByID { get; set; }
public abstract class createdByID : PX.Data.BQL.BqlGuid.Field<createdByID> { }
#endregion
#region CreatedByScreenID
[PXDBCreatedByScreenID()]
public virtual string CreatedByScreenID { get; set; }
public abstract class createdByScreenID : PX.Data.BQL.BqlString.Field<createdByScreenID> { }
#endregion
#region LastModifiedDateTime
[PXDBLastModifiedDateTime()]
public virtual DateTime? LastModifiedDateTime { get; set; }
public abstract class lastModifiedDateTime : PX.Data.BQL.BqlDateTime.Field<lastModifiedDateTime> { }
#endregion
#region LastModifiedByID
[PXDBLastModifiedByID()]
public virtual Guid? LastModifiedByID { get; set; }
public abstract class lastModifiedByID : PX.Data.BQL.BqlGuid.Field<lastModifiedByID> { }
#endregion
#region LastModifiedByScreenID
[PXDBLastModifiedByScreenID()]
public virtual string LastModifiedByScreenID { get; set; }
public abstract class lastModifiedByScreenID : PX.Data.BQL.BqlString.Field<lastModifiedByScreenID> { }
#endregion
#region Tstamp
[PXDBTimestamp()]
[PXUIField(DisplayName = "Tstamp")]
public virtual byte[] Tstamp { get; set; }
public abstract class tstamp : PX.Data.BQL.BqlByteArray.Field<tstamp> { }
#endregion
}
}
namespace SKPriceIndexCST
{
[Serializable]
[PXCacheName("PESKPriceIndexDetail")]
public class PESKPriceIndexDetail : IBqlTable
{
#region PriceIndexID
[PXDBIdentity]
public virtual int? PriceIndexID { get; set; }
public abstract class priceIndexID : PX.Data.BQL.BqlInt.Field<priceIndexID> { }
#endregion
#region CategoryID
[PXDBInt(IsKey =true)]
[PXUIField(DisplayName = "Category ID")]
[PXDefault(typeof(PESKPriceIndex.categoryID))]
[PXParent(typeof(Select<PESKPriceIndex, Where<PESKPriceIndex.categoryID, Equal<Current<categoryID>>>>),LeaveChildren =true)] //,LeaveChildren =true
[PXForeignReference(typeof(Field<categoryID>.IsRelatedTo<PESKPriceIndexCat.categoryID>))]
public virtual int? CategoryID { get; set; }
public abstract class categoryID : PX.Data.BQL.BqlInt.Field<categoryID> { }
#endregion
#region EffDate
[PXDBDate(IsKey =true)]
[PXDefault(typeof(AccessInfo.businessDate))]
[PXUIField(DisplayName = "Eff Date")]
public virtual DateTime? EffDate { get; set; }
public abstract class effDate : PX.Data.BQL.BqlDateTime.Field<effDate> { }
#endregion
#region BaseIndex
[PXDBInt()]
[PXUIField(DisplayName = "Base Index")]
public virtual int? BaseIndex { get; set; }
public abstract class baseIndex : PX.Data.BQL.BqlInt.Field<baseIndex> { }
#endregion
#region CreatedDateTime
[PXDBCreatedDateTime()]
public virtual DateTime? CreatedDateTime { get; set; }
public abstract class createdDateTime : PX.Data.BQL.BqlDateTime.Field<createdDateTime> { }
#endregion
#region CreatedByID
[PXDBCreatedByID()]
public virtual Guid? CreatedByID { get; set; }
public abstract class createdByID : PX.Data.BQL.BqlGuid.Field<createdByID> { }
#endregion
#region CreatedByScreenID
[PXDBCreatedByScreenID()]
public virtual string CreatedByScreenID { get; set; }
public abstract class createdByScreenID : PX.Data.BQL.BqlString.Field<createdByScreenID> { }
#endregion
#region LastModifiedDateTime
[PXDBLastModifiedDateTime()]
public virtual DateTime? LastModifiedDateTime { get; set; }
public abstract class lastModifiedDateTime : PX.Data.BQL.BqlDateTime.Field<lastModifiedDateTime> { }
#endregion
#region LastModifiedByID
[PXDBLastModifiedByID()]
public virtual Guid? LastModifiedByID { get; set; }
public abstract class lastModifiedByID : PX.Data.BQL.BqlGuid.Field<lastModifiedByID> { }
#endregion
#region LastModifiedByScreenID
[PXDBLastModifiedByScreenID()]
public virtual string LastModifiedByScreenID { get; set; }
public abstract class lastModifiedByScreenID : PX.Data.BQL.BqlString.Field<lastModifiedByScreenID> { }
#endregion
#region Tstamp
[PXDBTimestamp()]
[PXUIField(DisplayName = "Tstamp")]
public virtual byte[] Tstamp { get; set; }
public abstract class tstamp : PX.Data.BQL.BqlByteArray.Field<tstamp> { }
#endregion
}
}
when I delete the price index record, it doesn't restrict the deletion.
I hope my query is clear.
Thanks in advance.