Core.models.work_order 源代码

from django.db import models, transaction

from Core import SELL_TYPES
from Distribution.models import Product


[文档]class WorkOrder(models.Model): """ 工作令 用以追踪一个产品合同的相关情况(工艺、采购、库存、生产) """ uid = models.CharField(verbose_name='编号', unique=True, max_length=20) sell_type = models.IntegerField(verbose_name='销售类型', choices=SELL_TYPES) client = models.CharField(verbose_name='客户名称', max_length=100) project = models.CharField(verbose_name='项目名称', max_length=100) product = models.OneToOneField(Product, verbose_name='产品', on_delete=models.CASCADE) count = models.IntegerField(verbose_name='数量') finished = models.BooleanField(verbose_name='已结束', default=False) class Meta: verbose_name = '工作令' verbose_name_plural = '工作令'
[文档] def save(self, *args, **kwargs): """ 工作令保存 工作令首次保存时会根据 *count* 自动创建子工作令 """ created = False if not self.pk: created = True with transaction.atomic(): super(WorkOrder, self).save(*args, **kwargs) if created: sub_orders = [] for index in range(1, 1 + self.count): sub_orders.append(SubWorkOrder(work_order=self, index=index)) SubWorkOrder.objects.bulk_create(sub_orders)
def __str__(self): return self.uid
[文档]class SubWorkOrder(models.Model): """ 子工作令 在创建工作令时被自动创建, 用以追踪对应工作令产品的其中一个产品 """ work_order = models.ForeignKey(WorkOrder, verbose_name='所属工作令', on_delete=models.CASCADE) index = models.IntegerField(verbose_name='序号') finished = models.BooleanField(verbose_name='已结束', default=False) class Meta: verbose_name = "子工作令" verbose_name_plural = "子工作令" def __str__(self): return '{}-{}'.format(self.work_order, self.index)