using OASystem.Domain.Entities.Financial;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.ViewModels.Financial
{
    /// <summary>
    /// 团组应收款项 View
    /// </summary>
    public class Fin_ForeignReceivablesView : Fin_ForeignReceivables
    {
    }

    /// <summary>
    /// 团组应收款项 info View
    /// </summary>
    public class ForeignReceivablesInfoView
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 团组Id
        /// </summary>
        public int Diid { get; set; }

        /// <summary>
        /// 费用名称
        /// </summary>
        public string? PriceName { get; set; }

        /// <summary>
        /// 费用
        /// </summary>
        public decimal Price { get; set; }

        /// <summary>
        /// 数量
        /// </summary>
        public int Count { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        public string? Unit { get; set; }

        /// <summary>
        /// 单项总和
        /// </summary>
        public decimal ItemSumPrice { get; set; }

        /// <summary>
        /// 付款方
        /// </summary>
        public string? To { get; set; }

        /// <summary>
        /// 付款方电话
        /// </summary>
        public string? ToTel { get; set; }

        /// <summary>
        /// 付款日期
        /// </summary>
        public string? PayDate { get; set; }

        /// <summary>
        /// 付款注意事项
        /// </summary>
        public string? Attention { get; set; }

        /// <summary>
        /// 汇率
        /// </summary>
        public decimal Rate { get; set; }

        /// <summary>
        /// 币种
        /// </summary>
        public int Currency { get; set; }

        /// <summary>
        /// 添加方式   
        /// 0 - 账单页面添加   1 - 预算成本页面添加
        /// </summary>
        public int AddingWay { get; set; }

        /// <summary>
        /// 添加方式描述
        /// </summary>
        public string? AddingModeName
        {
            get
            {

                string str = "";
                if (AddingWay == 0) str = "账单模块";
                else if (AddingWay == 1) str = "成本预算模块";

                return str;
            }
        }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreateTime { get; set; }
    }

    /// <summary>
    /// 团组应收款项 含已收款项
    /// </summary>
    public class ForeignReceivablesView : ForeignReceivablesInfoView
    {
        /// <summary>
        /// 对应收款账单Id
        /// 已收款项 信息
        /// </summary>
        public List<ProceedsReceivedView>? _ProceedsReceivedDatas { get; set; }
    }


    #region 不关联已收账单

    /// <summary>
    /// 团组已收款项Info View
    /// </summary>
    public class ProceedsReceivedNewView
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 团组Id
        /// </summary>
        public int Diid { get; set; }

        /// <summary>
        /// 费用名称
        /// </summary>
        public string? PriceName { get; set; }

        /// <summary>
        /// 费用
        /// </summary>
        public decimal Price { get; set; }

        /// <summary>
        /// 数量
        /// </summary>
        public int Count { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        public string? Unit { get; set; }

        /// <summary>
        /// 单项总和
        /// </summary>
        public decimal ItemSumPrice { get; set; }

        /// <summary>
        /// 付款方
        /// </summary>
        public string? To { get; set; }

        /// <summary>
        /// 付款方电话
        /// </summary>
        public string? ToTel { get; set; }

        /// <summary>
        /// 付款日期
        /// </summary>
        public string? PayDate { get; set; }

        /// <summary>
        /// 付款注意事项
        /// </summary>
        public string? Attention { get; set; }

        /// <summary>
        /// 汇率
        /// </summary>
        public decimal Rate { get; set; }

        /// <summary>
        /// 币种
        /// </summary>
        public int Currency { get; set; }

        /// <summary>
        /// 添加方式   
        /// 0 - 账单模块   1 - 预算成本页面添加
        /// </summary>
        public int AddingWay { get; set; }

        /// <summary>
        /// 添加方式描述
        /// </summary>
        public string? AddingModeName
        {
            get
            {

                string str = "";
                if (AddingWay == 0) str = "账单模块";
                else if (AddingWay == 1) str = "成本预算模块";

                return str;
            }
        }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreateTime { get; set; }
    }



    #endregion

    #region 应收报表

    public class Excel_SyntheticalReceivableByDateRange{
        public string No { get; set; }

        /// <summary>
        /// 团组名称
        /// </summary>
        public string TeamName { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        public string ClientUnit { get; set; }

        /// <summary>
        /// 出访时间
        /// </summary>
        public string VisitDate { get; set; }

        /// <summary>
        /// 应收
        /// </summary>
        public string Accounts { get; set; }

        /// <summary>
        /// 超支
        /// </summary>
        public string Extra { get; set; }


        /// <summary>
        /// 应收总计(应收+超支)
        /// </summary>
        public string ReceivableTotal { get; set; }

        /// <summary>
        /// 已收
        /// </summary>
        public string Received { get; set; }

        /// <summary>
        /// 收款退还
        /// </summary>
        public string RefundAmount { get; set; }

        /// <summary>
        /// 已收合计(已收 - 收款退还)
        /// </summary>
        public string ReceivedTotal { get; set; }

        /// <summary>
        /// 余款
        /// </summary>
        public string Balance { get; set; }

        /// <summary>
        /// 收款进度
        /// </summary>
        public string Collection { get; set; }

        public string Sign { get; set; }
    }

    public class PostSyntheticalReceivableByDateRangeResultView
    {
        public string total_fr { get; set; }
        public string total_pr { get; set; }
        public string total_balance { get; set; }

        public List<PostSyntheticalReceivableByDateRangeView> dataList { get; set; }
    }

    public class PostSyntheticalReceivableByDateRangeView
    {
        public int No { get; set; }

        /// <summary>
        /// 团组Id
        /// </summary>
        public int diid { get; set; }

        /// <summary>
        /// 团组名称
        /// </summary>
        public string teamName { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        public string clientUnit { get; set; }

        /// <summary>
        /// 出访时间
        /// </summary>
        public string visitDate { get; set; }

        /// <summary>
        /// 应收
        /// </summary>
        public string frPrice { get; set; }

        /// <summary>
        /// 超支
        /// </summary>
        public string extraPrice { get; set; }

        /// <summary>
        /// 应收总计(应收+超支)
        /// </summary>
        public string receivableTotal { get; set; }

        /// <summary>
        /// 已收
        /// </summary>
        public string prPrice { get; set; }

        /// <summary>
        /// 退款-->收款退还
        /// </summary>
        public string refundAmount { get; set; }

        /// <summary>
        /// 已收总计(已收-收款退还)
        /// </summary>
        public string receivedTotal { get; set; }

        /// <summary>
        /// 余款(应收 - 已收)
        /// </summary>
        public string balPrice { get; set; }

        /// <summary>
        /// 收款单位
        /// </summary>
        public string prClient { get; set; }

        /// <summary>
        /// 收款进度
        /// </summary>
        public string schedule { get; set; }
    }

    #endregion
}