from django.db import models from apps.utils.models import BaseModel, CommonBModel, CommonBDModel from apps.pum.models import Supplier, PuOrder from apps.sam.models import Customer, Order from apps.mtm.models import Material # Create your models here. class WareHouse(CommonBModel): """ 仓库信息 """ number = models.CharField('仓库编号', max_length=20) name = models.CharField('仓库名称', max_length=20) place = models.CharField('具体地点', max_length=50) class MaterialBatch(BaseModel): """ 物料批次 """ batch = models.CharField('批次号', max_length=100) material = models.ForeignKey( Material, on_delete=models.CASCADE, verbose_name='物料') warehouse = models.ForeignKey( WareHouse, on_delete=models.CASCADE, verbose_name='所在仓库') count = models.PositiveIntegerField('存量', default=0) expiration_date = models.DateField('有效期', null=True, blank=True) class MIO(CommonBDModel): """ 出入库记录 """ MIO_TYPE_DO_OUT = 'do_out' MIO_TYPE_SALE_OUT = 'sale_out' MIO_TYPE_PUR_IN = 'pur_in' MIO_TYPE_DO_IN = 'do_in' MIO_TYPE_OTHER_IN = 'other_in' MIO_TYPE_OTHER_OUT = 'other_out' MIO_TYPES = ( (MIO_TYPE_DO_OUT, '生产领料'), (MIO_TYPE_SALE_OUT, '销售发货'), (MIO_TYPE_PUR_IN, '采购入库'), (MIO_TYPE_DO_IN, '生产入库'), (MIO_TYPE_OTHER_IN, '其他入库'), (MIO_TYPE_OTHER_OUT, '其他出库') ) MIO_CREATE = 10 MIO_SUBMITED = 20 MIO_STATES = ( (MIO_CREATE, '创建中'), (MIO_SUBMITED, '已提交') ) number = models.CharField('编号', max_length=20) state = models.PositiveSmallIntegerField('状态', choices=MIO_STATES, default=10, help_text=str(MIO_CREATE)) type = models.CharField('出入库类型', max_length=10, default=MIO_TYPE_DO_OUT, choices=MIO_TYPES, help_text=str(MIO_TYPES)) inout_date = models.DateField('出入库日期', null=True, blank=True) supplier = models.ForeignKey(Supplier, verbose_name='供应商', on_delete=models.CASCADE, null=True, blank=True) customer = models.ForeignKey(Customer, verbose_name='客户', on_delete=models.CASCADE, null=True, blank=True) pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单', on_delete=models.CASCADE, null=True, blank=True) order = models.ForeignKey(Order, verbose_name='关联订单', on_delete=models.CASCADE, null=True, blank=True) note = models.CharField('备注', max_length=1000, default='') expiration_date = models.DateField('有效期', null=True, blank=True) submit_time = models.DateTimeField('提交时间', null=True, blank=True) class MIOItem(BaseModel): """ 出入库明细 """ mio = models.ForeignKey(MIO, verbose_name='关联出入库', on_delete=models.CASCADE) warehouse = models.ForeignKey(WareHouse, on_delete=models.CASCADE, verbose_name='仓库') material = models.ForeignKey(Material, verbose_name='物料', on_delete=models.CASCADE) batch = models.CharField('批次号', max_length=20) count = models.PositiveIntegerField('数量', default=0)