Additional changes to move application to CouchDB database backend. Removed loan files from repository (now in selfhosted couchdb instance).
This commit is contained in:
102
0_Test_Loan.loan
102
0_Test_Loan.loan
@@ -1,102 +0,0 @@
|
|||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 589.0,
|
|
||||||
"interest_rate": 6.5,
|
|
||||||
"start_interest_date": "2017-12-05",
|
|
||||||
"payment_day_of_month": "15",
|
|
||||||
"first_payment_month": "2018-01-15",
|
|
||||||
"account_number": "100100",
|
|
||||||
"principal": 10020.0,
|
|
||||||
"start_date": "2017-12-05",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"periods": 18
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Washington",
|
|
||||||
"name": "Test Lender",
|
|
||||||
"zip": "20011",
|
|
||||||
"phone": "703.343.0782",
|
|
||||||
"state": "DC",
|
|
||||||
"address": "743 Madison St NW"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Installment Loan Test Statement"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2019-07-15",
|
|
||||||
"475.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-08-14",
|
|
||||||
"475.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-09-17",
|
|
||||||
"475"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-10-15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-11-15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-12-5",
|
|
||||||
"475"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-01-15",
|
|
||||||
"0",
|
|
||||||
"50"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-09-27",
|
|
||||||
"278.15",
|
|
||||||
"20"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-09-29",
|
|
||||||
"296.12",
|
|
||||||
"25"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-16",
|
|
||||||
"133",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-16",
|
|
||||||
"133",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-16",
|
|
||||||
"133",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-05-03",
|
|
||||||
"1",
|
|
||||||
"1"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Alexandria",
|
|
||||||
"state": "VA",
|
|
||||||
"name": "Test Borrower Houses, LLC",
|
|
||||||
"zip": "22312",
|
|
||||||
"address": "301 N Beauregard St Apt 203"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"to_address": "jkent3rd@gmail.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"subject": "Your test loan statement...",
|
|
||||||
"body": "Your test loan statement is attached.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"password": "builcuouzobxroow"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,328 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 278.15,
|
|
||||||
"interest_rate": 5.0,
|
|
||||||
"start_interest_date": "2018-07-01",
|
|
||||||
"payment_day_of_month": "01",
|
|
||||||
"first_payment_month": "2018-08-01",
|
|
||||||
"account_number": "100001",
|
|
||||||
"periods": 180,
|
|
||||||
"start_date": "2018-06-25",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 35000.0
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "johnakent722@gmail.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Palmyra",
|
|
||||||
"name": "John Kent",
|
|
||||||
"zip": "22963",
|
|
||||||
"phone": "434-510-7272",
|
|
||||||
"state": "VA",
|
|
||||||
"address": "109 Shores Rd"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - 185 James River Rd, Scottsville VA"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2018-08-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-09-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-10-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-11-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-12-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-01-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-02-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-03-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-04-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-05-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-05-31",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-07-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-08-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-09-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-10-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-11-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-12-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-01-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-02-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-03-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-04-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-05-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-06-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-07-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-08-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-09-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-11-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-12-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-01-01",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-02-01",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-03-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-04-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-04-30",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-06-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-07-01",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-07-31",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-10-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-11-01",
|
|
||||||
"278.15",
|
|
||||||
"0",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-12-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-01-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-02-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-03-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-04-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-05-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-06-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-07-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-08-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-09-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-10-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-10-31",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-12-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-01-03",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-02-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-03-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-04-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Washington",
|
|
||||||
"state": "DC",
|
|
||||||
"name": "Grandma Tina's Properties, LLC",
|
|
||||||
"zip": "20001",
|
|
||||||
"address": "1720 New Jersey Ave NW Unit 401"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -1,328 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 278.15,
|
|
||||||
"interest_rate": 5.0,
|
|
||||||
"start_interest_date": "2018-07-01",
|
|
||||||
"payment_day_of_month": "01",
|
|
||||||
"first_payment_month": "2018-08-01",
|
|
||||||
"account_number": "100001",
|
|
||||||
"periods": 180,
|
|
||||||
"start_date": "2018-06-25",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 35000.0
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "bck@virginia.edu",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Scottsville",
|
|
||||||
"name": "Brenda Kelly",
|
|
||||||
"zip": "24590",
|
|
||||||
"phone": "434-286-2110",
|
|
||||||
"state": "VA",
|
|
||||||
"address": "150 Confederate Street"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - 185 James River Rd, Scottsville VA"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2018-08-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-09-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-10-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-11-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-12-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-01-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-02-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-03-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-04-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-05-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-05-31",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-07-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-08-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-09-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-10-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-11-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-12-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-01-02",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-02-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-03-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-04-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-05-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-06-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-07-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-08-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-09-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-01",
|
|
||||||
"278.15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-11-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-12-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-01-01",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-02-01",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-03-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-04-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-04-30",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-06-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-07-01",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-07-31",
|
|
||||||
"278.15",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-10-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-11-01",
|
|
||||||
"278.15",
|
|
||||||
"0",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-12-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-01-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-02-01",
|
|
||||||
"278.15",
|
|
||||||
"0",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-03-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-04-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-05-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-06-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-07-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-08-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-09-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-10-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-10-31",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-12-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-01-03",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-02-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-03-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-04-01",
|
|
||||||
"278.15",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Washington",
|
|
||||||
"state": "DC",
|
|
||||||
"name": "Grandma Tina's Properties, LLC",
|
|
||||||
"zip": "20001",
|
|
||||||
"address": "1720 New Jersey Ave NW Unit 401"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 842.93,
|
|
||||||
"interest_rate": 5.75,
|
|
||||||
"start_interest_date": "2022-08-12",
|
|
||||||
"payment_day_of_month": "15",
|
|
||||||
"first_payment_month": "2022-09-15",
|
|
||||||
"account_number": "22-0001",
|
|
||||||
"periods": 180,
|
|
||||||
"start_date": "2022-08-12",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 101508.04
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "grady@gradystreet.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Washington",
|
|
||||||
"name": "Rivanna Graphite Investments, LLC",
|
|
||||||
"zip": "20001",
|
|
||||||
"phone": "703.343.0782",
|
|
||||||
"state": "DC",
|
|
||||||
"address": "1720 New Jersey Ave NW Unit 401"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - Harbor Bend Loan 1"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2022-08-15",
|
|
||||||
"803",
|
|
||||||
"0",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-09-09",
|
|
||||||
"803",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-11-17",
|
|
||||||
"842.93",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-12-29",
|
|
||||||
"842.93",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-01-27",
|
|
||||||
"842.93",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-02-10",
|
|
||||||
"842.93",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2023-03-31",
|
|
||||||
"0",
|
|
||||||
"33.68",
|
|
||||||
"False"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Alexandria",
|
|
||||||
"state": "VA",
|
|
||||||
"name": "Bear Houses, LLC",
|
|
||||||
"zip": "22312",
|
|
||||||
"address": "301 N Beauregard St Apt 203"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -3,6 +3,6 @@ FROM python:3.8-slim-buster
|
|||||||
COPY requirements.txt requirements.txt
|
COPY requirements.txt requirements.txt
|
||||||
RUN pip3 install -r requirements.txt
|
RUN pip3 install -r requirements.txt
|
||||||
|
|
||||||
COPY . .
|
COPY mortgage/ .
|
||||||
|
|
||||||
CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
|
CMD [ "python3", "-m" , "web", "run", "--host=0.0.0.0"]
|
||||||
@@ -1,255 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 803.0,
|
|
||||||
"interest_rate": 5.5,
|
|
||||||
"start_interest_date": "2017-11-11",
|
|
||||||
"payment_day_of_month": "15",
|
|
||||||
"first_payment_month": "2017-12-15",
|
|
||||||
"account_number": "100001",
|
|
||||||
"periods": 185,
|
|
||||||
"start_date": "2017-11-07",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 97750.0
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "grady@gradystreet.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Washington",
|
|
||||||
"name": "Rivanna Graphite Investments, LLC",
|
|
||||||
"zip": "20001",
|
|
||||||
"phone": "703.343.0782",
|
|
||||||
"state": "DC",
|
|
||||||
"address": "1720 New Jersey Ave NW Unit 401"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - 195 Greenfield Lane, Pearl MS"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2017-12-11",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-01-23",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-03-23",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-04-18",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-04-26",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-05-15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-06-15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-07-12",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-08-07",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-09-06",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-10-11",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-11-13",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2018-12-13",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-01-14",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-02-05",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-03-05",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-04-15",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-05-15",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-06-13",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-07-25",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-08-14",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-09-13",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-10-21",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-11-29",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2019-12-19",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-01-15",
|
|
||||||
"803"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-03-06",
|
|
||||||
"803",
|
|
||||||
"32.12"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-03-13",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-04-15",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-05-13",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-06-16",
|
|
||||||
"803.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-07-15",
|
|
||||||
"803"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-08-13",
|
|
||||||
"803"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-09-17",
|
|
||||||
"803"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-15",
|
|
||||||
"803",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-11-16",
|
|
||||||
"803.00",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-12-15",
|
|
||||||
"803.00",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-01-13",
|
|
||||||
"803.00",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-02-16",
|
|
||||||
"803.00",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-03-22",
|
|
||||||
"0",
|
|
||||||
"32.12"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-04-14",
|
|
||||||
"803.00",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-05-18",
|
|
||||||
"803.00",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-06-15",
|
|
||||||
"803.00",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-07-31",
|
|
||||||
"0",
|
|
||||||
"32.12"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-08-18",
|
|
||||||
"803",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-24",
|
|
||||||
"803",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-25",
|
|
||||||
"0",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Alexandria",
|
|
||||||
"state": "VA",
|
|
||||||
"name": "Bear Houses, LLC",
|
|
||||||
"zip": "22312",
|
|
||||||
"address": "301 N Beauregard St Apt 203"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 831.0,
|
|
||||||
"interest_rate": 5.5,
|
|
||||||
"start_interest_date": "2021-10-13",
|
|
||||||
"payment_day_of_month": "15",
|
|
||||||
"first_payment_month": "2021-11-15",
|
|
||||||
"account_number": "21-0004",
|
|
||||||
"periods": 180,
|
|
||||||
"start_date": "2021-10-13",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 101123.26
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "grady@gradystreet.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Washington",
|
|
||||||
"name": "Rivanna Graphite Investments, LLC",
|
|
||||||
"zip": "20001",
|
|
||||||
"phone": "703.343.0782",
|
|
||||||
"state": "DC",
|
|
||||||
"address": "1720 New Jersey Ave NW Unit 401"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - 195 Greenfield Lane, Pearl MS"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2021-10-14",
|
|
||||||
"803",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-10-14",
|
|
||||||
"28",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-10-18",
|
|
||||||
"28",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-11-16",
|
|
||||||
"803.00",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-11-19",
|
|
||||||
"28",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-02-10",
|
|
||||||
"831",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-04-04",
|
|
||||||
"1000",
|
|
||||||
"55.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-05-15",
|
|
||||||
"0",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-06-15",
|
|
||||||
"0",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-07-15",
|
|
||||||
"0",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-07-26",
|
|
||||||
"803",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-08-12",
|
|
||||||
"0",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2022-08-12",
|
|
||||||
"101508.04",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Alexandria",
|
|
||||||
"state": "VA",
|
|
||||||
"name": "Bear Houses, LLC",
|
|
||||||
"zip": "22312",
|
|
||||||
"address": "301 N Beauregard St Apt 203"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 848,
|
|
||||||
"interest_rate": 5.75,
|
|
||||||
"start_interest_date": "2022-08-12",
|
|
||||||
"payment_day_of_month": "15",
|
|
||||||
"first_payment_month": "2022-09-15",
|
|
||||||
"account_number": "22-0001",
|
|
||||||
"periods": 180,
|
|
||||||
"start_date": "2022-08-12",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 101508.04
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "grady@gradystreet.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Washington",
|
|
||||||
"name": "Rivanna Graphite Investments, LLC",
|
|
||||||
"zip": "20001",
|
|
||||||
"phone": "703.343.0782",
|
|
||||||
"state": "DC",
|
|
||||||
"address": "1720 New Jersey Ave NW Unit 401"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - Harbor Bend Loan 1"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Alexandria",
|
|
||||||
"state": "VA",
|
|
||||||
"name": "Bear Houses, LLC",
|
|
||||||
"zip": "22312",
|
|
||||||
"address": "301 N Beauregard St Apt 203"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
{
|
|
||||||
"htmlTemplate": "statement.pdf.jinja",
|
|
||||||
"parameters": {
|
|
||||||
"monthly_payment": 175.55,
|
|
||||||
"interest_rate": 4.5,
|
|
||||||
"start_interest_date": "2020-07-15",
|
|
||||||
"payment_day_of_month": "15",
|
|
||||||
"first_payment_month": "2020-08-15",
|
|
||||||
"account_number": "100003",
|
|
||||||
"periods": 60,
|
|
||||||
"start_date": "2020-07-15",
|
|
||||||
"periods_per_year": 12,
|
|
||||||
"principal": 16884
|
|
||||||
},
|
|
||||||
"format": "html",
|
|
||||||
"email": {
|
|
||||||
"body": "Your loan statement is attached.",
|
|
||||||
"to_address": "grady@gradystreet.com",
|
|
||||||
"from_address": "jkent3rd@gmail.com",
|
|
||||||
"text": "Please see your most recent account statement.",
|
|
||||||
"server": "smtp.gmail.com",
|
|
||||||
"send_text": "true",
|
|
||||||
"template": "./template.txt",
|
|
||||||
"send_pdf": "true",
|
|
||||||
"password": "builcuouzobxroow",
|
|
||||||
"subject": "Your loan statement..."
|
|
||||||
},
|
|
||||||
"lender": {
|
|
||||||
"city": "Washington",
|
|
||||||
"name": "Rivanna Graphite Investments, LLC",
|
|
||||||
"zip": "20008",
|
|
||||||
"phone": "703.343.0782",
|
|
||||||
"state": "DC",
|
|
||||||
"address": "3100 Connecticut Ave NW Apt 144"
|
|
||||||
},
|
|
||||||
"header": {
|
|
||||||
"date": "Today",
|
|
||||||
"title": "Mortgage Loan Statement - 5025 Wayneland Drive Apt D11 Jackson MS 39211"
|
|
||||||
},
|
|
||||||
"payments": [
|
|
||||||
[
|
|
||||||
"2020-08-27",
|
|
||||||
"175.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-09-30",
|
|
||||||
"175.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-10-19",
|
|
||||||
"175.55",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-12-01",
|
|
||||||
"0",
|
|
||||||
"17.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2020-12-29",
|
|
||||||
"0",
|
|
||||||
"17.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-01-20",
|
|
||||||
"175.55",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-02-15",
|
|
||||||
"0.00",
|
|
||||||
"17.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-03-12",
|
|
||||||
"175.55",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-04-15",
|
|
||||||
"0",
|
|
||||||
"17.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-05-17",
|
|
||||||
"0",
|
|
||||||
"17.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-06-30",
|
|
||||||
"0",
|
|
||||||
"0.00"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-07-29",
|
|
||||||
"175.55",
|
|
||||||
"17.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-08-09",
|
|
||||||
"175.55",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-08-10",
|
|
||||||
"175.55",
|
|
||||||
"0",
|
|
||||||
"extra"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-03",
|
|
||||||
"175.55",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-17",
|
|
||||||
"175.55",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2021-09-18",
|
|
||||||
"0",
|
|
||||||
"0.00",
|
|
||||||
"False"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"borrower": {
|
|
||||||
"city": "Alexandria",
|
|
||||||
"state": "VA",
|
|
||||||
"name": "Bear Houses, LLC",
|
|
||||||
"zip": "22312",
|
|
||||||
"address": "301 N Beauregard St Apt 203"
|
|
||||||
},
|
|
||||||
"txtTemplate": "statement.txt.jinja"
|
|
||||||
}
|
|
||||||
@@ -17,6 +17,6 @@
|
|||||||
<tr><td>{{message}}</td></tr>
|
<tr><td>{{message}}</td></tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
<a href="/?loan={{filename}}">Return to Main Screen</a>.
|
<a href="/?loan={{document_id}}">Return to Main Screen</a>.
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<p id="header" align="center"><font face="Arial" size=+2 >Web Mortgage Manager</font></p>
|
<p id="header" align="center"><font face="Arial" size=+2 >Web Mortgage Manager</font></p>
|
||||||
|
|
||||||
<p> The email has been sent.</p>
|
<p> The email has been sent.</p>
|
||||||
<a href="/?loan={{filename}}">Return to Main Screen</a>.
|
<a href="/?loan={{document_id}}">Return to Main Screen</a>.
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -16,10 +16,10 @@
|
|||||||
<td>
|
<td>
|
||||||
<select name="loan" id="loan">
|
<select name="loan" id="loan">
|
||||||
{% for loan in loans %}
|
{% for loan in loans %}
|
||||||
{% if loan.filename==filename %}
|
{% if loan.document_id==document_id %}
|
||||||
<option value="{{loan.filename}}" selected>{{loan.name}}</option>
|
<option value="{{loan.document_id}}" selected>{{loan.name}}</option>
|
||||||
{% else %}
|
{% else %}
|
||||||
<option value="{{loan.filename}}">{{loan.name}}</option>
|
<option value="{{loan.document_id}}">{{loan.name}}</option>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
@@ -44,8 +44,8 @@
|
|||||||
<li><a href="#loan_history">Loan History</a></li>
|
<li><a href="#loan_history">Loan History</a></li>
|
||||||
<li><a href="#loan_amortization">Future Amortization</a></li>
|
<li><a href="#loan_amortization">Future Amortization</a></li>
|
||||||
<li><a href="#email">Email Statement</a></li>
|
<li><a href="#email">Email Statement</a></li>
|
||||||
<li><a href="#add_payment">Add Payment</a></li>
|
<li><a href="#add_payment">Add a Regular Payment</a></li>
|
||||||
<li><a href="#add_extra_payment">Add Payment</a></li>
|
<li><a href="#add_extra_payment">Add an Extra Payment</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div id="loan_information">
|
<div id="loan_information">
|
||||||
<table align="center" border="1px">
|
<table align="center" border="1px">
|
||||||
@@ -163,12 +163,12 @@
|
|||||||
</td></tr>
|
</td></tr>
|
||||||
<tr><td><button>Send Statement</button></td></tr>
|
<tr><td><button>Send Statement</button></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="hidden" name='loan' value="{{filename}}" />
|
<input type="hidden" name='loan' value="{{document_id}}" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="add_payment">
|
<div id="add_payment">
|
||||||
<form name="AddPayment" method="post" action="/update_file">
|
<form name="AddPayment" method="post" action="/update_file">
|
||||||
<input type="hidden" name="loan" value="{{filename}}" />
|
<input type="hidden" name="loan" value="{{document_id}}" />
|
||||||
<table align="center" border="1px" width="75%">
|
<table align="center" border="1px" width="75%">
|
||||||
<tr><td align="center" bgcolor="darkgrey">Record a Payment</td></tr>
|
<tr><td align="center" bgcolor="darkgrey">Record a Payment</td></tr>
|
||||||
<tr><td bgcolor="beige">Payment Date:</td></tr>
|
<tr><td bgcolor="beige">Payment Date:</td></tr>
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="add_extra_payment">
|
<div id="add_extra_payment">
|
||||||
<form name="AddExtraPayment" method="post" action="/update_file">
|
<form name="AddExtraPayment" method="post" action="/update_file">
|
||||||
<input type="hidden" name="loan" value="{{filename}}" />
|
<input type="hidden" name="loan" value="{{document_id}}" />
|
||||||
<table align="center" border="1px" width="75%">
|
<table align="center" border="1px" width="75%">
|
||||||
<tr><td align="center" bgcolor="darkgrey">Record an Extra Payment</td></tr>
|
<tr><td align="center" bgcolor="darkgrey">Record an Extra Payment</td></tr>
|
||||||
<tr><td bgcolor="beige">Payment Date:</td></tr>
|
<tr><td bgcolor="beige">Payment Date:</td></tr>
|
||||||
|
|||||||
108
mortgage/web.py
108
mortgage/web.py
@@ -10,9 +10,12 @@ from email.mime.multipart import MIMEMultipart
|
|||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
from email.mime.base import MIMEBase
|
from email.mime.base import MIMEBase
|
||||||
from email import encoders
|
from email import encoders
|
||||||
|
import couchdb
|
||||||
|
|
||||||
|
couch = couchdb.Server('https://admin:ams19230@couch.jkent.org:443/')
|
||||||
|
database = couch['mortgage']
|
||||||
|
|
||||||
module_directory = os.path.dirname(__file__)
|
module_directory = os.path.dirname(__file__)
|
||||||
app_directory = os.path.normpath(os.path.join(module_directory, ".."))
|
|
||||||
loader = jinja2.FileSystemLoader([os.path.join(module_directory, "templates")])
|
loader = jinja2.FileSystemLoader([os.path.join(module_directory, "templates")])
|
||||||
environment = jinja2.Environment(loader=loader)
|
environment = jinja2.Environment(loader=loader)
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -24,31 +27,31 @@ app = Flask(__name__)
|
|||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def hello():
|
def hello():
|
||||||
loans = getLoanFiles(app_directory)
|
loans = getLoanFiles(database)
|
||||||
|
|
||||||
#if a loan was not specified, choose the first loan and reload page with it
|
#if a loan was not specified, choose the first loan and reload page with it
|
||||||
if 'loan' in request.args:
|
if 'loan' in request.args:
|
||||||
filename = request.args["loan"]
|
document_id = request.args["loan"]
|
||||||
else:
|
else:
|
||||||
return redirect('/?loan=' + loans[0]['filename'])
|
return redirect('/?loan=' + loans[0]['document_id'])
|
||||||
|
|
||||||
loan = loadLoanInformation(getFullPathOfLoanFile(filename))
|
loan = loadLoanInformation(document_id)
|
||||||
amortizeLoan(loan)
|
amortizeLoan(loan)
|
||||||
|
|
||||||
return render_template('main.html', filename=filename, loans=loans, model=loan)
|
return render_template('main.html', document_id=document_id, loans=loans, model=loan)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/update_file', methods=['POST'])
|
@app.route('/update_file', methods=['POST'])
|
||||||
def update_file():
|
def update_file():
|
||||||
messages = []
|
messages = []
|
||||||
|
|
||||||
loanFile = request.form["loan"]
|
document_id = request.form["loan"]
|
||||||
data = getDatastore(getFullPathOfLoanFile(loanFile))
|
document = getDatastore(document_id)
|
||||||
|
|
||||||
late_fee = Decimal('0.00').quantize(Decimal('1.00'))
|
late_fee = Decimal('0.00').quantize(Decimal('1.00'))
|
||||||
extra_payment = False
|
extra_payment = False
|
||||||
payment_amount = Decimal('0.00').quantize(Decimal('1.00'))
|
payment_amount = Decimal('0.00').quantize(Decimal('1.00'))
|
||||||
payment_history = data["payments"]
|
payment_history = document["payments"]
|
||||||
todays_date = str(datetime.now().strftime("%Y-%m-%d"))
|
todays_date = str(datetime.now().strftime("%Y-%m-%d"))
|
||||||
if 'date' in request.form:
|
if 'date' in request.form:
|
||||||
if request.form['date'] == '':
|
if request.form['date'] == '':
|
||||||
@@ -88,44 +91,25 @@ def update_file():
|
|||||||
extra_payment = True
|
extra_payment = True
|
||||||
|
|
||||||
if proceed_flag is True:
|
if proceed_flag is True:
|
||||||
try:
|
payment_history.append([payment_date, str(payment_amount), str(late_fee), str(extra_payment)])
|
||||||
backup_filename = loanFile + ".backup-" + datetime.now().strftime("%Y-%m-%d %H-%M-%S") + ".json"
|
database[document_id]=document
|
||||||
backup_file = open(getFullPathOfLoanFile(backup_filename), 'w+')
|
messages.append("The payment was successfully written. ")
|
||||||
json.dump(data, backup_file, indent=2)
|
|
||||||
backup_file.close()
|
|
||||||
except:
|
|
||||||
messages.append("A backup file could not be created. Your payment was not recorded.")
|
|
||||||
proceed_flag = False
|
|
||||||
else:
|
|
||||||
messages.append("A backup of your file was created: '" + backup_filename + "'")
|
|
||||||
|
|
||||||
if proceed_flag is True:
|
|
||||||
try:
|
|
||||||
payment_history.append([payment_date, str(payment_amount), str(late_fee), str(extra_payment)])
|
|
||||||
file = open(getFullPathOfLoanFile(loanFile), 'w+')
|
|
||||||
json.dump(data, file, indent=2)
|
|
||||||
file.close()
|
|
||||||
except:
|
|
||||||
messages.append("An error occurred writing to the file. Your payment file may be corrupt, " +
|
|
||||||
"please consider rolling back to the backup created above.")
|
|
||||||
else:
|
|
||||||
messages.append("The payment was successfully written. ")
|
|
||||||
|
|
||||||
# see if an email notification was requested, if not, exit now
|
# see if an email notification was requested, if not, exit now
|
||||||
if 'notify' not in request.form:
|
if 'notify' not in request.form:
|
||||||
messages.append("Payment notification email not requested.")
|
messages.append("Payment notification email not requested.")
|
||||||
return render_template('add.html', filename=loanFile, messages=messages)
|
return render_template('add.html', document_id=document_id, messages=messages)
|
||||||
|
|
||||||
messages.append("Payment notification email requested.")
|
messages.append("Payment notification email requested.")
|
||||||
# send email
|
# send email
|
||||||
emailParameters = data["email"]
|
emailParameters = document["email"]
|
||||||
result = {}
|
result = {}
|
||||||
payment = {}
|
payment = {}
|
||||||
result['payment'] = payment
|
result['payment'] = payment
|
||||||
payment['today'] = todays_date
|
payment['today'] = todays_date
|
||||||
payment['date'] = payment_date
|
payment['date'] = payment_date
|
||||||
payment['payer'] = data['borrower']['name']
|
payment['payer'] = document['borrower']['name']
|
||||||
payment['payee'] = data['lender']['name']
|
payment['payee'] = document['lender']['name']
|
||||||
payment['amount'] = payment_amount
|
payment['amount'] = payment_amount
|
||||||
payment['late_fee'] = late_fee
|
payment['late_fee'] = late_fee
|
||||||
payment['extra_payment'] = extra_payment
|
payment['extra_payment'] = extra_payment
|
||||||
@@ -135,16 +119,16 @@ def update_file():
|
|||||||
msg = generatePaymentNotificationEmail(emailParameters["from_address"], emailParameters["to_address"],
|
msg = generatePaymentNotificationEmail(emailParameters["from_address"], emailParameters["to_address"],
|
||||||
subject, html)
|
subject, html)
|
||||||
sendEmail(msg, emailParameters["from_address"], emailParameters["to_address"], emailParameters['password'])
|
sendEmail(msg, emailParameters["from_address"], emailParameters["to_address"], emailParameters['password'])
|
||||||
return render_template('add.html', filename=loanFile, messages=messages)
|
return render_template('add.html', document_id=document_id, messages=messages)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/send_statement', methods=['POST'])
|
@app.route('/send_statement', methods=['POST'])
|
||||||
def send_statement():
|
def send_statement():
|
||||||
loanFile = request.form["loan"]
|
document_id = request.form["loan"]
|
||||||
subject = request.form["subject"]
|
subject = request.form["subject"]
|
||||||
message = request.form["message"]
|
message = request.form["message"]
|
||||||
|
|
||||||
loan = loadLoanInformation(getFullPathOfLoanFile(loanFile))
|
loan = loadLoanInformation(document_id)
|
||||||
amortizeLoan(loan)
|
amortizeLoan(loan)
|
||||||
|
|
||||||
reportCreated = False
|
reportCreated = False
|
||||||
@@ -172,7 +156,7 @@ def send_statement():
|
|||||||
|
|
||||||
sendEmail(msg, emailParameters["from_address"], emailParameters["to_address"], emailParameters['password'])
|
sendEmail(msg, emailParameters["from_address"], emailParameters["to_address"], emailParameters['password'])
|
||||||
|
|
||||||
return render_template('email.html', filename=loanFile)
|
return render_template('email.html', document_id=document_id)
|
||||||
|
|
||||||
|
|
||||||
######
|
######
|
||||||
@@ -181,37 +165,27 @@ def send_statement():
|
|||||||
|
|
||||||
|
|
||||||
def getLoanFiles(directory):
|
def getLoanFiles(directory):
|
||||||
|
#iterate over each of the documents found in the mortgage couchdb
|
||||||
|
#database and pull their display name
|
||||||
loans = []
|
loans = []
|
||||||
|
|
||||||
directory = os.path.normpath(directory)
|
for document_id in database:
|
||||||
print("Directory {}".format(directory))
|
document = database[document_id]
|
||||||
fileNames = os.listdir(directory)
|
displayName = document['displayName']
|
||||||
fileNames.sort()
|
loans.append(createLoanEntryMenuItem(displayName, document_id))
|
||||||
for filename in fileNames:
|
|
||||||
if filename.endswith(".loan"):
|
|
||||||
displayName = filename.removesuffix(".loan").replace("_"," ")
|
|
||||||
loans.append(createLoanEntryMenuItem("{0}".format(displayName), filename))
|
|
||||||
|
|
||||||
return loans
|
return loans
|
||||||
|
|
||||||
def createLoanEntryMenuItem(loanName, fileName):
|
def createLoanEntryMenuItem(loanName, document_id):
|
||||||
x = {}
|
x = {}
|
||||||
x['name'] = loanName
|
x['name'] = loanName
|
||||||
x['filename'] = fileName
|
x['document_id'] = document_id
|
||||||
return x
|
return x
|
||||||
|
|
||||||
def getFullPathOfLoanFile(filename):
|
|
||||||
app_path = os.path.dirname(__file__)
|
|
||||||
file_path = os.path.normpath(os.path.join(os.path.dirname(__file__),'..'))
|
|
||||||
print("App Path: {0}\nFile Path: {1}".format(app_path, file_path))
|
|
||||||
return os.path.join(file_path, filename)
|
|
||||||
|
|
||||||
|
|
||||||
######
|
######
|
||||||
# Datastore Manipulation Functions
|
# Datastore Manipulation Functions
|
||||||
######
|
######
|
||||||
|
|
||||||
|
|
||||||
def getStatementHeader(datastore):
|
def getStatementHeader(datastore):
|
||||||
return datastore['header']
|
return datastore['header']
|
||||||
|
|
||||||
@@ -220,8 +194,8 @@ def getEmailInformation(datastore):
|
|||||||
return datastore['email']
|
return datastore['email']
|
||||||
|
|
||||||
|
|
||||||
def loadLoanInformation(filename):
|
def loadLoanInformation(document_id):
|
||||||
datastore = getDatastore(filename)
|
datastore = getDatastore(document_id)
|
||||||
|
|
||||||
loanModel = {}
|
loanModel = {}
|
||||||
loanModel['datastore'] = datastore
|
loanModel['datastore'] = datastore
|
||||||
@@ -273,18 +247,11 @@ def getBorrower(datastore):
|
|||||||
return datastore['borrower']
|
return datastore['borrower']
|
||||||
|
|
||||||
|
|
||||||
def getDatastore(filename=None):
|
def getDatastore(document_id=None):
|
||||||
try:
|
if document_id == None:
|
||||||
if filename:
|
quit("Invalid document.")
|
||||||
with open(filename, 'r') as f:
|
|
||||||
datastore = json.load(f)
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print("An error occurred opening your loan file '%s'. " % filename)
|
|
||||||
print("The Exception:")
|
|
||||||
print(e.__repr__())
|
|
||||||
quit()
|
|
||||||
|
|
||||||
|
datastore = database[document_id]
|
||||||
return datastore
|
return datastore
|
||||||
|
|
||||||
######
|
######
|
||||||
@@ -479,7 +446,6 @@ def generatePaymentNotificationEmail(from_address, to_address, subject, html):
|
|||||||
msg['From'] = from_address
|
msg['From'] = from_address
|
||||||
msg['To'] = to_address
|
msg['To'] = to_address
|
||||||
|
|
||||||
#msg.attach(MIMEText(body))
|
|
||||||
part = MIMEBase("text", "html")
|
part = MIMEBase("text", "html")
|
||||||
part.set_payload(html)
|
part.set_payload(html)
|
||||||
encoders.encode_base64(part)
|
encoders.encode_base64(part)
|
||||||
|
|||||||
Reference in New Issue
Block a user