models.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. import calendar
  4. from django.db import models
  5. from coin.offers.models import Offer
  6. from coin.members.models import Member
  7. class Invoice(models.Model):
  8. INVOICES_STATUS_CHOICES = (
  9. ('open', u'A payer'),
  10. ('closed', u'Reglée'),
  11. ('trouble', u'Litige')
  12. )
  13. number = models.CharField(max_length=25)
  14. status = models.CharField(max_length=50, choices=INVOICES_STATUS_CHOICES,
  15. default='open',
  16. verbose_name='Statut')
  17. amount = models.DecimalField(max_digits=5, decimal_places=2,
  18. verbose_name='Montant')
  19. date = models.DateField(default=datetime.date.today, null=True)
  20. period_from = models.DateField(
  21. default=datetime.date(datetime.date.today().year,
  22. datetime.date.today().month, 1),
  23. null=True,
  24. verbose_name=u'Début de période de facturation')
  25. period_to = models.DateField(
  26. default=(datetime.date(datetime.date.today().year,
  27. datetime.date.today().month + 1, 1) -
  28. datetime.timedelta(days=1)),
  29. null=True,
  30. verbose_name=u'Fin de période de facturation')
  31. date_due = models.DateField(
  32. default=(datetime.date(datetime.date.today().year,
  33. datetime.date.today().month + 1, 1) -
  34. datetime.timedelta(days=1)),
  35. null=True,
  36. verbose_name=u'Date d\'échéance de paiement')
  37. member = models.ForeignKey(Member, null=True, blank=True, default=None,
  38. verbose_name='Membre')
  39. def __unicode__(self):
  40. return u'#%s %s€ %s' % (self.number, self.amount, self.date_due)
  41. class Meta:
  42. verbose_name = 'facture'
  43. class InvoiceDetail(models.Model):
  44. label = models.CharField(max_length=100)
  45. amount = models.DecimalField(max_digits=5, decimal_places=2,
  46. verbose_name='Montant')
  47. quantity = models.IntegerField(null=True, verbose_name=u'Quantité')
  48. tax = models.IntegerField(null=True, default=0, verbose_name='TVA')
  49. invoice = models.ForeignKey(Invoice, verbose_name='Facture',
  50. related_name='details')
  51. offer = models.ForeignKey(Offer, null=True, blank=True, default=None,
  52. verbose_name='Offre')
  53. def __unicode__(self):
  54. return self.label
  55. class Meta:
  56. verbose_name = 'détail de facture'
  57. class Payment(models.Model):
  58. PAYMENT_MEAN_CHOICES = (
  59. ('cash', u'Espèces'),
  60. ('check', u'Chèque'),
  61. ('transfer', u'Virement'),
  62. ('other', u'Autre')
  63. )
  64. payment_mean = models.CharField(max_length=100, null=True,
  65. default='transfer',
  66. choices=PAYMENT_MEAN_CHOICES,
  67. verbose_name='Moyen de paiement')
  68. amount = models.DecimalField(max_digits=7, decimal_places=2, null=True,
  69. verbose_name='Montant')
  70. date = models.DateField(default=datetime.date.today)
  71. invoce = models.ForeignKey(Invoice, verbose_name='Facture')
  72. class Meta:
  73. verbose_name = 'paiement'