jantman / biweeklybudget

Responsive Flask/SQLAlchemy personal finance app, specifically for biweekly budgeting.
http://biweeklybudget.readthedocs.io/en/latest/
GNU Affero General Public License v3.0
97 stars 19 forks source link

Can't open credit-payoff #271

Open ripnyt-ripnyt opened 1 year ago

ripnyt-ripnyt commented 1 year ago

Bug Report

Version

python 3.10.8 biweeklybudget 1.1.1 venv 20.16.5 mariadb

Installation Method

Docker inside venv on nixos for both biweeklybudget and mariadb

Supporting Software Versions

The output of python --version and virtualenv --version in the environment that biweeklybudget is running in, as well as your operating system type and version.

Actual Output

172.17.0.1 - - [01/Feb/2023:00:19:46 +0000] "GET /utils/datetest.js HTTP/1.1" 200 45 "http://172.17.0.3/accounts" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" [0.000710s]
2023-02-01 00:19:48,804 [DEBUG interest.py:124 - biweeklybudget.interest._make_statements() ] Statements: {}
2023-02-01 00:19:48,805 [DEBUG interest.py:139 - biweeklybudget.interest.min_payments() ] Minimum payments by account_id: {}
2023-02-01 00:19:48,805 [DEBUG interest.py:139 - biweeklybudget.interest.min_payments() ] Minimum payments by account_id: {}
2023-02-01 00:19:48,805 [DEBUG interest.py:857 - biweeklybudget.interest.calculate_payoffs() ] calculating payoff via <HighestBalanceFirstMethod(0, increases={}, onetimes={})> for: []
2023-02-01 00:19:48,805 [DEBUG interest.py:857 - biweeklybudget.interest.calculate_payoffs() ] calculating payoff via <HighestInterestRateFirstMethod(0, increases={}, onetimes={})> for: []
2023-02-01 00:19:48,805 [DEBUG interest.py:857 - biweeklybudget.interest.calculate_payoffs() ] calculating payoff via <LowestBalanceFirstMethod(0, increases={}, onetimes={})> for: []
2023-02-01 00:19:48,805 [DEBUG interest.py:857 - biweeklybudget.interest.calculate_payoffs() ] calculating payoff via <LowestInterestRateFirstMethod(0, increases={}, onetimes={})> for: []
2023-02-01 00:19:48,805 [DEBUG interest.py:857 - biweeklybudget.interest.calculate_payoffs() ] calculating payoff via <MinPaymentMethod(0, increases={}, onetimes={})> for: []
2023-02-01 00:19:48,805 [ERROR app.py:1890 - biweeklybudget.flaskapp.app.log_exception() ] Exception on /accounts/credit-payoff [GET]
Traceback (most recent call last):
  File "/app/lib/python3.10/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/app/lib/python3.10/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/app/lib/python3.10/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/app/lib/python3.10/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/app/lib/python3.10/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/app/lib/python3.10/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/app/lib/python3.10/site-packages/flask/views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "/app/lib/python3.10/site-packages/flask/views.py", line 163, in dispatch_request
    return meth(*args, **kwargs)
  File "/app/lib/python3.10/site-packages/biweeklybudget/flaskapp/views/credit_payoffs.py", line 165, in get
    monthly_pymt_sum=mps.quantize(Decimal('.01'), rounding=ROUND_UP),
AttributeError: 'int' object has no attribute 'quantize'
2023-02-01 00:19:48,806 [DEBUG db.py:193 - biweeklybudget.db.cleanup_db() ] Closing DB session
172.17.0.1 - - [01/Feb/2023:00:19:48 +0000] "GET /accounts/credit-payoff HTTP/1.1" 500 290 "http://172.17.0.3/accounts" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" [0.004074s]

Expected Output

after clicking on credit-payoff button, i expected to see the credit payoff page but instead got a 500 error. this happens with fresh db and no tx, txs loaded into the bank account type, and when attempting to convert a bank account to a credit account. each give a similar error, which is can't round a None type with an int. not entirely sure how to fill in the data correctly from scratch.

Testing Assistance

yea

jantman commented 1 year ago

Apologies for the delayed response. It will take me a little time to try and reproduce this, but my first guess would be that this is happening if you don't have any credit cards configured, or don't have any cards configured that have both a current balance and an interest rate and minimum payment method configured.

I'll also say that I no longer use the credit payoff functionality in this project, so it probably hasn't been tested in a while and its future is rather uncertain.

ripnyt-ripnyt commented 1 year ago

no worries! I understand this is a personal tool and don't expect it to be fixed. just wanted to report it. maybe someday I'll try to sort it out!

jantman commented 1 year ago

Cool, thanks!

So I tend to work on this in big blocks. I did a bunch of work late last year... the next time I decide to do a bunch of work on it, I'll try to tackle this one.