package gw.job uses gw.api.database.Query uses gw.api.policy.period.PolicyPeriodQueryFilters uses gw.entity.ITypeList class RewriteNewAccountQueryFilters { /** * Ensures that any term after current one is canceled or does not exist */ static function createSubselectForNextTermsAreCanceled(outerQuery : Query) { var termSubQuery = Query.make(PolicyPeriod) termSubQuery.compare(PolicyPeriod#PeriodStart, GreaterThanOrEquals, outerQuery.getColumnRef(PolicyPeriod#PeriodStart.PropertyInfo.Name)) termSubQuery.compare(PolicyPeriod#ID, NotEquals, outerQuery.getColumnRef(PolicyPeriod#ID.PropertyInfo.Name)) PolicyPeriodQueryFilters.inForce(termSubQuery) termSubQuery.or(\rt -> rt.compare(PolicyPeriod#CancellationDate, Equals, null).compare(PolicyPeriod#CancellationDate, NotEquals, termSubQuery.getColumnRef(PolicyPeriod#PeriodStart.PropertyInfo.Name))) outerQuery.subselect(PolicyPeriod#Policy, CompareNotIn, termSubQuery, PolicyPeriod#Policy) } /** * Ensure that period's policy has no open jobs except audits */ static function createSubselectHasNoActiveJobsExceptAudits(outerQuery : Query) { var subQuery = Query.make(PolicyPeriod) subQuery.compareIn(PolicyPeriod#Status, (PolicyPeriodStatus.Type as ITypeList).getTypeKeysByFilterName("Open").toArray()) subQuery.join(PolicyPeriod#Job).compare(Job#Subtype, NotEquals, typekey.Job.TC_AUDIT) outerQuery.subselect(PolicyPeriod#Policy, CompareNotIn, subQuery, PolicyPeriod#Policy) } }