package gw.web.admin uses gw.plugin.billing.CommissionPlanSummary class CommissionPlansByCurrency { var _commissionPlans : CommissionPlanSummary[] as AvailableCommissionPlans var _editable : boolean as IsEditable = true var _currency : Currency as Currency var _producerCode : ProducerCode construct( producerCode : ProducerCode, currency : Currency ) { _producerCode = producerCode _currency = currency } property get ExistsInDatabase() : boolean { var commissionPlan = ConfiguredCurrency return commissionPlan != null and not commissionPlan.New } property get ConfiguredCommissionPlanID() : String { return ConfiguredCurrency?.CommissionPlanID } private function addCommissionPlan() : CommissionPlan { var commissionPlan = new CommissionPlan() commissionPlan.Currency = Currency _producerCode.addToCommissionPlans(commissionPlan) return commissionPlan } property set ConfiguredCommissionPlanID(commissionPlanID : String) { var commissionPlan = ConfiguredCurrency ?: addCommissionPlan() commissionPlan.CommissionPlanID = commissionPlanID } property get ConfiguredCurrency() : CommissionPlan { var commissionPlans = _producerCode.CommissionPlans.where( \ elt -> elt.Currency == Currency) return commissionPlans.IsEmpty ? null : commissionPlans.single() } property get IsCurrencyConfigured() : boolean { return ConfiguredCurrency != null } property set IsCurrencyConfigured(checked : boolean) { var commissionPlan = ConfiguredCurrency if (commissionPlan == null and checked) { addCommissionPlan() } else if (commissionPlan.New and not checked) { commissionPlan.remove() } } }