- {{ 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 == '$':