protected virtual IEnumerable duplicates() { var currentSetup = Base.Caches[typeof(CRSetup)].Current as CRSetup; if (currentSetup == null) { yield break; } var possibleDuplicates = dbView.SelectMulti(); foreach (PXResult rec in possibleDuplicates) { CRGrams gram = rec.GetItem <CRGrams>(); CRDuplicateGrams duplicateGram = rec.GetItem <CRDuplicateGrams>(); DuplicateContact duplicateContact = rec.GetItem <DuplicateContact>(); Standalone.CRLead duplicateLead = rec.GetItem <Standalone.CRLead>(); var dupRecord = new CRDuplicateRecord() { ContactID = gram.EntityID, ValidationType = gram.ValidationType, DuplicateContactID = duplicateGram.EntityID, Score = gram.Score, DuplicateContactType = duplicateContact?.ContactType, DuplicateBAccountID = duplicateContact?.BAccountID, DuplicateRefContactID = duplicateLead?.RefContactID, }; CRDuplicateRecord cached = (CRDuplicateRecord)Base.Caches[typeof(CRDuplicateRecord)].Locate(dupRecord); if (cached == null) { Base.Caches[typeof(CRDuplicateRecord)].Hold(dupRecord); dupRecord.Selected = false; } else { dupRecord.Selected = cached.Selected; } yield return(new PXResult <CRDuplicateRecord, Contact, DuplicateContact, BAccountR>( dupRecord, rec.GetItem <Contact>(), duplicateContact, rec.GetItem <BAccountR>())); } }
public IEnumerable GetRecords() { PXCache sourceCache = _Graph.Caches[SourceEntityID.DeclaringType]; var currentEntity = PXView.Currents?.FirstOrDefault() ?? sourceCache.Current; if (currentEntity == null) { yield break; } int?currentID = (int?)sourceCache.GetValue(currentEntity, SourceEntityID.Name); foreach (PXResult rec in View.SelectMulti(currentID)) { CRGrams gram = rec.GetItem <CRGrams>(); CRDuplicateGrams duplicateGram = rec.GetItem <CRDuplicateGrams>(); BAccountR duplicateAccount = rec.GetItem <BAccountR>(); CRLead duplicateLead = rec.GetItem <CRLead>(); var dupRecord = new CRDuplicateRecord() { ContactID = gram.EntityID, ValidationType = gram.ValidationType, DuplicateContactID = duplicateGram.EntityID, Score = gram.Score, DuplicateContactType = ContactTypesAttribute.BAccountProperty, DuplicateBAccountID = duplicateAccount?.BAccountID, DuplicateRefContactID = duplicateLead?.RefContactID, }; CRDuplicateRecord cached = (CRDuplicateRecord)_Graph.Caches[typeof(CRDuplicateRecord)].Locate(dupRecord); if (cached?.Selected == true || duplicateAccount.DefContactID == currentID) { yield return(duplicateAccount); } } }