models.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #coding=utf-8
  2. from django.db import models
  3. from django.utils import timezone
  4. from apps.exceptions import CustomError
  5. from apps.foundation.models import Option
  6. from apps.account.models import Department, User
  7. from django.conf import settings
  8. class FinanceCategory(models.Model):
  9. name = models.CharField(max_length=100, verbose_name=u"名称")
  10. enabled = models.BooleanField(verbose_name=u"在用", default=True)
  11. create_user = models.ForeignKey(User, related_name='finance_category_ref_create_user', verbose_name=u"创建人",
  12. on_delete=models.PROTECT)
  13. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
  14. class Meta:
  15. db_table = "finance_category"
  16. ordering = ['-id']
  17. verbose_name = u"财务收支类别"
  18. default_permissions = ()
  19. permissions = (
  20. ("add_finance_category", u"添加"),
  21. ("edit_finance_category", u"修改"),
  22. ("delete_finance_category", u"删除"),
  23. )
  24. class FinancePurpose(models.Model):
  25. PAY = 1
  26. INCOME = 2
  27. TYPE_CHOICES = (
  28. (PAY, u'收入'),
  29. (INCOME, u'支出'),
  30. )
  31. name = models.CharField(max_length=100, verbose_name=u"名称")
  32. type = models.IntegerField(choices=TYPE_CHOICES, verbose_name=u"收支类型")
  33. category = models.ForeignKey(FinanceCategory, verbose_name=u"类别", on_delete=models.PROTECT)
  34. enabled = models.BooleanField(verbose_name=u"在用", default=True)
  35. create_user = models.ForeignKey(User, related_name='finance_product_ref_create_user', verbose_name=u"创建人",
  36. on_delete=models.PROTECT)
  37. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
  38. class Meta:
  39. db_table = "finance_purpose"
  40. ordering = ['-id']
  41. verbose_name = u"财务收支用途"
  42. default_permissions = ()
  43. permissions = (
  44. ("add_finance_category", u"添加"),
  45. ("edit_finance_category", u"修改"),
  46. ("delete_finance_category", u"删除"),
  47. )
  48. class dbFinanceIncome(models.Model):
  49. USER_DEFINED = 1
  50. MATERIAL_ENTRY_PAY = 2
  51. MATERIAL_ENTRY_UNLOAD = 3
  52. MATERIAL_ENTRY_FARE = 4
  53. CONSUMABLE_ENTRY_PAY = 5
  54. CONSUMABLE_ENTRY_UNLOAD = 6
  55. CONSUMABLE_ENTRY_FARE = 7
  56. SALE_ENTRY_PAY = 8
  57. SALE_ENTRY_UNLOAD = 9
  58. SALE_ENTRY_FARE = 10
  59. TYPE_CHOICES = (
  60. (USER_DEFINED, u'自定义'),
  61. (MATERIAL_ENTRY_PAY, u'原料入库付款'),
  62. (MATERIAL_ENTRY_UNLOAD, u'原料入库卸车'),
  63. (MATERIAL_ENTRY_FARE, u'原料入库运费'),
  64. (CONSUMABLE_ENTRY_PAY, u'耗材入库付款'),
  65. (CONSUMABLE_ENTRY_UNLOAD, u'耗材入库卸车'),
  66. (CONSUMABLE_ENTRY_FARE, u'耗材入库运费'),
  67. (SALE_ENTRY_PAY, u'销售结算'),
  68. (SALE_ENTRY_UNLOAD, u'销售装车'),
  69. (SALE_ENTRY_FARE, u'销售运费'),
  70. )
  71. PREFIX_CHOICES = (
  72. (USER_DEFINED, 'UD'),
  73. (MATERIAL_ENTRY_PAY, 'MP'),
  74. (MATERIAL_ENTRY_UNLOAD, 'MU'),
  75. (MATERIAL_ENTRY_FARE, 'MF'),
  76. (CONSUMABLE_ENTRY_PAY, 'CP'),
  77. (CONSUMABLE_ENTRY_UNLOAD, 'CU'),
  78. (CONSUMABLE_ENTRY_FARE, 'CF'),
  79. (SALE_ENTRY_PAY, 'SP'),
  80. (SALE_ENTRY_UNLOAD, 'SU'),
  81. (SALE_ENTRY_FARE, 'SF'),
  82. )
  83. no = models.CharField(max_length=50, verbose_name=u"收银单号")
  84. referer_no = models.CharField(max_length=50, verbose_name=u"引用单据编号")
  85. department = models.ForeignKey(Department, related_name='finance_income_ref_department', verbose_name=u'部门',null=True,on_delete=models.PROTECT)
  86. create_user = models.ForeignKey(User, related_name='finance_income_ref_create_user', verbose_name=u"创建人", on_delete=models.PROTECT)
  87. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
  88. type = models.IntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
  89. amount = models.BigIntegerField(verbose_name=u"金额")
  90. account = models.ForeignKey(Option, related_name='finance_income_ref_account',verbose_name=u"账户", on_delete=models.PROTECT)
  91. purpose = models.ForeignKey(FinancePurpose, verbose_name=u"用途", on_delete=models.PROTECT)
  92. check_user = models.ForeignKey(User, related_name='finance_income_ref_check_user', verbose_name=u"审核人",
  93. on_delete=models.PROTECT)
  94. check_time = models.DateTimeField(verbose_name=u"审核时间", null=True)
  95. check_status = models.PositiveSmallIntegerField(choices=settings.CHECK_STATUS_CHOICES, verbose_name=u"审核状态", default=settings.DEFAULT)
  96. class Meta:
  97. db_table = "finance_income"
  98. verbose_name = u"收支管理"
  99. ordering = ('-id',)
  100. unique_together = (
  101. 'no',
  102. )
  103. permissions = (
  104. ("add_finance_income", u"添加"),
  105. ("edit_finance_income", u"修改"),
  106. ("check_finance_income", u"审核"),
  107. )