Search in sources :

Example 16 with Charge

use of org.estatio.module.charge.dom.Charge in project estatio by estatio.

the class BudgetAssignmentService method createBudgetCalculationResults.

public void createBudgetCalculationResults(final BudgetCalculationRun run) {
    run.removeCalculationResults();
    for (Partitioning partitioning : run.getBudget().getPartitionings()) {
        for (Charge invoiceCharge : partitioning.getDistinctInvoiceCharges()) {
            BudgetCalculationResult result = run.createCalculationResult(invoiceCharge);
            result.calculate();
        }
    }
}
Also used : Partitioning(org.estatio.module.budget.dom.partioning.Partitioning) LeaseTermForServiceCharge(org.estatio.module.lease.dom.LeaseTermForServiceCharge) Charge(org.estatio.module.charge.dom.Charge) BudgetCalculationResult(org.estatio.module.budgetassignment.dom.calculationresult.BudgetCalculationResult)

Example 17 with Charge

use of org.estatio.module.charge.dom.Charge in project estatio by estatio.

the class BudgetOverrideImportExport method importData.

// @Override
// public List<Class> importAfter() {
// return Lists.newArrayList();
// }
@Override
@Programmatic
public List<Object> importData(final Object previousRow) {
    if (getInvoiceChargeReference() == null) {
        throw new ApplicationException("Incoming charge reference cannot be empty");
    }
    if (getReason() == null) {
        throw new ApplicationException("Reason cannot be empty");
    }
    BudgetCalculationType budgetCalculationType;
    budgetCalculationType = getType() == null ? null : BudgetCalculationType.valueOf(getType());
    BudgetOverride budgetOverride;
    Charge incomingCharge = getIncomingChargeReference() == null ? null : fetchCharge(getIncomingChargeReference());
    switch(getClassName()) {
        case "BudgetOverrideForMax":
            validate();
            budgetOverride = budgetOverrideRepository.newBudgetOverrideForMax(getMaxValue(), fetchLease(getLeaseReference()), getStartDate(), getEndDate(), fetchCharge(getInvoiceChargeReference()), incomingCharge, budgetCalculationType, getReason());
            break;
        case "BudgetOverrideForFixed":
            validate();
            budgetOverride = budgetOverrideRepository.newBudgetOverrideForFixed(getFixedValue(), fetchLease(getLeaseReference()), getStartDate(), getEndDate(), fetchCharge(getInvoiceChargeReference()), incomingCharge, budgetCalculationType, getReason());
            break;
        case "BudgetOverrideForFlatRate":
            validate();
            budgetOverride = budgetOverrideRepository.newBudgetOverrideForFlatRate(getValuePerM2(), getWeightedArea(), fetchLease(getLeaseReference()), getStartDate(), getEndDate(), fetchCharge(getInvoiceChargeReference()), incomingCharge, budgetCalculationType, getReason());
            break;
        default:
            throw new ApplicationException(String.format("Classname %s is not valid.", getClassName()));
    }
    return Lists.newArrayList(budgetOverride);
}
Also used : ApplicationException(org.apache.isis.applib.ApplicationException) BudgetOverride(org.estatio.module.budgetassignment.dom.override.BudgetOverride) BudgetCalculationType(org.estatio.module.budget.dom.budgetcalculation.BudgetCalculationType) Charge(org.estatio.module.charge.dom.Charge) Programmatic(org.apache.isis.applib.annotation.Programmatic) BudgetOverride(org.estatio.module.budgetassignment.dom.override.BudgetOverride)

Example 18 with Charge

use of org.estatio.module.charge.dom.Charge in project estatio by estatio.

the class BudgetOverrideImportExport method validate.

