Commit f0e2c08a authored by 吴春's avatar 吴春

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

parents 30626681 0dc3135a
......@@ -147,5 +147,15 @@ namespace Edu.Model.Entity.Sell
/// </summary>
public decimal PeopleNumMoney { get; set; }
/// <summary>
/// 是否 部门共同奖金 1是
/// </summary>
public int IsCommonDept { get; set; }
/// <summary>
/// 订单业绩
/// </summary>
public decimal OrderSaleMoney { get; set; }
}
}
......@@ -92,5 +92,10 @@ namespace Edu.Model.Entity.Sell
/// </summary>
public decimal PeopleNumMoney { get; set; }
/// <summary>
/// 是否 部门共同奖金 1是
/// </summary>
public int IsCommonDept { get; set; }
}
}
......@@ -122,5 +122,15 @@ namespace Edu.Model.Entity.Sell
/// </summary>
public string ZGAwardRule { get; set; }
}
/// <summary>
/// 是否部门共同奖金
/// </summary>
public int IsDeptAward { get; set; }
/// <summary>
/// 部门分配规则
/// </summary>
public string DeptAwardAllotRule { get; set; }
}
}
......@@ -73,5 +73,10 @@ namespace Edu.Model.ViewModel.Sell
/// 总提成数
/// </summary>
public decimal TotalMoney { get; set; }
/// <summary>
/// 使用规则ID
/// </summary>
public int RuleId { get; set; }
}
}
\ No newline at end of file
......@@ -41,6 +41,11 @@ namespace Edu.Model.ViewModel.Sell
/// 业绩比例
/// </summary>
public List<AchievementsRateModel> ZGAwardList { get; set; }
/// <summary>
/// 部门分配规则
/// </summary>
public List<DeptAllotModel> DeptAwardList { get; set; }
}
/// <summary>
......@@ -60,4 +65,22 @@ namespace Edu.Model.ViewModel.Sell
/// </summary>
public decimal Rate { get; set; }
}
/// <summary>
/// 共同奖金包分配
/// </summary>
public class DeptAllotModel {
/// <summary>
/// 人员ID
/// </summary>
public int EmpId { get; set; }
/// <summary>
/// 人员姓名
/// </summary>
public string EmName { get; set; }
/// <summary>
/// 分配比例
/// </summary>
public decimal Rate { get; set; }
}
}
\ No newline at end of file
......@@ -22,6 +22,7 @@ using Edu.Repository.Log;
using Edu.Repository.Sell;
using Edu.Repository.StudyAbroad;
using Edu.Repository.User;
using MongoDB.Driver;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
......@@ -172,6 +173,11 @@ namespace Edu.Module.Course
{
item.ZGAwardList = JsonHelper.DeserializeObject<List<AchievementsRateModel>>(item.ZGAwardRule);
}
item.DeptAwardList = new List<DeptAllotModel>();
if (!string.IsNullOrEmpty(item.DeptAwardAllotRule))
{
item.DeptAwardList = JsonHelper.DeserializeObject<List<DeptAllotModel>>(item.DeptAwardAllotRule);
}
item.CourseList = courseList.Where(x => ("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
item.EmpList = empList.Where(x => ("," + item.EmpIds + ",").Contains("," + x.Id + ",")).ToList();
item.ChildEmpList = new List<Employee_ViewModel>();
......@@ -242,6 +248,8 @@ namespace Edu.Module.Course
{ nameof(RB_Sell_Achievements_Rule_ViewModel.ExtraMoney), demodel.ExtraMoney},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.EnableZGAward), demodel.EnableZGAward},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.ZGAwardRule), demodel.ZGAwardRule},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.DeptAwardAllotRule), demodel.DeptAwardAllotRule},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.IsDeptAward), demodel.IsDeptAward},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
......@@ -322,11 +330,54 @@ namespace Edu.Module.Course
var list = sell_Achievements_DetailsRepository.GetSellCommissionUserList(dmodel);
if (list.Any())
{
//首先 根据共同奖金分配规则 分配
if (list.Where(x => x.IsCommonDept == 1).Any())
{
var CommionList = list.Where(x => x.IsCommonDept == 1).ToList();
list = list.Where(x => x.IsCommonDept != 1).ToList();
int TotalNum = CommionList.Sum(x => x.StudentCount);
decimal Money = CommionList.Sum(x => x.CurrentPeriodMoney);
decimal PeopleMoney = CommionList.Sum(x => x.PeopleNumMoney);
//开始拆分
int ruleId = CommionList.FirstOrDefault()?.RuleId ?? 0;
if (ruleId > 0)
{
//查询规则
var ruleModel = sell_Achievements_RuleRepository.GetEntity<RB_Sell_Achievements_Rule_ViewModel>(ruleId);
ruleModel.DeptAwardList = new List<DeptAllotModel>();
if (!string.IsNullOrEmpty(ruleModel.DeptAwardAllotRule))
{
ruleModel.DeptAwardList = JsonHelper.DeserializeObject<List<DeptAllotModel>>(ruleModel.DeptAwardAllotRule);
}
foreach (var item in ruleModel.DeptAwardList)
{
list.Add(new RB_Sell_Achievements_Details_ViewModel()
{
UserId = item.EmpId,
Depart_Id = -1,
School_Id = -1,
IsCommonDept = 1,
StudentCount = TotalNum,
CurrentPeriodMoney = Math.Round(Money * item.Rate / 100, 2, MidpointRounding.AwayFromZero),
PeopleNumMoney = Math.Round(PeopleMoney * item.Rate / 100, 2, MidpointRounding.AwayFromZero),
});
}
}
}
//查询用户 部门 校区
string userIds = string.Join(",", list.Select(x => x.UserId).Distinct());
string userIds = string.Join(",", list.Select(x => x.UserId).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds });
foreach (var item in list.Where(x => x.Depart_Id == -1 || x.School_Id == -1))
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.Depart_Id = umodel.Dept_Id;
item.School_Id = umodel.School_Id;
}
string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct());
string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds });
var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds });
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds });
......@@ -421,7 +472,13 @@ namespace Edu.Module.Course
foreach (var item in list)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
if (item.IsCommonDept == 1) {
item.UserName = "-";
}
else
{
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
}
item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? "";
item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? "";
item.ClassName = clist.Where(x => x.ClassId == item.ClassId).FirstOrDefault()?.ClassName ?? "";
......@@ -466,7 +523,14 @@ namespace Edu.Module.Course
foreach (var item in list)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
if (item.IsCommonDept == 1)
{
item.UserName = "-";
}
else
{
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
}
item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? "";
item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? "";
item.ClassName = clist.Where(x => x.ClassId == item.ClassId).FirstOrDefault()?.ClassName ?? "";
......@@ -767,7 +831,7 @@ namespace Edu.Module.Course
string SchoolIds = string.Join(",", rulelist.Select(x => x.SchoolIds));
//查询 班级订单 1.尾款收齐
string SDate = "2024-08-01";
string SDate = "2024-01-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>();//需要新增当月的
......@@ -776,14 +840,6 @@ namespace Edu.Module.Course
//查询历史所有 退费的单子 汇总金额计入其当月的业绩计算 并回扣所有订单的提成(是 2023-10月这一期开始 回扣提成 ) PeriodId =64 开始扣提成
//首先查询 所有退费的单子
var ROrderList = sell_Achievements_EmpRepository.GetAllRefundWaitPendingList(userInfo.Group_Id);
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())
......@@ -802,6 +858,11 @@ namespace Edu.Module.Course
{
item.ZGAwardList = JsonHelper.DeserializeObject<List<AchievementsRateModel>>(item.ZGAwardRule);
}
item.DeptAwardList = new List<DeptAllotModel>();
if (!string.IsNullOrEmpty(item.DeptAwardAllotRule))
{
item.DeptAwardList = JsonHelper.DeserializeObject<List<DeptAllotModel>>(item.DeptAwardAllotRule);
}
}
//根据订单 查询同行返佣
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
......@@ -812,6 +873,24 @@ namespace Edu.Module.Course
orderList = orderList.Where(x => cbdOrderlist.Contains(x.OrderId)).ToList();//都是已返佣的
#endregion
#region 反查续费订单的首单市场人员
//暂时 所有续费 都算人头奖励 (09.02 跟 张艳确认 所有续费都算市场人头)
if (orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder && x.Refund <= 0).Any())
{
var xfOrderList = orderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder && x.Refund <= 0).ToList();
string xforderIds = string.Join(",", xfOrderList.Select(x => x.OrderId));
var xfStuList = orderRepository.GetXFOrderFirstEnterList(userInfo.Group_Id, xforderIds);
foreach (var item in xfOrderList)
{
int stuId = xfStuList.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.Q_StudentId ?? 0;
int enterId = xfStuList.Where(x => x.Q_StudentId == stuId).OrderBy(x => x.OrderId).FirstOrDefault()?.EnterID ?? 0;
if (enterId != item.EnterID) { item.EnterID = enterId; }
}
}
#endregion
#region 老师订单5.10日需求
//ld2023-03-21 转介绍学生的老师 有2%提成 留学订单200
......@@ -888,7 +967,7 @@ 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;
decimal orderYJ = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.TextbookFee - bdCommission;
if (qitem.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder)
{
//续费订单
......@@ -966,7 +1045,7 @@ namespace Edu.Module.Course
{
var orderChildList = teaOrderList.Where(x => x.HelpEnterId == teaId).ToList();
//计算老师业绩
decimal YjMoney = orderChildList.Sum(x => x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.CoursewareFee - x.TextbookFee);
decimal YjMoney = orderChildList.Sum(x => x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.TextbookFee);
//根据业绩所在区间 查询比例
var rateModel = item.RateList.Where(x => x.StartValue < YjMoney && (x.EndValue >= YjMoney || x.EndValue == -1)).FirstOrDefault();
if (rateModel != null)
......@@ -975,7 +1054,7 @@ namespace Edu.Module.Course
{
//当前订单的业绩
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;
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.TextbookFee;
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
EmpId = qitem.HelpEnterId,
......@@ -1022,13 +1101,18 @@ namespace Edu.Module.Course
}
//计算当月人头数 计算人头奖励 包含续费的
int PeopleNum = sellOrderList.Where(x => x.Refund <= 0).Count();
var RenewOrder = sellOrderList.Where(x => x.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder).ToList();
sellOrderList = sellOrderList.Where(x => x.JoinType != Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder).ToList();//市场排除续费订单
if (sellOrderList.Any())
{
if (item.IsDeptAward == 1)
{
sellOrderList.ForEach(x => x.EnterID = item.DeptAwardList.OrderByDescending(x => x.Rate).FirstOrDefault().EmpId);// 全部放到拿最多的那个人身上
}
//计算一下 退费金额,要算入当期的业绩里
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 TotalYj = sellOrderList.Sum(x => x.HelpEnterId > 0 ? (x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.TextbookFee) / 2 : x.PreferPrice - x.DiscountMoney - x.PlatformTax - x.TextbookFee);
//计算订单返佣
decimal bdCommTotal = bdList.Where(x => sellOrderList.Select(x => x.OrderId).Contains(x.OrderId)).Sum(x => x.CommissionMoeny);
TotalYj -= bdCommTotal;// 需要减去 返佣的部分
......@@ -1055,7 +1139,7 @@ namespace Edu.Module.Course
//当前订单的业绩
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 - qitem.PlatformTax - qitem.CoursewareFee - qitem.TextbookFee - bdCommission;
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.TextbookFee - bdCommission;
if (qitem.HelpEnterId > 0) { orderYj = orderYj / 2; }
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
......@@ -1074,6 +1158,7 @@ namespace Edu.Module.Course
OrderSaleMoney = orderYj,
PeopleNumMoney = qitem.Refund <= 0 ? awardModel?.Rate ?? 0 : 0,
Type = 1,
IsCommonDept = item.IsDeptAward,
Remark = "当月业绩:" + TotalYj + (TRefund != 0 ? "(其中退费:" + TRefund + ")" : "") + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj + (qitem.HelpEnterId > 0 ? ";此单由试听转化,销售额减半计算" : "") + ";当月部门人头:" + PeopleNum + "人,人头奖励:" + (awardModel?.Rate ?? 0)
});
}
......@@ -1085,7 +1170,7 @@ namespace Edu.Module.Course
{
//当前订单的业绩
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;
decimal orderYj = qitem.PreferPrice - qitem.DiscountMoney - qitem.PlatformTax - qitem.TextbookFee - bdCommission;
if (qitem.HelpEnterId > 0) { orderYj = orderYj / 2; }
AchEmpList.Add(new RB_Sell_Achievements_Emp_ViewModel()
{
......@@ -1104,6 +1189,7 @@ namespace Edu.Module.Course
OrderSaleMoney = orderYj,
PeopleNumMoney = qitem.Refund <= 0 ? awardModel?.Rate ?? 0 : 0,
Type = 1,
IsCommonDept = item.IsDeptAward,
Remark = "当月业绩:" + TotalYj + (TRefund != 0 ? "(其中退费:" + TRefund + ")" : "") + ";订单b2b返佣:" + bdCommission + ";订单业绩:" + orderYj + (qitem.HelpEnterId > 0 ? ";此单由试听转化,销售额减半计算" : "") + ";当月部门人头:" + PeopleNum + "人,人头奖励:" + (awardModel?.Rate ?? 0)+",业绩不达标,只发放人头奖励"
});
}
......@@ -1142,6 +1228,40 @@ namespace Edu.Module.Course
}
}
// 续费算 市场部 人头 (暂时确认为 所有的 续费都算)
if (RenewOrder.Any()) {
var awardModel = item.ZGAwardList.Where(x => x.StartValue <= PeopleNum && (x.EndValue >= PeopleNum || x.EndValue == -1)).FirstOrDefault();
//没有提成 只有人头奖励
if ((awardModel?.Rate ?? 0) > 0)
{
//没有达标提成 只发放 人头奖励
foreach (var qitem in RenewOrder)
{
//当前订单的业绩
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 = 0,
PushMoney = 0,
RuleId = item.Id,
SaleMoney = 0,
OrderSaleMoney = 0,
PeopleNumMoney = awardModel?.Rate ?? 0,
Type = 1,
IsCommonDept = item.IsDeptAward,
Remark = "当月部门人头:" + PeopleNum + "人,人头奖励:" + (awardModel?.Rate ?? 0) + ",续费订单,只发放人头奖励"
});
}
}
}
#region 屏蔽
//if (item.ExtraMoney > 0)
//{//有效到访额外奖励
......@@ -1497,10 +1617,11 @@ namespace Edu.Module.Course
GiveOutMoney = Math.Round((qitem.OrderMoney - qitem.OrderSaleMoney) * qitem.Rate / 100, 2, MidpointRounding.AwayFromZero),
GiveOutState = 1,
IsDept = qitem.IsDept,
IsCommonDept = qitem.IsCommonDept,
PeriodsId = 0,
SaleMoney = 0,
Remark = "退款回扣提成,此单" + month + "退款:" + (qitem.OrderMoney - qitem.OrderSaleMoney),
OrderSaleMoney = qitem.OrderMoney,
OrderSaleMoney = qitem.OrderMoney - qitem.OrderSaleMoney,
PeopleNumMoney = qitem.Refund > 0 ? 0 - qitem.PeopleNumMoney : 0
});
}
......@@ -1636,7 +1757,8 @@ namespace Edu.Module.Course
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id,
PeopleNumMoney = 0
PeopleNumMoney = 0,
IsCommonDept = AchModel.IsCommonDept
});
AchModel.GiveOutMoney = SaleCommissioned;
......@@ -1674,7 +1796,8 @@ namespace Edu.Module.Course
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id,
PeopleNumMoney = AchModel.PeopleNumMoney
PeopleNumMoney = AchModel.PeopleNumMoney,
IsCommonDept = AchModel.IsCommonDept
});
AchModel.GiveOutMoney = YFCommission;
AchModel.GiveOutState = 1;
......@@ -1706,10 +1829,10 @@ namespace Edu.Module.Course
{
//查询该订单 已发提成记录
//先查询销售的
var salelist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == AchModel.EmpId && x.UserType == AchModel.Type && x.IsDept == AchModel.IsDept).ToList();
if (salelist.Any())
//var salelist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == AchModel.EmpId && x.UserType == AchModel.Type && x.IsDept == AchModel.IsDept).ToList();
if (false)//salelist.Any())
{
SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, YFCommission, salelist, AchModel, true);
//SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, YFCommission, salelist, AchModel, true);
}
else
{
......@@ -1738,7 +1861,9 @@ namespace Edu.Module.Course
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id,
PeopleNumMoney = AchModel.PeopleNumMoney
PeopleNumMoney = AchModel.PeopleNumMoney,
IsCommonDept = AchModel.IsCommonDept,
OrderSaleMoney = AchModel.OrderSaleMoney
});
AchModel.GiveOutMoney = FirstMoney;
if (ruleModel.FirstRate == 100)
......@@ -1752,32 +1877,39 @@ namespace Edu.Module.Course
}
}
else {
decimal FirstMoney = Math.Round(YFCommission * ruleModel.FirstRate / 100, 2, MidpointRounding.AwayFromZero);
CurrentList.Add(new RB_Sell_Achievements_Details_ViewModel()
var salelist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == AchModel.EmpId && x.UserType == AchModel.Type && x.IsDept == AchModel.IsDept).ToList();
if (!salelist.Any())
{
UserId = AchModel.EmpId,
OrderId = item.OrderId,
CurrentPeriodMoney = 0,
IsFirstCommission = 1,
Remark = "未达到发放标准,待发提成:" + FirstMoney + ",待发人头奖励:" + AchModel.PeopleNumMoney,
ClassId = item.ClassId,
ClassType = classModel.ClassType,
PeriodId = 0,
Periods = month,
CommissionMoney = YFCommission,
StudentCount = item.GuestNum,
TotalHours = Convert.ToInt32(TotalHours),
TotalLearn = Convert.ToInt32(TotalLearn),
CurrentHours = -1,//这种首次发放提成的 没有课时消费
GiveOutMoney = 0,
FirstRate = 0,
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id,
PeopleNumMoney = 0
});
decimal FirstMoney = Math.Round(YFCommission * ruleModel.FirstRate / 100, 2, MidpointRounding.AwayFromZero);
CurrentList.Add(new RB_Sell_Achievements_Details_ViewModel()
{
UserId = AchModel.EmpId,
OrderId = item.OrderId,
CurrentPeriodMoney = 0,
IsFirstCommission = 1,
Remark = "未达到发放标准,待发提成:" + FirstMoney + ",待发人头奖励:" + AchModel.PeopleNumMoney,
ClassId = item.ClassId,
ClassType = classModel.ClassType,
PeriodId = 0,
Periods = month,
CommissionMoney = YFCommission,
StudentCount = item.GuestNum,
TotalHours = Convert.ToInt32(TotalHours),
TotalLearn = Convert.ToInt32(TotalLearn),
CurrentHours = -1,//这种首次发放提成的 没有课时消费
GiveOutMoney = 0,
FirstRate = 0,
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id,
PeopleNumMoney = 0,
IsCommonDept = AchModel.IsCommonDept,
OrderSaleMoney = AchModel.OrderSaleMoney
});
}
}
}
#endregion
......@@ -1835,6 +1967,7 @@ namespace Edu.Module.Course
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;
detailModel.OrderSaleMoney = qitem.OrderMoney - qitem.OrderSaleMoney;
CurrentList.Add(JsonHelper.DeserializeObject<RB_Sell_Achievements_Details_ViewModel>(JsonHelper.Serialize(detailModel)));
}
}
......
......@@ -1312,6 +1312,21 @@ group by o.OrderId
;";
return Get<RB_Order_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取续费订单的 首单市场人员
/// </summary>
/// <param name="groupId"></param>
/// <param name="orderIds"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetXFOrderFirstEnterList(int groupId, string orderIds) {
string sql = $@"SELECT o.OrderId,o.EnterID,t.Student_Id as Q_StudentId FROM rb_student_orderguest t
left join rb_student_orderguest t2 on t.Student_Id = t2.Student_Id
left join rb_order o on t2.OrderId =o.OrderId
WHERE o.Group_Id={groupId} and t.OrderId in({orderIds}) and o.OrderState =1 and o.PreferPrice>0
";
return Get<RB_Order_ViewModel>(sql).ToList();
}
#endregion
/// <summary>
......
......@@ -65,6 +65,10 @@ namespace Edu.Repository.Sell
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsDept)} ={demodel.IsDept}";
}
if (demodel.IsCommonDept > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsCommonDept)} ={demodel.IsCommonDept}";
}
if (demodel.RelatedId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.RelatedId)} ={demodel.RelatedId}";
......@@ -119,6 +123,10 @@ namespace Edu.Repository.Sell
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsDept)} ={demodel.IsDept}";
}
if (demodel.IsCommonDept > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsCommonDept)} ={demodel.IsCommonDept}";
}
string sql = $@" select r.*,
......@@ -175,6 +183,10 @@ from RB_Sell_Achievements_Details r where {where} order by r.Id asc";
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsDept)} ={demodel.IsDept}";
}
if (demodel.IsCommonDept > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsCommonDept)} ={demodel.IsCommonDept}";
}
string sql = $@" select r.* from RB_Sell_Achievements_Details r where {where} order by r.Id desc";
return GetPage<RB_Sell_Achievements_Details_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
......@@ -223,8 +235,13 @@ 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,sum(r.PeopleNumMoney) as PeopleNumMoney
from RB_Sell_Achievements_Details r where {where} group by r.UserId,r.Depart_Id,r.School_Id";
string sql = $@" select r.UserId,r.Depart_Id,r.School_Id,r.IsCommonDept,p.RuleId,sum(r.StudentCount) as StudentCount,sum(r.CurrentPeriodMoney + r.DeductionMoney) as CurrentPeriodMoney,sum(r.PeopleNumMoney) as PeopleNumMoney
from RB_Sell_Achievements_Details r
left join(
select e.OrderId,e.EmpId,max(e.RuleId) as RuleId from rb_sell_achievements_emp e group by e.OrderId,e.EmpId
) p on r.OrderId = p.OrderId and r.UserId = p.EmpId
where {where} group by r.UserId,r.Depart_Id,r.School_Id,r.IsCommonDept";
return Get<RB_Sell_Achievements_Details_ViewModel>(sql).ToList();
}
......@@ -288,6 +305,10 @@ GROUP BY PeriodId ";
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsDept)} ={demodel.IsDept}";
}
if (demodel.IsCommonDept > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.IsCommonDept)} ={demodel.IsCommonDept}";
}
string sql = $@" select sum(r.CurrentPeriodMoney + r.DeductionMoney + r.PeopleNumMoney) from RB_Sell_Achievements_Details r where {where}";
......
......@@ -188,9 +188,10 @@ 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.Refund - o.TextbookFee) as OrderMoney,o.Refund FROM rb_sell_achievements_emp e
string sql = $@"SELECT e.*,(o.Income - o.Refund - o.TextbookFee - IFNULL(r.CommissionMoeny,0)) 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 o.CreateTime >='2024-08-01' and e.GiveOutState =1 and (e.Type=2 or (e.Type=1 and e.IsDept=1)) and o.PreferPrice >0 and e.OrderSaleMoney <> (o.Income - o.Refund - o.TextbookFee) and e.OrderId>0 and e.Remark not like '%退款回扣%'
left join rb_order_returncomission r on o.OrderId =r.OrderId and r.CommissionType =1
WHERE e.Group_Id={group_Id} and o.CreateTime >='2024-09-01' and e.GiveOutState =1 and (e.Type=2 or (e.Type=1 and e.IsDept=1)) and o.PreferPrice >0 and e.OrderSaleMoney <> (o.Income - o.Refund - o.TextbookFee - IFNULL(r.CommissionMoeny,0)) and e.OrderId>0 and e.Remark not like '%退款回扣%'
ORDER BY e.OrderId ASC ";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).ToList();
}
......
......@@ -72,6 +72,8 @@ namespace Edu.WebApi.Controllers.Course
x.ExtraMoney,
x.EnableZGAward,
x.ZGAwardList,
x.DeptAwardList,
x.IsDeptAward,
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss")
}));
}
......@@ -150,6 +152,17 @@ namespace Edu.WebApi.Controllers.Course
else {
demodel.ZGAwardRule = "";
}
if (demodel.IsDeptAward == 1)
{
if (demodel.DeptAwardList == null || !demodel.DeptAwardList.Any())
{
return ApiResult.ParamIsNull("请传递部门共同奖金分配规则");
}
demodel.DeptAwardAllotRule = JsonHelper.Serialize(demodel.DeptAwardList);
}
else {
demodel.DeptAwardAllotRule = "";
}
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
......@@ -266,7 +279,8 @@ namespace Edu.WebApi.Controllers.Course
x.UserName,
x.StudentCount,
x.CurrentPeriodMoney,
x.PeopleNumMoney
x.PeopleNumMoney,
x.IsCommonDept
}));
}
......@@ -293,7 +307,7 @@ namespace Edu.WebApi.Controllers.Course
x.Depart_Id,
x.DeptName,
x.UserId,
x.UserName,
UserName = x.IsCommonDept == 1 ? "-" : x.UserName,
x.ClassId,
x.ClassName,
x.ClassNo,
......@@ -315,7 +329,9 @@ namespace Edu.WebApi.Controllers.Course
YFMoney = x.CurrentPeriodMoney + x.DeductionMoney,
x.UserType,
x.IsDept,
x.PeopleNumMoney
x.PeopleNumMoney,
x.IsCommonDept,
x.OrderSaleMoney
}));
}
......@@ -363,7 +379,9 @@ namespace Edu.WebApi.Controllers.Course
YFMoney = x.CurrentPeriodMoney + x.DeductionMoney,
x.UserType,
x.IsDept,
x.PeopleNumMoney
x.PeopleNumMoney,
x.IsCommonDept,
x.OrderSaleMoney
}));
}
......@@ -412,7 +430,9 @@ namespace Edu.WebApi.Controllers.Course
YFMoney = x.CurrentPeriodMoney + x.DeductionMoney,
x.UserType,
x.IsDept,
x.PeopleNumMoney
x.PeopleNumMoney,
x.IsCommonDept,
x.OrderSaleMoney
})
};
return ApiResult.Success("", pageModel);
......@@ -443,6 +463,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 },
new ExcelColumn(value: "首次发放") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
......@@ -473,8 +494,9 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: item.DeptName){ },
new ExcelColumn(value: item.UserType == 1?"市场":item.UserType ==2?"顾问":"教师"){ },
new ExcelColumn(value: item.UserName){ },
new ExcelColumn(value: item.IsDept==1?"部门":"个人"){ },
new ExcelColumn(value: item.IsCommonDept==1?"部门":"个人"){ },
new ExcelColumn(value: item.ClassNo){ },
new ExcelColumn(value: item.OrderSaleMoney.ToString("#0.00")){ },
new ExcelColumn(value: item.ClassName){ },
new ExcelColumn(value: item.ClassTypeName){ },
new ExcelColumn(value: item.StudentCount.ToString()){ },
......
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