Commit 71cd7556 authored by liudong1993's avatar liudong1993

1

parent 6cf43737
......@@ -81,5 +81,10 @@ namespace Edu.Model.Entity.Sell
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 订单业绩
/// </summary>
public decimal OrderSaleMoney { get; set; }
}
}
......@@ -132,6 +132,10 @@ namespace Edu.Module.Course
/// 同业返佣
/// </summary>
private readonly RB_Customer_BalanceDetailRepository customer_BalanceDetailRepository = new RB_Customer_BalanceDetailRepository();
/// <summary>
/// 业绩提成
/// </summary>
private readonly RB_Sell_Achievements_EmpRepository sell_Achievements_EmpRepository = new RB_Sell_Achievements_EmpRepository();
/// <summary>
/// 学生关联
......@@ -2686,6 +2690,9 @@ namespace Edu.Module.Course
//获取合同列表
var clist = education_ContractRepository.GetList(new RB_Education_Contract_ViewModel() { Group_Id = demodel.Group_Id, OrderIds = orderIds, Status = -1 }).Where(x => x.Status != 4).ToList();
//获取新的业绩提成
//var achList = sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { Group_Id = demodel.Group_Id, OrderIds = orderIds });
foreach (var item in orderList)
{
if (item.SourceOrderId > 0)
......
......@@ -591,7 +591,7 @@ namespace Edu.Module.Course
empModel.GiveOutMoney = (cHoursMoney < 0 ? 0 : cHoursMoney) + oldCommission;
empModel.GiveOutState = 2;
}
}
}
/// <summary>
/// 获取未发放提成用户列表 + 提成金额
......@@ -743,6 +743,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 3,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj
});
......@@ -792,6 +793,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -837,6 +839,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -887,6 +890,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -933,6 +937,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -1418,6 +1423,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 3,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj
});
......@@ -1468,6 +1474,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -1513,6 +1520,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -1564,6 +1572,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -1611,6 +1620,7 @@ namespace Edu.Module.Course
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
......@@ -1695,5 +1705,440 @@ namespace Edu.Module.Course
return "业绩比例:" + empModel.Rate + "%;业绩描述:" + empModel.Remark;
}
#endregion
#region 销售中心
/// <summary>
/// 获取销售中心业绩
/// </summary>
/// <param name="month"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public object GetSellCenterAchievementsStatistics(string month, UserInfo userInfo)
{
List<RB_Sell_Achievements_Rule_ViewModel> rulelist = new List<RB_Sell_Achievements_Rule_ViewModel>();
//获取当月期数
var periodsModel = sell_Achievements_PeriodsRepository.GetList(new RB_Sell_Achievements_Periods_ViewModel() { Group_Id = userInfo.Group_Id, Periods = month }).FirstOrDefault();
if (periodsModel == null)
{
//查询最新的提成规则
rulelist = sell_Achievements_RuleRepository.GetList(new RB_Sell_Achievements_Rule_ViewModel() { Group_Id = userInfo.Group_Id });
}
else {
rulelist = JsonHelper.DeserializeObject<List<RB_Sell_Achievements_Rule_ViewModel>>(periodsModel.AdminRemark);
}
//非部门规则
var RuleModel = rulelist.Where(x => string.IsNullOrEmpty(x.ChildEmpIds) && ("," + x.EmpIds + ",").Contains("," + userInfo.Id + ",")).FirstOrDefault();
if (RuleModel != null)
{
RuleModel.RateList = JsonHelper.DeserializeObject<List<AchievementsRateModel>>(RuleModel.Content);
}
decimal TotalSaleMoney = 0, NewSaleMoney = 0, RenewSaleMoney = 0;// 业绩 新收 续费
decimal MonthCommission = 0;//当月提成金额
//提成金额 累计提成 已发放 待发放;
if (periodsModel == null)
{
//需要默认查询一次当月的
#region 查询当月业绩
string SchoolIds = string.Join(",", rulelist.Select(x => x.SchoolIds));
//查询 班级订单 1.尾款收齐
string SDate = Config.NewAchievementsEnable;
string EDate = Convert.ToDateTime(month + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
var orderList = orderRepository.GetAllAchievementsSendOrderList(userInfo.Group_Id, SDate, EDate, 1, "", SchoolIds);//查询所有的
List<RB_Sell_Achievements_Emp_ViewModel> AchEmpList = new List<RB_Sell_Achievements_Emp_ViewModel>();//需要新增当月的
if (orderList.Any())
{
//首先查询 根据规则 适配当月业绩 并生成对应的 订单人员业绩提成
foreach (var item in rulelist)
{
//初始化规则比列
item.RateList = new List<AchievementsRateModel>();
if (!string.IsNullOrEmpty(item.Content))
{
item.RateList = JsonHelper.DeserializeObject<List<AchievementsRateModel>>(item.Content);
}
}
//根据订单 查询同行返佣
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
var bdList = customer_BalanceDetailRepository.GetCustomerBalanceDetailListRepository(new Model.ViewModel.Customer.RB_Customer_BalanceDetail_ViewModel() { Group_Id = userInfo.Group_Id, QOrderIds = orderIds });
if (RuleModel.Type == 3)
{
//当前匹配教师规则 只查询老师的业绩
foreach (var item in rulelist.Where(x => x.Id == RuleModel.Id))
{
//老师适配规则
var teaOrderList = orderList.Where(x => x.HelpEnterId > 0 && ("," + item.EmpIds + ",").Contains("," + x.HelpEnterId + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (!string.IsNullOrEmpty(item.CourseIds))
{
if (item.CourseType == 1)
{
teaOrderList = teaOrderList.Where(x => ("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
}
else
{
teaOrderList = teaOrderList.Where(x => !("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
}
}
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;//排除同行返佣
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in teaOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = qitem.HelpEnterId,
GiveOutMoney = 0,
GiveOutState = 2,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 2,
OrderId = qitem.OrderId,
PeriodsId = 0,
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 3,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj
});
}
}
}
}
}
else
{
//先查询出教师的 再查询适配规则的
foreach (var item in rulelist.Where(x => x.Type == 3))
{
//老师适配规则
var teaOrderList = orderList.Where(x => x.HelpEnterId > 0 && ("," + item.EmpIds + ",").Contains("," + x.HelpEnterId + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (!string.IsNullOrEmpty(item.CourseIds))
{
if (item.CourseType == 1)
{
teaOrderList = teaOrderList.Where(x => ("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
}
else
{
teaOrderList = teaOrderList.Where(x => !("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
}
}
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;//排除同行返佣
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in teaOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - bdCommission;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = qitem.HelpEnterId,
GiveOutMoney = 0,
GiveOutState = 2,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 2,
OrderId = qitem.OrderId,
PeriodsId = 0,
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 3,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj
});
}
}
}
}
//再查询当前用户的
foreach (var item in rulelist.Where(x => x.Id == RuleModel.Id))
{
if (string.IsNullOrEmpty(item.ChildEmpIds))
{
//非部门情况
//市场
if (item.Type == 1)
{
var sellOrderList = orderList.Where(x => x.EnterID > 0 && ("," + item.EmpIds + ",").Contains("," + x.EnterID + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (sellOrderList.Any())
{
//计算市场业绩
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;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in sellOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
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()
{
EmpId = qitem.EnterID,
GiveOutMoney = 0,
GiveOutState = 2,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 2,
OrderId = qitem.OrderId,
PeriodsId = 0,
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
}
}
//顾问
else
{
var consultantOrderList = orderList.Where(x => x.CourseConsultantId > 0 && ("," + item.EmpIds + ",").Contains("," + x.CourseConsultantId + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (consultantOrderList.Any())
{
//课程顾问
//计算市场业绩
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;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in consultantOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
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()
{
EmpId = qitem.CourseConsultantId,
GiveOutMoney = 0,
GiveOutState = 2,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 2,
OrderId = qitem.OrderId,
PeriodsId = 0,
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
}
}
}
else
{
//部门情况
//部门领取提成人
List<int> EmpList = JsonHelper.DeserializeObject<List<int>>("[" + item.EmpIds + "]");
if (item.Type == 1)
{
var sellOrderList = orderList.Where(x => x.EnterID > 0 && ("," + item.ChildEmpIds + ",").Contains("," + x.EnterID + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (sellOrderList.Any())
{
//计算市场业绩
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;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in sellOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
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)
{
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = emp,
GiveOutMoney = 0,
GiveOutState = 2,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 1,
OrderId = qitem.OrderId,
PeriodsId = 0,
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
}
}
}
else
{
var consultantOrderList = orderList.Where(x => x.CourseConsultantId > 0 && ("," + item.ChildEmpIds + ",").Contains("," + x.CourseConsultantId + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (consultantOrderList.Any())
{
//课程顾问
//计算市场业绩
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;//排除同行返佣 老师的提成
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in consultantOrderList)
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId && x.BalanceType == 1).Sum(x => x.Money);
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)
{
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = emp,
GiveOutMoney = 0,
GiveOutState = 2,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 1,
OrderId = qitem.OrderId,
PeriodsId = 0,
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
OrderSaleMoney = orderYj,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
});
}
}
}
}
}
}
}
}
var empList = AchEmpList.Where(x => x.EmpId == userInfo.Id).ToList();
//当月提成
MonthCommission = empList.Sum(x => x.PushMoney);
TotalSaleMoney = empList.FirstOrDefault()?.SaleMoney ?? 0;
//查询当月订单 新收 续费
string goIds = string.Join(",", empList.Select(x => x.OrderId).Distinct());
var glist = order_GuestRepository.GetSingleListRepository(new RB_Order_Guest_ViewModel() { Group_Id = userInfo.Group_Id, OrderIds = goIds });
NewSaleMoney = empList.Where(x => glist.Where(z => z.RenewState != 2).Select(z => z.OrderId).Contains(x.OrderId)).Sum(x => x.OrderSaleMoney);
RenewSaleMoney = empList.Where(x => glist.Where(z => z.RenewState == 2).Select(z => z.OrderId).Contains(x.OrderId)).Sum(x => x.OrderSaleMoney);
}
#endregion
}
else {
var emoModel = sell_Achievements_EmpRepository.GetMonthSaleMoney(userInfo.Id, periodsModel.Id, userInfo.Group_Id);
//查询本月提成
MonthCommission = emoModel.PushMoney;
//查询本月交易额
TotalSaleMoney = emoModel.SaleMoney;
//查询本月订单 新收 续费 退费
var orderList = sell_Achievements_EmpRepository.GetMonthNorOrderMoney(userInfo.Id, periodsModel.Id, userInfo.Group_Id);
NewSaleMoney = orderList.Where(x => x.Type != 2).FirstOrDefault()?.OrderSaleMoney ?? 0;
RenewSaleMoney = orderList.Where(x => x.Type == 2).FirstOrDefault()?.OrderSaleMoney ?? 0;
}
//查询累计提成 已发放 待发放
var empTModel = sell_Achievements_EmpRepository.GetEmpTotalCommission(userInfo.Id, userInfo.Group_Id);
decimal TotalCommission = empTModel.PushMoney;
decimal GiveOutCommission = empTModel.GiveOutMoney;
decimal WaitCommission = TotalCommission - GiveOutCommission;
return new
{
TotalSaleMoney,
NewSaleMoney,
RenewSaleMoney,
MonthCommission,
TotalCommission,
GiveOutCommission,
WaitCommission,
RuleModel.RateList
};
}
/// <summary>
/// 获取我的提成发放分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Emp_ViewModel> GetAchievementsEmpPageList(int pageIndex, int pageSize, out long count, RB_Sell_Achievements_Emp_ViewModel demodel)
{
var list = sell_Achievements_EmpRepository.GetPageList(pageIndex, pageSize, out count, demodel);
return list;
}
#endregion
}
}
......@@ -65,5 +65,101 @@ namespace Edu.Repository.Sell
string sql = $@" select r.* from RB_Sell_Achievements_Emp r where {where} order by r.Id desc";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Emp_ViewModel> GetPageList(int pageIndex,int pageSize,out long count,RB_Sell_Achievements_Emp_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.Type)} ={demodel.Type}";
}
if (demodel.EmpId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.EmpId)} ={demodel.EmpId}";
}
if (demodel.IsDept > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.IsDept)} ={demodel.IsDept}";
}
if (demodel.PeriodsId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.PeriodsId)} ={demodel.PeriodsId}";
}
if (demodel.GiveOutState > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.GiveOutState)} ={demodel.GiveOutState}";
}
if (demodel.IsSelectNor == 1)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.PeriodsId)} >0";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Emp_ViewModel.OrderId)} in({demodel.OrderIds})";
}
string sql = $@" select r.* from RB_Sell_Achievements_Emp r where {where} order by r.OrderId desc";
return GetPage<RB_Sell_Achievements_Emp_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取当月业绩(个人)
/// </summary>
/// <param name="empId"></param>
/// <param name="periodsId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public RB_Sell_Achievements_Emp_ViewModel GetMonthSaleMoney(int empId, int periodsId, int group_Id)
{
string sql = $@"SELECT MAX(SaleMoney) as SaleMoney,SUM(PushMoney) as PushMoney FROM rb_sell_achievements_emp WHERE Group_Id ={group_Id} and EmpId ={empId} and IsDept =2 and PeriodsId ={periodsId}";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).FirstOrDefault();
}
/// <summary>
/// 获取当月新收/续费业绩金额(个人)
/// </summary>
/// <param name="empId"></param>
/// <param name="periodsId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Emp_ViewModel> GetMonthNorOrderMoney(int empId, int periodsId, int group_Id)
{
string sql = $@"
SELECT g.RenewState as Type,SUM(e.OrderSaleMoney) as OrderSaleMoney FROM rb_sell_achievements_emp e
INNER JOIN rb_order_guest g on e.OrderId = g.OrderId
WHERE e.Group_Id ={group_Id} and e.EmpId ={empId} and e.IsDept =2 and e.PeriodsId ={periodsId}
GROUP BY g.RenewState";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取用户累计已发提成(个人)
/// </summary>
/// <param name="id"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public RB_Sell_Achievements_Emp_ViewModel GetEmpTotalCommission(int empId, int group_Id)
{
string sql = $@"SELECT SUM(PushMoney) as PushMoney,SUM(GiveOutMoney) as GiveOutMoney FROM rb_sell_achievements_emp WHERE Group_Id ={group_Id} and EmpId ={empId} and IsDept =2";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).FirstOrDefault();
}
}
}
......@@ -613,5 +613,53 @@ namespace Edu.WebApi.Controllers.Course
}
#endregion
#region 销售中心
/// <summary>
/// 获取市场中心业绩提成
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellCenterAchievementsStatistics() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
string Month = parms.GetStringValue("Month");
if (string.IsNullOrEmpty(Month)) {
return ApiResult.ParamIsNull();
}
Month = Convert.ToDateTime(Month).ToString("yyyy-MM");
var Robj = sellAchievementsModule.GetSellCenterAchievementsStatistics(Month, userInfo);
return ApiResult.Success("", Robj);
}
/// <summary>
/// 获取业绩发放明细分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAchievementsEmpPageList() {
var userInfo = base.UserInfo;
ResultPageModel pmodel = JsonHelper.DeserializeObject<ResultPageModel>(base.RequestParm.Msg.ToString());
RB_Sell_Achievements_Emp_ViewModel demodel = JsonHelper.DeserializeObject<RB_Sell_Achievements_Emp_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
demodel.EmpId = userInfo.Id;
demodel.IsDept = 2;//非部门的
var list = sellAchievementsModule.GetAchievementsEmpPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = Convert.ToInt32(count);
pmodel.PageData = list.Select(x => new
{
x.Id,
x.OrderId,
x.Rate,
x.PushMoney,
x.GiveOutMoney,
x.SaleMoney,
x.Remark
});
return ApiResult.Success("", pmodel);
}
#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