92 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.6 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)
 | |
|     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)
 | |
|     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)
 |