using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;

namespace BBWY.Server.Model.Db
{

    /// <summary>
    /// 采购单表
    /// </summary>
    [Table(Name = "purchaseorderv2", DisableSyncStructure = true)]
    public partial class PurchaseOrderV2
    {

        /// <summary>
        /// 采购单号
        /// </summary>
        [Column(StringLength = 100, IsPrimary = true, IsNullable = false)]
        public string Id { get; set; }

        /// <summary>
        /// 拳探订单独有Sn号
        /// </summary>
        [Column(StringLength = 50)]
        public string OrderSn { get; set; }

        /// <summary>
        /// 完成时间
        /// </summary>
        [Column(DbType = "datetime")]
        public DateTime? CompletionTime { get; set; }

        /// <summary>
        /// 收货详细地址
        /// </summary>

        public string ConsigneeAddress { get; set; }

        /// <summary>
        /// 收货市
        /// </summary>
        [Column(StringLength = 30)]
        public string ConsigneeCity { get; set; }

        /// <summary>
        /// 收货联系人名称
        /// </summary>
        [Column(StringLength = 50)]
        public string ConsigneeContactName { get; set; }

        /// <summary>
        /// 收货区
        /// </summary>
        [Column(StringLength = 30)]
        public string ConsigneeCounty { get; set; }

        /// <summary>
        /// 收货联系人电话
        /// </summary>
        [Column(StringLength = 50)]
        public string ConsigneeMobile { get; set; }

        /// <summary>
        /// 收货省
        /// </summary>
        [Column(StringLength = 30)]
        public string ConsigneeProvince { get; set; }

        /// <summary>
        /// 收货镇
        /// </summary>
        [Column(StringLength = 30)]
        public string ConsigneeTown { get; set; }

        /// <summary>
        /// 打包耗材费
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? ConsumableAmount { get; set; } = 0.00M;

        /// <summary>
        /// 创建时间
        /// </summary>
        [Column(DbType = "datetime")]
        public DateTime? CreateTime { get; set; }

        /// <summary>
        /// 快递公司
        /// </summary>
        [Column(StringLength = 100)]
        public string ExpressName { get; set; }

        /// <summary>
        /// 头程运费
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? FirstFreight { get; set; } = 0.00M;

        /// <summary>
        /// 入仓费
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? InStorageAmount { get; set; } = 0.00M;

        /// <summary>
        /// 是否转入库存
        /// </summary>

        public bool? IsConvertToStock { get; set; } = false;

        /// <summary>
        /// 是否订阅快递100
        /// </summary>

        public bool? IsSubscribeKuaiDi100 { get; set; } = false;

        [Column(MapType = typeof(int?))]
        public Enums.PurchaseOrderState? OrderState { get; set; }

        /// <summary>
        /// 支付时间
        /// </summary>
        [Column(DbType = "datetime")]
        public DateTime? PayTime { get; set; }

        /// <summary>
        /// 采购货款
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? ProductAmount { get; set; } = 0.00M;

        /// <summary>
        /// 采购账号Id
        /// </summary>

        public long? PurchaseAccountId { get; set; }

        /// <summary>
        /// 采购金额(采购货款+采购运费)
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? PurchaseAmount { get; set; } = 0.00M;

        /// <summary>
        /// 采购运费
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? PurchaseFreight { get; set; } = 0.00M;

        /// <summary>
        /// 采购平台
        /// </summary>
        [Column(MapType = typeof(int?))]
        public Enums.Platform? PurchasePlatform { get; set; }

        /// <summary>
        /// 商家Id
        /// </summary>
        [Column(StringLength = 20)]
        public string PurchaserId { get; set; }

        /// <summary>
        /// 商家名称
        /// </summary>
        [Column(StringLength = 100)]
        public string PurchaserName { get; set; }

        /// <summary>
        /// 质检费
        /// </summary>
        [Column(DbType = "decimal(18,2)")]
        public decimal? QualityInspectionAmount { get; set; } = 0.00M;

        /// <summary>
        /// 备注信息
        /// </summary>
        [Column(StringLength = 1000)]
        public string Remark { get; set; }

        /// <summary>
        /// 店铺Id
        /// </summary>

        public long ShopId { get; set; }

        /// <summary>
        /// 签收时间
        /// </summary>
        [Column(DbType = "datetime")]
        public DateTime? SignTime { get; set; }

        /// <summary>
        /// 快递单号
        /// </summary>
        [Column(StringLength = 100)]
        public string WaybillNo { get; set; }

        /// <summary>
        /// 采购方式(线上=0, 线下=1)
        /// </summary>
        [Column(MapType = typeof(int))]
        public Enums.PurchaseMethod PurchaseMethod { get; set; }

        /// <summary>
        /// 采购单模式 批发 = 0,代发 = 1
        /// </summary>
        [Column(MapType = typeof(int))]
        public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; }
        /// <summary>
        /// 打包状态 (待发布=0,打包中=1,已完成=2)
        /// </summary>
        [Column(MapType = typeof(int))]
        public Enums.PackState PackState { get; set; }

        /// <summary>
        /// 入仓类型 (发回齐越 = 0, 厂商代发入仓 = 1)
        /// </summary>
        [Column(MapType = typeof(int?))]
        public Enums.IntoStoreType? IntoStoreType { get; set; }
    }

}