factory/apps/inm/models.py

90 lines
3.4 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
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 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)
pick_user = models.ForeignKey(
User, verbose_name='领料人', on_delete=models.CASCADE, 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=50)
count = models.PositiveIntegerField('数量', default=0)