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_INHOUSE_MASTER", Schema = "JHAMES")]
    [Keyless]
    [Index(nameof(ItemNo), Name = "FQC_INHOUSE_MASTER_F1")]
    [Index(nameof(WipNo), Name = "FQC_INHOUSE_MASTER_F2")]
    [Index(nameof(Status), Name = "FQC_INHOUSE_MASTER_K1")]
    public partial class FqcInhouseMaster
    {
        /// <summary>
        /// 入庫單號碼
        /// </summary>
        [Key]
        [DataMember]
        [Display(Name = "入庫單號碼")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("INHOUSE_NO")]
        [StringLength(20)]
        public string InhouseNo { get; set; }

        /// <summary>
        /// 順序ID
        /// </summary>
        [Key]
        [DataMember]
        [Display(Name = "順序ID")]
        [Column("SEQ_ID")]
        public int SeqID { get; set; } = 1;

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

        /// <summary>
        /// PCB版本
        /// </summary>
        [DataMember]
        [Display(Name = "PCB版本")]
        [Column("PCB_VER")]
        [StringLength(10)]
        public string PcbVer { get; set; }

        /// <summary>
        /// 本批完成量
        /// </summary>
        [DataMember]
        [Display(Name = "本批完成量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("INHOUSE_QTY")]
        public int InhouseQty { get; set; }

        /// <summary>
        /// 工單總數量
        /// </summary>
        [DataMember]
        [Display(Name = "工單總數量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("WIP_QTY")]
        public int WipQty { get; set; }

        /// <summary>
        /// 累計完成量
        /// </summary>
        [DataMember]
        [Display(Name = "累計完成量")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("FQC_COMPLETE_QTY")]
        public int FqcCompleteQty { get; set; } = 0;

        /// <summary>
        /// 入庫廠别
        /// </summary>
        [DataMember]
        [Display(Name = "入庫廠别")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("PLANT")]
        [StringLength(4)]
        public string Plant { get; set; }

        /// <summary>
        /// 庫位
        /// </summary>
        [DataMember]
        [Display(Name = "庫位")]
        [Column("LOCATION")]
        [StringLength(4)]
        public string Location { get; set; }

        /// <summary>
        /// 抽驗標準ID
        /// </summary>
        [DataMember]
        [Display(Name = "抽驗標準ID")]
        [Required(ErrorMessage = "{0},不能空白")]
        [Column("CRIT_ID")]
        public int CritID { get; set; }

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

        /// <summary>
        /// 產品類別 STANDARD(標準品),Order(訂單)
        /// </summary>
        [DataMember]
        [Display(Name = "產品類別")]
        [Column("PRO_TYPE")]
        [StringLength(20)]
        public string ProType { get; set; }

        /// <summary>
        /// 原批退入庫單
        /// </summary>
        [DataMember]
        [Display(Name = "原批退入庫單")]
        [Column("R_INHOUSE_NO")]
        [StringLength(13)]
        public string RInhouseNo { get; set; }

        /// <summary>
        /// 原批退入庫單備註
        /// </summary>
        [DataMember]
        [Display(Name = "原批退入庫單備註")]
        [Column("R_MEMO")]
        [StringLength(100)]
        public string RMemo { 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>
        /// 庫別
        /// </summary>
        [DataMember]
        [Display(Name = "庫別")]
        [Column("LOCATION_NO")]
        [StringLength(5)]
        public string LocationNo { get; set; }


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

        /// <summary>
        /// 制程代碼
        /// </summary>
        [Column("UNIT_NO")]
        [DataMember]
        [Display(Name = "制程代碼")]
        public string UnitNo { get; set; }

    }
}