90 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.db import models
 | |
| from apps.utils.models import CommonBModel, BaseModel, CommonBDModel
 | |
| from apps.mtm.models import Material
 | |
| 
 | |
| # Create your models here.
 | |
| 
 | |
| 
 | |
| class Customer(CommonBModel):
 | |
|     """
 | |
|     客户信息
 | |
|     """
 | |
|     name = models.CharField('客户名称', max_length=50, unique=True)
 | |
|     address = models.CharField('详细地址', max_length=20, blank=True, null=True)
 | |
|     contact = models.CharField('联系人', max_length=20)
 | |
|     contact_phone = models.CharField(
 | |
|         '联系电话', max_length=11, unique=True, null=True)
 | |
|     description = models.CharField('描述', max_length=200, blank=True, null=True)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '客户信息'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| 
 | |
| class Contract(CommonBModel):
 | |
|     """
 | |
|     合同信息
 | |
|     """
 | |
|     name = models.CharField('合同名称', max_length=100)
 | |
|     number = models.CharField('合同编号', max_length=100, unique=True)
 | |
|     amount = models.IntegerField('合同金额', default=0)
 | |
|     customer = models.ForeignKey(Customer, verbose_name='关联客户',
 | |
|                                  on_delete=models.CASCADE, related_name='contract_customer')
 | |
|     sign_date = models.DateField('签订日期')
 | |
|     description = models.CharField('描述', max_length=200, blank=True, null=True)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '合同信息'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| 
 | |
| class Order(CommonBModel):
 | |
|     """
 | |
|     订单信息
 | |
|     """
 | |
|     ORDER_CREATE = 10
 | |
|     ORDER_SUBMITED = 20
 | |
|     ORDER_DOING = 30
 | |
|     ORDER_DELIVERED = 40
 | |
|     ORDER_STATES = (
 | |
|         (10, '创建中'),
 | |
|         (20, '已提交'),
 | |
|         (30, '进行中'),
 | |
|         (40, '已交付')
 | |
|     )
 | |
|     state = models.PositiveSmallIntegerField(
 | |
|         '订单状态', default=ORDER_CREATE, choices=ORDER_STATES, help_text=str(ORDER_STATES))
 | |
|     number = models.CharField('订单编号', max_length=100, unique=True)
 | |
|     customer = models.ForeignKey(
 | |
|         Customer, verbose_name='客户', on_delete=models.CASCADE)
 | |
|     contract = models.ForeignKey(
 | |
|         Contract, verbose_name='所属合同', null=True, blank=True, on_delete=models.SET_NULL)
 | |
|     delivery_date = models.DateField('截止交货日期')
 | |
|     items = models.ManyToManyField(
 | |
|         Material, verbose_name='订单明细', through='sam.orderitem', blank=True)
 | |
|     submit_time = models.DateTimeField('提交时间', null=True, blank=True)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '订单信息'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
| 
 | |
| class OrderItem(BaseModel):
 | |
|     """
 | |
|     订单明细
 | |
|     """
 | |
|     order = models.ForeignKey(
 | |
|         Order, verbose_name='关联订单', on_delete=models.CASCADE)
 | |
|     material = models.ForeignKey(
 | |
|         Material, verbose_name='所需产品', on_delete=models.CASCADE, related_name='orderitem_material')
 | |
|     count = models.PositiveIntegerField('所需数量', default=1)
 | |
|     delivered_count = models.PositiveIntegerField('已交货数量', default=0)
 | |
|     utask = models.ForeignKey('pm.utask', verbose_name='关联生产大任务',
 | |
|                               on_delete=models.SET_NULL, null=True, blank=True)
 |