1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #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.product.manager import ProductBaseManager
- class ProductBase(models.Model):
- MATERIAL = 0
- CONSUMABLE = 1
- GOODS = 2
- TYPE_CHOICES = (
- (MATERIAL,u'原料'),
- (CONSUMABLE,u'耗材'),
- (GOODS, u'成品'),
- )
- TYPE_CHOICES_DICT = [{'id':x, 'value':y} for x, y in TYPE_CHOICES]
- type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
- option_type = models.ForeignKey(Option, verbose_name=u"类别", null=True, blank=True, on_delete=models.PROTECT)
- name = models.CharField(max_length=100, verbose_name=u"名称")
- model = models.CharField(max_length=100, verbose_name=u"代码")
- barcode = models.CharField(max_length=100, verbose_name=u"条码", null=True, blank=True)
- unit = models.CharField(max_length=10, verbose_name=u"单位", null=True, blank=True)
- code = models.CharField(max_length=100, verbose_name=u"助记码", null=True, blank=True)
- standard = models.CharField(max_length=100, verbose_name=u"规格", null=True, blank=True)
- warehouse_place = models.CharField(max_length=100, verbose_name=u"存放库位", null=True, blank=True)
- notes = models.CharField(max_length=500, verbose_name=u"备注", null=True, blank=True)
- enabled = models.BooleanField(verbose_name=u"在用", default=True)
- create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
- stock_count = models.BigIntegerField(verbose_name=u"库存数量", default=0)
- stock_amount = models.BigIntegerField(verbose_name=u"库存金额", default=0)
- stock_amount2 = models.BigIntegerField(verbose_name=u"库存金额2", default=0)
- avg_cost_price = models.BigIntegerField(verbose_name=u"平均成本价", default=0)
- avg_cost_price2 = models.BigIntegerField(verbose_name=u"平均成本价2", default=0)
- max_price = models.BigIntegerField(verbose_name=u'最高入库价', default=0)
- min_price = models.BigIntegerField(verbose_name=u'最低入库价', default=0)
- last_entry_price = models.BigIntegerField(verbose_name=u"最新入库价", default=0)
- last_entry_time = models.DateTimeField(verbose_name=u"最后入库时间", null=True, blank=True)
- last_deliverd_time = models.DateTimeField(verbose_name=u"最后出库时间", null=True, blank=True)
- objects = ProductBaseManager()
- class Meta:
- db_table = "product_base"
- verbose_name = u"其他"
- ordering = ('-id',)
- index_together = (
- 'name',
- 'model',
- )
- default_permissions = ()
- permissions = (# 产品
- ("view_material_stock_ledger", u"原料总账查看"),
- ("export_material_stock_ledger", u"原料总账导出"),
- ("view_consumable_stock_ledger", u"耗材总账查看"),
- ("export_consumable_stock_ledger", u"耗材总账导出"),
- ("view_goods_stock_ledger", u"成品总账查看"),
- ("export_goods_stock_ledger", u"成品总账导出"),
- ("view_department_ledger", u"部门总账查看"),
- ("export_department_ledger", u"部门总账导出"),
- ("view_goods_product", u"库存查询"),
- )
- @staticmethod
- def getTypeText(type):
- return ProductBase.TYPE_CHOICES[type][1]
- @staticmethod
- def getById(id):
- instance = ProductBase.objects.filter(pk=id).first()
- if not instance:
- raise CustomError(u'未找到相应的产品')
- return instance
|