Fix updating of snapshot values

This commit is contained in:
Edgar P. Burkhart 2022-12-30 17:37:11 +01:00
parent 0184cba30d
commit 411d258cd7
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
4 changed files with 22 additions and 23 deletions

View file

@ -71,15 +71,5 @@ class SnapshotForm(NummiForm):
id__in=self.cleaned_data["transactions"]
)
to_update = list(
new_transactions.order_by().only("snapshot").distinct("snapshot")
)
instance.account.transaction_set.add(*new_transactions)
instance.transaction_set.add(*new_transactions)
instance.update_sum()
for upd in to_update:
upd.snapshot.update_sum()
instance.transaction_set.add(*new_transactions, bulk=False)
return instance

View file

@ -159,10 +159,15 @@ class Snapshot(AccountModel):
trans.save()
self.diff = self.value - self.start_value
self.sum = (
self.transaction_set.aggregate(sum=models.Sum("value")).get("sum", 0) or 0
)
super().save(*args, **kwargs)
def update_sum(self):
self.sum = self.transaction_set.aggregate(sum=models.Sum("value")).get("sum", 0)
self.sum = (
self.transaction_set.aggregate(sum=models.Sum("value")).get("sum", 0) or 0
)
super().save()
def delete(self, *args, **kwargs):
@ -219,9 +224,13 @@ class Transaction(CustomModel):
)
def save(self, *args, **kwargs):
if Transaction.objects.filter(pk=self.pk):
prev_self = Transaction.objects.get(pk=self.pk)
else:
prev_self = None
self.account = self.snapshot.account
super().save(*args, **kwargs)
if prev_self is not None:
prev_self.snapshot.update_sum()
self.snapshot.update_sum()

View file

@ -71,9 +71,9 @@
{% endfor %}
</div>
{% endif %}
{% if snapshot.transactions %}
{% if snapshot.transaction_set.all %}
<h2>{% translate "Transactions" %} ({{ snapshot.sum|pmvalue }} / {{ snapshot.diff|pmvalue }})</h2>
{% transaction_table snapshot.transactions %}
{% transaction_table snapshot.transaction_set.all %}
{% endif %}
{% endwith %}
{% endblock %}