using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace RB_MES_API.Models.Cloud
{
    /// <summary>
    /// 批量推送单据到CLOUD配置
    /// </summary>
    public class DataSaveBatch
{
        /// <summary>
        /// 主键
        /// </summary>
        [Key]
        public int FID { get; set; }
        /// <summary>
        /// FormId
        /// </summary>
        [Required]
        [DisplayName("业务对象表单Id")]
        public int FDocTypeID { get; set; }
        /// <summary>
        ///  是否用编码搜索基础资料，布尔类型，默认true（非必录）
        /// </summary>
        public bool FNumberSearch { get; set; } = true;
        /// <summary>
        ///  是否验证标志，布尔类型，默认true（非必录）
        /// </summary>
        public bool FValidateFlag { get; set; } = true;
        /// <summary>
        ///  是否验证标志，布尔类型，默认true（非必录）
        /// </summary>
        public bool FIsDeleteEntry { get; set; } = true;
        /// <summary>
        ///  是否验证标志，布尔类型，默认true（非必录）
        /// </summary>
        public bool FIsEntryBatchFill { get; set; } = true;
        /// <summary>
        /// 需要更新的字段，数组类型，格式：[key1,key2,...]（非必录） 注（更新单据体字段得加上单据体key）
        /// </summary>
        public string FNeedUpDateFields { get; set; } = "";
        /// <summary>
        /// 需返回结果的字段集合，数组类型，格式：[key,entitykey.key,...]（非必录） 注（返回单据体字段格式：entitykey.key）
        /// </summary>
        public string FNeedReturnFields { get; set; } = string.Empty ;
        /// <summary>
        /// 表单所在的子系统内码，字符串类型（非必录）
        /// </summary>
        public string FSubSystemId { get; set; } = string.Empty;
        /// <summary>
        /// 交互标志集合，字符串类型，分号分隔，格式："flag1;flag2;..."（非必录），例如（允许负库存标识：STK_InvCheckResult）
        /// </summary>
        public string FInterationFlags { get; set; } = string.Empty;
        /// <summary>
        ///  是否自动提交与审核，布尔类型，默认false（非必录） 注（启用此参数，保存，提交和审核是在一个事务中）
        /// </summary>
        public bool FIsAutoSubmitAndAudit { get; set; } = true;
        /// <summary>
        /// 服务端开启的线程数，整型（非必录） 注（数据包数应大于此值，否则无效。）
        /// </summary>
        public int FBatchCount { get; set; } = 1;
        /// <summary>
        ///  是否验证所有的基础资料有效性，布尔类，默认false（非必录）
        /// </summary>
        public bool FIsVerifyBaseDataField { get; set; } = true;
        /// <summary>
        ///  是否自动调整JSON字段顺序，布尔类型，默认false（非必录）
        /// </summary>
        public bool FIsAutoAdjustField { get; set; } = false;
        /// <summary>
        ///  是否允许忽略交互，布尔类型，默认true（非必录）
        /// </summary>
        public bool FIgnoreInterationFlag { get; set; } = true;
        /// <summary>
        /// 是否控制精度，为true时对金额、单价和数量字段进行精度验证，默认false（非必录）
        /// </summary>
        public bool FIsControlPrecision { get; set; } = true;
        /// <summary>
        /// 校验Json数据包是否重复传入，一旦重复传入，接口调用失败，默认false（非必录）
        /// </summary>
        public bool FValidateRepeatJson { get; set; } = true;
        /// <summary>
        /// 提交单据的Url地址
        /// </summary>
        [DataType(DataType.Url)]
        [StringLength(255)]
        public string FSubmitUrl { get; set; } = string.Empty;
        /// <summary>
        /// 审核单据的Url地址
        /// </summary>
        [DataType(DataType.Url)]
        [StringLength(255)]
        public string FAuditUrl { get; set; } = string.Empty;
        /// <summary>
        /// 单据类型  (必填项)
        /// </summary>
        public string FErpBillType { get; set; } = string.Empty;
        /// <summary>
        /// 外键
        /// </summary>
        [ForeignKey("FDocTypeID")]
        public virtual FormIDType GetForm { get; set; }    //此处不能 = new FunctionList()，否则修改时也会多一张单据
    }
}
