147 lines
6.2 KiB
Python
147 lines
6.2 KiB
Python
from django.db import models
|
|
from apps.utils.models import BaseModel, CommonBModel, CommonBDModel, CommonADModel
|
|
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 Meta:
|
|
unique_together = ('material', 'batch', 'warehouse')
|
|
|
|
|
|
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)
|
|
mio_user = models.ForeignKey(
|
|
User, verbose_name='仓库执行人', related_name='mio_user_mio', on_delete=models.CASCADE, null=True, blank=True)
|
|
do_user = models.ForeignKey(
|
|
User, verbose_name='车间执行人', related_name='do_user_mio', on_delete=models.CASCADE, null=True, blank=True)
|
|
materials = models.ManyToManyField(
|
|
Material, verbose_name='物料明细', through='inm.mioitem', 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)
|
|
|
|
test_date = models.DateField('检验日期', null=True, blank=True)
|
|
test_user = models.ForeignKey(
|
|
User, verbose_name='检验人', on_delete=models.CASCADE, null=True, blank=True)
|
|
count_bag = models.PositiveIntegerField('总袋数', default=0)
|
|
count_sampling = models.PositiveIntegerField('抽样数', default=0)
|
|
weight_kgs = models.JSONField('称重记录', default=list)
|
|
|
|
count_notok = models.PositiveIntegerField('不合格数', default=0)
|
|
count_n_zw = models.PositiveIntegerField('炸纹', default=0)
|
|
count_n_tw = models.PositiveIntegerField('条纹', default=0)
|
|
count_n_qp = models.PositiveIntegerField('气泡', default=0)
|
|
count_n_wq = models.PositiveIntegerField('弯曲', default=0)
|
|
count_n_dl = models.PositiveIntegerField('断裂', default=0)
|
|
count_n_pb = models.PositiveIntegerField('偏壁', default=0)
|
|
count_n_dxt = models.PositiveIntegerField('大小头', default=0)
|
|
count_n_jsqx = models.PositiveIntegerField('结石气线', default=0)
|
|
count_n_qt = models.PositiveIntegerField('其他', default=0)
|
|
|
|
is_testok = models.BooleanField('检验是否合格', default=True)
|
|
|
|
|
|
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')
|
|
|
|
zhuidu = models.FloatField('锥度', null=True, blank=True)
|
|
b_zuidawaijing = models.FloatField('最大外径', null=True, blank=True)
|
|
g_zuidaneijing = models.FloatField('最大内径', null=True, blank=True)
|