from django.db import models
from bound.models import BoundBatchModel
# Create your models here.
# 主表:托盘数据
class ContainerListModel(models.Model):
    CONTAINER_STATUS = (
        (0, '空置'),
        (1, '入库中'),
        (2, '在库'),
        (3, '出库中'),
        (4, '已出库')
    )
   
    container_code = models.IntegerField( verbose_name='托盘编号')
    current_location = models.CharField(max_length=50, verbose_name='当前库位', default='N/A')
    status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='托盘状态')
    last_operation = models.DateTimeField(auto_now=True, verbose_name='最后操作时间')

    class Meta:
        db_table = 'container_list'
        verbose_name = 'ContainerList'
        verbose_name_plural = "ContainerList"
        ordering = ['-container_code']

# 明细表:托盘详细数据记录当前组盘的 批次 数量 使用托盘码和状态来获取、托盘上的物料信息,
class ContainerDetailModel(models.Model):
    month = models.IntegerField(verbose_name='月份')
    container = models.ForeignKey(ContainerListModel, on_delete=models.CASCADE, related_name='details')
    batch = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name='批次')
    goods_code = models.CharField(max_length=50, verbose_name='货品编码')
    goods_desc = models.CharField(max_length=100, verbose_name='货品描述')
    goods_qty = models.IntegerField(verbose_name='数量')
    goods_weight = models.DecimalField(max_digits=10, decimal_places=3, verbose_name='重量')
    status = models.IntegerField(default=1, verbose_name='状态')           # 0: 未使用 1: 使用中 2: 已出库
    creater = models.CharField(max_length=50, verbose_name='创建人')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')

    class Meta:
        db_table = 'container_detail'
        verbose_name = 'ContainerDetail'
        verbose_name_plural = "ContainerDetail"
        ordering = ['-id']

# 明细表:操作记录 记录每次出入库的记录,使用goods来进行盘点,使用托盘码来进行托盘的操作记录
class ContainerOperationModel(models.Model):
    OPERATION_TYPES = (
        ('inbound', '入库'),
        ('outbound', '出库'), 
    )
    month = models.IntegerField(verbose_name='月份')
    container = models.ForeignKey(ContainerListModel, on_delete=models.CASCADE, related_name='operations')
    operation_type = models.CharField(max_length=20, choices=OPERATION_TYPES, verbose_name='操作类型')

    batch = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name='批次')
    goods_code = models.CharField(max_length=50, verbose_name='货品编码')
    goods_desc = models.CharField(max_length=100, verbose_name='货品描述')
    goods_qty = models.IntegerField(verbose_name='数量')
    goods_weight = models.DecimalField(max_digits=10, decimal_places=3, verbose_name='重量')

    operator = models.CharField(max_length=50, verbose_name='操作人')
    timestamp = models.DateTimeField(auto_now_add=True, verbose_name='操作时间')    
    from_location = models.CharField(max_length=50, null=True, verbose_name='原库位')
    to_location = models.CharField(max_length=50, null=True, verbose_name='目标库位')
    memo = models.TextField(null=True, verbose_name='备注')

    class Meta:
        db_table = 'container_operation'    
        verbose_name = 'ContainerOperation'
        verbose_name_plural = "ContainerOperation"
        ordering = ['-timestamp']