models.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. from django.db import models
  2. class InboundBill(models.Model):
  3. BOUND_TYPE = (
  4. (1, '订单'),
  5. (2, '其他'),
  6. )
  7. STATUS_CHOICES = (
  8. (0, '草稿'),
  9. (1, '已审批'),
  10. (2, '已入库'),
  11. (3, '已取消'),
  12. )
  13. billId = models.IntegerField(primary_key=True,verbose_name='原始单据ID')
  14. number = models.CharField(max_length=50, unique=True, verbose_name='单据编号')
  15. type = models.IntegerField(choices=BOUND_TYPE, verbose_name='绑定类型')
  16. date = models.CharField(max_length=10, verbose_name='入库时间')
  17. department = models.CharField(max_length=10, verbose_name='部门', null=True)
  18. warehouse = models.CharField(max_length=10, verbose_name='仓库', default='W01') # 修正 defaults 为 default
  19. creater = models.CharField(max_length=50, verbose_name='创建人', null=True)
  20. note = models.TextField(blank=True, verbose_name='备注说明', null=True)
  21. totalCount = models.IntegerField(verbose_name='总条目数')
  22. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  23. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  24. bound_status = models.IntegerField(default=0, verbose_name='状态')
  25. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  26. class Meta:
  27. verbose_name = '生产入库单'
  28. verbose_name_plural = verbose_name
  29. ordering = [ 'bound_status','-create_time','-update_time']
  30. class OutboundBill(models.Model):
  31. BOUND_TYPE = (
  32. (1, '订单'),
  33. (2, '其他'),
  34. )
  35. STATUS_CHOICES = (
  36. (0, '草稿'),
  37. (1, '已审批'),
  38. (2, '已入库'),
  39. (3, '已取消'),
  40. )
  41. billId = models.IntegerField(primary_key=True,verbose_name='原始单据ID')
  42. number = models.CharField(max_length=50, unique=True, verbose_name='单据编号')
  43. type = models.IntegerField(choices=BOUND_TYPE, verbose_name='绑定类型')
  44. date = models.CharField(max_length=10, verbose_name='出库时间')
  45. department = models.CharField(max_length=10, verbose_name='部门', null=True)
  46. warehouse = models.CharField(max_length=10, verbose_name='仓库', default='W01')
  47. creater = models.CharField(max_length=50, verbose_name='创建人', null=True)
  48. note = models.TextField(blank=True, verbose_name='备注说明', null=True)
  49. totalCount = models.IntegerField(verbose_name='总条目数')
  50. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  51. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  52. bound_status = models.IntegerField(default=0, verbose_name='状态')
  53. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  54. class Meta:
  55. verbose_name = '出库单'
  56. verbose_name_plural = verbose_name
  57. ordering = [ 'bound_status','-create_time','-update_time']
  58. class MaterialDetail(models.Model):
  59. """物料明细模型"""
  60. bound_billId = models.ForeignKey(
  61. InboundBill,
  62. on_delete=models.CASCADE,
  63. related_name='bill_id',
  64. verbose_name='所属入库单'
  65. )
  66. entryIds = models.IntegerField(verbose_name='分录ID')
  67. production_batch = models.CharField(max_length=50, verbose_name='生产批次')
  68. goods_code = models.CharField(max_length=20, verbose_name='商品编码')
  69. goods_name = models.CharField(max_length=100, verbose_name='商品名称')
  70. goods_std = models.CharField(max_length=50, verbose_name='商品规格')
  71. goods_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='单件重量', default=1)
  72. plan_qty = models.IntegerField(verbose_name='计划数量')
  73. goods_total_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='总重量', null=True)
  74. goods_unit = models.CharField(max_length=20, verbose_name='计量单位')
  75. note = models.TextField(blank=True, verbose_name='备注')
  76. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  77. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  78. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  79. class Meta:
  80. verbose_name = '物料明细'
  81. verbose_name_plural = verbose_name
  82. unique_together = [('bound_billId', 'entryIds')]
  83. ordering = ['-update_time', '-create_time']
  84. class OutMaterialDetail(models.Model):
  85. """物料明细模型"""
  86. bound_billId = models.ForeignKey(
  87. OutboundBill,
  88. on_delete=models.CASCADE,
  89. related_name='bill_id',
  90. verbose_name='所属出库单'
  91. )
  92. Material_entryIds = models.ForeignKey(
  93. MaterialDetail,
  94. on_delete=models.CASCADE,
  95. related_name='entry_Ids',
  96. verbose_name='所属入库单详细',
  97. null=True,
  98. blank=True
  99. )
  100. entryIds = models.IntegerField(verbose_name='分录ID')
  101. production_batch = models.CharField(max_length=50, verbose_name='生产批次')
  102. goods_code = models.CharField(max_length=20, verbose_name='商品编码')
  103. goods_name = models.CharField(max_length=100, verbose_name='商品名称')
  104. goods_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='单件重量', default=1)
  105. goods_out_qty = models.IntegerField(verbose_name='计划数量')
  106. goods_total_weight = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='总重量', null=True)
  107. goods_unit = models.CharField(max_length=20, verbose_name='计量单位')
  108. note = models.TextField(blank=True, verbose_name='备注')
  109. create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
  110. update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
  111. is_delete = models.BooleanField(default=False, verbose_name='是否删除')
  112. class Meta:
  113. verbose_name = '出库物料明细'
  114. verbose_name_plural = verbose_name
  115. ordering = ['-update_time', '-create_time']