123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- from django.db import models
- from Info.models import User, Company
- # Create your models here.
- class Vendor(models.Model):
- id = models.AutoField(primary_key=True)
- code = models.TextField()
- name = models.TextField()
- contact = models.TextField()
- phone = models.TextField()
- email = models.TextField(blank=True, null=True)
- address = models.TextField()
- comment = models.TextField(blank=True, null=True)
- status = models.TextField(default='sign-off') # 状态 sign-off,normal,EOL
- creator = models.ForeignKey(
- to=User, on_delete=models.DO_NOTHING, related_name="create_of_vendor", null=True, blank=True) # 创建人
- owner = models.ForeignKey(
- to=User, on_delete=models.DO_NOTHING, related_name="owner_of_vendor", null=True, blank=True) # 现在的管理者
- company = models.ForeignKey(to=Company, on_delete=models.CASCADE, null=True) # 料号归属公司
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class Part(models.Model):
- id = models.AutoField(primary_key=True)
- part_number = models.TextField()
- description = models.TextField()
- comment = models.TextField(blank=True, null=True)
- version = models.IntegerField(default=0)
- # 料号的状态,draft,review,production,EOL
- life_cycle = models.TextField(default='draft')
- # draft sign-off released expired EOL 表示料号+版本处在生命周期。
- # draft sign-off 只能有一个,表示BOM在签核中,
- # released只能有一个。
- # expired可以有多一个,表示旧的版本。
- # 如果EOL的话,全部版本都要EOL
- sub_parts = models.TextField(blank=True, null=True) # 将一个包含下一阶料号ID的list转成string
- creator = models.ForeignKey(
- to=User, on_delete=models.DO_NOTHING, related_name="creator_of_part", null=True, blank=True) # 创建人
- owner = models.ForeignKey(
- to=User, on_delete=models.DO_NOTHING, related_name="owner_of_part", null=True, blank=True) # 现在的管理者
- company = models.ForeignKey(
- to=Company, on_delete=models.CASCADE, null=True) # 料号归属公司
- source_type = models.TextField(null=True, blank=True, default='build') # 原料来源,采购,生产
- vendor = models.ForeignKey(
- to=Vendor, on_delete=models.CASCADE, blank=True, null=True) # 料号采购公司
- vendor_part_number = models.TextField(blank=True, null=True)
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class PartAttachment(models.Model):
- id = models.AutoField(primary_key=True)
- part = models.ForeignKey(to=Part, on_delete=models.CASCADE, blank=True, null=True)
- storage_type = models.TextField(default="local") # 存储类型 local/cloud 默认为local
- url = models.TextField()
- display_name = models.TextField()
- creator = models.ForeignKey(to=User, on_delete=models.DO_NOTHING, null=True, blank=True) # 创建人
- company = models.ForeignKey( to=Company, on_delete=models.CASCADE, null=True)
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class VendorAttachment(models.Model):
- id = models.AutoField(primary_key=True)
- vendor = models.ForeignKey(to=Vendor, on_delete=models.CASCADE, blank=True, null=True)
- storage_type = models.TextField(default="local") # 存储类型 local/cloud 默认为local
- url = models.TextField()
- display_name = models.TextField()
- creator = models.ForeignKey(to=User, on_delete=models.DO_NOTHING, null=True, blank=True) # 创建人
- company = models.ForeignKey( to=Company, on_delete=models.CASCADE, null=True)
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class BOMSetting(models.Model):
- id = models.AutoField(primary_key=True)
- company = models.ForeignKey(to=Company, on_delete=models.CASCADE, null=True)
- auto_pn = models.BooleanField(default=False)
- auto_ver = models.BooleanField(default=True)
- auto_supplier_code = models.BooleanField(default=True)
- part_ecn_default_approvers = models.TextField(blank=True, null=True)
- vendor_ecn_default_approvers = models.TextField(blank=True, null=True)
- attachment_maxsize = models.IntegerField(default=1000) # 默认公司保存附件大小(单位M)
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class BOM(models.Model):
- id = models.AutoField(primary_key=True)
- parent_part = models.ForeignKey(to=Part, on_delete=models.CASCADE, related_name="parent_part")
- # child_part = models.ForeignKey(to=Part, on_delete=models.CASCADE, related_name="child_part")
- child_pn = models.TextField() # child PN 只记录子料号,不记录版本等其他信息。所以不适用foreign key
- qty = models.DecimalField(max_digits=9, decimal_places=4)
- creator = models.ForeignKey(to=User, on_delete=models.DO_NOTHING, null=True, blank=True)
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class ECN(models.Model):
- id = models.AutoField(primary_key=True)
- number = models.TextField()
- creator = models.ForeignKey(to=User, on_delete=models.DO_NOTHING, related_name="create_of_ecn", null=True, blank=True) # 创建人
- company = models.ForeignKey(to=Company, on_delete=models.CASCADE, null=True) # ECN归属公司
- status = models.TextField(default='签核中') # 状态,默认签核中,d,拒绝,撤回sign-off,release,reject,widthdraw。不能删除,否则将导致ECN number出错
- comment = models.TextField(blank=True, null=True)
- category = models.TextField() # 类型 part, vendor
- target_part = models.ForeignKey(to=Part, on_delete=models.CASCADE, null=True)
- target_vendor = models.ForeignKey(to=Vendor, on_delete=models.CASCADE, null=True)
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
- class EcnSignOff(models.Model):
- id = models.AutoField(primary_key=True)
- company = models.ForeignKey(to=Company, on_delete=models.CASCADE, null=True) # ECN sign off归属公司
- ecn = models.ForeignKey(to=ECN, on_delete=models.CASCADE)
- owner = models.ForeignKey(to=User, on_delete=models.DO_NOTHING, related_name="ecn_sign_off_owner", null=True, blank=True) # 签核的人
- comment = models.TextField(blank=True, null=True)
- status = models.TextField(default='签核中') # 状态,默认签核中,批准,拒绝
- create_datetime = models.DateTimeField(auto_now_add=True)
- last_update_datetime = models.DateTimeField(auto_now=True)
|