using RB_MES_API.Context;
using System.ComponentModel.DataAnnotations;
namespace RB_MES_API.Models.Cloud
{
    /// <summary>
    /// 其他入库单
    /// </summary>
    public class STK_MISCELLANEOUS
    {
        /// <summary>
        /// 实体主键（无需填写，保存时自动添加）
        /// </summary>
        public int FID { get; set; }
        /// <summary>
        /// 单据编号   
        /// </summary>
        [StringLength(36)]
        public string FBillNo { get; set; }
        /// <summary>
        /// 单据类型   (必填项)
        /// </summary>
        public Dictionary<string, string> FBillTypeID { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER","QTRKD01_SYS"}
        };
        /// <summary>
        /// 库存组织   (必填项)
        /// </summary>
        public Dictionary<string, string> FStockOrgId { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",LocalStaticRequest.DefaultOrg}
        };
        /// <summary>
        /// 库存方向    (必填项)
        /// </summary>
        [StringLength(36)]
        public string FStockDirect { get; set; } = "GENERAL";
        /// <summary>
        /// 日期  (必填项)
        /// </summary>
        [DataType(DataType.DateTime)]
        public string FDate { get; set; } = DateTime.Now.ToShortDateString();
        /// <summary>
        /// 供应商
        /// </summary>
        public Dictionary<string, string> FSUPPLIERID { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",""}
        };
        /// <summary>
        ///  部门
        /// </summary>  
        public Dictionary<string, string> FDEPTID { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",""}
        };
        /// <summary>
        ///  验收员
        /// </summary>
        public Dictionary<string, string> FACCEPTANCE { get; set; } = new Dictionary<string, string>() {
            { "FStaffNumber",""}
        };
        /// <summary>
        ///  仓管员
        /// </summary>
        public Dictionary<string, string> FSTOCKERID { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",""}
        };
        /// <summary>
        ///  库存组
        /// </summary>
        public Dictionary<string, string> FSTOCKERGROUPID { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",""}
        };
        /// <summary>
        /// 货主类型    (必填项)
        /// </summary>
        [StringLength(36)]
        public string FOwnerTypeIdHead { get; set; } = "BD_OwnerOrg";
        /// <summary>
        ///  货主 
        /// </summary>
        public Dictionary<string, string> FOwnerIdHead { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",LocalStaticRequest.DefaultOrg}
        };
        /// <summary>
        /// 备注
        /// </summary>
        [StringLength(36)]
        public string FNOTE { get; set; } = "";
        /// <summary>
        ///  本位币 
        /// </summary>
        public Dictionary<string, string> FBaseCurrId { get; set; } = new Dictionary<string, string>() {
            { "FNUMBER",""}
        };
        /// <summary>
        /// MES唯一标识
        /// </summary>
        [StringLength(36)]
        public string F_SBMI_QUEUE_ID { get; set; }
        /// <summary>
        /// 序列号上传
        /// </summary>
        //[StringLength(36)]
        //public string FScanBox { get; set; } = "";

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

        /// <summary>
        /// OA流程号#
        /// </summary>
        public string F_PNDR_Text_qtr2 { get; set; } = string.Empty;

