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.Statistics
{
    public class CorporateProfitViews
    {
    }


    public class CorporateProfitInfosView
    {
        public CorporateProfitInfo[] GroupItems { get; set; }
        public DailyInfo[] DailyItems { get; set; }
    }

    public class DailyInfo
    {
        public int Id { get; set; }
        public int CompanyId { get; set; }
        public string CompanyName { get; set; }
        /// <summary>
        /// 部门
        /// </summary>
        public string Branch { get; set; }
        /// <summary>
        /// 申请人
        /// </summary>
        public string Applicant { get; set; }
        public int PriceParentTypeId { get; set; }
        public string PriceParentTypeName { get; set; }
        public int PriceTypeId { get; set; }
        public string PriceTypeName { get; set; }
        public string Instructions { get; set; }
        public decimal CNYTotal { get; set; }
        public string PriceName { get; set; }
        public decimal Quantity { get; set; }
        public decimal Price { get; set; }
        public decimal ItemTotal { get; set; }
        public string Remark { get; set; }
        public DateTime CreateTime { get; set; }
    }

    public class CorporateProfitInfo
    {
        public int RowIndex { get; set; }
        public int Id { get; set; }
        public string ClientName { get; set; }
        public string TeamName { get; set; }
        public int TeamDid { get; set; }
        public string GroupTypeName { get; set; }
        public DateTime VisitDate { get; set; }
        public int VisitPNumber { get; set; }
        /// <summary>
        /// 应收金额
        /// </summary>
        public decimal ReceivableAmount { get; set; }
        /// <summary>
        /// 已收金额
        /// </summary>
        public decimal ReceivedAmount { get; set; }
        /// <summary>
        /// 收款退还金额
        /// </summary>
        public decimal RefundedAmount { get; set; }
        /// <summary>
        /// 酒店金额
        /// </summary>
        public decimal HotelAmount { get; set; }
        /// <summary>
        /// 地接金额
        /// </summary>
        public decimal LocalGuideAmount { get; set; }
        /// <summary>
        /// 机票金额
        /// </summary>
        public decimal AirTicketAmount { get; set; }
        /// <summary>
        /// 签证金额
        /// </summary>
        public decimal VisaAmount { get; set; }
        /// <summary>
        /// 商邀金额
        /// </summary>
        public decimal OAAmount { get; set; }
        /// <summary>
        /// 保险金额
        /// </summary>
        public decimal InsureAmount { get; set; }
        /// <summary>
        /// 其他金额
        /// </summary>
        public decimal OtherAmount { get; set; }
        /// <summary>
        /// 收款合计
        /// </summary>
        public decimal CollectionTotal
        {
            get
            {
                return ReceivedAmount - RefundedAmount; 
            }
        }
        /// <summary>
        /// 成本合计
        /// </summary>
        public decimal CostTotal
        {
            get
            {
                return HotelAmount + LocalGuideAmount + AirTicketAmount + VisaAmount + OAAmount + InsureAmount + OtherAmount;
            }
        }
        /// <summary>
        /// 利润合计/已收-成本
        /// </summary>
        public decimal ProfitTotal
        {
            get
            {
                return CollectionTotal - CostTotal;
            }
        }
        /// <summary>
        /// 应收利润合计/已收-成本
        /// </summary>
        public decimal ReceivableProfitTotal
        {
            get
            {
                return ReceivableAmount - CostTotal;
            }
        }
        /// <summary>
        /// 费用Tips Lable
        /// </summary>
        public string FeeCountTipsLabel { get; set; }
    }

    /// <summary>
    /// 企业利润团组费用条数统计
    /// </summary>
    public class CorporateProfitFeeCount
    {
        public int RowIndex { get; set; }
        public int Id { get; set; }
        public string TeamName { get; set; }
        public DateTime VisitDate { get; set; }
        /// <summary>
        /// 应收费用-Count
        /// </summary>
        public int ReceivableTotal { get; set; }
        /// <summary>
        /// 已收费用-Count
        /// </summary>
        public int ReceivedTotal { get; set; }
        /// <summary>
        /// 收款退还费用-Count
        /// </summary>
        public int RefundedTotal { get; set; }
        /// <summary>
        /// 酒店费用-Count
        /// </summary>
        public int HotelTotal { get; set; }
        /// <summary>
        /// 地接费用-Count
        /// </summary>
        public int LocalGuideTotal { get; set; }
        /// <summary>
        /// 机票费用-Count
        /// </summary>
        public int AirTicketToal { get; set; }
        /// <summary>
        /// 签证费用-Count
        /// </summary>
        public int VisaTotal { get; set; }
        /// <summary>
        /// 商邀费用-Count
        /// </summary>
        public int OATotal { get; set; }
        /// <summary>
        /// 保险费用-Count
        /// </summary>
        public int InsureTotal { get; set; }
        /// <summary>
        /// 其他费用-Count
        /// </summary>
        public int OtherTotal { get; set; }
       
        /// <summary>
        /// 费用Tips Lable
        /// </summary>
        public string FeeCountTipsLabel
        {
            get
            {
                string tips = $"应收数据:{ReceivableTotal} 条<br />已收数据:{ReceivedTotal} 条<br />收款退还数据:{RefundedTotal} 条<br />酒店数据:{HotelTotal} 条<br />地接数据:{LocalGuideTotal} 条<br />机票数据:{AirTicketToal} 条<br />签证数据:{VisaTotal} 条<br />商邀数据:{OATotal} 条<br />保险退还数据:{InsureTotal} 条<br />其他费用数据:{OtherTotal} 条";

                return tips;
            }
        }
    }

    public class CorporateProfitItem
    {
        public int RowIndex { get; set; }
        public int Id { get; set; }
        public string ClientName { get; set; }
        public string TeamName { get; set; }
        public DateTime VisitDate { get; set; }
      
        /// <summary>
        /// 收款合计(已收金额)
        /// </summary>
        public decimal CollectionTotal { get; set; }
        
        /// <summary>
        /// 应收 
        /// </summary>
        public decimal ReceivableAmount { get; set; }

        /// <summary>
        /// 成本合计
        /// </summary>
        public decimal CostTotal { get; set; }
        /// <summary>
        /// 利润合计/已收-成本
        /// </summary>
        public decimal ProfitTotal { get; set; }

        /// <summary>
        /// 应收利润合计/已收-成本
        /// </summary>
        public decimal ReceivableProfitTotal { get; set; }

        /// <summary>
        /// 费用Tips Lable
        /// </summary>
        public string FeeCountTipsLabel { get; set; }
    }

    public class CorporateProfitItemView
    {
        public CorporateProfitItem[] Items { get; set; }

        public string Label { get; set; }

    }


    public class CorporateProfitDailyView
    {
        public string No { get; set; }
        public string PriceName { get; set; }

        public decimal ThisMonthAmount { get; set; }
        public decimal ThisYearAmount { get; set; }
        public string Remark { get; set; }
    }

    public class CorporateProfitDailyCommentView
    {
        public string MonthComment { get; set; }
        public string YearComment { get; set; }
    }
}