diff --git a/austax/templates/cgt_assets.html b/austax/templates/cgt_assets.html index 2e7e86b..b6bd644 100644 --- a/austax/templates/cgt_assets.html +++ b/austax/templates/cgt_assets.html @@ -50,12 +50,12 @@ {% for asset in assets %} - {{ asset.account }} + {{ asset.account }} {{ asset.commodity_name() }} {{ asset.format('hide') }} {{ asset.acquisition_date.strftime('%Y-%m-%d') }} {{ asset.as_cost().format() }} - {{ asset.cost_adjustment().format_accounting() if asset.cost_adjustments }} + {{ asset.cost_adjustment().format_accounting(link="/tax/cgt-adjustments?account={}&commodity={}&quantity={}&acquisition_date={:%Y-%m-%d}".format(asset.account, asset.commodity, asset.quantity, asset.acquisition_date)) if asset.cost_adjustments }} {# TODO #} {{ asset.disposal_date.strftime('%Y-%m-%d') if asset.disposal_date else '' }} diff --git a/austax/views.py b/austax/views.py index fe0454e..94f60d4 100644 --- a/austax/views.py +++ b/austax/views.py @@ -29,7 +29,17 @@ from math import copysign @app.route('/tax/cgt-adjustments') def cgt_adjustments(): - adjustments = db.session.scalars(db.select(CGTCostAdjustment).order_by(CGTCostAdjustment.dt, CGTCostAdjustment.account)).all() + adjustments = db.select(CGTCostAdjustment).order_by(CGTCostAdjustment.dt, CGTCostAdjustment.account) + if 'account' in request.args: + adjustments = adjustments.where(CGTCostAdjustment.account == request.args['account']) + if 'quantity' in request.args: + adjustments = adjustments.where(CGTCostAdjustment.quantity == request.args['quantity']) + if 'commodity' in request.args: + adjustments = adjustments.where(CGTCostAdjustment.commodity == request.args['commodity']) + if 'acquisition_date' in request.args: + adjustments = adjustments.where(CGTCostAdjustment.acquisition_date == datetime.strptime(request.args['acquisition_date'], '%Y-%m-%d')) + + adjustments = db.session.scalars(adjustments).all() return render_plugin_template('austax', 'cgt_adjustments.html', cgt_adjustments=adjustments) @app.route('/tax/cgt-adjustments/new', methods=['GET', 'POST']) diff --git a/drcr/models.py b/drcr/models.py index 0dd6662..a6057db 100644 --- a/drcr/models.py +++ b/drcr/models.py @@ -122,11 +122,18 @@ class Amount: else: return Markup('{1:,.{dps}f} {0}'.format(self.commodity, self.quantity / (10**AMOUNT_DPS), dps=AMOUNT_DPS).replace(',', ' ')) - def format_accounting(self): + def format_accounting(self, link=None): if self.quantity >= 0: - return Markup('{:,.{dps}f} '.format(self.quantity / (10**AMOUNT_DPS), dps=AMOUNT_DPS).replace(',', ' ')) + text = '{:,.{dps}f}'.format(self.quantity / (10**AMOUNT_DPS), dps=AMOUNT_DPS).replace(',', ' ') + space = ' ' else: - return Markup('({:,.{dps}f})'.format(-self.quantity / (10**AMOUNT_DPS), dps=AMOUNT_DPS).replace(',', ' ')) + text = '({:,.{dps}f})'.format(-self.quantity / (10**AMOUNT_DPS), dps=AMOUNT_DPS).replace(',', ' ') + space = '' + + if link is None: + return Markup(text + space) + else: + return Markup('{}{}'.format(link, text, space)) def quantity_string(self): if self.commodity == '$':