using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XYY.Common.Standard.Attributes;
using XYY.Core.Standard;

namespace XYY.Model.Standard.Finance
{
    public enum ClaimSolution
    {

        [Description("无")]
        None = 0,

        [Description("申报价值加运费")]
        ValueFreight = 1,

        [Description("采购成本加运费")]
        CostFreight = 2,

        [Description("只索赔成本")]
        CostOnly = 3,

        [Description("只索赔运费")]
        FreightOnly = 4,

        [Description("只索赔补发运费")]
        ResendFreightOnly = 5,

        [Description("补发运费和成本")]
        ResendFreightCost = 6
    }

    public enum ClaimStatus
    {
        /// <summary>
        /// 未索赔
        /// </summary>
        [Description("未索赔")]
        UnClaim = 0,
        /// <summary>
        /// 已索赔（目前索赔只有2个状态，未索赔和已确认，其中已确认和已索赔是一样的。）
        /// </summary>
        [Description("已确认")]
        Claimed = 1
    }

    public class Logistics_ClaimRecord : BaseEntity
    {

        public int OrderId { get; set; }
        public string TrackingNumber { get; set; }
        public string TransferNumber { get; set; }
        public string CustomerOrderNo { get; set; }
        public string CountryCode { get; set; }
        public string CustomerCode { get; set; }
        public int? CustomerId { get; set; }
        public int ChannelId { get; set; }
        /// <summary>
        /// 订单物品成本
        /// </summary>
        public decimal Cost { get; set; }
        public decimal AuditCost { get; set; }
        /// <summary>
        /// 系统运费
        /// </summary>
        public decimal Freight { get; set; }
        /// <summary>
        /// 核算运费
        /// </summary>
        public decimal? AuditFreight { get; set; }
        public decimal TotalValue { get; set; }
        public decimal? AuditTotalValue { get; set; }
        public decimal? AuditTotalAmount { get; set; }
        public ClaimStatus ClaimStatus { get; set; }
        public string Currency { get; set; }
        public ClaimSolution Solution { get; set; }

        [NoDb]
        public string SolutionName
        {
            get;set;
        }
        public string AuditSolution { get; set; }

        public DateTime? ClaimTime { get; set; }
        public DateTime? ReceiveTime { get; set; }

        public DateTime? FinanceConfirmTime { get; set; }
    }
}
