Commit b6263bc4 authored by 黄奎's avatar 黄奎

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 7a05583c fae4495a
......@@ -45,6 +45,11 @@ namespace Edu.Model.ViewModel.Finance
/// </summary>
public int? IsSelectNormal { get; set; }
/// <summary>
/// 查询教育单据 1是
/// </summary>
public int IsSelectEdu { get; set; }
/// <summary>
/// 查询订单相关单据
/// </summary>
......
......@@ -5966,5 +5966,14 @@ namespace Edu.Module.Course
//11
}
/// <summary>
/// 获取课程信息
/// </summary>
/// <param name="courserId"></param>
/// <returns></returns>
public RB_Course_ViewModel GetCourseInfo(int courserId) {
return courseRepository.GetEntity<RB_Course_ViewModel>(courserId);
}
}
}
\ No newline at end of file
......@@ -13,6 +13,7 @@ using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Log;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using Edu.Repository.Bonus;
using Edu.Repository.Course;
using Edu.Repository.Customer;
using Edu.Repository.Finance;
......@@ -55,13 +56,13 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Sell_Achievements_EmpRepository sell_Achievements_EmpRepository = new RB_Sell_Achievements_EmpRepository();
/// <summary>
/// 同行返佣
/// </summary>
private readonly RB_Customer_BalanceDetailRepository customer_BalanceDetailRepository = new RB_Customer_BalanceDetailRepository();
/// <summary>
/// 订单返佣
/// </summary>
private readonly RB_Order_ReturnComissionRepository order_ReturnComissionRepository = new RB_Order_ReturnComissionRepository();
/// <summary>
/// 人头奖励
/// </summary>
private readonly RB_Personnel_BonusRepository personnel_BonusRepository = new RB_Personnel_BonusRepository();
/// <summary>
/// 订单
......@@ -1496,8 +1497,34 @@ namespace Edu.Module.Course
}
//根据订单 查询同行返佣
orderIds = string.Join(",", orderList.Select(x => x.OrderId));
var bdList = customer_BalanceDetailRepository.GetCustomerBalanceDetailListRepository(new Model.ViewModel.Customer.RB_Customer_BalanceDetail_ViewModel() { Group_Id = orderModel.Group_Id, QOrderIds = orderIds });
var bdList = order_ReturnComissionRepository.GetOrderReturnComissionListRepositpry(new RB_Order_ReturnComission_ViewModel() { GroupId = orderModel.Group_Id, QOrderIds = orderIds });
#region 验证订单是否已生成返佣 (必须有返佣数据 才能参与业绩提成)
var cbdOrderlist = bdList.Where(x => x.Status >= 0).Select(x => x.OrderId).ToList();
orderList = orderList.Where(x => cbdOrderlist.Contains(x.OrderId)).ToList();//都是已返佣的
#endregion
#region 在对佘老师订单进行处理
//佘老师订单 无论顾问 还是 市场 统一按市场处理
if (orderList.Where(x => x.CourseConsultantId == 2855).Any())
{
List<RB_Order_ViewModel> InserList = new List<RB_Order_ViewModel>();
foreach (var item in orderList.Where(x => x.CourseConsultantId == 2855))
{
item.CourseConsultantId = 0;//课程顾问归0
var ccModel = JsonHelper.Serialize(item);//引用类型 转换一下
var cc2Model = JsonHelper.DeserializeObject<RB_Order_ViewModel>(ccModel);
cc2Model.EnterID = 2855;//佘老师转为市场
cc2Model.HelpEnterId = 0;//排除老师 避免老师重复发放
InserList.Add(cc2Model);
}
if (InserList.Any())
{
orderList.AddRange(InserList);
}
}
#endregion
foreach (var item in rulelist.Where(x => x.Type == 3))
{
//老师适配规则
......@@ -1516,10 +1543,7 @@ namespace Edu.Module.Course
if (teaOrderList.Any())
{
//计算老师业绩
decimal TotalYj = teaOrderList.Sum(x => x.PreferPrice - x.DiscountMoney);
//计算订单累计返佣
decimal bdMoney = bdList.Where(x => teaOrderList.Select(y => y.OrderId).Contains(x.OrderId) && x.BalanceType == 1).Sum(x => x.Money);
decimal YjMoney = TotalYj - bdMoney;//排除同行返佣
decimal YjMoney = teaOrderList.Sum(x => x.PreferPrice - x.DiscountMoney);
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -1527,7 +1551,7 @@ namespace Edu.Module.Course
foreach (var qitem in teaOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
......@@ -1545,7 +1569,7 @@ namespace Edu.Module.Course
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 3,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj
Remark = "当月业绩:" + YjMoney + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj
});
}
}
......@@ -1565,11 +1589,9 @@ namespace Edu.Module.Course
{
//计算市场业绩
decimal TotalYj = sellOrderList.Sum(x => x.PreferPrice - x.DiscountMoney);
//计算订单累计返佣
decimal bdMoney = bdList.Where(x => sellOrderList.Select(y => y.OrderId).Contains(x.OrderId) && x.BalanceType == 1).Sum(x => x.Money);
//查询老师的提成
decimal teacherMoney = AchEmpList.Where(x => x.Type == 3 && sellOrderList.Select(y => y.OrderId).Contains(x.OrderId)).Sum(x => x.PushMoney);
decimal YjMoney = TotalYj - bdMoney - teacherMoney;//排除同行返佣 老师的提成
decimal YjMoney = TotalYj - teacherMoney;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -1577,7 +1599,7 @@ namespace Edu.Module.Course
foreach (var qitem in sellOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal tCommission = AchEmpList.Where(x => x.Type == 3 && x.OrderId == qitem.OrderId).Sum(x => x.PushMoney);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission - tCommission;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
......@@ -1596,7 +1618,7 @@ namespace Edu.Module.Course
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
Remark = "当月业绩:" + TotalYj + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
......@@ -1611,11 +1633,9 @@ namespace Edu.Module.Course
//课程顾问
//计算市场业绩
decimal TotalYj = consultantOrderList.Sum(x => x.PreferPrice - x.DiscountMoney);
//计算订单累计返佣
decimal bdMoney = bdList.Where(x => consultantOrderList.Select(y => y.OrderId).Contains(x.OrderId) && x.BalanceType == 1).Sum(x => x.Money);
//查询老师的提成
decimal teacherMoney = AchEmpList.Where(x => x.Type == 3 && consultantOrderList.Select(y => y.OrderId).Contains(x.OrderId)).Sum(x => x.PushMoney);
decimal YjMoney = TotalYj - bdMoney - teacherMoney;//排除同行返佣 老师的提成
decimal YjMoney = TotalYj - teacherMoney;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -1623,7 +1643,7 @@ namespace Edu.Module.Course
foreach (var qitem in consultantOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal tCommission = AchEmpList.Where(x => x.Type == 3 && x.OrderId == qitem.OrderId).Sum(x => x.PushMoney);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission - tCommission;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
......@@ -1642,7 +1662,7 @@ namespace Edu.Module.Course
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
Remark = "当月业绩:" + TotalYj + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
......@@ -1661,11 +1681,9 @@ namespace Edu.Module.Course
{
//计算市场业绩
decimal TotalYj = sellOrderList.Sum(x => x.PreferPrice - x.DiscountMoney);
//计算订单累计返佣
decimal bdMoney = bdList.Where(x => sellOrderList.Select(y => y.OrderId).Contains(x.OrderId) && x.BalanceType == 1).Sum(x => x.Money);
//查询老师的提成
decimal teacherMoney = AchEmpList.Where(x => x.Type == 3 && sellOrderList.Select(y => y.OrderId).Contains(x.OrderId)).Sum(x => x.PushMoney);
decimal YjMoney = TotalYj - bdMoney - teacherMoney;//排除同行返佣 老师的提成
decimal YjMoney = TotalYj - teacherMoney;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -1673,7 +1691,7 @@ namespace Edu.Module.Course
foreach (var qitem in sellOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal tCommission = AchEmpList.Where(x => x.Type == 3 && x.OrderId == qitem.OrderId).Sum(x => x.PushMoney);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission - tCommission;
foreach (var emp in EmpList)
......@@ -1694,7 +1712,7 @@ namespace Edu.Module.Course
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
Remark = "当月业绩:" + TotalYj + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
......@@ -1709,11 +1727,9 @@ namespace Edu.Module.Course
//课程顾问
//计算市场业绩
decimal TotalYj = consultantOrderList.Sum(x => x.PreferPrice - x.DiscountMoney);
//计算订单累计返佣
decimal bdMoney = bdList.Where(x => consultantOrderList.Select(y => y.OrderId).Contains(x.OrderId) && x.BalanceType == 1).Sum(x => x.Money);
//查询老师的提成
decimal teacherMoney = AchEmpList.Where(x => x.Type == 3 && consultantOrderList.Select(y => y.OrderId).Contains(x.OrderId)).Sum(x => x.PushMoney);
decimal YjMoney = TotalYj - bdMoney - teacherMoney;//排除同行返佣 老师的提成
decimal YjMoney = TotalYj - teacherMoney;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -1721,7 +1737,7 @@ namespace Edu.Module.Course
foreach (var qitem in consultantOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal tCommission = AchEmpList.Where(x => x.Type == 3 && x.OrderId == qitem.OrderId).Sum(x => x.PushMoney);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission - tCommission;
foreach (var emp in EmpList)
......@@ -1742,7 +1758,7 @@ namespace Edu.Module.Course
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
Remark = "当月业绩:" + TotalYj + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
......@@ -2781,6 +2797,726 @@ namespace Edu.Module.Course
return null;
}
/// <summary>
/// 业绩排名统计——V2
/// </summary>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public object GetSellAchievementsRankStat_New(string startMonth, string endMonth, int group_Id)
{
List<DateTime> monthDTList = new List<DateTime>();
List<string> monthList = new List<string>();
List<string> monthRCList = new List<string>();
List<string> monthPBList = new List<string>();
DateTime STime = Convert.ToDateTime(startMonth + "-01");
DateTime ETime = Convert.ToDateTime(endMonth + "-01");
while (true)
{
monthDTList.Add(STime);
monthList.Add("'" + STime.ToString("yyyy-MM") + "'");
monthRCList.Add("'" + STime.AddMonths(1).ToString("yyyyMM") + "返佣'");//返佣的 是往上
monthPBList.Add("'" + STime.ToString("yyyy-M") + "'");
if (STime == ETime) { break; }
STime = STime.AddMonths(1);
}
List<object> RList = new List<object>();
var list = sell_Achievements_EmpRepository.GetSellAchievementsRankStat(monthList, group_Id);
//查询返佣
var RCList = order_ReturnComissionRepository.GetOrderReturnComissionForMonth(monthRCList, group_Id);
//查询人头奖励
var PBList = personnel_BonusRepository.GetPersonnelBonusForMonth(monthPBList, group_Id);
if (list.Any() || RCList.Any() || PBList.Any())
{
//首先查询所有的人员信息
var empIdList = list.Select(x => x.EmpId).Distinct().ToList();
empIdList.AddRange(RCList.Select(x => x.OrderSourceId).Distinct().ToList());
empIdList.AddRange(PBList.Select(x => x.EmployeeId).Distinct().ToList());
string userIds = string.Join(",", empIdList);
var EmpList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = group_Id, QIds = userIds });
//开始组装个人数据
foreach (var empModel in EmpList) {
//遍历月份集合
List<object> MonthList = new List<object>();
decimal TotalCommission = 0;
decimal TotalReturn = 0;
decimal TotalPersonnel = 0;
foreach (var month in monthDTList)
{
var mModel = list.Where(x => x.IsDept == 2 && x.EmpId == empModel.Id && x.Periods == month.ToString("yyyy-MM")).FirstOrDefault();
var rcModel = RCList.Where(x => x.OrderSourceId == empModel.Id && x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).FirstOrDefault();
var pbModel = PBList.Where(x => x.EmployeeId == empModel.Id && x.QPeriodIds == month.ToString("yyyy-M")).FirstOrDefault();
MonthList.Add(mModel?.SaleMoney ?? 0);
MonthList.Add(mModel?.Rate ?? 0);
MonthList.Add(mModel?.CommissionMoney ?? 0);
MonthList.Add(mModel?.PushMoney ?? 0);
MonthList.Add(rcModel?.CommissionMoeny ?? 0);
MonthList.Add(pbModel?.OpenBonus ?? 0);
MonthList.Add((mModel?.PushMoney ?? 0) + (rcModel?.CommissionMoeny ?? 0) + (pbModel?.OpenBonus ?? 0));
TotalCommission += (mModel?.PushMoney ?? 0);
TotalReturn += (rcModel?.CommissionMoeny ?? 0);
TotalPersonnel += (pbModel?.OpenBonus ?? 0);
}
RList.Add(new
{
EmpId = empModel.Id,
DeptName = empModel.DeptName,
RoleName = empModel.UserRole >0 ? empModel.UserRole.ToName() : empModel.PostName,
EmpName = empModel?.EmployeeName ?? "",
MonthList,
TotalCommission,
TotalReturn,
TotalPersonnel,
TotalAll = TotalCommission + TotalReturn + TotalPersonnel
});
}
#region 汇总
List<object> TMonthList = new List<object>();
decimal TTotalCommission = list.Where(x => x.IsDept == 2).Sum(x => x.PushMoney);
decimal TTotalReturn = RCList.Sum(x => x.CommissionMoeny);
decimal TTotalPersonnel = PBList.Sum(x => x.OpenBonus);
foreach (var month in monthDTList)
{
var clist = list.Where(x => x.IsDept == 2 && x.Periods == month.ToString("yyyy-MM")).ToList();
var rclist = RCList.Where(x => x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).ToList();
var pblist = PBList.Where(x => x.QPeriodIds == month.ToString("yyyy-M")).ToList();
TMonthList.Add(clist.Sum(x => x.SaleMoney));
TMonthList.Add("");
TMonthList.Add(clist.Sum(x => x.CommissionMoney));
TMonthList.Add(clist.Sum(x => x.PushMoney));
TMonthList.Add(rclist.Sum(x => x.CommissionMoeny));
TMonthList.Add(pblist.Sum(x => x.OpenBonus));
TMonthList.Add(clist.Sum(x => x.PushMoney) + rclist.Sum(x => x.CommissionMoeny) + pblist.Sum(x => x.OpenBonus));
}
//增加汇总数据
RList.Add(new
{
EmpId = 0,
DeptName = "",
RoleName = "小计",
EmpName = "",
MonthList = TMonthList,
TotalCommission = TTotalCommission,
TotalReturn = TTotalReturn,
TotalPersonnel = TTotalPersonnel,
TotalAll = TTotalCommission + TTotalReturn + TTotalPersonnel
});
#endregion
//开始组装部门数据 (部门就只有业绩)
int isDept = 1;
if (list.Where(x => x.IsDept == isDept).Any())
{
foreach (var item in list.Where(x => x.IsDept == isDept))
{
var empModel = EmpList.Where(x => x.Id == item.EmpId).FirstOrDefault();
//遍历月份集合
List<object> MonthList = new List<object>();
decimal TotalCommission = 0;
foreach (var month in monthList)
{
var mModel = list.Where(x => x.IsDept == isDept && x.EmpId == item.EmpId && month.Contains(x.Periods)).FirstOrDefault();
MonthList.Add(mModel?.SaleMoney ?? 0);
MonthList.Add(mModel?.Rate ?? 0);
MonthList.Add(mModel?.CommissionMoney ?? 0);
MonthList.Add(mModel?.PushMoney ?? 0);
MonthList.Add("");
MonthList.Add("");
MonthList.Add((mModel?.PushMoney ?? 0));
TotalCommission += (mModel?.PushMoney ?? 0);
}
RList.Add(new
{
EmpId = item.EmpId,
DeptName = empModel?.DeptName ?? "",
RoleName = item.Type == 1 ? "市场" + (item.IsDept == 1 ? "/部门" : "") : item.Type == 2 ? "顾问" + (item.IsDept == 1 ? "/部门" : "") : "教师" + (item.IsDept == 1 ? "/部门" : ""),
EmpName = empModel?.EmployeeName ?? "",
MonthList,
TotalCommission,
TotalReturn = "",
TotalPersonnel = "",
TotalAll = TotalCommission
});
}
#region 汇总
TMonthList = new List<object>();
TTotalCommission = list.Where(x => x.IsDept == isDept).Sum(x => x.PushMoney);
foreach (var month in monthList)
{
var clist = list.Where(x => x.IsDept == isDept && month.Contains(x.Periods)).ToList();
TMonthList.Add(clist.Sum(x => x.SaleMoney));
TMonthList.Add("");
TMonthList.Add(clist.Sum(x => x.CommissionMoney));
TMonthList.Add(clist.Sum(x => x.PushMoney));
TMonthList.Add("");
TMonthList.Add("");
TMonthList.Add(clist.Sum(x => x.PushMoney));
}
//增加汇总数据
RList.Add(new
{
EmpId = 0,
DeptName = "",
RoleName = "小计",
EmpName = "",
MonthList = TMonthList,
TotalCommission = TTotalCommission,
TotalReturn = "",
TotalPersonnel = "",
TotalAll = TTotalCommission
});
#endregion
}
#region 累计汇总
List<object> T2MonthList = new List<object>();
decimal T2TotalCommission = list.Sum(x => x.PushMoney);
foreach (var month in monthDTList)
{
var clist = list.Where(x => x.Periods == month.ToString("yyyy-MM")).ToList();
var rclist = RCList.Where(x => x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).ToList();
var pblist = PBList.Where(x => x.QPeriodIds == month.ToString("yyyy-M")).ToList();
T2MonthList.Add(clist.Sum(x => x.SaleMoney));
T2MonthList.Add("");
T2MonthList.Add(clist.Sum(x => x.CommissionMoney));
T2MonthList.Add(clist.Sum(x => x.PushMoney));
T2MonthList.Add(rclist.Sum(x => x.CommissionMoeny));
T2MonthList.Add(pblist.Sum(x => x.OpenBonus));
T2MonthList.Add(clist.Sum(x => x.PushMoney) + rclist.Sum(x => x.CommissionMoeny) + pblist.Sum(x => x.OpenBonus));
}
//增加汇总数据
RList.Add(new
{
EmpId = 0,
DeptName = "",
RoleName = "累计汇总",
EmpName = "",
MonthList = T2MonthList,
TotalCommission = T2TotalCommission,
TotalReturn = TTotalReturn,
TotalPersonnel = TTotalPersonnel,
TotalAll = T2TotalCommission + TTotalReturn + TTotalPersonnel
});
#endregion
}
return RList;
}
/// <summary>
/// 业绩排名统计--V2
/// </summary>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public object GetSellAchievementsRankStat_NewV2(string startMonth, string endMonth, int group_Id)
{
List<DateTime> monthDTList = new List<DateTime>();
List<string> monthList = new List<string>();
List<string> monthRCList = new List<string>();
List<string> monthPBList = new List<string>();
DateTime STime = Convert.ToDateTime(startMonth + "-01");
DateTime ETime = Convert.ToDateTime(endMonth + "-01");
while (true)
{
monthDTList.Add(STime);
monthList.Add("'" + STime.ToString("yyyy-MM") + "'");
monthRCList.Add("'" + STime.AddMonths(1).ToString("yyyyMM") + "返佣'");
monthPBList.Add("'" + STime.ToString("yyyy-M") + "'");
if (STime == ETime) { break; }
STime = STime.AddMonths(1);
}
List<object> RList = new List<object>();
var list = sell_Achievements_EmpRepository.GetSellAchievementsRankStat(monthList, group_Id);
//查询返佣
var RCList = order_ReturnComissionRepository.GetOrderReturnComissionForMonth(monthRCList, group_Id);
//查询人头奖励
var PBList = personnel_BonusRepository.GetPersonnelBonusForMonth(monthPBList, group_Id);
if (list.Any() || RCList.Any() || PBList.Any())
{
//首先查询所有的人员信息
var empIdList = list.Select(x => x.EmpId).Distinct().ToList();
empIdList.AddRange(RCList.Select(x => x.OrderSourceId).Distinct().ToList());
empIdList.AddRange(PBList.Select(x => x.EmployeeId).Distinct().ToList());
string userIds = string.Join(",", empIdList);
var EmpList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = group_Id, QIds = userIds });
//开始组装个人数据
foreach (var empModel in EmpList)
{
//遍历月份集合
List<object> MonthList = new List<object>();
decimal TotalCommission = 0;
decimal TotalReturn = 0;
decimal TotalPersonnel = 0;
foreach (var month in monthDTList)
{
var mModel = list.Where(x => x.IsDept == 2 && x.EmpId == empModel.Id && x.Periods == month.ToString("yyyy-MM")).FirstOrDefault();
var rcModel = RCList.Where(x => x.OrderSourceId == empModel.Id && x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).FirstOrDefault();
var pbModel = PBList.Where(x => x.EmployeeId == empModel.Id && x.QPeriodIds == month.ToString("yyyy-M")).FirstOrDefault();
MonthList.Add(new
{
Month = month.ToString("yyyy-MM"),
Achievement = mModel?.SaleMoney ?? 0,
Rate = mModel?.Rate ?? 0,
Rebate = mModel?.CommissionMoney ?? 0,
Commission = mModel?.PushMoney ?? 0,
Brokerage = rcModel?.CommissionMoeny ?? 0,
Bonus = pbModel?.OpenBonus ?? 0,
Total = (mModel?.PushMoney ?? 0) + (rcModel?.CommissionMoeny ?? 0) + (pbModel?.OpenBonus ?? 0)
});
TotalCommission += (mModel?.PushMoney ?? 0);
TotalReturn += (rcModel?.CommissionMoeny ?? 0);
TotalPersonnel += (pbModel?.OpenBonus ?? 0);
}
RList.Add(new
{
EmpId = empModel.Id,
DeptName = empModel.DeptName,
RoleName = empModel.UserRole > 0 ? empModel.UserRole.ToName() : empModel.PostName,
EmpName = empModel?.EmployeeName ?? "",
MonthList,
TotalCommission,
TotalReturn,
TotalPersonnel,
TotalAll = TotalCommission + TotalReturn + TotalPersonnel
});
}
#region 汇总
List<object> TMonthList = new List<object>();
decimal TTotalCommission = list.Where(x => x.IsDept == 2).Sum(x => x.PushMoney);
decimal TTotalReturn = RCList.Sum(x => x.CommissionMoeny);
decimal TTotalPersonnel = PBList.Sum(x => x.OpenBonus);
foreach (var month in monthDTList)
{
var clist = list.Where(x => x.IsDept == 2 && x.Periods == month.ToString("yyyy-MM")).ToList();
var rclist = RCList.Where(x => x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).ToList();
var pblist = PBList.Where(x => x.QPeriodIds == month.ToString("yyyy-M")).ToList();
TMonthList.Add(new
{
Month = month.ToString("yyyy-MM"),
Achievement = clist.Sum(x => x.SaleMoney),
Rate = "",
Rebate = clist.Sum(x => x.CommissionMoney),
Commission = clist.Sum(x => x.PushMoney),
Brokerage = rclist.Sum(x => x.CommissionMoeny),
Bonus = pblist.Sum(x => x.OpenBonus),
Total = clist.Sum(x => x.PushMoney) + rclist.Sum(x => x.CommissionMoeny) + pblist.Sum(x => x.OpenBonus)
});
}
//增加汇总数据
RList.Add(new
{
EmpId = 0,
DeptName = "",
RoleName = "小计",
EmpName = "",
MonthList = TMonthList,
TotalCommission = TTotalCommission,
TotalReturn = TTotalReturn,
TotalPersonnel = TTotalPersonnel,
TotalAll = TTotalCommission + TTotalReturn + TTotalPersonnel
});
#endregion
//开始组装部门数据 (部门就只有业绩)
int isDept = 1;
if (list.Where(x => x.IsDept == isDept).Any())
{
var eIdList = list.Where(x => x.IsDept == isDept).Select(x => x.EmpId).Distinct().ToList();
foreach (var empId in eIdList)
{
var dmodel = list.Where(x => x.IsDept == isDept && x.EmpId == empId).FirstOrDefault();
var empModel = EmpList.Where(x => x.Id == empId).FirstOrDefault();
//遍历月份集合
List<object> MonthList = new List<object>();
decimal TotalCommission = 0;
foreach (var month in monthList)
{
var mModel = list.Where(x => x.IsDept == isDept && x.EmpId == empId && month.Contains(x.Periods)).FirstOrDefault();
MonthList.Add(new
{
Month = month.Replace("'", ""),
Achievement = mModel?.SaleMoney ?? 0,
Rate = mModel?.Rate ?? 0,
Rebate = mModel?.CommissionMoney ?? 0,
Commission = mModel?.PushMoney ?? 0,
Brokerage = "-",
Bonus = "-",
Total = (mModel?.PushMoney ?? 0)
});
TotalCommission += (mModel?.PushMoney ?? 0);
}
RList.Add(new
{
EmpId = dmodel.EmpId,
DeptName = empModel?.DeptName ?? "",
RoleName = dmodel.Type == 1 ? "市场" + (dmodel.IsDept == 1 ? "/部门" : "") : dmodel.Type == 2 ? "顾问" + (dmodel.IsDept == 1 ? "/部门" : "") : "教师" + (dmodel.IsDept == 1 ? "/部门" : ""),
EmpName = empModel?.EmployeeName ?? "",
MonthList,
TotalCommission,
TotalReturn = "",
TotalPersonnel = "",
TotalAll = TotalCommission
});
}
#region 汇总
TMonthList = new List<object>();
TTotalCommission = list.Where(x => x.IsDept == isDept).Sum(x => x.PushMoney);
foreach (var month in monthList)
{
var clist = list.Where(x => x.IsDept == isDept && month.Contains(x.Periods)).ToList();
TMonthList.Add(new
{
Month = month.Replace("'", ""),
Achievement = clist.Sum(x => x.SaleMoney),
Rate = "",
Rebate = clist.Sum(x => x.CommissionMoney),
Commission = clist.Sum(x => x.PushMoney),
Brokerage = "",
Bonus ="",
Total = clist.Sum(x => x.PushMoney)
});
}
//增加汇总数据
RList.Add(new
{
EmpId = 0,
DeptName = "",
RoleName = "小计",
EmpName = "",
MonthList = TMonthList,
TotalCommission = TTotalCommission,
TotalReturn = "",
TotalPersonnel = "",
TotalAll = TTotalCommission
});
#endregion
}
#region 累计汇总
List<object> T2MonthList = new List<object>();
decimal T2TotalCommission = list.Sum(x => x.PushMoney);
foreach (var month in monthDTList)
{
var clist = list.Where(x => x.Periods == month.ToString("yyyy-MM")).ToList();
var rclist = RCList.Where(x => x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).ToList();
var pblist = PBList.Where(x => x.QPeriodIds == month.ToString("yyyy-M")).ToList();
T2MonthList.Add(new
{
Month = month.ToString("yyyy-MM"),
Achievement = clist.Sum(x => x.SaleMoney),
Rate = "",
Rebate = clist.Sum(x => x.CommissionMoney),
Commission = clist.Sum(x => x.PushMoney),
Brokerage = rclist.Sum(x => x.CommissionMoeny),
Bonus = pblist.Sum(x => x.OpenBonus),
Total = clist.Sum(x => x.PushMoney) + rclist.Sum(x => x.CommissionMoeny) + pblist.Sum(x => x.OpenBonus)
});
}
//增加汇总数据
RList.Add(new
{
EmpId = 0,
DeptName = "",
RoleName = "累计汇总",
EmpName = "",
MonthList = T2MonthList,
TotalCommission = T2TotalCommission,
TotalReturn = TTotalReturn,
TotalPersonnel = TTotalPersonnel,
TotalAll = T2TotalCommission + TTotalReturn + TTotalPersonnel
});
#endregion
}
return RList;
}
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<ExcelDataSource> GetSellAchievementsRankStat_NewToExcel(string startMonth, string endMonth, int group_Id)
{
List<DateTime> monthDTList = new List<DateTime>();
List<string> monthList = new List<string>();
List<string> monthRCList = new List<string>();
List<string> monthPBList = new List<string>();
DateTime STime = Convert.ToDateTime(startMonth + "-01");
DateTime ETime = Convert.ToDateTime(endMonth + "-01");
while (true)
{
monthDTList.Add(STime);
monthList.Add("'" + STime.ToString("yyyy-MM") + "'");
monthRCList.Add("'" + STime.AddMonths(1).ToString("yyyyMM") + "返佣'");
monthPBList.Add("'" + STime.ToString("yyyy-M") + "'");
if (STime == ETime) { break; }
STime = STime.AddMonths(1);
}
List<ExcelDataSource> RList = new List<ExcelDataSource>();
#region 组装头部
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "部门") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER, Rowspan =2 },
new ExcelColumn(value: "角色") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER ,Rowspan =2 },
new ExcelColumn(value: "人员") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER ,Rowspan =2 },
}
};
foreach (var item in monthDTList)
{
header.ExcelRows.Add(new ExcelColumn(value: item.ToString("MM") + "月") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER, Colspan = 7 });
}
RList.Add(header);
ExcelDataSource header2 = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
}
};
foreach (var item in monthDTList)
{
header2.ExcelRows.Add(new ExcelColumn(value: "业绩") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
header2.ExcelRows.Add(new ExcelColumn(value: "比例") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
header2.ExcelRows.Add(new ExcelColumn(value: "订单返佣") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
header2.ExcelRows.Add(new ExcelColumn(value: "提成") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
header2.ExcelRows.Add(new ExcelColumn(value: "我的返佣") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
header2.ExcelRows.Add(new ExcelColumn(value: "人头奖励") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
header2.ExcelRows.Add(new ExcelColumn(value: "合计") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
}
RList.Add(header2);
#endregion
var list = sell_Achievements_EmpRepository.GetSellAchievementsRankStat(monthList, group_Id);
//查询返佣
var RCList = order_ReturnComissionRepository.GetOrderReturnComissionForMonth(monthRCList, group_Id);
//查询人头奖励
var PBList = personnel_BonusRepository.GetPersonnelBonusForMonth(monthPBList, group_Id);
if (list.Any() || RCList.Any() || PBList.Any())
{
//首先查询所有的人员信息
var empIdList = list.Select(x => x.EmpId).Distinct().ToList();
empIdList.AddRange(RCList.Select(x => x.OrderSourceId).Distinct().ToList());
empIdList.AddRange(PBList.Select(x => x.EmployeeId).Distinct().ToList());
string userIds = string.Join(",", empIdList);
var EmpList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = group_Id, QIds = userIds });
EmpList = EmpList.OrderBy(x => x.IsLeave).ThenBy(x => x.EntryTime).ToList();
//开始组装个人数据
foreach (var empModel in EmpList)
{
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: empModel?.DeptName ?? "") { },
new ExcelColumn(value: empModel.UserRole > 0 ? empModel.UserRole.ToName() : empModel.PostName) { },
new ExcelColumn(value: empModel?.EmployeeName ?? "") { },
}
};
//遍历月份集合
List<object> MonthList = new List<object>();
decimal TotalCommission = 0;
decimal TotalReturn = 0;
decimal TotalPersonnel = 0;
foreach (var month in monthDTList)
{
var mModel = list.Where(x => x.IsDept == 2 && x.EmpId == empModel.Id && x.Periods == month.ToString("yyyy-MM")).FirstOrDefault();
var rcModel = RCList.Where(x => x.OrderSourceId == empModel.Id && x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).FirstOrDefault();
var pbModel = PBList.Where(x => x.EmployeeId == empModel.Id && x.QPeriodIds == month.ToString("yyyy-M")).FirstOrDefault();
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.SaleMoney ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.Rate ?? 0).ToString("#0.00") + "%") { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.CommissionMoney ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.PushMoney ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (rcModel?.CommissionMoeny ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (pbModel?.OpenBonus ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: ((mModel?.PushMoney ?? 0) + (rcModel?.CommissionMoeny ?? 0) + (pbModel?.OpenBonus ?? 0)).ToString("#0.00")) { });
TotalCommission += (mModel?.PushMoney ?? 0);
TotalReturn += (rcModel?.CommissionMoeny ?? 0);
TotalPersonnel += (pbModel?.OpenBonus ?? 0);
}
datarow.ExcelRows.Add(new ExcelColumn(value: TotalCommission.ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: TotalReturn.ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: TotalPersonnel.ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (TotalCommission + TotalReturn + TotalPersonnel).ToString("#0.00")) { });
RList.Add(datarow);
}
#region 汇总
ExcelDataSource datarowB = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "") { },
new ExcelColumn(value: "小计") { },
new ExcelColumn(value: "") { },
}
};
List<object> TMonthList = new List<object>();
decimal TTotalCommission = list.Where(x => x.IsDept == 2).Sum(x => x.PushMoney);
decimal TTotalReturn = RCList.Sum(x => x.CommissionMoeny);
decimal TTotalPersonnel = PBList.Sum(x => x.OpenBonus);
foreach (var month in monthDTList)
{
var clist = list.Where(x => x.IsDept == 2 && x.Periods == month.ToString("yyyy-MM")).ToList();
var rclist = RCList.Where(x => x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).ToList();
var pblist = PBList.Where(x => x.QPeriodIds == month.ToString("yyyy-M")).ToList();
datarowB.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.SaleMoney).ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowB.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.CommissionMoney).ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.PushMoney).ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: rclist.Sum(x => x.CommissionMoeny).ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: pblist.Sum(x => x.OpenBonus).ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: (clist.Sum(x => x.PushMoney) + rclist.Sum(x => x.CommissionMoeny) + pblist.Sum(x => x.OpenBonus)).ToString("#0.00")) { });
}
datarowB.ExcelRows.Add(new ExcelColumn(value: TTotalCommission.ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: TTotalReturn.ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: TTotalPersonnel.ToString("#0.00")) { });
datarowB.ExcelRows.Add(new ExcelColumn(value: (TTotalCommission + TTotalReturn + TTotalPersonnel).ToString("#0.00")) { });
//增加汇总数据
RList.Add(datarowB);
#endregion
//开始组装部门数据 (部门就只有业绩)
int isDept = 1;
if (list.Where(x => x.IsDept == isDept).Any())
{
var eIDList = list.Where(x => x.IsDept == isDept).Select(x => x.EmpId).Distinct().ToList();
foreach (var empId in eIDList)
{
var dmodel = list.Where(x => x.IsDept == isDept && x.EmpId == empId).FirstOrDefault();
var empModel = EmpList.Where(x => x.Id == empId).FirstOrDefault();
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: empModel?.DeptName ?? "") { },
new ExcelColumn(value: dmodel.Type == 1 ? "市场" + (dmodel.IsDept == 1 ? "/部门" : "") : dmodel.Type == 2 ? "顾问" + (dmodel.IsDept == 1 ? "/部门" : "") : "教师" + (dmodel.IsDept == 1 ? "/部门" : "")) { },
new ExcelColumn(value: empModel?.EmployeeName ?? "") { },
}
};
//遍历月份集合
List<object> MonthList = new List<object>();
decimal TotalCommission = 0;
foreach (var month in monthList)
{
var mModel = list.Where(x => x.IsDept == isDept && x.EmpId == empId && month.Contains(x.Periods)).FirstOrDefault();
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.SaleMoney ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.Rate ?? 0).ToString("#0.00") + "%") { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.CommissionMoney ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.PushMoney ?? 0).ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
datarow.ExcelRows.Add(new ExcelColumn(value: (mModel?.PushMoney ?? 0).ToString("#0.00")) { });
TotalCommission += (mModel?.PushMoney ?? 0);
}
datarow.ExcelRows.Add(new ExcelColumn(value: TotalCommission.ToString("#0.00")) { });
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
datarow.ExcelRows.Add(new ExcelColumn(value: TotalCommission.ToString("#0.00")) { });
RList.Add(datarow);
}
#region 汇总
ExcelDataSource datarowC = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "") { },
new ExcelColumn(value: "小计") { },
new ExcelColumn(value: "") { },
}
};
TMonthList = new List<object>();
TTotalCommission = list.Where(x => x.IsDept == isDept).Sum(x => x.PushMoney);
foreach (var month in monthList)
{
var clist = list.Where(x => x.IsDept == isDept && month.Contains(x.Periods)).ToList();
datarowC.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.SaleMoney).ToString("#0.00")) { });
datarowC.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowC.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.CommissionMoney).ToString("#0.00")) { });
datarowC.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.PushMoney).ToString("#0.00")) { });
datarowC.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowC.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowC.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.PushMoney).ToString("#0.00")) { });
}
datarowC.ExcelRows.Add(new ExcelColumn(value: TTotalCommission.ToString("#0.00")) { });
datarowC.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowC.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowC.ExcelRows.Add(new ExcelColumn(value: TTotalCommission.ToString("#0.00")) { });
//增加汇总数据
RList.Add(datarowC);
#endregion
}
#region 累计汇总
ExcelDataSource datarowT = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "") { },
new ExcelColumn(value: "汇总") { },
new ExcelColumn(value: "") { },
}
};
List<object> T2MonthList = new List<object>();
decimal T2TotalCommission = list.Sum(x => x.PushMoney);
foreach (var month in monthDTList)
{
var clist = list.Where(x => x.Periods == month.ToString("yyyy-MM")).ToList();
var rclist = RCList.Where(x => x.BatchName == (month.AddMonths(1).ToString("yyyyMM") + "返佣")).ToList();
var pblist = PBList.Where(x => x.QPeriodIds == month.ToString("yyyy-M")).ToList();
datarowT.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.SaleMoney).ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: "") { });
datarowT.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.CommissionMoney).ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: clist.Sum(x => x.PushMoney).ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: rclist.Sum(x => x.CommissionMoeny).ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: pblist.Sum(x => x.OpenBonus).ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: (clist.Sum(x => x.PushMoney) + rclist.Sum(x => x.CommissionMoeny) + pblist.Sum(x => x.OpenBonus)).ToString("#0.00")) { });
}
datarowT.ExcelRows.Add(new ExcelColumn(value: T2TotalCommission.ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: TTotalReturn.ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: TTotalPersonnel.ToString("#0.00")) { });
datarowT.ExcelRows.Add(new ExcelColumn(value: (T2TotalCommission + TTotalReturn + TTotalPersonnel).ToString("#0.00")) { });
//增加汇总数据
RList.Add(datarowT);
#endregion
}
return RList;
}
#endregion
}
}
......@@ -127,6 +127,10 @@ namespace Edu.Module.Finance
/// </summary>
private readonly RB_Sell_Achievements_EmpRepository sell_Achievements_EmpRepository = new RB_Sell_Achievements_EmpRepository();
/// <summary>
/// 订单返佣
/// </summary>
private readonly RB_Order_ReturnComissionRepository order_ReturnComissionRepository = new RB_Order_ReturnComissionRepository();
/// <summary>
/// 学校仓储层对象
/// </summary>
private readonly RB_SchoolRepository schoolRepository = new RB_SchoolRepository();
......@@ -2932,6 +2936,17 @@ namespace Edu.Module.Finance
return sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { Group_Id = group_Id, OrderIds = orderIds });
}
/// <summary>
/// 获取订单返佣列表
/// </summary>
/// <param name="orderIds"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Order_ReturnComission_ViewModel> GetOrderReturnComissionList(string orderIds, int group_Id)
{
return order_ReturnComissionRepository.GetOrderReturnComissionListRepositpry(new RB_Order_ReturnComission_ViewModel() { QOrderIds = orderIds, GroupId = group_Id });
}
#endregion
#region 月结窗口
......
......@@ -135,5 +135,17 @@ WHERE 1=1
string sql = string.Format(@" UPDATE RB_Personnel_Bonus SET IsIssue=1 WHERE Id IN({0})", Ids);
return base.Execute(sql) > 0;
}
/// <summary>
/// 获取员工人头奖励统计
/// </summary>
/// <returns></returns>
public List<RB_Personnel_Bonus_Extend> GetPersonnelBonusForMonth(List<string> monthList,int groupId) {
string sql = $@"SELECT p.Periods as QPeriodIds,b.EmployeeId,SUM(b.CurRewardMoney + b.OpenBonus) as OpenBonus FROM rb_personnel_bonus b
INNER JOIN rb_personnel_period p on b.PeriodId = p.Id
WHERE b.Group_Id ={groupId} and p.Periods in({string.Join(",", monthList)}) and (b.CurRewardMoney + b.OpenBonus)>0
GROUP BY p.Periods,b.EmployeeId";
return Get<RB_Personnel_Bonus_Extend>(sql).ToList();
}
}
}
\ No newline at end of file
......@@ -141,6 +141,11 @@ namespace Edu.Repository.Finance
{
where += string.Format(" AND A." + nameof(RB_Finance.Status) + " in(1,2,5)");
}
if (model.IsSelectEdu == 1)
{
where += string.Format(" AND A." + nameof(RB_Finance.SourceID) + " in(17,18)");
}
string sql = string.Format(@"SELECT A.* FROM {0} AS A WHERE {2} {3}", TableName, ReCordTableName, where, " GROUP BY A.FrID DESC");
return Get<RB_Finance_Extend>(sql).ToList();
}
......
......@@ -392,8 +392,19 @@ WHERE 1=1
return list;
}
/// <summary>
/// 获取订单返佣统计
/// </summary>
/// <param name="monthList"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RB_Order_ReturnComission_ViewModel> GetOrderReturnComissionForMonth(List<string> monthList, int groupId) {
string sql = $@"SELECT b.BatchName,r.OrderSourceId,SUM(r.CommissionMoeny)as CommissionMoeny FROM rb_order_returncomission r
INNER JOIN rb_returnmoney_batch b on r.BatchId = b.Id
WHERE r.GroupId ={groupId} and r.OrderSourceType in(1,3) and r.CommissionType =1 and b.BatchName in({string.Join(",", monthList)}) and r.CommissionMoeny >0
GROUP BY b.BatchName,r.OrderSourceId";
return Get<RB_Order_ReturnComission_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取用户返佣列表
......
......@@ -2491,5 +2491,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Success(data: list);
}
#endregion
}
}
......@@ -761,7 +761,7 @@ namespace Edu.WebApi.Controllers.Course
try
{
List<ExcelDataSource> list = sellAchievementsModule.GetSellAchievementsRankStatToExcel(StartMonth, EndMonth, UserInfo.Group_Id);
List<ExcelDataSource> list = sellAchievementsModule.GetSellAchievementsRankStat_NewToExcel(StartMonth, EndMonth, UserInfo.Group_Id);
slist.AddRange(list);
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
......@@ -774,6 +774,69 @@ namespace Edu.WebApi.Controllers.Course
return File(byteData1, "application/octet-stream", ExcelName);
}
}
/// <summary>
/// 获取业绩排名统计_New
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellAchievementsRankStat_New()
{
string StartMonth = ParmJObj.GetStringValue("StartMonth");
string EndMonth = ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth) || string.IsNullOrEmpty(EndMonth))
{
return ApiResult.ParamIsNull();
}
try
{
StartMonth = Convert.ToDateTime(StartMonth).ToString("yyyy-MM");
EndMonth = Convert.ToDateTime(EndMonth).ToString("yyyy-MM");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
if (Convert.ToDateTime(StartMonth) > Convert.ToDateTime(EndMonth))
{
return ApiResult.Failed("开始日期不能大于结束日期");
}
var list = sellAchievementsModule.GetSellAchievementsRankStat_New(StartMonth, EndMonth, UserInfo.Group_Id);
return ApiResult.Success("", list);
}
/// <summary>
/// 获取业绩排名统计_New
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellAchievementsRankStat_NewV2()
{
string StartMonth = ParmJObj.GetStringValue("StartMonth");
string EndMonth = ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth) || string.IsNullOrEmpty(EndMonth))
{
return ApiResult.ParamIsNull();
}
try
{
StartMonth = Convert.ToDateTime(StartMonth).ToString("yyyy-MM");
EndMonth = Convert.ToDateTime(EndMonth).ToString("yyyy-MM");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
if (Convert.ToDateTime(StartMonth) > Convert.ToDateTime(EndMonth))
{
return ApiResult.Failed("开始日期不能大于结束日期");
}
var list = sellAchievementsModule.GetSellAchievementsRankStat_NewV2(StartMonth, EndMonth, UserInfo.Group_Id);
return ApiResult.Success("", list);
}
#endregion
}
}
......@@ -2674,7 +2674,6 @@ namespace Edu.WebApi.Controllers.Finance
}
#endregion
#region 财务收款手续费
/// <summary>
......@@ -2688,5 +2687,84 @@ namespace Edu.WebApi.Controllers.Finance
}
#endregion
#region 约课单订单核算
/// <summary>
/// 获取订单核算界面
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetOrderSettlementInfo()
{
int OrderId = ParmJObj.GetInt("OrderId", 0);
if (OrderId <= 0)
{
return ApiResult.ParamIsNull();
}
var orderModel = orderModule.GetClassOrderInfoModule(OrderId);
if (orderModel == null) { return ApiResult.Failed("订单不存在"); }
string CourseName = "";
if (orderModel.OrderType == Common.Enum.Sale.OrderTypeEnum.CourseOrder)
{
CourseName = classModule.GetCourseInfo(orderModel.CourseId)?.CourseName ?? "";
}
else if (orderModel.OrderType == Common.Enum.Sale.OrderTypeEnum.StudyabroadOrder)
{
CourseName = studyAbroadModule.GetStudyAbroadModule(orderModel.SourceId)?.Name ?? "";
}
//查询订单下所有的 财务单据
RB_Finance_Extend model = new RB_Finance_Extend() { RB_Group_Id = UserInfo.Group_Id, FinanceType = 2, IsSelectEdu = 1, OrderID = OrderId };
var financeList = financeModule.GetFinanceInfoList(model);
//查询订单下 业绩(老提成) + 返佣
//提成
decimal SaleCommission = orderModel.IsCommissionGive == 1 ? orderModel.CommissionMoney + orderModel.ExtraCommissionMoney : 0;//销售提成
var achList = financeModule.GetAchListForOrderIds(OrderId.ToString(), base.UserInfo.Group_Id);
if (achList.Any())
{
SaleCommission += achList.Sum(x => x.GiveOutMoney);// 业绩提成
}
var ReturnList = financeModule.GetOrderReturnComissionList(OrderId.ToString(), UserInfo.Group_Id);
decimal ReturnMoney = ReturnList.Sum(x => x.CommissionMoeny);
var recultFiniceList = financeList.Select(x => new
{
x.FrID,
x.Type,
x.TCID,
x.OrderID,
x.Money,
x.PayMoney,
AirTotalMoney = x.AirTotalMoney ?? 0,
AirTotalPayMoney = x.AirTotalPayMoney ?? 0,
CostTypeList = x.CostTypeList.Distinct().ToList(),
x.OrderSource,
AuditList = x.AuditList.Select(t => new { t.AuditEmId, t.AuditEmName, AuditDate = t.AuditDate.HasValue ? t.AuditDate.Value.ToString("yyyy/MM/dd") : "" }),
StatusStr = EnumHelper.ToName(x.Status.Value),
x.RB_CreateByName,
CreateDate = x.CreateDate.Value.ToString("yyyy-MM-dd"),
TradeDate = x.TradeDate.HasValue ? x.TradeDate.Value.ToString("yyyy-MM-dd") : "",
TradeWayList = x.BankList?.Select(y => new { y.AccountType, y.Alias, y.BankNo, TypeName = EnumHelper.ToName(y.Type), y.CurrencyName, y.OriginalMoney, y.Money, y.Rate })
});
return ApiResult.Success("", new
{
orderModel.OrderId,
orderModel.OrderType,
FinanceList = recultFiniceList
});
}
#endregion
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment