models.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. from django.db import models
  2. from erp.models import InboundBill, MaterialDetail, OutboundBill,OutMaterialDetail
  3. class BoundListModel(models.Model):
  4. STATUS =(
  5. ("100", '入库申请'), ("101", '入库同意'), ("102", '组盘中'), ("103", '部分入库'), ("104", '已入库'),
  6. ("111", '质检合格'),
  7. ("200", '出库申请'), ("201", '出库同意'), ("202", '出库中'), ("203", '部分出库'), ("204", '已出库'),
  8. ("300", '完成')
  9. )
  10. audit_status = models.BooleanField(default=False, verbose_name='审核状态')
  11. bound_month = models.CharField(max_length=255, verbose_name="月份")
  12. bound_date = models.DateField(verbose_name="单据日期")
  13. bound_code = models.CharField(max_length=255, verbose_name="出入库编号",unique=True)
  14. bound_code_type = models.CharField(max_length=255, verbose_name="单据类型")
  15. bound_bs_type = models.CharField(max_length=255, verbose_name="业务类型")
  16. bound_type = models.CharField(max_length=255, verbose_name="出入库类型")
  17. bound_desc = models.CharField(default='', max_length=255, verbose_name="出入库描述")
  18. bound_department = models.CharField(max_length=255, verbose_name="部门")
  19. base_type = models.IntegerField(default=0, verbose_name="基准类型")
  20. bound_status = models.CharField(max_length=255, verbose_name="单据状态",choices=STATUS, default='100')
  21. note = models.CharField(default='', max_length=255, verbose_name="备注")
  22. creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created")
  23. openid = models.CharField(max_length=255, verbose_name="Openid")
  24. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  25. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  26. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  27. relate_bill = models.ForeignKey(InboundBill, on_delete=models.CASCADE, verbose_name="关联单据", related_name='bound_list',null=True, blank=True)
  28. relate_out_bill = models.ForeignKey(OutboundBill, on_delete=models.CASCADE, verbose_name="关联出库单据", related_name='bound_out_list',null=True, blank=True)
  29. class Meta:
  30. db_table = 'boundlist'
  31. verbose_name = 'Bound List'
  32. verbose_name_plural = "Bound List"
  33. ordering = ['bound_status','-id']
  34. class BoundBatchModel(models.Model):
  35. CONTAINER_STATUS = (
  36. (0, '入库申请'),
  37. (1, '入库中'),
  38. (2, '部分入库'),
  39. (3, '在库'),
  40. (4, '出库中'),
  41. (5, '部分出库'),
  42. (6, '已出库'),
  43. )
  44. bound_number = models.CharField(max_length=255, verbose_name="入库批次号",blank=False, null=False, unique=True)
  45. sourced_number = models.CharField(max_length=255, verbose_name="来源批次号",blank=True, null=True)
  46. bound_month = models.CharField(max_length=255, verbose_name="月份")
  47. bound_batch_order = models.IntegerField(default=0, verbose_name="批次顺序")
  48. warehouse_code = models.CharField(max_length=255, verbose_name="仓库编码")
  49. warehouse_name = models.CharField(max_length=255, verbose_name="仓库名称")
  50. goods_code = models.CharField(max_length=255, verbose_name="商品编码")
  51. goods_desc = models.CharField(max_length=255, verbose_name="商品描述")
  52. goods_std = models.CharField(default='待填写', max_length=255, verbose_name="商品标准",blank=True, null=True)
  53. goods_unit = models.CharField(default='待填写', max_length=255, verbose_name="商品单位")
  54. goods_qty = models.BigIntegerField(default=0, verbose_name="商品数量")
  55. goods_package = models.CharField(default='待填写', max_length=255, verbose_name="商品包装")
  56. goods_in_qty = models.BigIntegerField(default=0, verbose_name="入库数量")
  57. goods_in_location_qty = models.BigIntegerField(default=0, verbose_name="库位上入库数量")
  58. goods_out_qty = models.BigIntegerField(default=0, verbose_name="出库数量")
  59. goods_out_location_qty = models.BigIntegerField(default=0, verbose_name="库位上出库数量")
  60. status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态')
  61. container_number = models.IntegerField( default=0, verbose_name="托盘数目")
  62. goods_weight = models.FloatField(default=0, verbose_name="商品单重")
  63. goods_total_weight = models.FloatField(default=0, verbose_name="商品总重")
  64. note = models.CharField(default='', max_length=255, verbose_name="备注")
  65. creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created")
  66. openid = models.CharField(max_length=255, verbose_name="Openid")
  67. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  68. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  69. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  70. relate_material = models.ForeignKey(MaterialDetail, on_delete=models.CASCADE, verbose_name="关联物料", related_name='bound_batch',null=True, blank=True)
  71. class Meta:
  72. db_table = 'boundbatch'
  73. verbose_name = 'Bound Batch'
  74. verbose_name_plural = "Bound Batch"
  75. ordering = ['-id']
  76. class OutBatchModel(models.Model):
  77. CONTAINER_STATUS = (
  78. (0, '申请'),
  79. (1, '在途'),
  80. (2, '已出库')
  81. )
  82. OUT_TYPE = (
  83. (0, '发货出库'),
  84. (4, '其他出库'),
  85. )
  86. out_number = models.CharField(max_length=255, verbose_name="出库批次号",blank=False, null=False)
  87. batch_number = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name="批次号", related_name='out_batch')
  88. out_date = models.DateTimeField(verbose_name="出库日期")
  89. out_type = models.IntegerField(choices=OUT_TYPE, default=4, verbose_name="出库类型")
  90. out_note = models.CharField(default='', max_length=255, verbose_name="出库备注")
  91. warehouse_code = models.CharField(max_length=255, verbose_name="仓库编码")
  92. warehouse_name = models.CharField(max_length=255, verbose_name="仓库名称")
  93. goods_code = models.CharField(max_length=255, verbose_name="商品编码")
  94. goods_desc = models.CharField(max_length=255, verbose_name="商品描述")
  95. goods_std = models.CharField(default='待填写', max_length=255, verbose_name="商品标准",blank=True, null=True)
  96. goods_unit = models.CharField(default='待填写', max_length=255, verbose_name="商品单位")
  97. goods_qty = models.BigIntegerField(default=0, verbose_name="商品数量")
  98. goods_out_qty = models.BigIntegerField(default=0, verbose_name="出库数量")
  99. status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态')
  100. container_number = models.IntegerField( default=0, verbose_name="托盘数目")
  101. goods_weight = models.FloatField(default=0, verbose_name="商品单重")
  102. goods_total_weight = models.FloatField(default=0, verbose_name="商品总重")
  103. creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created")
  104. openid = models.CharField(max_length=255, verbose_name="Openid")
  105. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  106. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  107. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  108. relate_material = models.ForeignKey(OutMaterialDetail, on_delete=models.CASCADE, verbose_name="关联物料", related_name='out_batch',null=True, blank=True)
  109. class Meta:
  110. db_table = 'outbatch'
  111. verbose_name = 'Out Batch'
  112. verbose_name_plural = "Out Batch"
  113. ordering = ['-id']
  114. # 利用创建好的批次来与申请单相对应
  115. class OutBoundDetailModel(models.Model):
  116. CONTAINER_STATUS = (
  117. (0, '出库申请'),
  118. (1, '出库中'),
  119. (2, '已出库'),
  120. (3, '入库中'),
  121. (4, '已入库')
  122. )
  123. bound_list = models.ForeignKey(BoundListModel, on_delete=models.CASCADE, verbose_name="Bound List", related_name='out_bound_detail')
  124. bound_batch = models.ForeignKey(OutBatchModel, on_delete=models.PROTECT, verbose_name="Bound Batch", related_name='out_bound_batch_detail')
  125. bound_batch_number = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name="Bound Batch Number", related_name='out_bound_batch_number_detail')
  126. status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态')
  127. detail_code = models.CharField(max_length=255, verbose_name="明细编号")
  128. creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created")
  129. openid = models.CharField(max_length=255, verbose_name="Openid")
  130. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  131. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  132. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  133. class Meta:
  134. db_table = 'Outbounddetail'
  135. verbose_name = 'OutBound Detail'
  136. verbose_name_plural = "OutBound Detail"
  137. ordering = ['-id']
  138. class BatchLogModel(models.Model):
  139. BATCH_LOG_TYPE = (
  140. (0, '入库'),
  141. (1, '出库'),
  142. (2, '移库'),
  143. (9, '其他'),
  144. )
  145. batch_id =models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name="批次ID", related_name='batch_log')
  146. log_type = models.IntegerField(choices=BATCH_LOG_TYPE, default=9, verbose_name="日志类型")
  147. log_date = models.DateTimeField(verbose_name="日志日期")
  148. goods_code = models.CharField(max_length=255, verbose_name="商品编码")
  149. goods_desc = models.CharField(max_length=255, verbose_name="商品描述")
  150. goods_qty = models.BigIntegerField(default=0, verbose_name="商品数量")
  151. log_content = models.CharField(max_length=255, verbose_name="日志内容")
  152. creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created")
  153. openid = models.CharField(max_length=255, verbose_name="Openid")
  154. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  155. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  156. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  157. class Meta:
  158. db_table = 'batchlog'
  159. verbose_name = 'Batch Log'
  160. verbose_name_plural = "Batch Log"
  161. # 利用创建好的批次来与申请单相对应
  162. class BoundDetailModel(models.Model):
  163. CONTAINER_STATUS = (
  164. (0, '入库申请'),
  165. (1, '入库中'),
  166. (2, '在库'),
  167. (3, '出库中'),
  168. (4, '已出库')
  169. )
  170. bound_list = models.ForeignKey(BoundListModel, on_delete=models.CASCADE, verbose_name="Bound List", related_name='bound_detail')
  171. bound_batch = models.ForeignKey(BoundBatchModel, on_delete=models.PROTECT, verbose_name="Bound Batch", related_name='bound_batch_detail')
  172. status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态')
  173. detail_code = models.CharField(max_length=255, verbose_name="明细编号",unique=True)
  174. creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created")
  175. openid = models.CharField(max_length=255, verbose_name="Openid")
  176. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  177. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  178. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  179. class Meta:
  180. db_table = 'bounddetail'
  181. verbose_name = 'Bound Detail'
  182. verbose_name_plural = "Bound Detail"
  183. ordering = ['-id']