using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using System.Runtime.Serialization;

#nullable disable

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 檢驗單結果資料檔
    /// </summary>
    [Table("FQC_RESULT_MASTER", Schema = "JHAMES")]
    public partial class FqcResultMaster
    {
        /// <summary>
        /// FQC檢驗結果ID
        /// </summary>
        [DataMember]
        [Display(Name = "FQC檢驗結果ID")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Key]
        [Column("FQC_ID")]
        public int FqcID { get; set; }

        /// <summary>
        /// 入庫單號碼
        /// </summary>
        [DataMember]
        [Display(Name = "入庫單號碼")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("INHOUSE_NO")]
        [StringLength(20)]
        public string InhouseNo { get; set; }

        /// <summary>
        /// 順序ID(序號)
        /// </summary>
        [DataMember]
        [Display(Name = "順序ID(序號)")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("SEQ_ID")]
        public int SeqID { get; set; } = 1;

        /// <summary>
        /// 特採單號
        /// </summary>
        [DataMember]
        [Display(Name = "特採單號")]
        [Column("SPECIAL_PO")]
        public string SpecialPo{ get; set; }

        /// <summary>
        /// 本批次總數量
        /// </summary>
        [DataMember]
        [Display(Name = "本批次總數量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("LOT_QTY")]
        public int LotQty { get; set; }

        /// <summary>
        /// 工單號碼
        /// </summary>
        [DataMember]
        [Display(Name = "工單號碼")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("WIP_NO")]
        [StringLength(30)]
        public string WipNo { get; set; }

        /// <summary>
        /// 抽驗结果 P-PASS(允收);R-REJECT(批退);A初始狀態
        /// </summary>
        [DataMember]
        [Display(Name = "抽驗结果")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("QA_RESULT")]
        [StringLength(10)]
        public string QaResult { get; set; } = "A";

        /// <summary>
        /// 抽驗數量
        /// </summary>
        [DataMember]
        [Display(Name = "抽驗數量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("QA_QTY")]
        public int QaQty { get; set; }

        /// <summary>
        /// PASS數量
        /// </summary>
        [DataMember]
        [Display(Name = "PASS數量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("PASS_QTY")]
        public int PassQty { get; set; } = 0;


        /// <summary>
        /// FAIL數量
        /// </summary>
        [DataMember]
        [Display(Name = "FAIL數量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("FAIL_QTY")]
        public int FailQty { get; set; }

        /// <summary>
        /// 入庫單備註
        /// </summary>
        [DataMember]
        [Display(Name = "入庫單備註")]
        [Column("INHOUSE_MEMO")]
        [StringLength(150)]
        public string InhouseMemo { get; set; }


        /// <summary>
        /// 料號 or 工程編號
        /// </summary>
        [DataMember]
        [Display(Name = "工程編號")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("ITEM_NO")]
        [StringLength(20)]
        public string ItemNo { get; set; }

        /// <summary>
        /// 判定備註
        /// </summary>
        [DataMember]
        [Display(Name = "判定備註")]
        [Column("QA_MENO")]
        [StringLength(100)]
        public string QaMeno { get; set; }

        /// <summary>
        /// 手動判定備註
        /// </summary>
        [DataMember]
        [Display(Name = "手動判定備註")]
        [Column("MANUAL_QA_MENO")]
        [StringLength(200)]
        public string ManualQaMeno { get; set; }

        /// <summary>
        /// 品名/機種
        /// </summary>
        [DataMember]
        [Display(Name = "品名/機種")]
        [Column("MODEL_NO")]
        [StringLength(30)]
        public string ModelNo { get; set; }

        /// <summary>
        /// 批退類型 M - 重缺;S - 次缺
        /// </summary>
        [DataMember]
        [Display(Name = "批退類型")]
        [Column("REJECT_TYPE")]
        [StringLength(2)]
        public string RejectType { get; set; }

        /// <summary>
        /// 開始抽驗時間
        /// </summary>
        [DataMember]
        [Display(Name = "開始抽驗時間")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("START_TIME")]
        public DateTime StartTime { get; set; }

        /// <summary>
        /// 結束抽驗時間
        /// </summary>
        [DataMember]
        [Display(Name = "結束抽驗時間")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("END_TIME", TypeName = "DATE")]
        public DateTime EndTime { get; set; }

        /// <summary>
        /// AQL有效標誌 Y – 有效計算項; N –無效計算項;(每次抓取Y的有效計算項來計算是否要調整AQL)
        /// </summary>
        [DataMember]
        [Display(Name = "AQL有效標誌")]
        [Column("AQL_ENABLE_FLAG")]
        [StringLength(2)]
        public string AqlEnableFlag { get; set; }

        /// <summary>
        /// 建立UserID
        /// </summary>
        [Column("CREATE_USERID")]
        [Required]
        [DataMember]
        public int CreateUserID { get; set; } = 0;

        /// <summary>
        /// 建立日期
        /// </summary>
        [Required]
        [Column("CREATE_DATE")]
        [DataMember]
        public DateTime CreateDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 更新UserID
        /// </summary>
        [Column("UPDATE_USERID")]
        [DataMember]
        public int UpdateUserID { get; set; } = 0;

        /// <summary>
        /// 更新日期
        /// </summary>
        [Column("UPDATE_DATE")]
        [DataMember]
        public DateTime? UpdateDate { get; set; } = DateTime.Now;

        /// <summary>
        /// OS
        /// </summary>
        [DataMember]
        [Display(Name = "OS")]
        [Column("OS")]
        [StringLength(50)]
        public string OS { get; set; }

        /// <summary>
        /// CPU test
        /// </summary>
        [DataMember]
        [Display(Name = "CPU test")]
        [Column("CPU")]
        [StringLength(50)]
        public string CPU { get; set; }

        /// <summary>
        /// RAM test
        /// </summary>
        [DataMember]
        [Display(Name = "RAM test")]
        [Column("RAM")]
        [StringLength(50)]
        public string RAM { get; set; }

        /// <summary>
        /// BIOS
        /// </summary>
        [DataMember]
        [Display(Name = "BIOS")]
        [Column("BIOS")]
        [StringLength(50)]
        public string BIOS { get; set; }

        /// <summary>
        /// 檢驗儀器編號
        /// </summary>
        [DataMember]
        [Display(Name = "檢驗儀器編號")]
        [Column("OUTFIT_NO")]
        [StringLength(50)]
        public string OutfitNo { get; set; }

        /// <summary>
        /// 單位主管
        /// </summary>
        [Column("SUPERVISOR")]
        [DataMember]
        public string Supervisor { get; set; } 

        /// <summary>
        /// Proved
        /// </summary>
        [Column("PROVED")]
        [DataMember]
        public string Proved { get; set; }

        /// <summary>
        /// 抽樣允收標準
        /// </summary>
        [Column("INSPECTION_TYPE")]
        [DataMember]
        public string InspectionType { get; set; } = "A";

        /// <summary>
        /// Major
        /// </summary>
        [DataMember]
        [Display(Name = "Major")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("MAJOR_QTY")]
        public int MajorQty { get; set; } = 0;

        /// <summary>
        /// Minor
        /// </summary>
        [DataMember]
        [Display(Name = "Minor")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("MINOR_QTY")]
        public int MinorQty { get; set; } = 0;

        /// <summary>
        /// NOTE
        /// </summary>
        [DataMember]
        [Display(Name = "NOTE")]
        [Column("NOTE")]
        public string Note { get; set; }

        /// <summary>
        /// ECN_MEMO
        /// </summary>
        [DataMember]
        [Display(Name = "ECN_MEMO")]
        [Column("ECN_MEMO")]
        public string ECN_Memo { get; set; }

        /// <summary>
        /// PLM_ECN
        /// </summary>
        [DataMember]
        [Display(Name = "PLM_ECN")]
        [Column("PLM_ECN")]
        public string PLM_ECN { get; set; }

        /// <summary>
        /// 檢驗地方 A:廠驗 B:委外 C:免驗
        /// </summary>
        [DataMember]
        [Display(Name = "PLM_ECN")]
        [Column("INSPECTION_STATUS")]
        public string InspectionStatus { get; set; } = "A";
    }
}