using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
{
    /// 
    /// 入库单
    /// 
    [SugarTable(nameof(Dt_InboundOrder), "入库单")]
    public class Dt_InboundOrder : BaseEntity
    {
        /// 
        /// 主键
        /// 
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键")]
        public int Id { get; set; }
        /// 
        /// 仓库主键
        /// 
        [SugarColumn(IsNullable = false, ColumnDescription = "仓库主键")]
        public int WarehouseId { get; set; }
        /// 
        /// 单据编号
        /// 
        [CodeRule(RuleCodeEnum.InboundOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "单据编号")]
        public string InboundOrderNo { get; set; }
        /// 
        /// 上游单据编号
        /// 
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "上游单据编号")]
        public string UpperOrderNo { get; set; }
        /// 
        /// 供应商编号
        /// 
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "供应商编号")]
        public string SupplierId { get; set; }
        /// 
        /// 单据类型
        /// 
        [SugarColumn(IsNullable = false, ColumnDescription = "单据类型")]
        public int OrderType { get; set; }
        /// 
        /// 单据状态
        /// 
        [SugarColumn(IsNullable = false, ColumnDescription = "单据状态")]
        public int OrderStatus { get; set; }
        /// 
        /// 创建方式
        /// 
        [SugarColumn(IsNullable = false, ColumnDescription = "创建方式")]
        public int CreateType { get; set; }
        /// 
        /// 备注
        /// 
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "备注")]
        public string Remark { get; set; }
        /// 
        /// 入库单明细
        /// 
        [Navigate(NavigateType.OneToMany, nameof(Dt_InboundOrderDetail.OrderId), nameof(Id))]
        public List Details { get; set; }
    }
}