models.py 2.5 KB

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