models.py 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. from django.db import models
  2. class InboundBill(models.Model):
  3. BOUND_TYPE = (
  4. (1, '生产入库'),
  5. (2, '采购入库'),
  6. (3, '其他入库'),
  7. (4, '调拨入库'),
  8. )
  9. STATUS_CHOICES = (
  10. (0, '草稿'),
  11. (1, '汇报'),
  12. (2, '审核'),
  13. (3, '部分入库'),
  14. (4, '全部入库'),
  15. (404, '取消'),
  16. )
  17. billId = models.BigIntegerField(primary_key=True,verbose_name='原始单据ID')
  18. number = models.CharField(max_length=50, unique=True, verbose_name='单据编号')
  19. type = models.IntegerField(choices=BOUND_TYPE, verbose_name='绑定类型')
  20. date = models.CharField(max_length=10, verbose_name='入库时间')
  21. department = models.CharField(max_length=100, verbose_name='部门', null=True)
  22. warehouse = models.CharField(max_length=100, verbose_name='仓库', default='W01')
  23. creater = models.CharField(max_length=50, verbose_name='创建人', null=True)
  24. note = models.TextField(blank=True, verbose_name='备注说明', null=True)
  25. totalCount = models.IntegerField(verbose_name='总条目数')
  26. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  27. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  28. bound_status = models.IntegerField(default=0,choices=STATUS_CHOICES, verbose_name='状态')
  29. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  30. erp_audit_id = models.CharField(max_length=1000,null=True, verbose_name='ERP审核ID')
  31. erp_save_id = models.CharField(max_length=1000,null=True, verbose_name='ERP保存ID')
  32. class Meta:
  33. verbose_name = '生产入库单'
  34. verbose_name_plural = verbose_name
  35. ordering = [ 'bound_status','-create_time','-update_time']
  36. class InboundBillOperateLog(models.Model):
  37. """入库单日志"""
  38. log_type_choices = (
  39. ('create', '创建'),
  40. ('update', '更新'),
  41. ('erp_audit', 'erp审核'),
  42. ('wms_audit', 'wms审核'),
  43. ('update_batch', 'erp质检'),
  44. ('delete', '删除'),
  45. ('cancel', '取消'),
  46. ('submit', '提交'),
  47. ('confirm', '确认'),
  48. ('reject', '驳回'),
  49. ('confirm_submit', '确认提交'),
  50. ('confirm_audit', '确认审核'),
  51. ('confirm_cancel', '确认取消'),
  52. )
  53. billId = models.ForeignKey(
  54. InboundBill,
  55. on_delete=models.CASCADE,
  56. related_name='bill_id_log',
  57. verbose_name='所属入库单'
  58. )
  59. log_type = models.CharField(max_length=20,choices=log_type_choices, verbose_name='操作类型')
  60. log_content = models.TextField(verbose_name='操作内容')
  61. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  62. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  63. class Meta:
  64. verbose_name = '入库单日志'
  65. verbose_name_plural = verbose_name
  66. ordering = ['-update_time', '-create_time']
  67. class OutboundBill(models.Model):
  68. BOUND_TYPE = (
  69. (1, '订单'),
  70. (2, '其他'),
  71. )
  72. STATUS_CHOICES = (
  73. (0, '草稿'),
  74. (1, '已审批'),
  75. (2, '已入库'),
  76. (3, '已取消'),
  77. )
  78. billId = models.BigIntegerField(primary_key=True,verbose_name='原始单据ID')
  79. number = models.CharField(max_length=50, unique=True, verbose_name='单据编号')
  80. type = models.IntegerField(choices=BOUND_TYPE, verbose_name='绑定类型')
  81. date = models.CharField(max_length=10, verbose_name='出库时间')
  82. department = models.CharField(max_length=10, verbose_name='部门', null=True,blank=True)
  83. warehouse = models.CharField(max_length=10, verbose_name='仓库', default='W01')
  84. creater = models.CharField(max_length=50, verbose_name='创建人', null=True,blank=True)
  85. note = models.TextField(blank=True, verbose_name='备注说明', null=True)
  86. totalCount = models.IntegerField(verbose_name='总条目数')
  87. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  88. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  89. bound_status = models.IntegerField(default=0, choices=STATUS_CHOICES,verbose_name='状态')
  90. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  91. erp_audit_id = models.CharField(max_length=1000,null=True, verbose_name='ERP审核ID')
  92. erp_save_id = models.CharField(max_length=1000,null=True, verbose_name='ERP保存ID')
  93. class Meta:
  94. verbose_name = '出库单'
  95. verbose_name_plural = verbose_name
  96. ordering = [ 'bound_status','-create_time','-update_time']
  97. class OutboundBillOperateLog(models.Model):
  98. """出库单日志"""
  99. billId = models.ForeignKey(
  100. OutboundBill,
  101. on_delete=models.CASCADE,
  102. related_name='bill_id_log',
  103. verbose_name='所属出库单'
  104. )
  105. log_type = models.CharField(max_length=20, verbose_name='操作类型')
  106. log_content = models.TextField(verbose_name='操作内容')
  107. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  108. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  109. class Meta:
  110. verbose_name = '出库单日志'
  111. verbose_name_plural = verbose_name
  112. ordering = ['-update_time', '-create_time']
  113. class MaterialDetail(models.Model):
  114. """物料明细模型"""
  115. bound_billId = models.ForeignKey(
  116. InboundBill,
  117. on_delete=models.CASCADE,
  118. related_name='bill_id',
  119. verbose_name='所属入库单'
  120. )
  121. STATUS_CHOICES = (
  122. (0, '未质检'),
  123. (1, '已质检'),
  124. )
  125. entryIds = models.BigIntegerField(verbose_name='分录ID')
  126. production_batch = models.CharField(max_length=50, verbose_name='生产批次')
  127. goods_code = models.CharField(max_length=20, verbose_name='商品编码')
  128. goods_name = models.CharField(max_length=100, verbose_name='商品名称')
  129. goods_std = models.CharField(max_length=50, verbose_name='商品规格')
  130. goods_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='单件重量', default=1)
  131. plan_qty = models.IntegerField(verbose_name='计划数量')
  132. goods_total_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='总重量', null=True)
  133. goods_unit = models.CharField(max_length=20, verbose_name='计量单位')
  134. note = models.TextField(blank=True, verbose_name='备注')
  135. status = models.IntegerField(choices=STATUS_CHOICES, verbose_name='质检状态', default=0)
  136. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  137. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  138. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  139. class Meta:
  140. verbose_name = '物料明细'
  141. verbose_name_plural = verbose_name
  142. unique_together = [('bound_billId', 'entryIds')]
  143. ordering = ['-update_time', '-create_time']
  144. class OutMaterialDetail(models.Model):
  145. """物料明细模型"""
  146. bound_billId = models.ForeignKey(
  147. OutboundBill,
  148. on_delete=models.CASCADE,
  149. related_name='bill_id',
  150. verbose_name='所属出库单'
  151. )
  152. Material_entryIds = models.ForeignKey(
  153. MaterialDetail,
  154. on_delete=models.CASCADE,
  155. related_name='entry_Ids',
  156. verbose_name='所属入库单详细',
  157. null=True,
  158. blank=True
  159. )
  160. entryIds = models.BigIntegerField(verbose_name='分录ID')
  161. production_batch = models.CharField(max_length=50, verbose_name='生产批次')
  162. goods_code = models.CharField(max_length=20, verbose_name='商品编码')
  163. goods_name = models.CharField(max_length=100, verbose_name='商品名称')
  164. goods_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='单件重量', default=1)
  165. goods_out_qty = models.IntegerField(verbose_name='计划数量')
  166. goods_total_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='总重量', null=True)
  167. goods_unit = models.CharField(max_length=20, verbose_name='计量单位')
  168. note = models.TextField(blank=True, verbose_name='备注')
  169. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  170. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  171. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  172. class Meta:
  173. verbose_name = '出库物料明细'
  174. verbose_name_plural = verbose_name
  175. ordering = ['-update_time', '-create_time']