from django.db import models from apps.utils.models import CommonBModel, BaseModel, CommonBDModel from apps.mtm.models import Material # Create your models here. class Supplier(CommonBModel): """ 供应商 """ name = models.CharField('供应商名称', max_length=50) contact = models.CharField('联系人', max_length=20) contact_phone = models.CharField('联系电话', max_length=11) address = models.CharField('地址', max_length=200, default='') class PuPlan(CommonBModel): """ 采购计划 """ PUPLAN_CREATE = 10 PUPLAN_SUBMITED = 20 PUPLAN_ORDERING = 30 PUPLAN_ORDERED = 40 PUPLAN_DONE = 50 PUPLAN_STATES = ( (PUPLAN_CREATE, '创建中'), (PUPLAN_SUBMITED, '已提交'), (PUPLAN_ORDERING, '下单中'), (PUPLAN_ORDERED, '下单完成'), (PUPLAN_DONE, '已完成'), ) state = models.PositiveSmallIntegerField('状态', choices=PUPLAN_STATES, default=10, help_text=str(PUPLAN_STATES)) number = models.CharField('编号', max_length=20) name = models.CharField('名称', max_length=50, null=True, blank=True) submit_time = models.DateTimeField('提交时间', null=True, blank=True) class PuOrder(CommonBModel): """ 采购订单 """ PUORDER_CREATE = 10 PUORDER_SUBMITED = 20 PUORDER_SHIP = 30 PUORDER_DONE = 40 PUORDER_STATES = ( (PUORDER_CREATE, '创建中'), (PUORDER_SUBMITED, '已提交'), (PUORDER_SHIP, '到货中'), (PUORDER_DONE, '已完成'), ) state = models.PositiveSmallIntegerField('状态', choices=PUORDER_STATES, default=10, help_text=str(PUORDER_STATES)) number = models.CharField('订单编号', max_length=20, null=True, blank=True) supplier = models.ForeignKey(Supplier, verbose_name='供应商', on_delete=models.CASCADE) delivery_date = models.DateField('截止到货日期', null=True, blank=True) submit_time = models.DateTimeField('提交时间', null=True, blank=True) class PuOrderItem(BaseModel): material = models.ForeignKey(Material, verbose_name='物料', on_delete=models.CASCADE) count = models.PositiveIntegerField('所需数量', default=0) delivered_count = models.PositiveIntegerField('已到货数量', default=0) pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单', on_delete=models.CASCADE, null=True, blank=True, related_name='item_puorder') class PuPlanItem(CommonBDModel): """ 采购计划明细(因为各部门填写所以需要belong_dept字段) """ material = models.ForeignKey(Material, verbose_name='所需物料', on_delete=models.CASCADE) need_count = models.PositiveIntegerField('所属数量') need_date = models.DateField('需求日期') note = models.TextField('备注', default='') pu_plan = models.ForeignKey(PuPlan, verbose_name='采购计划', on_delete=models.CASCADE, null=True, blank=True, related_name='item_puplan') pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单', on_delete=models.SET_NULL, null=True, blank=True, related_name='puplan_item_puorder')