Преглед на файлове

Merge remote-tracking branch 'origin/master'

jiaweiqi преди 3 години
родител
ревизия
fd3cea7745
променени са 6 файла, в които са добавени 139 реда и са изтрити 0 реда
  1. 0 0
      apps/finance/__init__.py
  2. 7 0
      apps/finance/manager.py
  3. 0 0
      apps/finance/migrations/__init__.py
  4. 121 0
      apps/finance/models.py
  5. 9 0
      apps/finance/serializers.py
  6. 2 0
      apps/foundation/models.py

+ 0 - 0
apps/finance/__init__.py


+ 7 - 0
apps/finance/manager.py

@@ -0,0 +1,7 @@
+#coding=utf-8
+
+from django.db.models import Manager
+
+
+class ProductBaseManager(Manager):
+    pass

+ 0 - 0
apps/finance/migrations/__init__.py


+ 121 - 0
apps/finance/models.py

@@ -0,0 +1,121 @@
+#coding=utf-8
+
+from django.db import models
+from django.utils import timezone
+
+from apps.exceptions import CustomError
+from apps.foundation.models import Option
+from apps.account.models import Department, User
+from django.conf import settings
+
+
+class FinanceCategory(models.Model):
+    name = models.CharField(max_length=100, verbose_name=u"名称")
+    enabled = models.BooleanField(verbose_name=u"在用", default=True)
+    create_user = models.ForeignKey(User, related_name='finance_category_ref_create_user', verbose_name=u"创建人",
+                                    on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
+
+    class Meta:
+        db_table = "finance_category"
+        ordering = ['-id']
+        verbose_name = u"财务收支类别"
+        default_permissions = ()
+        permissions = (
+            ("add_finance_category", u"添加"),
+            ("edit_finance_category", u"修改"),
+            ("delete_finance_category", u"删除"),
+        )
+
+class FinancePurpose(models.Model):
+    PAY = 1
+    INCOME = 2
+
+    TYPE_CHOICES = (
+        (PAY, u'收入'),
+        (INCOME, u'支出'),
+    )
+
+    name = models.CharField(max_length=100, verbose_name=u"名称")
+    type = models.IntegerField(choices=TYPE_CHOICES, verbose_name=u"收支类型")
+    category = models.ForeignKey(FinanceCategory, verbose_name=u"类别", on_delete=models.PROTECT)
+    enabled = models.BooleanField(verbose_name=u"在用", default=True)
+    create_user = models.ForeignKey(User, related_name='finance_product_ref_create_user', verbose_name=u"创建人",
+                                    on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
+
+    class Meta:
+        db_table = "finance_purpose"
+        ordering = ['-id']
+        verbose_name = u"财务收支用途"
+        default_permissions = ()
+        permissions = (
+            ("add_finance_category", u"添加"),
+            ("edit_finance_category", u"修改"),
+            ("delete_finance_category", u"删除"),
+        )
+
+
+class dbFinanceIncome(models.Model):
+    USER_DEFINED = 1
+    MATERIAL_ENTRY_PAY = 2
+    MATERIAL_ENTRY_UNLOAD = 3
+    MATERIAL_ENTRY_FARE = 4
+    CONSUMABLE_ENTRY_PAY = 5
+    CONSUMABLE_ENTRY_UNLOAD = 6
+    CONSUMABLE_ENTRY_FARE = 7
+    SALE_ENTRY_PAY = 8
+    SALE_ENTRY_UNLOAD = 9
+    SALE_ENTRY_FARE = 10
+
+    TYPE_CHOICES = (
+        (USER_DEFINED, u'自定义'),
+        (MATERIAL_ENTRY_PAY, u'原料入库付款'),
+        (MATERIAL_ENTRY_UNLOAD, u'原料入库卸车'),
+        (MATERIAL_ENTRY_FARE, u'原料入库运费'),
+        (CONSUMABLE_ENTRY_PAY, u'耗材入库付款'),
+        (CONSUMABLE_ENTRY_UNLOAD, u'耗材入库卸车'),
+        (CONSUMABLE_ENTRY_FARE, u'耗材入库运费'),
+        (SALE_ENTRY_PAY, u'销售结算'),
+        (SALE_ENTRY_UNLOAD, u'销售装车'),
+        (SALE_ENTRY_FARE, u'销售运费'),
+    )
+    PREFIX_CHOICES = (
+        (USER_DEFINED, 'UD'),
+        (MATERIAL_ENTRY_PAY, 'MP'),
+        (MATERIAL_ENTRY_UNLOAD, 'MU'),
+        (MATERIAL_ENTRY_FARE, 'MF'),
+        (CONSUMABLE_ENTRY_PAY, 'CP'),
+        (CONSUMABLE_ENTRY_UNLOAD, 'CU'),
+        (CONSUMABLE_ENTRY_FARE, 'CF'),
+        (SALE_ENTRY_PAY, 'SP'),
+        (SALE_ENTRY_UNLOAD, 'SU'),
+        (SALE_ENTRY_FARE, 'SF'),
+    )
+
+    no = models.CharField(max_length=50, verbose_name=u"收银单号")
+    referer_no = models.CharField(max_length=50, verbose_name=u"引用单据编号")
+    department = models.ForeignKey(Department, related_name='finance_income_ref_department', verbose_name=u'部门',null=True,on_delete=models.PROTECT)
+    create_user = models.ForeignKey(User, related_name='finance_income_ref_create_user', verbose_name=u"创建人", on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
+    type = models.IntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
+    amount = models.BigIntegerField(verbose_name=u"金额")
+    account = models.ForeignKey(Option, related_name='finance_income_ref_account',verbose_name=u"账户", on_delete=models.PROTECT)
+    purpose = models.ForeignKey(FinancePurpose, verbose_name=u"用途", on_delete=models.PROTECT)
+    check_user = models.ForeignKey(User, related_name='finance_income_ref_check_user', verbose_name=u"审核人",
+                                    on_delete=models.PROTECT)
+    check_time = models.DateTimeField(verbose_name=u"审核时间", null=True)
+    check_status = models.PositiveSmallIntegerField(choices=settings.CHECK_STATUS_CHOICES, verbose_name=u"审核状态", default=settings.DEFAULT)
+
+    class Meta:
+        db_table = "finance_income"
+        verbose_name = u"收支管理"
+        ordering = ('-id',)
+        unique_together = (
+            'no',
+        )
+        permissions = (
+            ("add_finance_income", u"添加"),
+            ("edit_finance_income", u"修改"),
+            ("check_finance_income", u"审核"),
+        )

+ 9 - 0
apps/finance/serializers.py

@@ -0,0 +1,9 @@
+#coding=utf-8
+
+from rest_framework import serializers
+from django.db.models import Q
+
+from apps.exceptions import CustomError
+from apps.serializer_errors import dump_serializer_errors
+
+

+ 2 - 0
apps/foundation/models.py

@@ -16,6 +16,7 @@ class Option(models.Model):
     CONSUMABLE_MODE = 2
     GOODS_MODE = 3
     QUALITY_REQUEST = 4
+    BANK_ACCOUNT = 5
 
     TYPE_CHOICES = (
         (PAYMENT_MODE, u'付款方式'),
@@ -23,6 +24,7 @@ class Option(models.Model):
         (CONSUMABLE_MODE, u'耗材类别'),
         (GOODS_MODE, u'成品类别'),
         (QUALITY_REQUEST, u'质量要求'),
+        (BANK_ACCOUNT, u'银行账户'),
     )
 
     type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")