models.py 2.7 KB

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