Esempio n. 1
0
        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>()));
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }