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 TS_STOCK_DETAIL
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        public long UID { get; set; }

        [Key]
        [Column(Order = 0)]
        [StringLength(50)]
        [DisplayName("ÏäÂë")]
        public string BarCode { get; set; } = "";

        [Key]
        [Column(Order = 1)]
        [StringLength(50)]
        [DisplayName("¿âλ")]
        public string LocCode { get; set; } = "";

        [StringLength(50)]
        [DisplayName("¿âÇø")]
        public string AreaCode { get; set; }

        [Key]
        [Column(Order = 2)]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [DisplayName("״̬")]
        public EnumStockState State { get; set; } = EnumStockState.ºÏ¸ñ;

        [Key]
        [Column(Order = 3)]
        [Required(AllowEmptyStrings = true)]
        [StringLength(50)]
        [DisplayName("ÎïÁϺÅ")]
        public string PartCode { get; set; } = "";

        [Required(AllowEmptyStrings = true)]
        [StringLength(50)]
        [DisplayName("Åú´Î")]
        public string Batch { get; set; } = "";

        [Column(TypeName = "money")]
        [DisplayName("ÊýÁ¿")]
        
        public decimal Qty { get; set; }

        [StringLength(50)]
        [Required(AllowEmptyStrings = true)]
        [DisplayName("Æ÷¾ßºÅ")]
        public string EqptCode { get; set; } = "";

        [NotMapped]
        [DisplayName("ÃèÊöÒ»")]
        public string PartDesc1 => WmsCache.GetPartDesc1(PartCode);
        [NotMapped]
        [DisplayName("ÃèÊö¶þ")]
        public string PartDesc2 => WmsCache.GetPartDesc2(PartCode);
        [NotMapped]
        [DisplayName("ÏîÄ¿±àºÅ")]
        public string ProjectId => WmsCache.GetProjectId(PartCode);
        [NotMapped]
        [DisplayName("µ¥Î»")]
        public string Unit => WmsCache.GetUnit(PartCode);

        [StringLength(50)]
        [Required(AllowEmptyStrings = true)]
        [DisplayName("¹©Ó¦É̱àºÅ")]
        public string VendId { get; set; } = "";

        [NotMapped]
        public string ¹©Ó¦ÉÌÃû³Æ => WmsCache.GetVenderName(VendId);

        [StringLength(50)]
        [Required(AllowEmptyStrings = true)]
        [DisplayName("¹©Ó¦ÉÌÅú´Î")]
        public string VendBatch { get; set; } = "";

        [NotMapped]
        [DisplayName("ERP¿âλ")]
        public string ErpLocCode => WmsCache.GetErpLocCode(LocCode);

        [StringLength(50)]
        
        public string PlanOrderId { get; set; }


        [Column(TypeName = "money")]
        
        public decimal Amount { get; set; }


        [DisplayName("ÊÕ»õʱ¼ä")]

        public DateTime ReceiveDate { get; set; }

        [Column(TypeName = "date")]
        [DisplayName("Éú²úÈÕÆÚ")]
        public DateTime ProduceDate { get; set; }

        [Column(TypeName = "date")]
        [DisplayName("ʧЧÈÕÆÚ")]
        public DateTime OverdueDate { get; set; }

        [DisplayName("±ä¸üʱ¼ä")]
        public DateTime UpdateTime { get; set; }

        [Column(TypeName = "money")]
        [DisplayName("±ä¸üÊýÁ¿")]
        public decimal UpdateQty { get; set; }

        [StringLength(50)]
        [DisplayName("×·ËݱàºÅ")]
        public string TracebackCode { get; set; }

        
        public int VinState { get; set; }

        [StringLength(500)]
        [DisplayName("±¸×¢")]
        public string Remark { get; set; }

    }
}