private void validate() {
    Charge incomingCharge = getIncomingChargeReference() == null ? null : fetchCharge(getIncomingChargeReference());
    BudgetCalculationType budgetCalculationType;
    budgetCalculationType = getType() == null ? null : BudgetCalculationType.valueOf(getType());
    String invalidReason = budgetOverrideRepository.validateNewBudgetOverride(fetchLease(getLeaseReference()), getStartDate(), getEndDate(), fetchCharge(getInvoiceChargeReference()), incomingCharge, budgetCalculationType, getReason());
    if (invalidReason != null) {
        throw new ApplicationException(String.format(invalidReason));
    }
}
Also used : ApplicationException(org.apache.isis.applib.ApplicationException) BudgetCalculationType(org.estatio.module.budget.dom.budgetcalculation.BudgetCalculationType) Charge(org.estatio.module.charge.dom.Charge)

Example 19 with Charge

use of org.estatio.module.charge.dom.Charge in project estatio by estatio.

the class BudgetCalculationResult method calculate.

@Programmatic
public void calculate() throws IllegalArgumentException {
    validateOverrides();
    BigDecimal valueCalculatedByBudget = valueAsCalculatedByBudget();
    BigDecimal annualOverrideValue = BigDecimal.ZERO;
    List<Charge> incomingChargesOnOverrides = new ArrayList<>();
    if (overrideValueForInvoiceCharge() != null) {
        // SCENARIO: one override for all
        annualOverrideValue = annualOverrideValue.add(overrideValueForInvoiceCharge().getValue());
    } else {
        // SCENARIO: overrides on incoming charge level
        BigDecimal valueToSubtract = BigDecimal.ZERO;
        for (BudgetOverrideValue value : getOverrideValues()) {
            incomingChargesOnOverrides.add(value.getBudgetOverride().getIncomingCharge());
            annualOverrideValue = annualOverrideValue.add(value.getValue());
        }
        for (Charge charge : incomingChargesOnOverrides) {
            for (BudgetCalculation calculation : getBudgetCalculations().stream().filter(x -> x.getIncomingCharge().equals(charge)).collect(Collectors.toList())) {
                valueToSubtract = valueToSubtract.add(calculation.getValue());
            }
        }
        annualOverrideValue = annualOverrideValue.add(valueCalculatedByBudget).subtract(valueToSubtract);
    }
    BigDecimal overrideValue = annualOverrideValue.multiply(getFractionOfYear());
    setValue(overrideValue.setScale(2, BigDecimal.ROUND_HALF_UP));
    setShortfall(valueCalculatedByBudget.subtract(overrideValue).setScale(2, BigDecimal.ROUND_HALF_UP));
}
Also used : IdGeneratorStrategy(javax.jdo.annotations.IdGeneratorStrategy) BudgetOverrideValue(org.estatio.module.budgetassignment.dom.override.BudgetOverrideValue) BudgetOverrideRepository(org.estatio.module.budgetassignment.dom.override.BudgetOverrideRepository) Setter(lombok.Setter) Getter(lombok.Getter) BudgetCalculationRepository(org.estatio.module.budget.dom.budgetcalculation.BudgetCalculationRepository) Column(javax.jdo.annotations.Column) RepositoryService(org.apache.isis.applib.services.repository.RepositoryService) VersionStrategy(javax.jdo.annotations.VersionStrategy) Unique(javax.jdo.annotations.Unique) Programmatic(org.apache.isis.applib.annotation.Programmatic) ArrayList(java.util.ArrayList) PropertyLayout(org.apache.isis.applib.annotation.PropertyLayout) Inject(javax.inject.Inject) ActionLayout(org.apache.isis.applib.annotation.ActionLayout) BigDecimal(java.math.BigDecimal) IdentityType(javax.jdo.annotations.IdentityType) Action(org.apache.isis.applib.annotation.Action) Occupancy(org.estatio.module.lease.dom.occupancy.Occupancy) BudgetOverride(org.estatio.module.budgetassignment.dom.override.BudgetOverride) Charge(org.estatio.module.charge.dom.Charge) BudgetCalculation(org.estatio.module.budget.dom.budgetcalculation.BudgetCalculation) Where(org.apache.isis.applib.annotation.Where) Collectors(java.util.stream.Collectors) Query(javax.jdo.annotations.Query) Auditing(org.apache.isis.applib.annotation.Auditing) ApplicationTenancy(org.isisaddons.module.security.dom.tenancy.ApplicationTenancy) SemanticsOf(org.apache.isis.applib.annotation.SemanticsOf) List(java.util.List) DomainObject(org.apache.isis.applib.annotation.DomainObject) UdoDomainObject2(org.estatio.module.base.dom.UdoDomainObject2) TitleBuilder(org.incode.module.base.dom.utils.TitleBuilder) Contributed(org.apache.isis.applib.annotation.Contributed) Publishing(org.apache.isis.applib.annotation.Publishing) Charge(org.estatio.module.charge.dom.Charge) ArrayList(java.util.ArrayList) BudgetOverrideValue(org.estatio.module.budgetassignment.dom.override.BudgetOverrideValue) BigDecimal(java.math.BigDecimal) BudgetCalculation(org.estatio.module.budget.dom.budgetcalculation.BudgetCalculation) Programmatic(org.apache.isis.applib.annotation.Programmatic)

