124 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
	
	
| from apps.system.models import CommonADModel, CommonAModel
 | |
| from django.db import models
 | |
| from django.contrib.auth.models import AbstractUser
 | |
| from django.db.models.base import Model
 | |
| import django.utils.timezone as timezone
 | |
| from django.db.models.query import QuerySet
 | |
| 
 | |
| 
 | |
| from utils.model import SoftModel, BaseModel
 | |
| from apps.mtm.models import Material, PackItem
 | |
| 
 | |
| 
 | |
| 
 | |
| class Customer(CommonAModel):
 | |
|     """
 | |
|     客户信息
 | |
|     """
 | |
|     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(CommonAModel):
 | |
|     """
 | |
|     合同信息
 | |
|     """
 | |
|     name = models.CharField('合同名称', max_length=100)
 | |
|     number = models.CharField('合同编号', max_length=100, unique=True)
 | |
|     amount = models.IntegerField('合同金额', default=0)
 | |
|     invoice = models.IntegerField('开票金额', default=0)
 | |
|     customer = models.ForeignKey(Customer, verbose_name='关联客户', on_delete=models.CASCADE, related_name='contact_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(CommonAModel):
 | |
|     """
 | |
|     订单信息
 | |
|     """
 | |
|     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)
 | |
|     product = models.ForeignKey(Material, verbose_name='所需产品', on_delete=models.CASCADE)
 | |
|     count = models.PositiveIntegerField('所需数量', default=0)
 | |
|     planed_count = models.PositiveIntegerField('已排数量', default=0)
 | |
|     delivered_count = models.PositiveIntegerField('已交货数量', default=0)
 | |
|     delivery_date = models.DateField('截止交货日期')
 | |
|     need_mtest = models.BooleanField('是否需要军检', default=False)
 | |
|     class Meta:
 | |
|         verbose_name = '订单信息'
 | |
|         verbose_name_plural = verbose_name
 | |
|     
 | |
| 
 | |
| class Sale(CommonADModel):
 | |
|     """
 | |
|     销售记录
 | |
|     """
 | |
|     TRANS_RAIL_FAST = 10
 | |
|     TRANS_RAIL_SLOW = 20
 | |
|     TRANS_RAIL_WHOLE = 30
 | |
|     TRANS_LORRY = 40
 | |
|     TRANS_AIR = 50
 | |
|     trans_choices=(
 | |
|         (TRANS_RAIL_FAST, '铁路快运'),
 | |
|         (TRANS_RAIL_SLOW, '铁路慢件'),
 | |
|         (TRANS_RAIL_WHOLE, '铁路整车'),
 | |
|         (TRANS_LORRY, '汽车运输'),
 | |
|         (TRANS_AIR, '空运'),
 | |
|     )
 | |
|     customer = models.ForeignKey(Customer, verbose_name='客户', on_delete=models.CASCADE)
 | |
|     order = models.ForeignKey(Order, verbose_name='关联订单', on_delete=models.CASCADE, null=True, blank=True)
 | |
|     product = models.ForeignKey(Material, verbose_name='所需产品', on_delete=models.CASCADE)
 | |
|     count = models.PositiveIntegerField('预计发货数量', default=0)
 | |
|     count_real = models.PositiveIntegerField('实际发货数量', null=True, blank=True)
 | |
|     is_audited = models.BooleanField('是否审核', default=False)
 | |
|     edelivery_date = models.DateField('预计发货日期', null=True, blank=True)
 | |
|     trans_mode = models.IntegerField('运输方式', null=True, blank=True, choices=trans_choices)
 | |
|     receiver = models.CharField('收货人', null=True, blank=True, max_length=200)
 | |
|     receiver_phone = models.CharField('收货人联系电话', null=True, blank=True, max_length=20)
 | |
|     receiver_address = models.CharField('收获地址', null=True, blank=True, max_length=200)
 | |
|     remark = models.CharField('备注', null=True, blank=True, max_length=200)
 | |
| 
 | |
| class SaleProduct(BaseModel):
 | |
|     """
 | |
|     具体产品
 | |
|     """
 | |
|     sale = models.ForeignKey(Sale, verbose_name='关联销售记录', on_delete=models.CASCADE)
 | |
|     number = models.CharField('物品编号', max_length=50)
 | |
|     iproduct = models.ForeignKey('inm.iproduct', verbose_name='关联库存产品', on_delete=models.CASCADE, related_name='sale_iproduct')
 | |
|     remark = models.TextField('备注', null=True, blank=True)
 | |
|     packnum = models.CharField('装箱单号', max_length=100, null=True, blank=True)
 | |
|     class Meta:
 | |
|         unique_together = (
 | |
|             ('sale','iproduct'),  # 联合唯一
 | |
|         )
 | |
| 
 | |
| class SalePack(BaseModel):
 | |
|     """
 | |
|     销售打包
 | |
|     """
 | |
|     sale_product = models.ForeignKey(SaleProduct, verbose_name='关联销售产品',
 | |
|         on_delete=models.CASCADE)
 | |
|     packitem = models.ForeignKey(PackItem, verbose_name='打包项目', 
 | |
|         on_delete=models.CASCADE)
 | |
|     count = models.PositiveSmallIntegerField('打包数量')
 | |
| 
 | |
|     
 | |
| 
 | |
| 
 |