factory/apps/inm/models.py

76 lines
3.1 KiB
Python

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)