        public List<Entity> FEntity { get; set; } = new List<Entity>();
        /// <summary>
        /// 明细信息
        /// </summary>
        public class Entity
        {
            /// <summary>
            /// 实体主键（无需填写，保存时自动添加）
            /// </summary>
            public int FEntryID { get; set; }
            /// <summary>
            /// 入库类型
            /// </summary>
            [StringLength(36)]
            public string FInStockType { get; set; }
            /// <summary>
            /// 物料编码   (必填项) 
            /// </summary>
            public Dictionary<string, string> FMATERIALID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            /// <summary>
            ///  辅助属性
            /// </summary>
            public AuxpropId FAuxPropId { get; set; }
            public class AuxpropId
            {
                public Dictionary<string, string> FAUXPROPID__FF100001 { get; set; } = new Dictionary<string, string>() { { "FNumber", "" } };
            }
            /// <summary>
            ///  单位   (必填项) 
            /// </summary>
            public Dictionary<string, string> FUnitID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            /// <summary>
            /// 基本单位
            /// </summary>
            public Dictionary<string, string> FSubBaseUnitId { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            /// <summary>
            ///  收货仓库   (必填项) 
            /// </summary>
            public Dictionary<string, string> FSTOCKID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            public StockLocId FStockLocId { get; set; } = new StockLocId();
            /// <summary>
            ///  仓位   
            /// </summary>
            public class StockLocId
            {
                public Dictionary<string, string> FSTOCKLOCID__FF100001 { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
                public Dictionary<string, string> FSTOCKLOCID__FF100002 { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            }
            /// <summary>
            ///  库存状态   (必填项) 
            /// </summary>
            public Dictionary<string, string> FSTOCKSTATUSID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "KCZT01_SYS" } };
            /// <summary>
            ///  批号   
            /// </summary>
            public Dictionary<string, string> FLOT { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            /// <summary>
            /// 实收数量
            /// </summary>
            public decimal FQty { get; set; }
            /// <summary>
            /// 备注
            /// </summary>
            [StringLength(36)]
            public string FEntryNote { get; set; }
            /// <summary>
            ///  BOM版本   
            /// </summary>
            public Dictionary<string, string> FBOMID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            /// <summary>
            /// 生产日期
            /// </summary>
            [DataType(DataType.DateTime)]
            public string FPRODUCEDATE { get; set; }
            /// <summary>
            /// 计划跟踪号
            /// </summary>
            [StringLength(36)]
            public string FMTONO { get; set; }
            /// <summary>
            ///  辅单位   
            /// </summary>
            public Dictionary<string, string> FExtAuxUnitId { get; set; } = new Dictionary<string, string>() { { "FNUMBER", "" } };
            /// <summary>
            /// 实收数量（辅单位)
            /// </summary>
            public decimal FExtAuxUnitQty { get; set; }
            /// <summary>
            /// 项目编号
            /// </summary>
            [StringLength(36)]
            public string FProjectNo { get; set; }
            /// <summary>
            /// 货主类型   (必填项)
            /// </summary>
            [StringLength(36)]
            public string FOWNERTYPEID { get; set; } = "BD_OwnerOrg";
            /// <summary>
            ///  货主   (必填项)
            /// </summary>
            public Dictionary<string, string> FOWNERID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", LocalStaticRequest.DefaultOrg } };
            /// <summary>
            /// 保管者类型   (必填项)
            /// </summary>
            [StringLength(36)]
            public string FKEEPERTYPEID { get; set; } = "BD_KeeperOrg";
            /// <summary>
            ///  保管者   (必填项)
            /// </summary>
            public Dictionary<string, string> FKEEPERID { get; set; } = new Dictionary<string, string>() { { "FNUMBER", LocalStaticRequest.DefaultOrg } };
            /// <summary>
            /// 源单分录行号 FSrcBillEntrySeq 
            /// </summary>
            public string FSeq { get; set; }

            public decimal FPrice { get; set; }
            /// <summary>
            /// 更新库存标志
            /// </summary>
            //public string FSTOCKFLAG { get; set; } = "1";

            /// <summary>
            /// 项目编号#
            /// </summary>
            public string F_PNDR_LargeText_qtr { get; set; } = string.Empty;

            /// <summary>
            /// 项目名称#
            /// </summary>
            public string F_PNDR_LargeText_83g { get; set; } = string.Empty;

            /// <summary>
            /// 项目经理#
            /// </summary>
            public string F_PNDR_Text_re5 { get; set; } = string.Empty;

            /// <summary>
            /// 项目阶段#
            /// </summary>
            public string F_PNDR_LargeText_apv { get; set; } = string.Empty;

        }
        /// <summary>
        ///  序列号子单据体
        /// </summary>
        public class FSerialSubEntity
        {
            /// <summary>
            /// 实体主键
            /// </summary>
            public int FExtAuxUnitQty { get; set; }
            /// <summary>
            /// 序列号
            /// </summary>
            [StringLength(36)]
            public string FSerialNo { get; set; }
            /// <summary>
            /// 备注
            /// </summary>
            [StringLength(36)]
            public string FSerialNote { get; set; }

        }
    }
}
