Remove unnecessary debug information
Remove duplicated code by getAmountInPeriod method
Replace magic number with getStartOfNext(Previous)BudgetPeriod method
Introduce domain object Period
Rename getAmount related methods to more meaningful names
Introduce domain object BudgetPeriod
Remove dead code and redundant if condition
Move day count code to Period and BudgetPeriod
Iterate BudgetPeriod instead of String key
Generalize code by getAmountOfOverlappingDays
Final code cleanup