Example 20 with Charge

use of org.estatio.module.charge.dom.Charge in project estatio by estatio.

the class BudgetAssignmentService_Test method findOrCreateLeaseItemForServiceChargeBudgeted_returns_active_item_when_found.

@Test
public void findOrCreateLeaseItemForServiceChargeBudgeted_returns_active_item_when_found() throws Exception {
    // given
    LeaseItem itemToBeFound = new LeaseItem();
    Lease lease = new Lease() {

        @Override
        public LeaseItem findFirstActiveItemOfTypeAndChargeOnDate(final LeaseItemType leaseItemType, final Charge charge, final LocalDate date) {
            return itemToBeFound;
        }
    };
    BudgetCalculationResult budgetCalculationResult = new BudgetCalculationResult();
    LocalDate termStartDate = new LocalDate(2018, 1, 1);
    // when
    LeaseItem itemFound = budgetAssignmentService.findOrCreateLeaseItemForServiceChargeBudgeted(lease, budgetCalculationResult, termStartDate);
    // then
    assertThat(itemFound).isEqualTo(itemToBeFound);
}
Also used : Lease(org.estatio.module.lease.dom.Lease) Charge(org.estatio.module.charge.dom.Charge) LeaseItemType(org.estatio.module.lease.dom.LeaseItemType) LocalDate(org.joda.time.LocalDate) LeaseItem(org.estatio.module.lease.dom.LeaseItem) BudgetCalculationResult(org.estatio.module.budgetassignment.dom.calculationresult.BudgetCalculationResult) Test(org.junit.Test)

Aggregations

Charge (org.estatio.module.charge.dom.Charge)41 Test (org.junit.Test)18 BigDecimal (java.math.BigDecimal)14 LocalDate (org.joda.time.LocalDate)14 Lease (org.estatio.module.lease.dom.Lease)11 Programmatic (org.apache.isis.applib.annotation.Programmatic)10 BudgetItem (org.estatio.module.budget.dom.budgetitem.BudgetItem)9 Project (org.estatio.module.capex.dom.project.Project)9 Tax (org.estatio.module.tax.dom.Tax)9 Property (org.estatio.module.asset.dom.Property)7 LeaseItem (org.estatio.module.lease.dom.LeaseItem)6 ApplicationException (org.apache.isis.applib.ApplicationException)4 BudgetCalculationResult (org.estatio.module.budgetassignment.dom.calculationresult.BudgetCalculationResult)4 ChargeGroup (org.estatio.module.charge.dom.ChargeGroup)4 Action (org.apache.isis.applib.annotation.Action)3 LeaseItemType (org.estatio.module.lease.dom.LeaseItemType)3 Organisation (org.estatio.module.party.dom.Organisation)3 ApplicationTenancy (org.isisaddons.module.security.dom.tenancy.ApplicationTenancy)3 Expectations (org.jmock.Expectations)3 ArrayList (java.util.ArrayList)2