models.py 8.5 KB

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