У меня есть собственный экран формы и сетки, когда пользователь выбирает одно и то же значение в сетке, он позволяет сохранить запись, но в моем случае он не должен позволять вставлять одну и ту же запись в сетку также, когда пользователь вставляет / обновляет запись через сценарий импорта должна вести себя одинаково.
Например:
Ниже приведен код
public class KWStoreTrafficEntityMaint : PXGraph<KWStoreTrafficEntityMaint, KWStoreTrafficEntity>
{
public PXSelect<KWStoreTrafficEntity> Document;
[PXImport(typeof(KWStoreTrafficEntity))]
public PXSelect<KWStoreTrafficEntityDetails, Where<KWStoreTrafficEntityDetails.entityNbr,
Equal<Current<KWStoreTrafficEntity.entityNbr>>>, OrderBy<Asc<KWStoreTrafficEntityDetails.sortOrder>>> Transactions;
#region Event Handlers
protected virtual void KWStoreTrafficEntityDetails_RowUpdated(PXCache sender, PXRowUpdatedEventArgs e)
{
KWStoreTrafficEntityDetails items = e.Row as KWStoreTrafficEntityDetails;
if (items == null)
return;
if (items.Period == "9 AM")
items.SortOrder = 1;
else if (items.Period == "10 AM")
items.SortOrder = 2;
else if (items.Period == "11 AM")
items.SortOrder = 3;
else if (items.Period == "12 PM")
items.SortOrder = 4;
else if (items.Period == "1 PM")
items.SortOrder = 5;
else if (items.Period == "2 PM")
items.SortOrder = 6;
else if (items.Period == "3 PM")
items.SortOrder = 7;
else if (items.Period == "4 PM")
items.SortOrder = 8;
else if (items.Period == "5 PM")
items.SortOrder = 9;
else if (items.Period == "6 PM")
items.SortOrder = 10;
else if (items.Period == "7 PM")
items.SortOrder = 11;
}
protected virtual void KWStoreTrafficEntity_RowPersisting(PXCache sender, PXRowPersistingEventArgs e)
{
KWStoreTrafficEntity row = e.Row as KWStoreTrafficEntity;
if (row == null)
return;
if(this.IsImport)
{
if (row.EntityDate == null)
return;
foreach(KWStoreTrafficEntityDetails items in this.Transactions.Cache.Cached)
{
PXTrace.WriteInformation(items.Period);
}
}
if ((this.Document.Cache.GetStatus(this.Document.Current) == PXEntryStatus.Inserted || this.Document.Cache.GetStatus(this.Document.Current) == PXEntryStatus.Updated))
{
decimal? total = default(decimal);
foreach (KWStoreTrafficEntityDetails items in this.Transactions.Select())
{
total = total + items.TotalVisitors;
}
row.TotalVisitors = total;
}
}
#endregion
}