Commit 8cf5020d authored by 吴春's avatar 吴春

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

parents 466ab502 52de307a
......@@ -142,5 +142,10 @@ namespace Edu.Model.Entity.Sell
/// </summary>
public decimal FirstRate { get; set; }
/// <summary>
/// 人头奖励
/// </summary>
public decimal PeopleNumMoney { get; set; }
}
}
......@@ -86,5 +86,11 @@ namespace Edu.Model.Entity.Sell
/// 订单业绩
/// </summary>
public decimal OrderSaleMoney { get; set; }
/// <summary>
/// 人头奖励
/// </summary>
public decimal PeopleNumMoney { get; set; }
}
}
......@@ -39,5 +39,10 @@ namespace Edu.Model.ViewModel.Sell
/// 当前订单金额
/// </summary>
public decimal OrderMoney { get; set; }
/// <summary>
/// 订单退款金额
/// </summary>
public decimal Refund { get; set; }
}
}
\ No newline at end of file
......@@ -508,6 +508,9 @@ namespace Edu.Module.Course
string classTypeIds = string.Join(",", list.Select(x => x.ClassType).Distinct());
var ctlist = class_TypeRepository.GetClassTypeListRepository(new RB_Class_Type_ViewModel() { Q_CTypeIds = classTypeIds, Group_Id = dmodel.Group_Id });
var empList = sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { Group_Id = dmodel.Group_Id, OrderIds = string.Join(",", list.Select(x => x.OrderId).Distinct()), });
foreach (var item in list)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
......@@ -524,6 +527,18 @@ namespace Edu.Module.Course
{
item.ClassTypeName = ctlist.Where(x => x.CTypeId == item.ClassType).FirstOrDefault()?.CTypeName ?? "";
}
//EmpId = userId, Type = userType, IsDept
var empModel = empList.Where(x => x.OrderId == item.OrderId && x.EmpId == item.UserId && x.Type == item.UserType && x.IsDept == item.IsDept).ToList();
string rmsg = ""; int Num = 1;
foreach (var eitem in empModel.OrderBy(x => x.Id))
{
if (eitem.Remark.Contains("退款回扣"))
{
rmsg += " >" + Num + "、" + "业绩比例:" + eitem.Rate + "%;业绩描述:" + eitem.Remark + ";";
Num++;
}
}
if (!string.IsNullOrEmpty(rmsg)) { item.Remark += rmsg; }
}
}
return list;
......@@ -678,7 +693,7 @@ namespace Edu.Module.Course
x.UserId,
x.UserName,
x.StudentCount,
x.CurrentPeriodMoney,
CurrentPeriodMoney = x.CurrentPeriodMoney + x.PeopleNumMoney,
IsGiveOut = EmpIdList.Contains(x.UserId) ? 1 : 2
});
}
......@@ -744,7 +759,6 @@ namespace Edu.Module.Course
}
#region 小语种提成规则
var languageRuleList = language_RuleRepository.GetLanguageRuleListRepository(new RB_Language_Rule_Extend { Group_Id = userInfo.Group_Id });
#endregion
//根据规则 分成 市场 顾问 老师
......@@ -753,18 +767,25 @@ namespace Edu.Module.Course
string SchoolIds = string.Join(",", rulelist.Select(x => x.SchoolIds));
//查询 班级订单 1.尾款收齐
string SDate = Config.NewAchievementsEnable;
//string SDate = "2024-08-01";
string SDate = "2023-11-01";
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, languageRuleList, 1);//查询所有的
List<RB_Sell_Achievements_Emp_ViewModel> AchEmpList = new List<RB_Sell_Achievements_Emp_ViewModel>();//需要新增当月的
//查询当月有效到访人数(邀约到访30分钟以上)
var stuList = studentRepository.GetValidVisitNum(Convert.ToDateTime(month + "-01").ToString("yyyy-MM-dd"), EDate, userInfo.Group_Id);
#region 退费规则
//查询历史所有 退费的单子 汇总金额计入其当月的业绩计算 并回扣所有订单的提成(是 2023-10月这一期开始 回扣提成 ) PeriodId =64 开始扣提成
//首先查询 所有退费的单子
var ROrderList = sell_Achievements_EmpRepository.GetAllRefundWaitPendingList(userInfo.Group_Id);
ROrderList = ROrderList.Where(x => x.OrderId == 1501).ToList();
if (ROrderList.Any()) {
string orderIds = string.Join(",", ROrderList.Select(x => x.OrderId));
var bdList = order_ReturnComissionRepository.GetOrderReturnComissionListRepositpry(new RB_Order_ReturnComission_ViewModel() { GroupId = userInfo.Group_Id, QOrderIds = orderIds });
foreach (var item in ROrderList) {
decimal bdCommission = bdList.Where(x => x.OrderId == item.OrderId).Sum(x => x.CommissionMoeny);
item.OrderMoney -= bdCommission;
}
}
#endregion
if (orderList.Any())
......@@ -788,36 +809,11 @@ namespace Edu.Module.Course
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
var bdList = order_ReturnComissionRepository.GetOrderReturnComissionListRepositpry(new RB_Order_ReturnComission_ViewModel() { GroupId = userInfo.Group_Id, QOrderIds = orderIds });
//获取订单的学生 是否邀约到访30分钟以上
//var surList = orderRepository.GetStuSureConsultTimeForOrder(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
#region 老师订单5.10日需求
//ld2023-03-21 转介绍学生的老师 有2%提成 留学订单200
......@@ -826,23 +822,49 @@ namespace Edu.Module.Course
{
//再次查询学生
string OrderIds = string.Join(",", orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.Normal).Select(x => x.OrderId));
var saList = student_AssistRepository.GetAssistTeacherForOrder(OrderIds);//转介绍 2%提成
//var saList = student_AssistRepository.GetAssistTeacherForOrder(OrderIds);//转介绍 2%提成 ld 2024-08-27 暂时排除 转介绍
var stList = student_AssistRepository.GetTrialTeacher(OrderIds, userInfo.Group_Id);//试听 1%提成
var stList2 = student_AssistRepository.GetAssistTeacherForOrder(OrderIds, false);//设置的班主任
//重新关联一下订单的 转介绍老师
foreach (var item in orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.Normal))
{
//if (item.HelpEnterId > 0) { continue; }
item.HelpEnterId = saList.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.AssistId ?? 0;
item.ClassScrollType = 1;
//item.HelpEnterId = saList.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.AssistId ?? 0;
//item.ClassScrollType = 1;
//再次查询此订单学员是否走试听 试听拿 1%提成 如果是转介绍 就不拿试听提成 2023-08-21 LD
if (item.HelpEnterId <= 0)
{
//if (item.HelpEnterId <= 0)
//{
// item.HelpEnterId = stList.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.AssistId ?? 0;
// item.ClassScrollType = 2;
//}
item.HelpEnterId = stList.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.AssistId ?? 0;
item.ClassScrollType = 2;
item.ClassScrollType = 2;//试听
//计算一下是否有返佣 有返佣 老师拿1%提成, 无市场提成 ld 08-28 徐总当面确认
decimal bdCommission = bdList.Where(x => x.OrderId == item.OrderId).Sum(x => x.CommissionMoeny);
if (bdCommission > 0) {
item.ClassScrollType = 3;//各种介绍来源
if (item.HelpEnterId <= 0) {
item.HelpEnterId = stList2.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.AssistId ?? 0;
}
}
}
}
if (orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder).Any()) {
//续费 全部班主任拿提成, 重新更新一下 班主任
string OrderIds = string.Join(",", orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder).Select(x => x.OrderId));
var stList = student_AssistRepository.GetAssistTeacherForOrder(OrderIds, false);
//重新关联一下订单的 转介绍老师
foreach (var item in orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder))
{
item.HelpEnterId = stList.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.AssistId ?? 0;
}
}
if (orderList.Where(x => x.HelpEnterId > 0).Any())
{
......@@ -857,31 +879,33 @@ namespace Edu.Module.Course
string Remark = "";
//当前订单的返佣
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal orderYJ = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.CoursewareFee - qitem.TextbookFee - bdCommission;
if (qitem.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder)
{
//续费订单
TRate = Convert.ToDecimal(TeacherRuleList.Where(x => x.SNO == 4).FirstOrDefault()?.Content ?? "0");
Remark = "教师续费订单提成:订单b2b返佣:" + bdCommission + ";订单业绩:" + (qitem.PreferPrice - qitem.DiscountMoney);
Remark = "教师续费订单提成:订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYJ;
}
else if (qitem.ClassScrollType == 1)
else if (qitem.ClassScrollType == 3)
{
//转介绍
TRate = Convert.ToDecimal(TeacherRuleList.Where(x => x.SNO == 1).FirstOrDefault()?.Content ?? "0");
Remark = "教师转介绍订单提成:订单b2b返佣:" + bdCommission + ";订单业绩:" + (qitem.PreferPrice - qitem.DiscountMoney);
Remark = "介绍来源订单提成:订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYJ;
}
else if (qitem.ClassScrollType == 2)
{
//新订单
TRate = Convert.ToDecimal(TeacherRuleList.Where(x => x.SNO == 5).FirstOrDefault()?.Content ?? "0");
Remark = "教师试听订单提成:订单b2b返佣:" + bdCommission + ";订单业绩:" + (qitem.PreferPrice - qitem.DiscountMoney);
Remark = "教师试听订单提成:订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYJ;
}
else { return qitem.OrderId + "未匹配上老师"; }
if (qitem.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.Normal && qitem.OrderType == Common.Enum.Sale.OrderTypeEnum.StudyabroadOrder)
{
//留学订单
decimal lxMoney = Convert.ToDecimal(TeacherRuleList.Where(x => x.SNO == 3).FirstOrDefault()?.Content ?? "0");
Remark = "教师留学订单奖励:订单b2b返佣:" + bdCommission + ";订单业绩:" + (qitem.PreferPrice - qitem.DiscountMoney) + ";留学奖励" + lxMoney;
}
decimal PushMoney = Math.Round((qitem.PreferPrice - qitem.DiscountMoney) * TRate / 100, 2, MidpointRounding.AwayFromZero);
decimal PushMoney = Math.Round(orderYJ * TRate / 100, 2, MidpointRounding.AwayFromZero);
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = qitem.HelpEnterId,
......@@ -896,7 +920,7 @@ namespace Edu.Module.Course
PushMoney = PushMoney,
RuleId = 0,
SaleMoney = 0,
OrderSaleMoney = qitem.PreferPrice - qitem.DiscountMoney,
OrderSaleMoney = orderYJ,
Type = 3,
Remark = Remark
});
......@@ -928,7 +952,7 @@ namespace Edu.Module.Course
{
var orderChildList = teaOrderList.Where(x => x.HelpEnterId == teaId).ToList();
//计算老师业绩
decimal YjMoney = orderChildList.Sum(x => x.PreferPrice - x.DiscountMoney);
decimal YjMoney = orderChildList.Sum(x => x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.CoursewareFee - x.TextbookFee);
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -937,7 +961,7 @@ namespace Edu.Module.Course
{
//当前订单的业绩
decimal bdCommission = bdList.Where(x => x.OrderId == qitem.OrderId).Sum(x => x.CommissionMoeny);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney;
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.CoursewareFee - qitem.TextbookFee;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = qitem.HelpEnterId,
......@@ -970,8 +994,7 @@ namespace Edu.Module.Course
//市场
if (item.Type == 1)
{
var sellOrderList = orderList.Where(x => x.EnterID > 0 && ("," + item.EmpIds + ",").Contains("," + x.EnterID + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
sellOrderList = sellOrderList.Where(x => x.JoinType != Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder).ToList();//市场排除续费订单
var sellOrderList = orderList.Where(x => x.EnterID > 0 && x.ClassScrollType != 3 && ("," + item.EmpIds + ",").Contains("," + x.EnterID + ",") && ("," + item.SchoolIds + ",").Contains("," + x.ClassSchoolId + ",")).ToList();
if (!string.IsNullOrEmpty(item.CourseIds))
{
if (item.CourseType == 1)
......@@ -983,30 +1006,43 @@ namespace Edu.Module.Course
sellOrderList = sellOrderList.Where(x => !("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
}
}
//计算当月人头数 计算人头奖励 包含续费的
int PeopleNum = sellOrderList.Where(x => x.Refund <= 0).Count();
sellOrderList = sellOrderList.Where(x => x.JoinType != Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder).ToList();//市场排除续费订单
if (sellOrderList.Any())
{
//计算一下 退费金额,要算入当期的业绩里
decimal TRefund = ROrderList.Where(x => ("," + item.EmpIds + ",").Contains("," + x.EmpId + ",")).Sum(x => x.Remark.Contains("销售额减半计算") ? (x.OrderMoney - x.OrderSaleMoney) / 2 : x.OrderMoney - x.OrderSaleMoney);
//计算市场业绩 如果有 老师提成,
decimal TotalYj = sellOrderList.Sum(x => x.HelpEnterId > 0 ? (x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.CoursewareFee - x.TextbookFee) / 2 : x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.CoursewareFee - x.TextbookFee);
//计算订单返佣
decimal bdCommTotal = bdList.Where(x => sellOrderList.Select(x => x.OrderId).Contains(x.OrderId)).Sum(x => x.CommissionMoeny);
TotalYj -= bdCommTotal;// 需要减去 返佣的部分
TotalYj += TRefund;//减去 这期退费的
var awardModel = item.ZGAwardList.Where(x => x.StartValue <= PeopleNum && (x.EndValue >= PeopleNum || x.EndValue == -1)).FirstOrDefault();
//这里应该要根据每个人的求
var enterList = sellOrderList.Select(x => x.EnterID).Distinct().ToList();
foreach (var enterId in enterList)
{
var orderChildList = sellOrderList.Where(x => x.EnterID == enterId).ToList();
//计算市场业绩
decimal TotalYj = orderChildList.Sum(x => x.PreferPrice - x.DiscountMoney);
//查询老师的提成
decimal teacherMoney = AchEmpList.Where(x => x.Type == 3 && orderChildList.Select(y => y.OrderId).Contains(x.OrderId)).Sum(x => x.PushMoney);
decimal YjMoney = TotalYj - teacherMoney;//排除老师的提成
//decimal teacherMoney = AchEmpList.Where(x => x.Type == 3 && orderChildList.Select(y => y.OrderId).Contains(x.OrderId)).Sum(x => x.PushMoney);
//decimal YjMoney = TotalYj;// - teacherMoney;//排除老师的提成 ld 2024-08-27 不用减去 老师提成
if (item.SendType == 1)
{
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
var rateModel = item.RateList.Where(x => x.StartValue < TotalYj && (x.EndValue >= TotalYj || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
{
foreach (var qitem in orderChildList)
{
//当前订单的业绩
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;
//decimal tCommission = AchEmpList.Where(x => x.Type == 3 && x.OrderId == qitem.OrderId).Sum(x => x.PushMoney);
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.CoursewareFee - qitem.TextbookFee - bdCommission;
if (qitem.HelpEnterId > 0) { orderYj = orderYj / 2; }
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = qitem.EnterID,
......@@ -1020,10 +1056,11 @@ namespace Edu.Module.Course
Rate = rateModel.Rate,
PushMoney = Math.Round(orderYj * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
SaleMoney = TotalYj,
OrderSaleMoney = orderYj,
PeopleNumMoney = qitem.Refund <= 0 ? awardModel?.Rate ?? 0 : 0,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj
Remark = "当月业绩:" + TotalYj + (TRefund != 0 ? "(其中退费:" + TRefund + ")" : "") + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj + (qitem.HelpEnterId > 0 ? ";此单由试听转化,销售额减半计算" : "") + ";当月部门人头:" + PeopleNum + "人,人头奖励:" + (awardModel?.Rate ?? 0)
});
}
}
......@@ -1051,46 +1088,48 @@ namespace Edu.Module.Course
Rate = 0,
PushMoney = item.PeopleMoney,
RuleId = item.Id,
SaleMoney = YjMoney,
SaleMoney = TotalYj,
OrderSaleMoney = orderYj,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月老师提成:" + teacherMoney + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj + ";市场根据人数发放提成:" + item.PeopleMoney + "/人"
Remark = "当月业绩:" + TotalYj + ";订单b2b返佣:" + bdCommission + ";订单老师提成:" + tCommission + ";订单业绩:" + orderYj + ";市场根据人数发放提成:" + item.PeopleMoney + "/人"
});
}
}
}
}
if (item.ExtraMoney > 0)
{//有效到访额外奖励
List<int> EmpList = JsonHelper.DeserializeObject<List<int>>("[" + item.EmpIds + "]");
foreach (var emp in EmpList)
{
//验证是否有 有效到访奖励
var stuModel = stuList.Where(x => x.CreateBy == emp).FirstOrDefault();
if (stuModel != null)
{
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = emp,
GiveOutMoney = item.ExtraMoney * stuModel.OrderCount,
GiveOutState = 1,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 2,
OrderId = -1,
PeriodsId = 0,
Rate = 0,
PushMoney = item.ExtraMoney * stuModel.OrderCount,
RuleId = item.Id,
SaleMoney = 0,
OrderSaleMoney = 0,
Type = 1,
Remark = "当月满足邀约咨询30分钟以上共计 " + stuModel.OrderCount + "人,奖励 " + item.ExtraMoney * stuModel.OrderCount
});
}
}
}
#region 屏蔽
//if (item.ExtraMoney > 0)
//{//有效到访额外奖励
// List<int> EmpList = JsonHelper.DeserializeObject<List<int>>("[" + item.EmpIds + "]");
// foreach (var emp in EmpList)
// {
// //验证是否有 有效到访奖励
// var stuModel = stuList.Where(x => x.CreateBy == emp).FirstOrDefault();
// if (stuModel != null)
// {
// AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
// {
// EmpId = emp,
// GiveOutMoney = item.ExtraMoney * stuModel.OrderCount,
// GiveOutState = 1,
// Group_Id = userInfo.Group_Id,
// Id = 0,
// IsDept = 2,
// OrderId = -1,
// PeriodsId = 0,
// Rate = 0,
// PushMoney = item.ExtraMoney * stuModel.OrderCount,
// RuleId = item.Id,
// SaleMoney = 0,
// OrderSaleMoney = 0,
// Type = 1,
// Remark = "当月满足邀约咨询30分钟以上共计 " + stuModel.OrderCount + "人,奖励 " + item.ExtraMoney * stuModel.OrderCount
// });
// }
// }
//}
#endregion
}
//顾问
else
......@@ -1273,37 +1312,37 @@ namespace Edu.Module.Course
}
}
//启用部门
if (item.EnableZGAward == 1)
{
//算计部门下所有人 所有有效到访
int peopleNum = stuList.Where(x => item.ChildEmpIds.Split(',').Contains(x.CreateBy.ToString())).Sum(x => x.OrderCount);
var awardModel = item.ZGAwardList.Where(x => x.StartValue <= peopleNum && (x.EndValue > peopleNum || x.EndValue == -1)).FirstOrDefault();
if (awardModel != null)
{
foreach (var emp in EmpList)
{
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = emp,
GiveOutMoney = awardModel.Rate,
GiveOutState = 1,
Group_Id = userInfo.Group_Id,
Id = 0,
IsDept = 1,
OrderId = -1,
PeriodsId = 0,
Rate = 0,
PushMoney = awardModel.Rate,
RuleId = item.Id,
SaleMoney = 0,
OrderSaleMoney = 0,
Type = 1,
Remark = "当月部门下满足邀约咨询30分钟以上共计" + peopleNum + "人,绩效奖励" + awardModel.Rate,
AwardOrderNum = peopleNum
});
}
}
}
//if (item.EnableZGAward == 1)
//{
// //算计部门下所有人 所有有效到访
// int peopleNum = stuList.Where(x => item.ChildEmpIds.Split(',').Contains(x.CreateBy.ToString())).Sum(x => x.OrderCount);
// var awardModel = item.ZGAwardList.Where(x => x.StartValue <= peopleNum && (x.EndValue > peopleNum || x.EndValue == -1)).FirstOrDefault();
// if (awardModel != null)
// {
// foreach (var emp in EmpList)
// {
// AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
// {
// EmpId = emp,
// GiveOutMoney = awardModel.Rate,
// GiveOutState = 1,
// Group_Id = userInfo.Group_Id,
// Id = 0,
// IsDept = 1,
// OrderId = -1,
// PeriodsId = 0,
// Rate = 0,
// PushMoney = awardModel.Rate,
// RuleId = item.Id,
// SaleMoney = 0,
// OrderSaleMoney = 0,
// Type = 1,
// Remark = "当月部门下满足邀约咨询30分钟以上共计" + peopleNum + "人,绩效奖励" + awardModel.Rate,
// AwardOrderNum = peopleNum
// });
// }
// }
//}
}
else
{
......@@ -1416,8 +1455,9 @@ namespace Edu.Module.Course
IsDept = qitem.IsDept,
PeriodsId = 0,
SaleMoney = 0,
Remark = "退款回扣提成,此单当期退款:" + (qitem.OrderMoney - qitem.OrderSaleMoney),
OrderSaleMoney = qitem.OrderMoney
Remark = "退款回扣提成,此单" + month + "退款:" + (qitem.OrderMoney - qitem.OrderSaleMoney),
OrderSaleMoney = qitem.OrderMoney,
PeopleNumMoney = qitem.Refund > 0 ? 0 - qitem.PeopleNumMoney : 0
});
}
}
......@@ -1456,15 +1496,15 @@ namespace Edu.Module.Course
//查询所有的人员
var saleIdList = orderList.Where(x => x.EnterID > 0).Select(x => x.EnterID).Distinct().ToList();
var teacherIdList = orderList.Where(x => x.HelpEnterId > 0).Select(x => x.HelpEnterId).Distinct().ToList();
var consultantIdList = orderList.Where(x => x.CourseConsultantId > 0).Select(x => x.CourseConsultantId).Distinct().ToList();
//var consultantIdList = orderList.Where(x => x.CourseConsultantId > 0).Select(x => x.CourseConsultantId).Distinct().ToList();
if (teacherIdList.Any())
{
saleIdList.AddRange(teacherIdList);
}
if (consultantIdList.Any())
{
saleIdList.AddRange(consultantIdList);
}
//if (consultantIdList.Any())
//{
// saleIdList.AddRange(consultantIdList);
//}
if (AchEmpList.Where(x => x.Remark.Contains("退款回扣")).Any())
{
saleIdList.AddRange(AchEmpList.Where(x => x.Remark.Contains("退款回扣")).Select(x => x.EmpId));
......@@ -1551,7 +1591,8 @@ namespace Edu.Module.Course
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id
RelatedId = AchModel.Id,
PeopleNumMoney = 0
});
AchModel.GiveOutMoney = SaleCommissioned;
......@@ -1588,7 +1629,8 @@ namespace Edu.Module.Course
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id
RelatedId = AchModel.Id,
PeopleNumMoney = AchModel.PeopleNumMoney
});
AchModel.GiveOutMoney = YFCommission;
AchModel.GiveOutState = 1;
......@@ -1651,7 +1693,8 @@ namespace Edu.Module.Course
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id
RelatedId = AchModel.Id,
PeopleNumMoney = AchModel.PeopleNumMoney
});
AchModel.GiveOutMoney = FirstMoney;
if (ruleModel.FirstRate == 100)
......@@ -1719,6 +1762,7 @@ namespace Edu.Module.Course
detailModel.GiveOutMoney = detailModel.CommissionMoney;
detailModel.RelatedId = AchEmpList.Where(x => x.Remark.Contains("退款回扣") && x.OrderId == qitem.OrderId && x.EmpId == qitem.EmpId && x.Type == qitem.Type).FirstOrDefault()?.Id ?? 0;
detailModel.FirstRate = 100;
detailModel.PeopleNumMoney = qitem.Refund > 0 ? 0 - qitem.PeopleNumMoney : 0;
CurrentList.Add(JsonHelper.DeserializeObject<RB_Sell_Achievements_Details_ViewModel>(JsonHelper.Serialize(detailModel)));
}
}
......@@ -1826,7 +1870,7 @@ namespace Edu.Module.Course
}
#region 计算累计应发
decimal SumPrice = NorList.Sum(x => x.CurrentPeriodMoney + x.DeductionMoney);
decimal SumPrice = NorList.Sum(x => x.CurrentPeriodMoney + x.DeductionMoney + x.PeopleNumMoney);
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_Achievements_Periods.SumPrice),SumPrice}
};
......@@ -1945,6 +1989,7 @@ namespace Edu.Module.Course
/// <param name="orderId"></param>
public bool ValidataAchievements(int orderId)
{
return true;
DateTime EnableDate = Convert.ToDateTime(Config.NewAchievementsEnable);
//查询订单信息
var orderModel = orderRepository.GetEntity(orderId);
......@@ -2408,13 +2453,20 @@ namespace Edu.Module.Course
public string GetSellAchievementsChangeLog(int orderId, int userId, int userType, int isDept, int groupId, out string msg)
{
msg = "";
var empModel = sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { Group_Id = groupId, OrderId = orderId, EmpId = userId, Type = userType, IsDept = isDept }).FirstOrDefault();
if (empModel == null)
var empList = sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { Group_Id = groupId, OrderId = orderId, EmpId = userId, Type = userType, IsDept = isDept }).ToList();
if (!empList.Any())
{
msg = "未查询到相关信息";
return "";
}
return "业绩比例:" + empModel.Rate + "%;业绩描述:" + empModel.Remark;
string rmsg = ""; int Num = 1;
foreach (var item in empList.OrderBy(x => x.Id))
{
rmsg += Num + "、" + "业绩比例:" + item.Rate + "%;业绩描述:" + item.Remark + ";";
Num++;
}
return rmsg;
}
#endregion
......
......@@ -80,12 +80,12 @@ WHERE a.`Status`=0 and s.Group_Id ={group_Id} and s.`Status`=0 and a.AssistId ={
/// </summary>
/// <param name="orderIds"></param>
/// <returns></returns>
public List<RB_Student_Assist_Extend> GetAssistTeacherForOrder(string orderIds) {
public List<RB_Student_Assist_Extend> GetAssistTeacherForOrder(string orderIds,bool IsZJS = true ) {
string sql = $@"SELECT og.OrderId,a.AssistId FROM rb_student_orderguest og
INNER JOIN rb_student_assist a on og.Student_Id =a.StuId
INNER JOIN rb_student s on og.Student_Id =s.StuId
INNER JOIN rb_account ac on a.AssistId = ac.Id
WHERE og.`Status` =0 and a.`Status` =0 and og.OrderId in({orderIds}) and a.AssistType =4 and s.CreateType =4 and ac.AccountType =2";
WHERE og.`Status` =0 and a.`Status` =0 and og.OrderId in({orderIds}) and a.AssistType =4 {(IsZJS ? "and s.CreateType =4" : "")} and ac.AccountType =2";
return Get<RB_Student_Assist_Extend>(sql).ToList();
}
......
......@@ -223,7 +223,7 @@ from RB_Sell_Achievements_Details r where {where} order by r.Id asc";
}
string sql = $@" select r.UserId,r.Depart_Id,r.School_Id,sum(r.StudentCount) as StudentCount,sum(r.CurrentPeriodMoney + r.DeductionMoney) as CurrentPeriodMoney
string sql = $@" select r.UserId,r.Depart_Id,r.School_Id,sum(r.StudentCount) as StudentCount,sum(r.CurrentPeriodMoney + r.DeductionMoney) as CurrentPeriodMoney,sum(r.PeopleNumMoney) as PeopleNumMoney
from RB_Sell_Achievements_Details r where {where} group by r.UserId,r.Depart_Id,r.School_Id";
return Get<RB_Sell_Achievements_Details_ViewModel>(sql).ToList();
}
......@@ -236,7 +236,7 @@ from RB_Sell_Achievements_Details r where {where} group by r.UserId,r.Depart_Id,
/// <returns></returns>
public List<RB_Sell_Achievements_Details_ViewModel> GetSchoolCommission(int schoolId, string periodsIds)
{
string sql = $@"select PeriodId,SUM(CurrentPeriodMoney) as CurrentPeriodMoney from RB_Sell_Achievements_Details
string sql = $@"select PeriodId,SUM(CurrentPeriodMoney+PeopleNumMoney) as CurrentPeriodMoney from RB_Sell_Achievements_Details
WHERE School_Id ={schoolId} and PeriodId in ({periodsIds})
GROUP BY PeriodId ";
......@@ -290,7 +290,7 @@ GROUP BY PeriodId ";
}
string sql = $@" select sum(r.CurrentPeriodMoney + r.DeductionMoney) from RB_Sell_Achievements_Details r where {where}";
string sql = $@" select sum(r.CurrentPeriodMoney + r.DeductionMoney + r.PeopleNumMoney) from RB_Sell_Achievements_Details r where {where}";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToDecimal(obj);
}
......
......@@ -171,7 +171,7 @@ GROUP BY g.RenewState";
public List<RB_Sell_Achievements_Emp_ViewModel> GetSellAchievementsRankStat(List<string> monthList, int group_Id)
{
string sql = $@"SELECT e.Type,e.EmpId,e.Rate,e.IsDept,p.Periods,SUM(e.PushMoney) as PushMoney,Max(e.SaleMoney) as SaleMoney,
SUM(e.OrderSaleMoney) as OrderSaleMoney,SUM(o.PreferPrice - o.DiscountMoney - e.OrderSaleMoney) as CommissionMoney
SUM(e.OrderSaleMoney) as OrderSaleMoney,SUM(o.PreferPrice - o.DiscountMoney - o.PlatformTax - o.CoursewareFee - o.TotalClassHours - e.OrderSaleMoney) as CommissionMoney
FROM rb_sell_achievements_emp e
INNER JOIN rb_sell_achievements_periods p on e.PeriodsId = p.Id
INNER JOIN rb_order o on e.OrderId = o.OrderId
......@@ -188,9 +188,9 @@ GROUP BY e.Type,e.EmpId,e.Rate,e.IsDept,p.Periods";
/// <returns></returns>
public List<RB_Sell_Achievements_Emp_ViewModel> GetAllRefundWaitPendingList(int group_Id)
{
string sql = $@"SELECT e.*,(o.Income + o.PlatformTax -o.Refund) as OrderMoney FROM rb_sell_achievements_emp e
string sql = $@"SELECT e.*,(o.Income - o.Refund - o.CoursewareFee - o.TotalClassHours) as OrderMoney,o.Refund FROM rb_sell_achievements_emp e
LEFT JOIN rb_order o on e.OrderId =o.OrderId
WHERE e.Group_Id={group_Id} and (e.Type=2 or (e.Type=1 and e.IsDept=1)) and e.OrderSaleMoney <> (o.Income + o.PlatformTax -o.Refund) and e.OrderId>0 and e.Remark not like '%退款回扣%'
WHERE e.Group_Id={group_Id} and o.CreateTime >='2023-10-01' and (e.Type=2 or (e.Type=1 and e.IsDept=1)) and e.OrderSaleMoney <> (o.Income - o.Refund - o.CoursewareFee - o.TotalClassHours) and e.OrderId>0 and e.Remark not like '%退款回扣%'
ORDER BY e.OrderId ASC ";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).ToList();
}
......
......@@ -265,7 +265,8 @@ namespace Edu.WebApi.Controllers.Course
x.UserId,
x.UserName,
x.StudentCount,
x.CurrentPeriodMoney
x.CurrentPeriodMoney,
x.PeopleNumMoney
}));
}
......@@ -313,7 +314,8 @@ namespace Edu.WebApi.Controllers.Course
x.DeductionMoney,
YFMoney = x.CurrentPeriodMoney + x.DeductionMoney,
x.UserType,
x.IsDept
x.IsDept,
x.PeopleNumMoney
}));
}
......@@ -360,7 +362,8 @@ namespace Edu.WebApi.Controllers.Course
x.DeductionMoney,
YFMoney = x.CurrentPeriodMoney + x.DeductionMoney,
x.UserType,
x.IsDept
x.IsDept,
x.PeopleNumMoney
}));
}
......@@ -408,7 +411,8 @@ namespace Edu.WebApi.Controllers.Course
x.DeductionMoney,
YFMoney = x.CurrentPeriodMoney + x.DeductionMoney,
x.UserType,
x.IsDept
x.IsDept,
x.PeopleNumMoney
})
};
return ApiResult.Success("", pageModel);
......@@ -448,6 +452,7 @@ namespace Edu.WebApi.Controllers.Course
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 },
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 }
}
......@@ -483,6 +488,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: (item.CurrentPeriodMoney).ToString("#0.00")){ },
new ExcelColumn(value: (item.DeductionMoney).ToString("#0.00")){ },
new ExcelColumn(value: (item.CurrentPeriodMoney + item.DeductionMoney).ToString("#0.00")){ },
new ExcelColumn(value: (item.PeopleNumMoney).ToString("#0.00")){ },
new ExcelColumn(value: item.Periods){ },
new ExcelColumn(value: item.Remark){ },
},
......@@ -513,9 +519,10 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: list.Sum(x=>x.CurrentPeriodMoney + x.DeductionMoney).ToString("#0.00")){ },
new ExcelColumn(value: list.Sum(x=>x.PeopleNumMoney).ToString("#0.00")){ },
new ExcelColumn(value: TotalMoney.ToString("#0.00")){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
},
ColumnHight = 30
};
......
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