using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using ChangKeTec.Wms.Models.Enums;


namespace ChangKeTec.Wms.Models.Wms
{
    public partial class TB_OTHER_INOUT
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        public int UID { get; set; }



        [Key]
        [Column(Order = 0)]
        [StringLength(50)]
        [DisplayName("单据编号")]
        public string BillNum { get; set; }

        [Key]
        [Column(Order = 1)]
        [StringLength(50)]
        [DisplayName("箱码")]
        public string BarCode { get; set; }

        [Required(AllowEmptyStrings = true)]
        [StringLength(50)]
        [DisplayName("物料号")]
        public string PartCode { get; set; }

        [NotMapped]
        [DisplayName("物料描述")]
        public string PartDesc => WmsCache.GetPartDesc(PartCode);

        [Required(AllowEmptyStrings = true)]
        [StringLength(20)]
        [DisplayName("批次")]
        public string Batch { get; set; }

        [Key]
        [Column(Order = 2)]
        [StringLength(50)]
        [DisplayName("来源库位")]
        public string FromLocCode { get; set; } = "";

        [Key]
        [Column(Order = 3)]
        [StringLength(50)]
        [DisplayName("目标库位")]
        public string ToLocCode { get; set; } = "";

        [Column(TypeName = "money")]
        [DisplayName("数量")]
        public decimal Qty { get; set; }

        [StringLength(50)]
        [DisplayName("器具编号")]
        public string EqptCode { get; set; }

        [DisplayName("物料状态")]
        public EnumStockState State { get; set; }

        [Column(TypeName = "date")]
        [DisplayName("生产日期")]
        public DateTime ProduceDate { get; set; }

        [StringLength(50)]
        [DisplayName("单位")]
        public string Unit { get; set; }

        [StringLength(200)]
        [DisplayName("备注")]
        public string Remark { get; set; }

        [DisplayName("单据时间")]
        [NotMapped]
        
        public DateTime BillTime { get; set; } = DateTime.Now;
    }
}