Skip to content
Snippets Groups Projects
Commit cf45b08c authored by ynerant's avatar ynerant
Browse files

Automatically link SpecialTransactions and their proxies

parent 884a7d0f
No related branches found
No related tags found
1 merge request!61Tresorerie
Pipeline #8009 failed with stages
in 2 minutes and 16 seconds
......@@ -2,9 +2,24 @@
# SPDX-License-Identifier: GPL-3.0-or-later
from django.apps import AppConfig
from django.db.models.signals import post_save
from django.utils.translation import gettext_lazy as _
class TreasuryConfig(AppConfig):
name = 'treasury'
verbose_name = _('Treasury')
def ready(self):
"""
Define app internal signals to interact with other apps
"""
from . import signals
from note.models import SpecialTransaction
from treasury.models import SpecialTransactionProxy
post_save.connect(signals.save_special_transaction, sender=SpecialTransaction)
# If the treasury app was disabled, we ensure that each special transaction is linked to a proxy
for transaction in SpecialTransaction.objects.filter(specialtransactionproxy=None):
SpecialTransactionProxy.objects.create(transaction=transaction, remittance=None)
......@@ -9,6 +9,10 @@ from note.models import NoteSpecial, SpecialTransaction
class Invoice(models.Model):
"""
An invoice model that can generate a true invoice
"""
id = models.PositiveIntegerField(
primary_key=True,
verbose_name=_("Invoice identifier"),
......@@ -57,6 +61,10 @@ class Invoice(models.Model):
class Product(models.Model):
"""
Product that appear on an invoice.
"""
invoice = models.ForeignKey(
Invoice,
on_delete=models.PROTECT,
......@@ -89,6 +97,10 @@ class Product(models.Model):
class Remittance(models.Model):
"""
Treasurers want to regroup checks or bank transfers in bank remittances.
"""
date = models.DateTimeField(
auto_now_add=True,
verbose_name=_("Date"),
......@@ -132,6 +144,12 @@ class Remittance(models.Model):
class SpecialTransactionProxy(models.Model):
"""
In order to keep modularity, we don't that the Note app depends on the treasury app.
That's why we create a proxy in this app, to link special transactions and remittances.
If it isn't very clean, that makes what we want.
"""
transaction = models.OneToOneField(
SpecialTransaction,
on_delete=models.CASCADE,
......
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from treasury.models import SpecialTransactionProxy
def save_special_transaction(instance, created, **kwargs):
"""
When a special transaction is created, we create its linked proxy
"""
if created:
SpecialTransactionProxy.objects.create(transaction=instance, remittance=None).save()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment