models.py 11 KB

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