from django.db import models



class BoundListModel(models.Model):
    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="部门")

    bound_status = 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 = 'boundlist'
        verbose_name = 'Bound List'
        verbose_name_plural = "Bound List"
        ordering = ['-id']



class BoundBatchModel(models.Model):

    CONTAINER_STATUS = (
        (0, '入库申请'),
        (1, '入库中'),
        (2, '在库'),
        (3, '出库中'),
        (4, '已出库')
    )

    bound_number = models.CharField(max_length=255, verbose_name="入库批次号")
    bound_month = models.CharField(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_qty = models.BigIntegerField(default=0, verbose_name="商品数量")
    goods_in_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='批次状态')

    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")

    class Meta:
        db_table = 'boundbatch'
        verbose_name = 'Bound Batch'
        verbose_name_plural = "Bound Batch"
        ordering = ['-id']
        

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']