package gw.rating.flow uses gw.api.database.Query @ReadOnly enhancement RateTableArgumentSourceSetEnhancement : entity.RateTableArgumentSourceSet { /** * Used to check whether or not the associated rate table argument set is in use by * a rate routine which is referenced in a promoted (non-draft) rate book. * * @return Returns true if the rate table argument source set is used in a rate routine * referenced in a non-draft (promoted) rate book, else return false. */ function isUsedInPromotedBookViaRoutine(): boolean { var usedQuery = makeReferencingRoutinesQuery() usedQuery .join(RateBookCalcRoutine#CalcRoutineDefinition) .subselect(RateBookCalcRoutine.RATEBOOK_PROP.get(), CompareIn, RateBook.makePromotedRateBookQuery(), RateBook.ID_PROP.get()) return usedQuery.select().Count > 0 } /** * Used to check whether or not the associated rate table argument set is in use by * a rate routine which is referenced in any rate book. * * @return Returns true if the rate table argument source set is used in a rate routine * referenced in any rate book, else return false. */ function isUsedInAnyRateBookViaRateRoutine(): boolean { var usedQuery = makeReferencingRoutinesQuery() usedQuery.join(RateBookCalcRoutine#CalcRoutineDefinition) return usedQuery.select().Count > 0 } /** * Query to return all routines using the argument source set and rate table definition */ property get ReferencingRateRoutines(): List { return makeReferencingRoutinesQuery() .select() .toList() } property get NotUsedByRateRoutines(): boolean { return makeReferencingRoutinesQuery().select().Empty } private function makeReferencingRoutinesQuery(): Query { var operandQuery = this.RateTableDefinition.makeReferencingOperandsQuery() operandQuery.compare(CalcStepDefinitionOperand#ArgumentSourceSetCode, Equals, this.Code) return RateTableDefinition.makeReferencingRoutinesQuery(operandQuery) } }