diff --git a/mortgage_template.py b/mortgage_template.py index 69459c2..8565c46 100644 --- a/mortgage_template.py +++ b/mortgage_template.py @@ -114,6 +114,13 @@ def amortizeLoan(loan): payment_date = datetime.strptime((payment[0]), '%Y-%m-%d').date() payment_amount = Decimal(payment[1]).quantize(Decimal("1.00")) days_since_last_payment = (payment_date - interest_paid_through_date).days + + #check for out of order payments, generally a sign of a data entry problem, especially years + if days_since_last_payment < 0: + print "Payment Number %s appears out of order. The payment date '%s' is before the previous payment on '%s'." \ + % (payment_number, payment_date, interest_paid_through_date) + quit() + new_interest = (days_since_last_payment * remaining_principal * daily_interest_rate).quantize(Decimal("0.00")) new_principal = payment_amount - new_interest interest_paid_through_date = payment_date @@ -121,6 +128,7 @@ def amortizeLoan(loan): annual_interest = annual_interest + new_interest remaining_principal = remaining_principal - new_principal + # create the payment record for the template to render payment_record = {} payment_record['year']=next_bill_date.year @@ -143,6 +151,7 @@ def amortizeLoan(loan): if old_bill_date.month < 12: next_bill_date = date(year=old_bill_date.year, month=old_bill_date.month + 1, day=payment_day_of_month) else: + annual_interest = Decimal("0.00") next_bill_date = date(year=old_bill_date.year + 1, month=1, day = payment_day_of_month) loan["total_interest_paid_to_date"] = total_interest @@ -278,10 +287,14 @@ def main(): # at closing. The first payment will incur interest from one month before the bill is due. # read in the file + test_flag = True + #test_flag = False + test_address = 'jkent3rd@yahoo.com' + filename = "./testloan.json" - # filename = "./10Kloan.json" - # filename = "./dadmortgage.json" - # filename = "./brendamortgage.json" + #filename = "./10Kloan.json" + #filename = "./dadmortgage.json" + #filename = "./brendamortgage.json" #filename = "./greenfield_mortgage.json" template_filename = "statement.pdf.jinja" @@ -299,8 +312,10 @@ def main(): emailParameters = loan["email"] msg = generateEmail(emailParameters["from_address"], emailParameters["to_address"], emailParameters["subject"], emailParameters["body"], pdfAttachment, report) - sendEmail(msg, emailParameters["from_address"], emailParameters["to_address"], emailParameters['password']) - + if test_flag == False: + sendEmail(msg, emailParameters["from_address"], emailParameters["to_address"], emailParameters['password']) + else: + sendEmail(msg, emailParameters["from_address"], test_address, emailParameters['password']) if __name__ == '__main__': main() diff --git a/statement.pdf.jinja b/statement.pdf.jinja index 288e119..acd59c5 100644 --- a/statement.pdf.jinja +++ b/statement.pdf.jinja @@ -43,7 +43,7 @@