using Newtonsoft.Json;
using OASystem.Domain.Entities.PersonnelModule;
using OASystem.Domain.ViewModels.QiYeWeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OASystem.Domain.ViewModels.PersonnelModule
{
    /// 
    /// 工资表详情
    /// 
    public class WageSheetView : Pm_WageSheet
    {
    }
    /// 
    /// 工资年月 View
    /// 
    public class WageYearMonthView 
    {
        public string YearMonth { get; set; }
        public string StartDate { get; set; }
        public string EndDate { get; set; }
        public int Workdays { get; set; }
    }
    /// 
    /// 工资表单详情
    /// 
    public class WageSheetInfoView
    {
        public int Id { get; set; }
        /// 
        /// 员工Id
        /// 
        public int UserId { get; set; }
        /// 
        /// 姓名
        /// 
        public string? Name { get; set; }
        /// 
        /// 年月
        /// 
        public string? YearMonth { get; set; }
        /// 
        /// 工资日期 起
        /// 
        public string? StartDate { get; set; }
        /// 
        /// 工资日期 止
        /// 
        public string? EndDate { get; set; }
        /// 
        /// 应出勤天数
        /// 
        public int WorkDays { get; set; }
        /// 
        /// 正常出勤天数
        /// 
        public int RegularDays { get; set; }
        /// 
        /// 基本工资
        /// 
        public decimal Basic { get; set; }
        /// 
        /// 绩效工资
        /// 
        public decimal Floats { get; set; }
        /// 
        /// 岗位津贴
        /// 
        public decimal PostAllowance { get; set; }
        /// 
        /// 保密费
        /// 
        public decimal InformationSecurityFee { get; set; }
        /// 
        /// 其他应付
        /// 
        public decimal OtherHandle { get; set; }
        /// 
        /// 月度补贴/其他补贴
        /// 
        public decimal OtherSubsidies { get; set; }
        /// 
        /// 餐补
        /// 
        public decimal Mealsupplement { get; set; }
        /// 
        /// 代扣保险
        /// 
        public decimal WithholdingInsurance { get; set; }
        /// 
        /// 代扣公积金
        /// 
        public decimal ReservedFunds { get; set; }
        /// 
        /// 病假
        /// 
        public decimal SickLeave { get; set; }
        /// 
        /// 事假
        /// 
        public decimal SomethingFalse { get; set; }
        /// 
        /// 迟到 
        /// 
        public decimal LateTo { get; set; }
        /// 
        /// 早退 
        /// 
        public decimal LeaveEarly { get; set; }
        /// 
        /// 旷工 
        /// 小时计算 7.5小时一天
        /// 
        public decimal Absenteeism { get; set; }
        /// 
        /// 未打卡
        /// 
        public decimal NotPunch { get; set; }
        /// 
        /// 其他扣款
        /// 
        public decimal OtherDeductions { get; set; }
        /// 
        /// 考勤/打卡 详情
        /// 
        public string Ex_ItemsRemark { get; set; }
        /// 
        /// 应发合计
        /// 
        public decimal Should { get; set; }
        /// 
        /// 扣款合计
        /// 
        public decimal TotalDeductions { get; set; }
        /// 
        /// 税前合计
        /// 
        public decimal BeforeTax
        {
            get
            {
                return Should - TotalDeductions;
            }
        }
        /// 
        /// 代扣个税
        /// 
        public decimal WithholdingTax { get; set; }
        /// 
        /// 实发合计(税后工资)
        /// 
        public decimal TotalRealHair { get; set; }
        /// 
        /// 最后操作人
        /// 
        public int LastUpdateUserId { get; set; }
        /// 
        /// 最后操作人Name
        /// 
        public string? LastUpdateUserName { get; set; }
        /// 
        /// 最后操作时间
        /// 
        public string? LastUpdateDt { get; set; }
        /// 
        /// 备注
        /// 
        public string? Remark { get; set; }
    }
    public class WageSheetItemInfoView
    {
        /// 
        /// 序号
        /// 
        public int Row_Number { get; set; }
        /// 
        /// 公司Id
        /// 
        public int CompanyId { get; set; }
        /// 
        /// 公司名称
        /// 
        public string? CompanyName { get; set; }
        /// 
        /// 部门Id
        /// 
        public int DepId { get; set; }
        /// 
        /// 部门名称
        /// 
        public string? DepName { get; set; }
        /// 
        /// 
        /// 
        public int Id { get; set; }
        /// 
        /// 年月
        /// 
        public string? YearMonth { get; set; }
        /// 
        /// 工资日期 起
        /// 
        public string? StartDate { get; set; }
        /// 
        /// 工资日期 止
        /// 
        public string? EndDate { get; set; }
        /// 
        /// 应出勤天数
        /// 
        public int WorkDays { get; set; }
        /// 
        /// 正常出勤天数
        /// 
        public int RegularDays { get; set; }
        /// 
        /// 员工Id
        /// 
        public int UserId { get; set; }
        /// 
        /// 员工Name
        /// 
        public string? Name { get; set; }
        /// 
        /// 应发合计
        /// 
        public decimal Should { get; set; }
        /// 
        /// 扣款合计
        /// 
        public decimal TotalDeductions { get; set; }
        /// 
        /// 假勤  / 打卡补卡 明细 string
        /// 
        public string? Ex_ItemsRemark { get; set; }
        /// 
        /// 代扣个税
        /// 
        public decimal WithholdingTax { get; set; }
        /// 
        /// 税前合计
        /// 
        public decimal BeforeTax
        {
            get
            {
                return Should - TotalDeductions;
            }
        }
        /// 
        /// 实发合计(税后工资)
        /// 
        public decimal TotalRealHair { get; set; }
        /// 
        /// 最后操作人
        /// 
        public int LastUpdateUserId { get; set; }
        /// 
        /// 员工Name
        /// 
        public string? LastUpdateUserName { get; set; }
        /// 
        /// 最后操作时间
        /// 
        public DateTime? LastUpdateDt { get; set; }
    }
    /// 
    /// 个税模板 View
    /// 
    public class TaxTemlateViuw
    {
        public string? UserName { get; set; }
        public decimal Tax { get; set; } = 0.00M;
    }
    public class ExportWageSheetItemView:Pm_WageSheet
    {
        
        /// 
        /// 公司Id
        /// 
        public int CompanyId { get; set; }
        /// 
        /// 公司名称
        /// 
        public string? CompanyName { get; set; }
        /// 
        /// 部门Id
        /// 
        public int DepId { get; set; }
        /// 
        /// 部门名称
        /// 
        public string? DepName { get; set; }
        /// 
        /// 
        /// 
        public int Id { get; set; }
        /// 
        /// 年月
        /// 
        public string? YearMonth { get; set; }
        /// 
        /// 工资日期 起
        /// 
        public string? StartDate { get; set; }
        /// 
        /// 工资日期 止
        /// 
        public string? EndDate { get; set; }
        /// 
        /// 应出勤天数
        /// 
        public int WorkDays { get; set; }
        /// 
        /// 员工Id
        /// 
        public int UserId { get; set; }
        /// 
        /// 员工Name
        /// 
        public string? Name { get; set; }
        /// 
        /// 税前合计
        /// 
        public decimal BeforeTax
        {
            get
            {
                return Should - TotalDeductions;
            }
        }
        /// 
        /// 实发合计(税后工资)
        /// 
        public decimal TotalRealHair { get; set; }
        /// 
        /// 最后操作人
        /// 
        public int LastUpdateUserId { get; set; }
        /// 
        /// 员工Name
        /// 
        public string? LastUpdateUserName { get; set; }
        /// 
        /// 最后操作时间
        /// 
        public DateTime? LastUpdateDt { get; set; }
    }
    /// 
    /// 工资列表信息
    /// 
    public class WageSheetInfos : Pm_WageSheet
    {
        public string Name { get; set; }
    }
    #region 假勤 和 打卡 统计
    /// 
    /// 假期详情
    /// 
    public class LeaveDetails
    {
        /// 
        /// 假期类型Id
        /// 
        public int TypeId { get; set; }
        /// 
        /// 假期名称
        /// 
        public string TypeName { get; set; }
        /// 
        /// 开始日期
        /// 
        public DateTime StartDt { get; set; }
        /// 
        /// 结束日期
        /// 
        public DateTime EndDt { get; set; }
        /// 
        /// 时间展示类型:halfday-日期;hour-日期+时间
        /// 
        public string DtType { get; set; }
        /// 
        /// 时长单位
        /// 小时/天
        /// 
        public string Unit { get; set; }
        /// 
        /// 请假时长
        /// 
        public decimal New_Duration { get; set; }
        /// 
        /// 申请时间
        /// 
        public DateTime  ApplyDt { get; set; }
        /// 
        /// 时长支持按天分片信息, 2020/10/01之前的历史表单不支持时长分片
        /// 
        public Slice_info SliceInfo { get; set; }
        /// 
        /// 餐补是否参与扣款
        /// 
        public bool IsDeduction { get; set; } = false;
    }
    public class Ex_Items
    {
        /// 
        /// 类型
        /// 假勤 打卡
        /// 
        public string? Type { get; set; }
        public Object Ex_ItemInfo { get; set; }
    }
    public class Ex_Item
    {
        /// 
        /// 子类型Id
        /// 
        public int SubTypeId { get; set; }
        /// 
        /// 子类型
        /// 
        public string? SubType { get; set; }
        /// 
        /// 扣款金额
        /// 
        public decimal Deduction { get; set; } = 0.00M;
        /// 
        /// 餐补扣款金额
        /// 
        public decimal MealDeduction { get; set; } = 0.00M;
        /// 
        /// 开始时间
        /// 
        public DateTime StartTimeDt { get; set; }
        /// 
        /// 结束时间
        /// 
        public DateTime EndTimeDt { get; set; }
        /// 
        /// 请假时长
        /// 
        public decimal Duration { get; set; }
        /// 
        /// 请假时长,单位小时
        /// 
        public string Unit { get; set; } = "小时";
        /// 
        /// 请假事由
        /// 
        public string? Reason { get; set; }
        /// 
        /// 申请时间
        /// 
        public DateTime Apply_time_dt { get; set; }
        /// 
        /// 审核人
        /// 
        public List? Approval_name { get; set; }
    }
    #endregion
    #region 法定节假日
    public class HoliDaysDataSourceView
    {
        /// 
        /// 年
        /// 
        public string Year { get; set; }
        public List Holidays { get; set; }
    }
    public class HolidaysInfo
    {
        /// 
        /// 节假日期
        /// 
        public string HoliDate { get; set; }
        /// 
        /// 节假日 
        /// 
        public string HoliName { get; set; }
    }
    #endregion
}