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 from apps.system.models import User # 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 MaterialBatchA(BaseModel): """ 组合件物料批次 """ batch = models.CharField('批次号', max_length=100) material = models.ForeignKey( Material, on_delete=models.CASCADE, verbose_name='物料') rate = models.PositiveIntegerField('比例', default=1) mb = models.ForeignKey( MaterialBatch, verbose_name='关联物料批次', on_delete=models.CASCADE, related_name='a_mb') 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, unique=True) 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) submit_user = models.ForeignKey( User, verbose_name='提交人', related_name='submit_user_mio', on_delete=models.CASCADE, null=True, blank=True) do_user = models.ForeignKey( User, verbose_name='车间执行人', related_name='pick_user_mio', on_delete=models.CASCADE, null=True, blank=True) class MIOItem(BaseModel): """ 出入库明细 """ mio = models.ForeignKey(MIO, verbose_name='关联出入库', on_delete=models.CASCADE, related_name='item_mio') 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=50) count = models.PositiveIntegerField('数量', default=0) class MIOItemA(BaseModel): """ 组合件出入库明细 """ material = models.ForeignKey( Material, verbose_name='物料', on_delete=models.CASCADE) batch = models.CharField('批次号', max_length=50) rate = models.PositiveIntegerField('比例', default=1) mioitem = models.ForeignKey( MIOItem, verbose_name='关联出入库明细', on_delete=models.CASCADE, related_name='a_mioitem')