Découpage des paiements + page de saisie
This commit is contained in:
@@ -180,9 +180,47 @@ class LigneFacture(models.Model):
|
||||
return (self.quantite * self.prix_unitaire_ht).quantize(Decimal("0.01"))
|
||||
|
||||
|
||||
class Paiement(models.Model):
|
||||
"""Opération bancaire réelle, à éclater en une ou plusieurs dépenses
|
||||
(ex. un débit Amazon regroupant plusieurs vendeurs/factures)."""
|
||||
SENS = [("debit", "Débit (achat)"), ("credit", "Crédit (encaissement)")]
|
||||
entreprise = models.ForeignKey(Entreprise, on_delete=models.CASCADE,
|
||||
related_name="paiements")
|
||||
date = models.DateField()
|
||||
libelle = models.CharField("Libellé bancaire", max_length=255)
|
||||
montant_total = models.DecimalField(max_digits=12, decimal_places=2)
|
||||
sens = models.CharField(max_length=6, choices=SENS, default="debit")
|
||||
cree_le = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Paiement"
|
||||
verbose_name_plural = "Paiements"
|
||||
ordering = ["-date"]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.date} — {self.libelle} ({self.montant_total} €)"
|
||||
|
||||
@property
|
||||
def reparti(self):
|
||||
total = self.depenses.aggregate(s=Sum("montant_ttc"))["s"] or Decimal("0")
|
||||
return total.quantize(Decimal("0.01"))
|
||||
|
||||
@property
|
||||
def reste(self):
|
||||
return (self.montant_total - self.reparti).quantize(Decimal("0.01"))
|
||||
|
||||
@property
|
||||
def equilibre(self):
|
||||
return abs(self.reste) < Decimal("0.01")
|
||||
|
||||
|
||||
class Depense(models.Model):
|
||||
entreprise = models.ForeignKey(Entreprise, on_delete=models.CASCADE,
|
||||
related_name="depenses")
|
||||
paiement = models.ForeignKey(Paiement, on_delete=models.SET_NULL,
|
||||
null=True, blank=True, related_name="depenses",
|
||||
help_text="Opération bancaire dont cette dépense "
|
||||
"fait partie (achat groupé éclaté).")
|
||||
date = models.DateField()
|
||||
activite = models.CharField(
|
||||
max_length=20, choices=Activite.choices, blank=True,
|
||||
|
||||
Reference in New Issue
Block a user