Search in sources :

Example 1 with LeaseTermForTax

use of org.estatio.module.lease.dom.LeaseTermForTax in project estatio by estatio.

the class LeaseTermForTaxBuilder method execute.

@Override
protected void execute(final ExecutionContext ec) {
    checkParam("leaseItem", ec, LeaseItem.class);
    defaultParam("startDate", ec, leaseItem.getStartDate());
    defaultParam("taxPercentage", ec, bd(fakeDataService.ints().between(1, 3)));
    defaultParam("recoverablePercentage", ec, bd(fakeDataService.ints().between(40, 60)));
    defaultParam("taxable", ec, fakeDataService.booleans().coinFlip());
    defaultParam("leaseTermFrequency", ec, LeaseTermFrequency.YEARLY);
    final Class<?> expectedClass = LeaseTermForTax.class;
    if (!leaseItem.getType().isCreate(expectedClass)) {
        throw new IllegalArgumentException(String.format("LeaseItem type must instantiate %s (is %s)", expectedClass, leaseItem.getType()));
    }
    final LeaseTermForTax leaseTerm = (LeaseTermForTax) leaseItem.newTerm(startDate, endDate);
    leaseTerm.setFrequency(LeaseTermFrequency.YEARLY);
    leaseTerm.setTaxPercentage(taxPercentage);
    leaseTerm.setRecoverablePercentage(recoverablePercentage);
    leaseTerm.setInvoicingDisabled(taxable);
    ec.addResult(this, leaseTerm);
    object = leaseTerm;
}
Also used : LeaseTermForTax(org.estatio.module.lease.dom.LeaseTermForTax)

Example 2 with LeaseTermForTax

use of org.estatio.module.lease.dom.LeaseTermForTax in project estatio by estatio.

the class LeaseItemForTaxBuilder method execute.

@Override
protected void execute(final ExecutionContext ec) {
    defaultParam("charge", ec, Charge_enum.ItTax.findUsing(serviceRegistry));
    final ChargeGroup group = getCharge().getGroup();
    final ChargeGroup_enum expectedGroup = ChargeGroup_enum.Tax;
    if (group != expectedGroup.findUsing(serviceRegistry)) {
        throw new IllegalArgumentException("Charge's group must be " + expectedGroup.getRef());
    }
    LeaseItem leaseItem = new LeaseItemBuilder().setLease(lease).setCharge(charge).setLeaseItemType(LEASE_ITEM_TYPE).setInvoicingFrequency(INVOICING_FREQUENCY).setInvoicedBy(invoicedBy).setPaymentMethod(paymentMethod).setStatus(status).setSequence(sequence).build(this, ec).getObject();
    if (sourceItem != null) {
        if (leaseItem.getSourceItems().isEmpty()) {
            leaseItem.newSourceItem(sourceItem);
        }
    }
    for (LeaseTermForTaxBuilder.TermSpec termSpec : termSpecs) {
        final LeaseTermForTax term = new LeaseTermForTaxBuilder().setLeaseItem(leaseItem).setStartDate(termSpec.startDate).setEndDate(termSpec.endDate).setLeaseTermFrequency(termSpec.leaseTermFrequency).setTaxPercentage(termSpec.taxPercentage).setRecoverablePercentage(termSpec.recoverablePercentage).setTaxable(termSpec.taxable).build(this, ec).getObject();
        terms.add(term);
    }
    object = leaseItem;
}
Also used : LeaseTermForTax(org.estatio.module.lease.dom.LeaseTermForTax) ChargeGroup(org.estatio.module.charge.dom.ChargeGroup) ChargeGroup_enum(org.estatio.module.charge.fixtures.chargegroups.enums.ChargeGroup_enum) LeaseItem(org.estatio.module.lease.dom.LeaseItem)

Aggregations

LeaseTermForTax (org.estatio.module.lease.dom.LeaseTermForTax)2 ChargeGroup (org.estatio.module.charge.dom.ChargeGroup)1 ChargeGroup_enum (org.estatio.module.charge.fixtures.chargegroups.enums.ChargeGroup_enum)1 LeaseItem (org.estatio.module.lease.dom.LeaseItem)1