using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using ChangkeTec.SDMS.Model.Attributes;
using ChangkeTec.SDMS.Model.Base;

namespace ChangkeTec.SDMS.Model.DataCenterTables
{
    [Description("零件明细表")]
    public class TS_PART_DET : IUpdatableTable, ISoftDelete, IDomain
    {
        [Required(ErrorMessage = "代码不能为空")]
        [Index("IndexPartDet", Order = 0, IsUnique = true, IsClustered = false)]
        [IsDataGridColum(true, 1)]
        [Description("零件号")]
        [StringLength(50)]
        public string PartCode { get; set; }
        [IsDataGridColum(true, 2)]
        [Description("ABC 分类")]
        [StringLength(50)]
        public string AbcClass { get; set; }
        [IsDataGridColum(true, 3)]
        [Description("批号控制")]
        [StringLength(50)]
        public string LotControl { get; set; }
        [IsDataGridColum(true, 4)]
        [Description("库位")]
        [StringLength(50)]
        public string Location { get; set; }
        [IsDataGridColum(true, 5)]
        [Description("库位类型")]
        [StringLength(50)]
        public string LocationType { get; set; }
        [IsDataGridColum(true, 6)]
        [Description("自动生成批号")]
        public bool AutoMaticLotNumbers { get; set; }
        [IsDataGridColum(true, 7)]
        [Description("平均间隔")]
        public int AverageInterval { get; set; }
        [IsDataGridColum(true, 8)]
        [Description("周期盘点间隔")]
        public int CycleCountInterval { get; set; }
        [IsDataGridColum(true, 9)]
        [Description("保存期限")]
        public int ShelfLife { get; set; }
        [IsDataGridColum(true, 10)]
        [Description("关键物料")]
        public bool KeyPart { get; set; }
        [IsDataGridColum(true, 11)]
        [Description("采购订单收货状态")]
        [StringLength(50)]
        public string PoReceiptStatus { get; set; }
        [IsDataGridColum(true, 12)]
        [Description("有效的")]
        public bool RctPoActive { get; set; }
        [IsDataGridColum(true, 13)]
        [Description("加工单收货状态")]
        [StringLength(50)]
        public string WoReceiptStatus { get; set; }
        [IsDataGridColum(true, 14)]
        [Description("有效的")]
        public bool RctWoActive { get; set; }
        [IsDataGridColum(true, 15)]
        [Description("非库存订单类型")]
        [StringLength(50)]
        public string MemoOrderType { get; set; }
        [IsDataGridColum(true, 16)]
        [Description("主计划")]
        public bool MasterSchedule { get; set; }
        [IsDataGridColum(true, 17)]
        [Description("计划订单")]
        public bool PlanOrders { get; set; }
        [IsDataGridColum(true, 18)]
        [Description("时界")]
        public int TimeFence { get; set; }
        [IsDataGridColum(true, 19)]
        [Description("订货方法")]
        [StringLength(50)]
        public string OrderPolicy { get; set; }
        [IsDataGridColum(true, 20)]
        [Description("订单数量")]
        public decimal OrderQuantity { get; set; }
        [IsDataGridColum(true, 21)]
        [Description("订货周期")]
        public int OrderPeriod { get; set; }
        [IsDataGridColum(true, 22)]
        [Description("安全库存量")]
        public decimal SafetyStock { get; set; }
        [IsDataGridColum(true, 23)]
        [Description("安全提前期")]
        public decimal SafetyTime { get; set; }
        [IsDataGridColum(true, 23)]
        [Description("再订货点")]
        public decimal ReorderPoint { get; set; }
        [IsDataGridColum(true, 25)]
        [Description("计划修改")]
        [StringLength(50)]
        public string PlanningRev { get; set; }
        [IsDataGridColum(true, 26)]
        [Description("发放原则")]
        public bool IssuePolicy { get; set; }
        [IsDataGridColum(true, 27)]
        [Description("采购员/计划员")]
        [StringLength(50)]
        public string BuyerPlanner { get; set; }
        [IsDataGridColum(true, 28)]
        [Description("供应商")]
        [StringLength(50)]
        public string Supplier { get; set; }
        [IsDataGridColum(true, 29)]
        [Description("采购订单地点")]
        [StringLength(50)]
        public string PoSite { get; set; }
        [IsDataGridColum(true, 30)]
        [Description("采购/制造")]
        [StringLength(50)]
        public string PurMfg { get; set; }
        [IsDataGridColum(true, 31)]
        [Description("配置类型")]
        [StringLength(50)]
        public string ConfigurationType { get; set; }
        [IsDataGridColum(true, 32)]
        [Description("检验库位")]
        [StringLength(50)]
        public string InspectionLocation { get; set; }
        [IsDataGridColum(true, 33)]
        [Description("需要检验")]
        public bool InspectionRequired { get; set; }
        [IsDataGridColum(true, 34)]
        [Description("检验提前期")]
        public int InspectionLeadTime { get; set; }
        [IsDataGridColum(true, 35)]
        [Description("累计提前期")]
        public int CumulativeLeadTime { get; set; }
        [IsDataGridColum(true, 36)]
        [Description("制造提前期")]
        public int ManufacturingLedaTime { get; set; }
        [IsDataGridColum(true, 37)]
        [Description("采购提前期")]
        public int PurchaseLeadTime { get; set; }
        [IsDataGridColum(true, 38)]
        [Description("ATP实施水平")]
        [StringLength(50)]
        public string AtpEnforcementLevel { get; set; }
        [IsDataGridColum(true, 39)]
        [Description("系列ATP")]
        public bool FamilyATP { get; set; }
        [IsDataGridColum(true, 40)]
        [Description("ATP水平")]
        public int AtpHorizon { get; set; }
        [IsDataGridColum(true, 41)]
        [Description("运行序号1")]
        [StringLength(50)]
        public string RunSeq1 { get; set; }
        [IsDataGridColum(true, 42)]
        [Description("运行序号2")]
        [StringLength(50)]
        public string RunSeq2 { get; set; }
        [IsDataGridColum(true, 43)]
        [Description("虚拟件")]
        public bool Phantom { get; set; }
        [IsDataGridColum(true, 44)]
        [Description("最小订量")]
        public decimal MinimumOrder { get; set; }
        [IsDataGridColum(true, 45)]
        [Description("最大订量")]
        public decimal MaximumOrder { get; set; }
        [IsDataGridColum(true, 46)]
        [Description("订单倍数")]
        public decimal OrderMultiple { get; set; }
        [IsDataGridColum(true, 47)]
        [Description("基于产量的工序")]
        public bool OperationBasedYield { get; set; }
        [IsDataGridColum(true, 48)]
        [Description("产出率")]
        public decimal YieldPercent { get; set; }
        [IsDataGridColum(true, 49)]
        [Description("运行时间")]
        [StringLength(50)]
        public string RunTime { get; set; }
        [IsDataGridColum(true, 50)]
        [Description("设置时间")]
        public decimal SetupTime { get; set; }
        [IsDataGridColum(true, 51)]
        [Description("EMT类型")]
        [StringLength(50)]
        public string EmtType { get; set; }
        [IsDataGridColum(true, 52)]
        [Description("EMT的自动处理")]
        public bool AutomaticEmtProcessing { get; set; }
        [IsDataGridColum(true, 53)]
        [Description("分销网代码")]
        [StringLength(50)]
        public string NetWorkCode { get; set; }
        [IsDataGridColum(true, 54)]
        [Description("工艺流程代码")]
        [StringLength(50)]
        public string RoutingCode { get; set; }
        [IsDataGridColum(true, 55)]
        [Description("物料清单/配方代码")]
        [StringLength(50)]
        public string BomFormulaCode { get; set; }
        [IsDataGridColum(true, 56)]
        [Description("补货方法")]
        [StringLength(50)]
        public string ReplenishmentMethod { get; set; }
        [IsDataGridColum(true, 57)]
        [Description("是否主物料")]
        [StringLength(50)]
        public string IsMaster { get; set; }
        [IsDataGridColum(true, 58)]
        [Description("漆件颜色")]
        [StringLength(50)]
        public string PartColor { get; set; }

        [Key]
        public Guid GUID { get; set; } = Guid.NewGuid();

        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int UID { get; set; }
        [IsDataGridColum(true, 59)]
        [Description("创建人")]
        [StringLength(50)]
        public string CreateUser { get; set; }
        [IsDataGridColum(true, 60)]
        [Description("创建时间")]
        public DateTime CreateTime { get; set; }

        [IsDataGridColum(true, 61)]
        [Description("备注")]
        public string Remark { get; set; }
        [IsDataGridColum(true, 62)]
        [Description("修改人")]
        [StringLength(50)]
        public string UpdateUser { get; set; }
        [IsDataGridColum(true, 63)]
        [Description("修改时间")]
        public DateTime? UpdateTime { get; set; }
        [IsDataGridColum(true, 64)]
        [Description("已删除")]
        public bool IsDeleted { get; set; }
        [Description("域")]
        [StringLength(50)]
        public string Domain { get; set; }
    }
}