/*
* Copyright 2003-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package postingrules;
import mf.MfDate;
import mf.Quantity;
import mf.Unit;
import mf.Money;
public class AgreementRegistryBuilder_original {
public void setUp(AgreementRegistry registry) {
registry.register("lowPay", setUpLowPay());
registry.register("regular", setUpRegular());
}
public ServiceAgreement setUpRegular() {
ServiceAgreement result = new ServiceAgreement();
result.registerValue("BASE_RATE");
result.setValue("BASE_RATE", 10.0, MfDate.PAST);
result.setValue("BASE_RATE", 12.0, new MfDate(1999, 12, 1));
result.addPostingRule(EventType.USAGE,
new MultiplyByRatePR(AccountType.BASE_USAGE, true),
new MfDate(1999, 10, 1));
result.addPostingRule(EventType.SERVICE_CALL,
new AmountFormulaPR(0.5, Money.dollars(10), AccountType.SERVICE, true),
new MfDate(1999, 10, 1));
result.addPostingRule(EventType.SERVICE_CALL,
new AmountFormulaPR(0.5, Money.dollars(15), AccountType.SERVICE, true),
new MfDate(1999, 12, 1));
result.addPostingRule(EventType.TAX,
new AmountFormulaPR(0.055, Money.dollars(0), AccountType.TAX, false),
new MfDate(1999, 10, 1));
return result;
}
public ServiceAgreement setUpLowPay() {
ServiceAgreement result = new ServiceAgreement();
result.registerValue("BASE_RATE");
result.setValue("BASE_RATE", 10.0, MfDate.PAST);
result.registerValue("CAP");
result.setValue("CAP", new Quantity(50, Unit.KWH), MfDate.PAST);
result.setValue("CAP", new Quantity(60, Unit.KWH), new MfDate(1999, 12, 1));
result.registerValue("REDUCED_RATE");
result.setValue("REDUCED_RATE", 5.0, MfDate.PAST);
result.addPostingRule(EventType.USAGE,
new PoorCapPR(AccountType.BASE_USAGE, true),
new MfDate(1999, 10, 1));
result.addPostingRule(EventType.SERVICE_CALL,
new AmountFormulaPR(0, Money.dollars(10), AccountType.SERVICE, true),
new MfDate(1999, 10, 1));
result.addPostingRule(EventType.TAX,
new AmountFormulaPR(0.055, Money.dollars(0), AccountType.TAX, false),
new MfDate(1999, 10, 1));
return result;
}
}