///<summary> /// Finding inconsistency between document and its applications. /// Run this method at end point of the "Release" process. /// Validating case: /// Released flag for document and its applications should always /// be the same after the "Release" process. ///</summary> public DataIntegrityValidator <TRegister> CheckApplicationsReleasedForDocument <TAdjust, TAdjgDocType, TAdjgRefNbr, TReleased>(bool disableCheck = false) where TAdjust : class, IBqlTable, new() where TAdjgDocType : IBqlField where TAdjgRefNbr : IBqlField where TReleased : IBqlField { if (IsSkipCheck(disableCheck)) { return(this); } PXSelectBase <TAdjust> selectTAdjust = new PXSelect < TAdjust, Where < TAdjgDocType, Equal <Required <TAdjgDocType> >, And <TAdjgRefNbr, Equal <Required <TAdjgRefNbr> >, And <TReleased, NotEqual <Required <TReleased> > > > > >(_graph); TAdjust adj = selectTAdjust.SelectSingle(_doc.DocType, _doc.RefNbr, _released); if (adj != null) { PXTrace.WriteInformation(_docCache.GetFullDescription(_doc)); PXTrace.WriteInformation(selectTAdjust.Cache.GetFullDescription(adj)); if (_released == true) { _errors.Add(new InconsistencyError <InconsistencyCode.releasedDocumentHasUnreleasedApplications>( new RecordContextInfo(_docCache, _doc), new RecordContextInfo(selectTAdjust.Cache, adj))); } else { _errors.Add(new InconsistencyError <InconsistencyCode.unreleasedDocumentHasReleasedApplications>( new RecordContextInfo(_docCache, _doc), new RecordContextInfo(selectTAdjust.Cache, adj))); } } return(this); }