from django.db import models from erp.models import InboundBill, MaterialDetail, OutboundBill,OutMaterialDetail class BoundListModel(models.Model): STATUS = ("100", '入库申请'), ("101", '入库同意'), ("102", '组盘中'), ("200", '出库申请'), ("201", '出库同意'), ("202", '出库中'), ("203", '部分出库'), ("204", '已出库'), ("300", '完成') bound_month = models.CharField(max_length=255, verbose_name="月份") bound_date = models.DateField(verbose_name="单据日期") bound_code = models.CharField(max_length=255, verbose_name="出入库编号",unique=True) bound_code_type = models.CharField(max_length=255, verbose_name="单据类型") bound_bs_type = models.CharField(max_length=255, verbose_name="业务类型") bound_type = models.CharField(max_length=255, verbose_name="出入库类型") bound_desc = models.CharField(default='', max_length=255, verbose_name="出入库描述") bound_department = models.CharField(max_length=255, verbose_name="部门") base_type = models.IntegerField(default=0, verbose_name="基准类型") bound_status = models.CharField(max_length=255, verbose_name="单据状态") note = models.CharField(default='', max_length=255, verbose_name="备注") creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created") openid = models.CharField(max_length=255, verbose_name="Openid") is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") relate_bill = models.ForeignKey(InboundBill, on_delete=models.CASCADE, verbose_name="关联单据", related_name='bound_list',null=True, blank=True) relate_out_bill = models.ForeignKey(OutboundBill, on_delete=models.CASCADE, verbose_name="关联出库单据", related_name='bound_out_list',null=True, blank=True) class Meta: db_table = 'boundlist' verbose_name = 'Bound List' verbose_name_plural = "Bound List" ordering = ['-id'] class BoundBatchModel(models.Model): CONTAINER_STATUS = ( (0, '入库申请'), (1, '入库中'), (2, '部分入库'), (3, '在库'), (4, '出库中'), (5, '部分出库'), (6, '已出库'), ) bound_number = models.CharField(max_length=255, verbose_name="入库批次号",blank=False, null=False, unique=True) sourced_number = models.CharField(max_length=255, verbose_name="来源批次号",blank=True, null=True) bound_month = models.CharField(max_length=255, verbose_name="月份") bound_batch_order = models.IntegerField(default=0, verbose_name="批次顺序") warehouse_code = models.CharField(max_length=255, verbose_name="仓库编码") warehouse_name = models.CharField(max_length=255, verbose_name="仓库名称") goods_code = models.CharField(max_length=255, verbose_name="商品编码") goods_desc = models.CharField(max_length=255, verbose_name="商品描述") goods_std = models.CharField(default='待填写', max_length=255, verbose_name="商品标准") goods_unit = models.CharField(default='待填写', max_length=255, verbose_name="商品单位") goods_qty = models.BigIntegerField(default=0, verbose_name="商品数量") goods_in_qty = models.BigIntegerField(default=0, verbose_name="入库数量") goods_in_location_qty = models.BigIntegerField(default=0, verbose_name="库位上入库数量") goods_out_qty = models.BigIntegerField(default=0, verbose_name="出库数量") goods_out_location_qty = models.BigIntegerField(default=0, verbose_name="库位上出库数量") status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态') container_number = models.IntegerField( default=0, verbose_name="托盘数目") goods_weight = models.FloatField(default=0, verbose_name="商品单重") goods_total_weight = models.FloatField(default=0, verbose_name="商品总重") note = models.CharField(default='', max_length=255, verbose_name="备注") creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created") openid = models.CharField(max_length=255, verbose_name="Openid") is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") relate_material = models.ForeignKey(MaterialDetail, on_delete=models.CASCADE, verbose_name="关联物料", related_name='bound_batch',null=True, blank=True) class Meta: db_table = 'boundbatch' verbose_name = 'Bound Batch' verbose_name_plural = "Bound Batch" ordering = ['-id'] class OutBatchModel(models.Model): CONTAINER_STATUS = ( (0, '申请'), (1, '在途'), (2, '已出库') ) OUT_TYPE = ( (0, '发货出库'), (4, '其他出库'), ) out_number = models.CharField(max_length=255, verbose_name="出库批次号",blank=False, null=False) batch_number = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name="批次号", related_name='out_batch') out_date = models.DateTimeField(verbose_name="出库日期") out_type = models.IntegerField(choices=OUT_TYPE, default=4, verbose_name="出库类型") out_note = models.CharField(default='', max_length=255, verbose_name="出库备注") warehouse_code = models.CharField(max_length=255, verbose_name="仓库编码") warehouse_name = models.CharField(max_length=255, verbose_name="仓库名称") goods_code = models.CharField(max_length=255, verbose_name="商品编码") goods_desc = models.CharField(max_length=255, verbose_name="商品描述") goods_std = models.CharField(default='待填写', max_length=255, verbose_name="商品标准") goods_unit = models.CharField(default='待填写', max_length=255, verbose_name="商品单位") goods_qty = models.BigIntegerField(default=0, verbose_name="商品数量") goods_out_qty = models.BigIntegerField(default=0, verbose_name="出库数量") status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态') container_number = models.IntegerField( default=0, verbose_name="托盘数目") goods_weight = models.FloatField(default=0, verbose_name="商品单重") goods_total_weight = models.FloatField(default=0, verbose_name="商品总重") creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created") openid = models.CharField(max_length=255, verbose_name="Openid") is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") relate_material = models.ForeignKey(OutMaterialDetail, on_delete=models.CASCADE, verbose_name="关联物料", related_name='out_batch',null=True, blank=True) class Meta: db_table = 'outbatch' verbose_name = 'Out Batch' verbose_name_plural = "Out Batch" ordering = ['-id'] # 利用创建好的批次来与申请单相对应 class OutBoundDetailModel(models.Model): CONTAINER_STATUS = ( (0, '出库申请'), (1, '出库中'), (2, '已出库'), (3, '入库中'), (4, '已入库') ) bound_list = models.ForeignKey(BoundListModel, on_delete=models.CASCADE, verbose_name="Bound List", related_name='out_bound_detail') bound_batch = models.ForeignKey(OutBatchModel, on_delete=models.PROTECT, verbose_name="Bound Batch", related_name='out_bound_batch_detail') bound_batch_number = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name="Bound Batch Number", related_name='out_bound_batch_number_detail') status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态') detail_code = models.CharField(max_length=255, verbose_name="明细编号") creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created") openid = models.CharField(max_length=255, verbose_name="Openid") is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") class Meta: db_table = 'Outbounddetail' verbose_name = 'OutBound Detail' verbose_name_plural = "OutBound Detail" ordering = ['-id'] class BatchLogModel(models.Model): BATCH_LOG_TYPE = ( (0, '入库'), (1, '出库'), (2, '移库'), (9, '其他'), ) batch_id =models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name="批次ID", related_name='batch_log') log_type = models.IntegerField(choices=BATCH_LOG_TYPE, default=9, verbose_name="日志类型") log_date = models.DateTimeField(verbose_name="日志日期") goods_code = models.CharField(max_length=255, verbose_name="商品编码") goods_desc = models.CharField(max_length=255, verbose_name="商品描述") goods_qty = models.BigIntegerField(default=0, verbose_name="商品数量") log_content = models.CharField(max_length=255, verbose_name="日志内容") creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created") openid = models.CharField(max_length=255, verbose_name="Openid") is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") class Meta: db_table = 'batchlog' verbose_name = 'Batch Log' verbose_name_plural = "Batch Log" # 利用创建好的批次来与申请单相对应 class BoundDetailModel(models.Model): CONTAINER_STATUS = ( (0, '入库申请'), (1, '入库中'), (2, '在库'), (3, '出库中'), (4, '已出库') ) bound_list = models.ForeignKey(BoundListModel, on_delete=models.CASCADE, verbose_name="Bound List", related_name='bound_detail') bound_batch = models.ForeignKey(BoundBatchModel, on_delete=models.PROTECT, verbose_name="Bound Batch", related_name='bound_batch_detail') status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='批次状态') detail_code = models.CharField(max_length=255, verbose_name="明细编号",unique=True) creater = models.CharField(default='uesr', max_length=255, verbose_name="Who Created") openid = models.CharField(max_length=255, verbose_name="Openid") is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") class Meta: db_table = 'bounddetail' verbose_name = 'Bound Detail' verbose_name_plural = "Bound Detail" ordering = ['-id']