Commit 0e52f63d authored by 黄奎's avatar 黄奎

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

parents 5b0cf61f a588e7ae
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 业绩提成抵扣明细实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Achievements_Deduction
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 订单id
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 来源id
/// </summary>
public int SourceId { get; set; }
/// <summary>
/// 类型 1抵扣
/// </summary>
public int Type { get; set; }
/// <summary>
/// 抵扣金额
/// </summary>
public decimal DeductionMoney { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 集团id
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 周期id
/// </summary>
public int PeriodsId { get; set; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 业绩提成发放明细实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Achievements_Details
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 关联用户
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 班级id
/// </summary>
public int ClassId { get; set; }
/// <summary>
/// 班级类型 1学生班 2社会班
/// </summary>
public int ClassType { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 父级ID
/// </summary>
public int PeriodId { get; set; }
/// <summary>
/// 期号
/// </summary>
public string Periods { get; set; }
/// <summary>
/// 提成总金额
/// </summary>
public decimal CommissionMoney { get; set; }
/// <summary>
/// 部门id
/// </summary>
public int Depart_Id { get; set; }
/// <summary>
/// 校区id
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 集团id
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 备注, 记录抵扣金额等等
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 学生数量
/// </summary>
public int StudentCount { get; set; }
/// <summary>
/// 当期提成金额
/// </summary>
public decimal CurrentPeriodMoney { get; set; }
/// <summary>
/// 是否首次提成 1是 2否
/// </summary>
public int IsFirstCommission { get; set; }
/// <summary>
/// 总课时
/// </summary>
public int TotalHours { get; set; }
/// <summary>
/// 累计消费课时
/// </summary>
public int TotalLearn { get; set; }
/// <summary>
/// 当期课时消耗
/// </summary>
public int CurrentHours { get; set; }
/// <summary>
/// 累计已发放金额
/// </summary>
public decimal GiveOutMoney { get; set; }
/// <summary>
/// 抵扣订单
/// </summary>
public int DeductionOrder { get; set; }
/// <summary>
/// 抵扣金额
/// </summary>
public decimal DeductionMoney { get; set; }
/// <summary>
/// 确认状态 0-未确认,1-已确认
/// </summary>
public int SureStatus { get; set; }
/// <summary>
/// 类型 1市场、2顾问、3教师
/// </summary>
public int UserType { get; set; }
/// <summary>
/// 相关的 achempId(订单人员表)
/// </summary>
public int RelatedId { get; set; }
/// <summary>
/// 是否部门提成 1是 2否
/// </summary>
public int IsDept { get; set; }
/// <summary>
/// 首次发放比例
/// </summary>
public decimal FirstRate { get; set; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 订单关联提成实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Achievements_Emp
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 类型 1市场、2顾问、3教师
/// </summary>
public int Type { get; set; }
/// <summary>
/// 使用规则ID
/// </summary>
public int RuleId { get; set; }
/// <summary>
/// 提成人
/// </summary>
public int EmpId { get; set; }
/// <summary>
/// 提成比例
/// </summary>
public decimal Rate { get; set; }
/// <summary>
/// 集团id
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 订单应发提成
/// </summary>
public decimal PushMoney { get; set; }
/// <summary>
/// 累计已发放金额
/// </summary>
public decimal GiveOutMoney { get; set; }
/// <summary>
/// 状态 1发放完毕 2未发放完毕
/// </summary>
public int GiveOutState { get; set; }
/// <summary>
/// 是否部门提成 1是 2否
/// </summary>
public int IsDept { get; set; }
/// <summary>
/// 开始的周期ID
/// </summary>
public int PeriodsId { get; set; }
/// <summary>
/// 销售额
/// </summary>
public decimal SaleMoney { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 业绩提成发放期数实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Achievements_Periods
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 期数
/// </summary>
public string Periods { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 累计金额
/// </summary>
public decimal SumPrice { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 关联财务单据ids
/// </summary>
public string Financials { get; set; }
/// <summary>
/// 已发放人员的列表
/// </summary>
public string EmpIds { get; set; }
/// <summary>
/// 这一期对应的所有的规则列表(防止退费后 比例变更)
/// </summary>
public string AdminRemark { get; set; }
}
}
...@@ -37,11 +37,6 @@ namespace Edu.Model.Entity.Sell ...@@ -37,11 +37,6 @@ namespace Edu.Model.Entity.Sell
/// </summary> /// </summary>
public string CourseIds { get; set; } public string CourseIds { get; set; }
/// <summary>
/// 提成方式 1课耗提成 2次月全提 3课程比例
/// </summary>
public int CommissionType { get; set; }
/// <summary> /// <summary>
/// 提成人员 /// 提成人员
/// </summary> /// </summary>
...@@ -52,6 +47,11 @@ namespace Edu.Model.Entity.Sell ...@@ -52,6 +47,11 @@ namespace Edu.Model.Entity.Sell
/// </summary> /// </summary>
public string ChildEmpIds { get; set; } public string ChildEmpIds { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary> /// <summary>
/// 集团编号 /// 集团编号
/// </summary> /// </summary>
...@@ -82,10 +82,20 @@ namespace Edu.Model.Entity.Sell ...@@ -82,10 +82,20 @@ namespace Edu.Model.Entity.Sell
/// </summary> /// </summary>
public decimal CourseRate { get; set; } public decimal CourseRate { get; set; }
/// <summary>
/// 首次发放比例
/// </summary>
public decimal FirstRate { get; set; }
/// <summary> /// <summary>
/// 业绩提成比例 json格式 /// 业绩提成比例 json格式
/// </summary> /// </summary>
public string Content { get; set; } public string Content { get; set; }
/// <summary>
/// 使用的校区
/// </summary>
public string SchoolIds { get; set; }
} }
} }
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 业绩提成抵扣扩展类
/// </summary>
[Serializable]
public class RB_Sell_Achievements_Deduction_ViewModel : RB_Sell_Achievements_Deduction
{
/// <summary>
/// 订单ids
/// </summary>
public string OrderIds { get; set; }
/// <summary>
/// 来源ids
/// </summary>
public string SourceIds { get; set; }
}
}
\ No newline at end of file
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 业绩提成期数明细实体类
/// </summary>
[Serializable]
public class RB_Sell_Achievements_Details_ViewModel : RB_Sell_Achievements_Details
{
/// <summary>
/// 用户名称
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 当前发放次数
/// </summary>
public int IssueNum { get; set; }
/// <summary>
/// 用户ids
/// </summary>
public string UserIds { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DeptName { get; set; }
/// <summary>
/// 校区名称
/// </summary>
public string SchoolName { get; set; }
/// <summary>
/// 班级名称
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 班号
/// </summary>
public string ClassNo { get; set; }
/// <summary>
/// 班级类型
/// </summary>
public string ClassTypeName { get; set; }
/// <summary>
/// 订单ids
/// </summary>
public string OrderIds { get; set; }
/// <summary>
/// 是否需抵扣 1是
/// </summary>
public int IsDeduction { get; set; }
/// <summary>
/// 期数
/// </summary>
public string PeriodsTime { get; set; }
/// <summary>
/// 总提成数
/// </summary>
public decimal TotalMoney { get; set; }
}
}
\ No newline at end of file
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 业绩提成关联扩展类
/// </summary>
[Serializable]
public class RB_Sell_Achievements_Emp_ViewModel : RB_Sell_Achievements_Emp
{
/// <summary>
/// 只查询正常的
/// </summary>
public int IsSelectNor { get; set; }
}
}
\ No newline at end of file
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 业绩提成期数实体类
/// </summary>
[Serializable]
public class RB_Sell_Achievements_Periods_ViewModel : RB_Sell_Achievements_Periods
{
/// <summary>
/// 校区id
/// </summary>
public int SchoolId { get; set; }
/// <summary>
/// 该校区提成
/// </summary>
public decimal SchooldCommission { get; set; }
/// <summary>
/// 周期ids
/// </summary>
public string PeriodsIds { get; set; }
}
}
\ No newline at end of file
...@@ -31,6 +31,11 @@ namespace Edu.Model.ViewModel.Sell ...@@ -31,6 +31,11 @@ namespace Edu.Model.ViewModel.Sell
/// 部门下人员列表 /// 部门下人员列表
/// </summary> /// </summary>
public List<Employee_ViewModel> ChildEmpList { get; set; } public List<Employee_ViewModel> ChildEmpList { get; set; }
/// <summary>
/// 校区名称
/// </summary>
public string SchoolName { get; set; }
} }
/// <summary> /// <summary>
...@@ -46,7 +51,7 @@ namespace Edu.Model.ViewModel.Sell ...@@ -46,7 +51,7 @@ namespace Edu.Model.ViewModel.Sell
/// </summary> /// </summary>
public decimal EndValue { get; set; } public decimal EndValue { get; set; }
/// <summary> /// <summary>
/// 提成比例 /// 提成比例 百分比
/// </summary> /// </summary>
public decimal Rate { get; set; } public decimal Rate { get; set; }
} }
......
...@@ -14,6 +14,7 @@ using Edu.Model.ViewModel.Log; ...@@ -14,6 +14,7 @@ using Edu.Model.ViewModel.Log;
using Edu.Model.ViewModel.Sell; using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User; using Edu.Model.ViewModel.User;
using Edu.Repository.Course; using Edu.Repository.Course;
using Edu.Repository.Customer;
using Edu.Repository.Finance; using Edu.Repository.Finance;
using Edu.Repository.Grade; using Edu.Repository.Grade;
using Edu.Repository.Log; using Edu.Repository.Log;
...@@ -54,6 +55,26 @@ namespace Edu.Module.Course ...@@ -54,6 +55,26 @@ namespace Edu.Module.Course
/// 时长顾问提成规则 /// 时长顾问提成规则
/// </summary> /// </summary>
private readonly RB_Sell_Achievements_RuleRepository sell_Achievements_RuleRepository = new RB_Sell_Achievements_RuleRepository(); private readonly RB_Sell_Achievements_RuleRepository sell_Achievements_RuleRepository = new RB_Sell_Achievements_RuleRepository();
/// <summary>
/// 业绩提成周期
/// </summary>
private readonly RB_Sell_Achievements_PeriodsRepository sell_Achievements_PeriodsRepository = new RB_Sell_Achievements_PeriodsRepository();
/// <summary>
/// 业绩提成明细
/// </summary>
private readonly RB_Sell_Achievements_DetailsRepository sell_Achievements_DetailsRepository = new RB_Sell_Achievements_DetailsRepository();
/// <summary>
/// 业绩提成抵扣
/// </summary>
private readonly RB_Sell_Achievements_DeductionRepository sell_Achievements_DeductionRepository = new RB_Sell_Achievements_DeductionRepository();
/// <summary>
/// 业绩提成关联表
/// </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>
/// 订单 /// 订单
...@@ -124,6 +145,11 @@ namespace Edu.Module.Course ...@@ -124,6 +145,11 @@ namespace Edu.Module.Course
if (!string.IsNullOrEmpty(empIds)) { if (!string.IsNullOrEmpty(empIds)) {
empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = groupId, QIds = empIds }); empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = groupId, QIds = empIds });
} }
string schooldIds = string.Join(",", list.Select(x => x.SchoolIds));
List<RB_School_ViewModel> slist = new List<RB_School_ViewModel>();
if (!string.IsNullOrEmpty(schooldIds)) {
slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = groupId, QSIds = schooldIds });
}
foreach (var item in list) { foreach (var item in list) {
item.RateList = new List<AchievementsRateModel>(); item.RateList = new List<AchievementsRateModel>();
...@@ -132,14 +158,43 @@ namespace Edu.Module.Course ...@@ -132,14 +158,43 @@ namespace Edu.Module.Course
} }
item.CourseList = courseList.Where(x => ("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList(); item.CourseList = courseList.Where(x => ("," + item.CourseIds + ",").Contains("," + x.CourseId + ",")).ToList();
item.EmpList = empList.Where(x => ("," + item.EmpIds + ",").Contains("," + x.Id + ",")).ToList(); item.EmpList = empList.Where(x => ("," + item.EmpIds + ",").Contains("," + x.Id + ",")).ToList();
item.ChildEmpList = new List<Employee_ViewModel>();
if (!string.IsNullOrEmpty(item.ChildEmpIds)) { if (!string.IsNullOrEmpty(item.ChildEmpIds)) {
item.ChildEmpList = empList.Where(x => ("," + item.ChildEmpIds + ",").Contains("," + x.Id + ",")).ToList(); item.ChildEmpList = empList.Where(x => ("," + item.ChildEmpIds + ",").Contains("," + x.Id + ",")).ToList();
} }
if (!string.IsNullOrEmpty(item.SchoolIds)) {
var sclist = slist.Where(x => ("," + item.SchoolIds + ",").Contains("," + x.SId + ",")).ToList();
item.SchoolName = string.Join(",", sclist.Select(x => x.SName));
}
} }
} }
return list; return list;
} }
/// <summary>
/// 删除规则
/// </summary>
/// <param name="ruleId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string DelSellAchievementsRule(int ruleId, UserInfo userInfo)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_Achievements_Rule_ViewModel.Status), 1},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.UpdateTime), DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Sell_Achievements_Rule_ViewModel.Id),
FiledValue = ruleId,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = sell_Achievements_RuleRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
/// <summary> /// <summary>
/// 新增 修改规则 /// 新增 修改规则
/// </summary> /// </summary>
...@@ -156,11 +211,12 @@ namespace Edu.Module.Course ...@@ -156,11 +211,12 @@ namespace Edu.Module.Course
{ nameof(RB_Sell_Achievements_Rule_ViewModel.Type), demodel.Type}, { nameof(RB_Sell_Achievements_Rule_ViewModel.Type), demodel.Type},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.CourseType), demodel.CourseType}, { nameof(RB_Sell_Achievements_Rule_ViewModel.CourseType), demodel.CourseType},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.CourseIds), demodel.CourseIds}, { nameof(RB_Sell_Achievements_Rule_ViewModel.CourseIds), demodel.CourseIds},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.CommissionType), demodel.CommissionType}, { nameof(RB_Sell_Achievements_Rule_ViewModel.FirstRate), demodel.FirstRate},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.EmpIds), demodel.EmpIds}, { nameof(RB_Sell_Achievements_Rule_ViewModel.EmpIds), demodel.EmpIds},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.ChildEmpIds), demodel.ChildEmpIds}, { nameof(RB_Sell_Achievements_Rule_ViewModel.ChildEmpIds), demodel.ChildEmpIds},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.CourseRate), demodel.CourseRate}, { nameof(RB_Sell_Achievements_Rule_ViewModel.CourseRate), demodel.CourseRate},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.Content), demodel.Content}, { nameof(RB_Sell_Achievements_Rule_ViewModel.Content), demodel.Content},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.SchoolIds), demodel.SchoolIds},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.UpdateBy), demodel.UpdateBy}, { nameof(RB_Sell_Achievements_Rule_ViewModel.UpdateBy), demodel.UpdateBy},
{ nameof(RB_Sell_Achievements_Rule_ViewModel.UpdateTime), demodel.UpdateTime}, { nameof(RB_Sell_Achievements_Rule_ViewModel.UpdateTime), demodel.UpdateTime},
}; };
...@@ -865,7 +921,7 @@ namespace Edu.Module.Course ...@@ -865,7 +921,7 @@ namespace Edu.Module.Course
var salelist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == item.EnterID).ToList(); var salelist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == item.EnterID).ToList();
if (salelist.Any()) if (salelist.Any())
{ {
SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, saleMoney, salelist, item.EnterID, true); //SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, saleMoney, salelist, item.EnterID, true);
} }
else else
{ {
...@@ -906,7 +962,7 @@ namespace Edu.Module.Course ...@@ -906,7 +962,7 @@ namespace Edu.Module.Course
var teacherlist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == item.HelpEnterId).ToList(); var teacherlist = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == item.HelpEnterId).ToList();
if (teacherlist.Any()) if (teacherlist.Any())
{ {
SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, teacherMoney, teacherlist, item.HelpEnterId, false); //SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, teacherMoney, teacherlist, item.HelpEnterId, false);
} }
else else
{ {
...@@ -1517,8 +1573,8 @@ namespace Edu.Module.Course ...@@ -1517,8 +1573,8 @@ namespace Edu.Module.Course
/// <param name="TotalHours"></param> /// <param name="TotalHours"></param>
/// <param name="saleMoney"></param> /// <param name="saleMoney"></param>
/// <param name="salelist"></param> /// <param name="salelist"></param>
/// <param name="EnterID"></param> /// <param name="empModel"></param>
private static void SetCommissionNext(string month, List<RB_Class_Check_ViewModel> CheckList, List<RB_Sell_Commission_Details_ViewModel> CurrentList, RB_Order_ViewModel item, RB_Class_ViewModel classModel, decimal TotalHours, decimal saleMoney, List<RB_Sell_Commission_Details_ViewModel> salelist, int EnterID, bool IsSale = true) private static void SetCommissionNext(string month, List<RB_Class_Check_ViewModel> CheckList, List<RB_Sell_Achievements_Details_ViewModel> CurrentList, RB_Order_ViewModel item, RB_Class_ViewModel classModel, decimal TotalHours, decimal saleMoney, List<RB_Sell_Achievements_Details_ViewModel> salelist, RB_Sell_Achievements_Emp_ViewModel empModel, bool IsSale = true)
{ {
var firstCommissionModel = salelist.Where(x => x.IsFirstCommission == 1).FirstOrDefault(); var firstCommissionModel = salelist.Where(x => x.IsFirstCommission == 1).FirstOrDefault();
//从最后一次发放提成开始计算 //从最后一次发放提成开始计算
...@@ -1545,7 +1601,6 @@ namespace Edu.Module.Course ...@@ -1545,7 +1601,6 @@ namespace Edu.Module.Course
DateTime ETime = Convert.ToDateTime(EndTime + "-01").AddMonths(1).AddDays(-1); DateTime ETime = Convert.ToDateTime(EndTime + "-01").AddMonths(1).AddDays(-1);
//以前的总发放提成 //以前的总发放提成
decimal oldCommission = salelist.Sum(x => x.CurrentPeriodMoney); decimal oldCommission = salelist.Sum(x => x.CurrentPeriodMoney);
decimal oldExtraCommission = salelist.Sum(x => x.CurrentExtraMoney);
//当期消费课时 //当期消费课时
decimal currentHours = CheckList.Where(x => x.OrderId == item.OrderId && x.MonthDate >= STime && x.MonthDate <= ETime).Sum(x => x.CurrentDeductionHours); decimal currentHours = CheckList.Where(x => x.OrderId == item.OrderId && x.MonthDate >= STime && x.MonthDate <= ETime).Sum(x => x.CurrentDeductionHours);
//当期累计消费课时 //当期累计消费课时
...@@ -1554,9 +1609,9 @@ namespace Edu.Module.Course ...@@ -1554,9 +1609,9 @@ namespace Edu.Module.Course
{ {
//课已完成 发放剩余所有的提成 //课已完成 发放剩余所有的提成
decimal currentMoney = saleMoney - oldCommission; decimal currentMoney = saleMoney - oldCommission;
CurrentList.Add(new RB_Sell_Commission_Details_ViewModel() CurrentList.Add(new RB_Sell_Achievements_Details_ViewModel()
{ {
UserId = EnterID, UserId = empModel.EmpId,
OrderId = item.OrderId, OrderId = item.OrderId,
CurrentPeriodMoney = currentMoney, CurrentPeriodMoney = currentMoney,
Remark = "最后一个月提成:总应发" + saleMoney + " - 累计已发" + oldCommission, Remark = "最后一个月提成:总应发" + saleMoney + " - 累计已发" + oldCommission,
...@@ -1566,21 +1621,19 @@ namespace Edu.Module.Course ...@@ -1566,21 +1621,19 @@ namespace Edu.Module.Course
PeriodId = 0, PeriodId = 0,
Periods = StartTime == EndTime ? StartTime : StartTime + "~" + EndTime, Periods = StartTime == EndTime ? StartTime : StartTime + "~" + EndTime,
CommissionMoney = saleMoney, CommissionMoney = saleMoney,
OtherMoney = IsSale ? item.ExtraRewardMoney : 0,
BackMoney = IsSale ? item.ExtraDeductMoney : 0,
StudentCount = item.GuestNum, StudentCount = item.GuestNum,
TotalHours = Convert.ToInt32(TotalHours), TotalHours = Convert.ToInt32(TotalHours),
TotalLearn = Convert.ToInt32(currentTHours), TotalLearn = Convert.ToInt32(currentTHours),
CurrentHours = Convert.ToInt32(currentHours), CurrentHours = Convert.ToInt32(currentHours),
IsContinueClass = item.RenewOrderId > 0 ? 1 : 0, GiveOutMoney = oldCommission,
GiveOutMoney = oldCommission + oldExtraCommission,
SalesRate = 0,
TeacherRate = 0,
AssistantRate = 0,
FirstRate = 0, FirstRate = 0,
DeductionMoney = 0, DeductionMoney = 0,
DeductionExtraMoney = 0 IsDept = empModel.IsDept,
UserType = empModel.Type,
RelatedId = empModel.Id
}); });
empModel.GiveOutMoney = saleMoney;
empModel.GiveOutState = 1;
} }
else else
{ {
...@@ -1605,9 +1658,9 @@ namespace Edu.Module.Course ...@@ -1605,9 +1658,9 @@ namespace Edu.Module.Course
Remark = "因当前应发提成:" + (FirstMoney + tHoursMoney) + ",已发累计提成:" + oldCommission + ",当期扣回:" + moreMoney; Remark = "因当前应发提成:" + (FirstMoney + tHoursMoney) + ",已发累计提成:" + oldCommission + ",当期扣回:" + moreMoney;
} }
#endregion #endregion
CurrentList.Add(new RB_Sell_Commission_Details_ViewModel() CurrentList.Add(new RB_Sell_Achievements_Details_ViewModel()
{ {
UserId = EnterID, UserId = empModel.EmpId,
OrderId = item.OrderId, OrderId = item.OrderId,
CurrentPeriodMoney = cHoursMoney < 0 ? 0 : cHoursMoney,//这里 如果是负数 要记得处理 (直接默认成0 记录为何0) CurrentPeriodMoney = cHoursMoney < 0 ? 0 : cHoursMoney,//这里 如果是负数 要记得处理 (直接默认成0 记录为何0)
Remark = Remark, Remark = Remark,
...@@ -1617,22 +1670,19 @@ namespace Edu.Module.Course ...@@ -1617,22 +1670,19 @@ namespace Edu.Module.Course
PeriodId = 0, PeriodId = 0,
Periods = StartTime == EndTime ? StartTime : StartTime + "~" + EndTime, Periods = StartTime == EndTime ? StartTime : StartTime + "~" + EndTime,
CommissionMoney = saleMoney, CommissionMoney = saleMoney,
OtherMoney = IsSale ? item.ExtraRewardMoney : 0,
BackMoney = IsSale ? item.ExtraDeductMoney : 0,
StudentCount = item.GuestNum, StudentCount = item.GuestNum,
TotalHours = Convert.ToInt32(TotalHours), TotalHours = Convert.ToInt32(TotalHours),
TotalLearn = Convert.ToInt32(currentTHours), TotalLearn = Convert.ToInt32(currentTHours),
CurrentHours = Convert.ToInt32(currentHours), CurrentHours = Convert.ToInt32(currentHours),
IsContinueClass = item.RenewOrderId > 0 ? 1 : 0, GiveOutMoney = oldCommission,
GiveOutMoney = oldCommission + oldExtraCommission,
SalesRate = 0,
TeacherRate = 0,
AssistantRate = 0,
FirstRate = 0, FirstRate = 0,
DeductionMoney = 0, DeductionMoney = 0,
DeductionExtraMoney = 0 IsDept = empModel.IsDept,
UserType = empModel.Type,
RelatedId = empModel.Id
}); });
empModel.GiveOutMoney = (cHoursMoney < 0 ? 0 : cHoursMoney) + oldCommission;
empModel.GiveOutState = 2;
} }
} }
/// <summary> /// <summary>
...@@ -1722,5 +1772,655 @@ namespace Edu.Module.Course ...@@ -1722,5 +1772,655 @@ namespace Edu.Module.Course
} }
#endregion #endregion
#region 业绩列表
/// <summary>
/// 生成业绩提成
/// </summary>
/// <param name="month"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetAchievementsCommissionInfo(string month, UserInfo userInfo)
{
//首先查询该月是否已创建
var plist = sell_Achievements_PeriodsRepository.GetList(new RB_Sell_Achievements_Periods_ViewModel() { Group_Id = userInfo.Group_Id, Periods = month });
if (plist.Any())
{
return "当月提成已创建";
}
//根据规则 分成 市场 顾问 老师
//查询规则列表
var rulelist = sell_Achievements_RuleRepository.GetList(new RB_Sell_Achievements_Rule_ViewModel() { Group_Id = userInfo.Group_Id });
string SchoolIds = string.Join(",", rulelist.Select(x => x.SchoolIds));
//查询 班级订单 1.尾款收齐
string SDate = month + "-01";
string EDate = Convert.ToDateTime(month + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
var orderList = orderRepository.GetAllAchievementsSendOrderList(userInfo.Group_Id, 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 });
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)
{
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(YjMoney * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
Type = 3,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney
});
}
}
}
}
foreach (var item in rulelist.Where(x => x.Type != 3)) {
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)
{
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(YjMoney * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney
});
}
}
}
}
//顾问
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)
{
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(YjMoney * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney
});
}
}
}
}
}
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)
{
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(YjMoney * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
Type = 1,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney
});
}
}
}
}
}
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)
{
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(YjMoney * rateModel.Rate / 100, 2, MidpointRounding.AwayFromZero),
RuleId = item.Id,
SaleMoney = YjMoney,
Type = 2,
Remark = "当月业绩:" + TotalYj + ";当月B2B返佣:" + bdMoney + ";当月老师提成:" + teacherMoney
});
}
}
}
}
}
}
}
}
if (AchEmpList.Any()) {
//先插入 拿到ID
foreach (var item in AchEmpList)
{
item.Id = sell_Achievements_EmpRepository.Insert(item);
}
}
//查询历史未发放完毕的
var oldAchEmpList = sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { Group_Id = userInfo.Group_Id, GiveOutState = 2, IsSelectNor = 1 });
if (oldAchEmpList.Any()) {
AchEmpList.AddRange(oldAchEmpList);
}
if (AchEmpList.Any())
{
#region 历史周期
List<RB_Sell_Achievements_Periods_ViewModel> historyList = new List<RB_Sell_Achievements_Periods_ViewModel>();
string periodsIds = string.Join(",", oldAchEmpList.Select(x => x.PeriodsId));
if (!string.IsNullOrEmpty(periodsIds)) {
historyList = sell_Achievements_PeriodsRepository.GetList(new RB_Sell_Achievements_Periods_ViewModel() { Group_Id = userInfo.Group_Id, PeriodsIds = periodsIds });
}
#endregion
#region 基础数据
string orderIds = string.Join(",", AchEmpList.Select(x => x.OrderId).Distinct());
orderList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel() { Group_Id = userInfo.Group_Id, QOrderIds = orderIds });
//查询所有的人员
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();
saleIdList.AddRange(teacherIdList);
var userIds = string.Join(",", saleIdList);
var UserList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = userInfo.Group_Id, QIds = userIds });
//查询班级信息
string classIds = string.Join(",", orderList.Select(x => x.ClassId).Distinct());
var clist = classRepository.GetClassListRepository(new RB_Class_ViewModel() { Group_Id = userInfo.Group_Id, Q_ClassIds = classIds });
//查询订单下所有学生 已完成课时
var CheckList = class_CheckRepository.GetClassStudentHoursListForOrderMonth(userInfo.Group_Id, orderIds);//使用月份统计的 方便下面每月消费课时计算
//查询订单下所有学员信息
var glist = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { Group_Id = userInfo.Group_Id, OrderIds = orderIds });
//查询这些订单 已发放提成记录
var dlist = sell_Achievements_DetailsRepository.GetList(new RB_Sell_Achievements_Details_ViewModel() { Group_Id = userInfo.Group_Id, OrderIds = orderIds });
#endregion
#region 提成明细
List<RB_Sell_Achievements_Details_ViewModel> CurrentList = new List<RB_Sell_Achievements_Details_ViewModel>();//当期的提成数据
foreach (var item in orderList)
{
foreach (var AchModel in AchEmpList.Where(x => x.OrderId == item.OrderId))
{
var classModel = clist.Where(x => x.ClassId == item.ClassId).FirstOrDefault();
if (classModel == null) { break; }
//当前已发提成
decimal SaleCommissioned = dlist.Where(x => x.OrderId == item.OrderId && x.UserId == AchModel.EmpId && x.UserType == AchModel.Type && x.IsDept == AchModel.IsDept).Sum(x => x.CurrentPeriodMoney);
//订单应发提成
decimal YFCommission = AchModel.PushMoney;
if (YFCommission == 0 && SaleCommissioned == 0)
{
break;
}
#region 计算课时
var g3list = glist.Where(x => x.OrderId == item.OrderId).ToList();
//查询这几个学生累计课时
decimal TotalLearn = CheckList.Where(x => x.OrderId == item.OrderId && x.MonthDate <= Convert.ToDateTime(EDate)).Sum(x => x.CurrentDeductionHours);//累计消费课时 (要查询当前发放提成日期) ld 07-02调整
decimal TotalHours = g3list.Sum(x => x.TotalHours);// 直接根据学生表 总课时计算 (必须签到课时 = 总课时 才发完最后一个月的)
#endregion
if (YFCommission == SaleCommissioned)
{
//正好提成已发放完成 直接更新 订单 已发放Ok
AchModel.GiveOutMoney = YFCommission;
AchModel.GiveOutState = 1;
}
else if (YFCommission < SaleCommissioned)
{
//可能因为调整应收 导致提成多发 需要补回来
decimal BMoney = YFCommission - SaleCommissioned;
CurrentList.Add(new RB_Sell_Achievements_Details_ViewModel()
{
UserId = AchModel.EmpId,
OrderId = item.OrderId,
CurrentPeriodMoney = BMoney,
IsDeduction = 1,
Remark = "当前提成应发:" + YFCommission + ",已实发:" + SaleCommissioned + ",应补金额:" + BMoney,
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 = SaleCommissioned,
FirstRate = 0,
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id
});
AchModel.GiveOutMoney = SaleCommissioned;
AchModel.GiveOutState = 2;
}
else
{
#region 班级提成
//查询是否订单下所有学员都已退学
var g2list = glist.Where(x => x.OrderId == item.OrderId).ToList();
if (g2list.Where(x => x.GuestState == GuestStateEnum.DropOut).Count() == item.GuestNum)
{
//所有学生都退学了 直接计算提成 全部一次性发放
//销售全占
decimal BMoney = YFCommission - SaleCommissioned;
CurrentList.Add(new RB_Sell_Achievements_Details_ViewModel()
{
UserId = AchModel.EmpId,
OrderId = item.OrderId,
CurrentPeriodMoney = BMoney,
Remark = "当前订单学生退学,直接发放剩余提成:" + BMoney,
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 = SaleCommissioned,
FirstRate = 0,
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id
});
AchModel.GiveOutMoney = YFCommission;
AchModel.GiveOutState = 1;
}
else
{
//查询当期所使用的规则
RB_Sell_Achievements_Rule_ViewModel ruleModel;
if (AchModel.PeriodsId > 0)
{
var pmodel = historyList.Where(x => x.Id == AchModel.PeriodsId).FirstOrDefault();
var rList = JsonHelper.DeserializeObject<List<RB_Sell_Achievements_Rule_ViewModel>>(pmodel.AdminRemark);
ruleModel = rList.Where(x => x.Id == AchModel.RuleId).FirstOrDefault();
}
else
{
ruleModel = rulelist.Where(x => x.Id == AchModel.RuleId).FirstOrDefault();
}
//验证是否满足 上课课时超15%
if (TotalLearn > TotalHours * (ruleModel.CourseRate /100))
{
//查询该订单 已发提成记录
//先查询销售的
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())
{
SetCommissionNext(month, CheckList, CurrentList, item, classModel, TotalHours, YFCommission, salelist, AchModel, true);
}
else
{
//直接 发首次提成
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 = FirstMoney,
IsFirstCommission = 1,
Remark = "首次发放提成比例:" + ruleModel.FirstRate,
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 = SaleCommissioned,
FirstRate = ruleModel.FirstRate,
DeductionMoney = 0,
IsDept = AchModel.IsDept,
UserType = AchModel.Type,
RelatedId = AchModel.Id
});
AchModel.GiveOutMoney = FirstMoney;
if (ruleModel.FirstRate == 100)
{//这种直接发放全发
AchModel.GiveOutState = 1;
}
else
{
AchModel.GiveOutState = 2;
}
}
}
}
#endregion
}
}
}
#endregion
#region 开始遍历
List<RB_Sell_Achievements_Deduction_ViewModel> DeductionList = new List<RB_Sell_Achievements_Deduction_ViewModel>();//抵扣详情
var NorList = CurrentList.Where(x => x.IsDeduction != 1).ToList();//正常的
var DeList = CurrentList.Where(x => x.IsDeduction == 1).ToList();//需抵扣的 负数存的
//遍历班级提成需抵扣的
foreach (var xdkitem in DeList)
{
var nordList = NorList.Where(x => x.UserId == xdkitem.UserId).OrderBy(x => x.OrderId).ToList();
if (nordList.Any())
{
//从订单一次开始抵扣 抵扣了之后 原金额不动, 抵扣字段增加
foreach (var dkitem in nordList)
{
if (xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney >= 0)
{
//补交完了 继续下一个
break;
}
if ((dkitem.CurrentPeriodMoney + dkitem.DeductionMoney) <= 0)
{
//已经没有钱可以抵扣了 继续下一个 (班级提成 + 额外奖励)
continue;
}
if ((xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney) + (dkitem.CurrentPeriodMoney + dkitem.DeductionMoney) >= 0)
{
//全部抵扣 用需抵扣
DeductionList.Add(new RB_Sell_Achievements_Deduction_ViewModel()
{
OrderId = xdkitem.OrderId,
SourceId = dkitem.OrderId,
Type = 1,
DeductionMoney = 0 - (xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney),
Group_Id = userInfo.Group_Id,
Remark = ""
});
if (dkitem.OrderId != xdkitem.OrderId)
dkitem.Remark += "; 帮订单" + xdkitem.OrderId + " 抵扣" + (0 - (xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney));
xdkitem.Remark += "; 订单" + dkitem.OrderId + " 帮补交" + (0 - (xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney));
//更新数据
dkitem.DeductionMoney += xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney;//存负数 表抵扣了这么多
xdkitem.DeductionMoney += 0 - (xdkitem.CurrentPeriodMoney + xdkitem.DeductionMoney);//正数
}
else
{
if ((dkitem.CurrentPeriodMoney + dkitem.DeductionMoney) > 0)
{
//部分抵扣 用正常的
DeductionList.Add(new RB_Sell_Achievements_Deduction_ViewModel()
{
OrderId = xdkitem.OrderId,
SourceId = dkitem.OrderId,
Type = 1,
DeductionMoney = (dkitem.CurrentPeriodMoney + dkitem.DeductionMoney),
Group_Id = userInfo.Group_Id,
Remark = ""
});
xdkitem.Remark += "; 订单" + dkitem.OrderId + " 帮补交" + (dkitem.CurrentPeriodMoney + dkitem.DeductionMoney);
if (dkitem.OrderId != xdkitem.OrderId)
dkitem.Remark += "; 帮订单" + xdkitem.OrderId + " 抵扣" + (dkitem.CurrentPeriodMoney + dkitem.DeductionMoney);
//更新数据
xdkitem.DeductionMoney += (dkitem.CurrentPeriodMoney + dkitem.DeductionMoney);//正数
dkitem.DeductionMoney += 0 - (dkitem.CurrentPeriodMoney + dkitem.DeductionMoney);//存负数 表抵扣了这么多
}
}
}
}
xdkitem.CurrentPeriodMoney = 0 - xdkitem.DeductionMoney;//直接赋值 抵扣的负数 这样子 当期应发=0
}
#endregion
#region 开始创建
var trans = sell_Achievements_PeriodsRepository.DbTransaction;
try
{
int PeriodsId = sell_Achievements_PeriodsRepository.Insert(new RB_Sell_Achievements_Periods()
{
Id = 0,
CreateBy = userInfo.Id,
CreateTime = DateTime.Now,
Financials = "",
Group_Id = userInfo.Group_Id,
Name = month + "期提成",
Periods = month,
SumPrice = 0,
AdminRemark = JsonHelper.Serialize(rulelist)
}, trans);
if (PeriodsId > 0)
{
foreach (var qitem in CurrentList)
{
var userModel = UserList.Where(x => x.Id == qitem.UserId).FirstOrDefault();
qitem.Depart_Id = userModel?.Dept_Id ?? 0;
qitem.School_Id = userModel?.School_Id ?? 0;
qitem.Group_Id = userInfo.Group_Id;
qitem.PeriodId = PeriodsId;
sell_Achievements_DetailsRepository.Insert(qitem, trans);
}
#region 计算累计应发
decimal SumPrice = NorList.Sum(x => x.CurrentPeriodMoney + x.DeductionMoney);
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_Achievements_Periods.SumPrice),SumPrice}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Sell_Achievements_Periods.Id),
FiledValue=PeriodsId,
OperatorEnum=OperatorEnum.Equal
}
};
sell_Achievements_PeriodsRepository.Update(keyValues, wheres, trans);
#endregion
#region 抵扣的明细
DateTime dtNow = DateTime.Now;
foreach (var qitem in DeductionList)
{
qitem.PeriodsId = PeriodsId;
qitem.CreateBy = userInfo.Id;
qitem.CreateTime = dtNow;
sell_Achievements_DeductionRepository.Insert(qitem, trans);
}
#endregion
}
sell_Achievements_PeriodsRepository.DBSession.Commit();
#region 订单关联更新
//查询所有相关的提成明细
string oIds = string.Join(",", AchEmpList.Select(x => x.OrderId).Distinct());
var adList = sell_Achievements_DetailsRepository.GetList(new RB_Sell_Achievements_Details_ViewModel() { Group_Id = userInfo.Group_Id, OrderIds = oIds });
//再次查询
foreach (var item in AchEmpList) {
var TotalCommission = adList.Where(x => x.OrderId == item.OrderId && x.UserId == item.EmpId && x.UserType == item.Type && x.IsDept == item.IsDept).Sum(x => x.CurrentPeriodMoney);
item.GiveOutMoney = TotalCommission;
item.GiveOutState = 2;
if (item.PushMoney == item.GiveOutMoney) {
item.GiveOutState = 1;
}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_Achievements_Emp.GiveOutMoney), item.GiveOutMoney},
{ nameof(RB_Sell_Achievements_Emp.GiveOutState), item.GiveOutState},
};
if (item.PeriodsId == 0) {
keyValues.Add(nameof(RB_Sell_Achievements_Emp.PeriodsId), PeriodsId);
}
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Sell_Achievements_Emp.Id),
FiledValue = item.Id,
OperatorEnum = OperatorEnum.Equal
}
};
sell_Achievements_EmpRepository.Update(keyValues, wheres);
}
#endregion
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetAchievementsCommissionInfo");
sell_Achievements_PeriodsRepository.DBSession.Rollback();
return "出错了,请联系管理员";
}
#endregion
}
return "";
}
#endregion
} }
} }
...@@ -1145,7 +1145,7 @@ GROUP BY o.OrderId"; ...@@ -1145,7 +1145,7 @@ GROUP BY o.OrderId";
/// <param name="courseType">类型 1包含 2不包含</param> /// <param name="courseType">类型 1包含 2不包含</param>
/// <param name="courseIds"></param> /// <param name="courseIds"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Order_ViewModel> GetAllAchievementsSendOrderList(int group_Id, string eDate, int courseType, string courseIds) public List<RB_Order_ViewModel> GetAllAchievementsSendOrderList(int group_Id, string eDate, int courseType, string courseIds, string schoolIds)
{ {
string where = ""; string where = "";
if (!string.IsNullOrEmpty(courseIds)) if (!string.IsNullOrEmpty(courseIds))
...@@ -1159,7 +1159,13 @@ GROUP BY o.OrderId"; ...@@ -1159,7 +1159,13 @@ GROUP BY o.OrderId";
where += $" and c.CourseId not in ({courseIds})"; where += $" and c.CourseId not in ({courseIds})";
} }
} }
string sql = $@"SELECT o.* FROM rb_order o if (!string.IsNullOrEmpty(schoolIds))
{
where += $" and c.School_Id in ({schoolIds})";
}
string sql = $@"SELECT o.*,c.School_Id as ClassSchoolId FROM rb_order o
left join rb_class c on o.ClassId = c.ClassId
left join rb_sell_achievements_emp e on o.OrderId = e.OrderId left join rb_sell_achievements_emp e on o.OrderId = e.OrderId
WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.CreateTime >='2021-12-01' and o.CreateTime <= '{eDate} 23:59:59' WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.CreateTime >='2021-12-01' and o.CreateTime <= '{eDate} 23:59:59'
and e.Id is null and e.Id is null
......
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
/// <summary>
/// 业绩提成抵扣仓储层
/// </summary>
public class RB_Sell_Achievements_DeductionRepository : BaseRepository<RB_Sell_Achievements_Deduction>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Deduction_ViewModel> GetList(RB_Sell_Achievements_Deduction_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Deduction_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Deduction_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (demodel.SourceId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Deduction_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Deduction_ViewModel.Type)} ={demodel.Type}";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Deduction_ViewModel.OrderId)} in({demodel.OrderIds})";
}
if (!string.IsNullOrEmpty(demodel.SourceIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Deduction_ViewModel.SourceId)} in({demodel.SourceIds})";
}
string sql = $@" select r.* from RB_Sell_Achievements_Deduction r where {where} order by r.Id desc";
return Get<RB_Sell_Achievements_Deduction_ViewModel>(sql).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
/// <summary>
/// 业绩提成期数明细仓储层
/// </summary>
public class RB_Sell_Achievements_DetailsRepository : BaseRepository<RB_Sell_Achievements_Details>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Details_ViewModel> GetList(RB_Sell_Achievements_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (!string.IsNullOrEmpty(demodel.UserIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} in({demodel.UserIds})";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} in({demodel.OrderIds})";
}
string sql = $@" select r.* from RB_Sell_Achievements_Details r where {where} order by r.Id asc";
return Get<RB_Sell_Achievements_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取用户明细统计
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Details_ViewModel> GetSellCommissionUserDetailList(RB_Sell_Achievements_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (!string.IsNullOrEmpty(demodel.UserIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} in({demodel.UserIds})";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} in({demodel.OrderIds})";
}
string sql = $@" select r.*,
(select count(0) from RB_Sell_Achievements_Details r1 where r1.UserId = r.UserId and r1.OrderId = r.OrderId and r1.Id <= r.Id) as IssueNum
from RB_Sell_Achievements_Details r where {where} order by r.Id asc";
return Get<RB_Sell_Achievements_Details_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_Details_ViewModel> GetPageList(int pageIndex, int pageSize, out long count, RB_Sell_Achievements_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
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();
}
/// <summary>
/// 获取用户提成列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Details_ViewModel> GetSellCommissionUserList(RB_Sell_Achievements_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select r.UserId,r.Depart_Id,r.School_Id,sum(r.StudentCount) as StudentCount,sum(r.CurrentPeriodMoney + r.DeductionMoney) as CurrentPeriodMoney
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();
}
/// <summary>
/// 获取每期校区对应提成
/// </summary>
/// <param name="schoolId"></param>
/// <param name="periodsIds"></param>
/// <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
WHERE School_Id ={schoolId} and PeriodId in ({periodsIds})
GROUP BY PeriodId ";
return Get<RB_Sell_Achievements_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 累计提成金额
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public decimal GetSellCommissionStatistics(RB_Sell_Achievements_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select sum(r.CurrentPeriodMoney + r.DeductionMoney) from RB_Sell_Achievements_Details r where {where}";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToDecimal(obj);
}
/// <summary>
/// 获取销售提成根据用户id
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Details_ViewModel> GetSellCommissionByUser(RB_Sell_Achievements_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrWhiteSpace(demodel.PeriodsTime))
{
where += $@" and DATE_FORMAT(STR_TO_DATE(CONCAT(p.Periods,'-01'),'%Y-%m-%d'),'%Y-%m-%d')>=DATE_FORMAT('{demodel.PeriodsTime}','%Y-%m-%d')";
}
string sql = $@" SELECT
r.*, p.Periods AS PeriodsTime
FROM
RB_Sell_Achievements_Details r
LEFT JOIN rb_sell_achievements_periods AS p ON r.PeriodId = p.Id where {where} ";
return Get<RB_Sell_Achievements_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取日期范围 应发放的销售提成
/// </summary>
/// <param name="group_Id"></param>
/// <param name="classIds"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Details_ViewModel> GetSellCommissionForDate(int group_Id, int schoolId, string classIds, string startTime, string endTime)
{
string where = "";
if (!string.IsNullOrEmpty(classIds)) {
where += $@" and d.ClassId in ({classIds})";
}
if (schoolId >= 0)
{
where = $@" and c.School_Id ={schoolId}";
}
string sql = $@"SELECT d.ClassId,SUM(d.CurrentPeriodMoney + d.DeductionMoney) AS CurrentPeriodMoney FROM RB_Sell_Achievements_Details d
INNER JOIN rb_sell_achievements_periods p on d.PeriodId = p.Id
left join rb_class c on d.ClassId = c.ClassId
WHERE p.Group_Id ={group_Id} {where} and STR_TO_DATE(CONCAT(p.Periods,'-01'),'%Y-%m-%d') >='{startTime}' and STR_TO_DATE(CONCAT(p.Periods,'-01'),'%Y-%m-%d') <='{endTime} 23:59:59'
GROUP BY d.ClassId";
return Get<RB_Sell_Achievements_Details_ViewModel>(sql).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
/// <summary>
/// 业绩提成相关仓储层
/// </summary>
public class RB_Sell_Achievements_EmpRepository : BaseRepository<RB_Sell_Achievements_Emp>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Emp_ViewModel> GetList(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.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";
}
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();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Sell;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
/// <summary>
/// 业绩提成期数仓储层
/// </summary>
public class RB_Sell_Achievements_PeriodsRepository : BaseRepository<RB_Sell_Achievements_Periods>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Achievements_Periods_ViewModel> GetList(RB_Sell_Achievements_Periods_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Periods_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Periods_ViewModel.Name)} like '%{demodel.Name}%'";
}
if (!string.IsNullOrEmpty(demodel.Periods))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Periods_ViewModel.Periods)} ='{demodel.Periods}'";
}
if (!string.IsNullOrEmpty(demodel.PeriodsIds))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Periods_ViewModel.Id)} in({demodel.PeriodsIds})";
}
string sql = $@" select r.* from RB_Sell_Achievements_Periods r where {where} order by r.Id desc";
return Get<RB_Sell_Achievements_Periods_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_Periods_ViewModel> GetPageList(int pageIndex,int pageSize,out long count, RB_Sell_Achievements_Periods_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Achievements_Periods_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Sell_Achievements_Periods_ViewModel.Name)} like '%{demodel.Name}%'";
}
string sql = $@" select r.* from RB_Sell_Achievements_Periods r where {where} order by r.Id desc";
return GetPage<RB_Sell_Achievements_Periods_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
}
}
...@@ -22,7 +22,7 @@ namespace Edu.Repository.Sell ...@@ -22,7 +22,7 @@ namespace Edu.Repository.Sell
/// <returns></returns> /// <returns></returns>
public List<RB_Sell_Achievements_Rule_ViewModel> GetList(RB_Sell_Achievements_Rule_ViewModel demodel) public List<RB_Sell_Achievements_Rule_ViewModel> GetList(RB_Sell_Achievements_Rule_ViewModel demodel)
{ {
string where = $@" 1=1"; string where = $@" 1=1 and Status =0";
if (demodel.Group_Id > 0) if (demodel.Group_Id > 0)
{ {
......
...@@ -54,7 +54,6 @@ namespace Edu.WebApi.Controllers.Course ...@@ -54,7 +54,6 @@ namespace Edu.WebApi.Controllers.Course
y.CourseId, y.CourseId,
y.CourseName y.CourseName
}), }),
x.CommissionType,
x.EmpIds, x.EmpIds,
EmpList = x.EmpList.Select(y => new EmpList = x.EmpList.Select(y => new
{ {
...@@ -68,7 +67,10 @@ namespace Edu.WebApi.Controllers.Course ...@@ -68,7 +67,10 @@ namespace Edu.WebApi.Controllers.Course
y.EmployeeName y.EmployeeName
}), }),
x.CourseRate, x.CourseRate,
x.FirstRate,
x.RateList, x.RateList,
x.SchoolIds,
x.SchoolName,
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss")
})); }));
} }
...@@ -85,6 +87,10 @@ namespace Edu.WebApi.Controllers.Course ...@@ -85,6 +87,10 @@ namespace Edu.WebApi.Controllers.Course
if (string.IsNullOrEmpty(demodel.Name)) { if (string.IsNullOrEmpty(demodel.Name)) {
return ApiResult.ParamIsNull("请传递方案名称"); return ApiResult.ParamIsNull("请传递方案名称");
} }
if (string.IsNullOrEmpty(demodel.SchoolIds))
{
return ApiResult.ParamIsNull("请传递校区");
}
if (demodel.CourseList != null && demodel.CourseList.Any()) { if (demodel.CourseList != null && demodel.CourseList.Any()) {
demodel.CourseIds = string.Join(",", demodel.CourseList.Select(x => x.CourseId)); demodel.CourseIds = string.Join(",", demodel.CourseList.Select(x => x.CourseId));
} }
...@@ -95,12 +101,18 @@ namespace Edu.WebApi.Controllers.Course ...@@ -95,12 +101,18 @@ namespace Edu.WebApi.Controllers.Course
if (demodel.ChildEmpList != null && demodel.ChildEmpList.Any()) { if (demodel.ChildEmpList != null && demodel.ChildEmpList.Any()) {
demodel.ChildEmpIds = string.Join(",", demodel.ChildEmpList.Select(x => x.Id)); demodel.ChildEmpIds = string.Join(",", demodel.ChildEmpList.Select(x => x.Id));
} }
if (demodel.CommissionType == 3) {
if (demodel.CourseRate <= 0) { if (demodel.CourseRate <= 0)
{
return ApiResult.ParamIsNull("请传递课程比例"); return ApiResult.ParamIsNull("请传递课程比例");
} }
if (demodel.FirstRate <= 0)
{
return ApiResult.ParamIsNull("请传递首次发放比例");
} }
if (demodel.RateList == null || !demodel.RateList.Any()) {
if (demodel.RateList == null || !demodel.RateList.Any())
{
return ApiResult.ParamIsNull("请传递业绩提成比例"); return ApiResult.ParamIsNull("请传递业绩提成比例");
} }
int length = demodel.RateList.Count(); int length = demodel.RateList.Count();
...@@ -116,6 +128,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -116,6 +128,7 @@ namespace Edu.WebApi.Controllers.Course
} }
demodel.Content = JsonHelper.Serialize(demodel.RateList); demodel.Content = JsonHelper.Serialize(demodel.RateList);
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id; demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id; demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now; demodel.CreateTime = DateTime.Now;
...@@ -131,6 +144,29 @@ namespace Edu.WebApi.Controllers.Course ...@@ -131,6 +144,29 @@ namespace Edu.WebApi.Controllers.Course
} }
} }
/// <summary>
/// 删除规则
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DelSellAchievementsRule() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int RuleId = parms.GetInt("RuleId", 0);
if (RuleId <= 0) {
return ApiResult.ParamIsNull();
}
string msg = sellAchievementsModule.DelSellAchievementsRule(RuleId,userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion #endregion
#region 提成列表 #region 提成列表
...@@ -494,15 +530,16 @@ namespace Edu.WebApi.Controllers.Course ...@@ -494,15 +530,16 @@ namespace Edu.WebApi.Controllers.Course
} }
/// <summary> /// <summary>
/// 创建销售提成 /// 创建业绩提成
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public ApiResult SetSellCommissionInfo() { public ApiResult SetAchievementsCommissionInfo() {
var userInfo = base.UserInfo; var userInfo = base.UserInfo;
JObject parms = JObject.Parse(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString());
string Month = parms.GetStringValue("Month");//月份 string Month = parms.GetStringValue("Month");//月份
if (string.IsNullOrEmpty(Month)) { if (string.IsNullOrEmpty(Month))
{
return ApiResult.ParamIsNull(); return ApiResult.ParamIsNull();
} }
try try
...@@ -514,7 +551,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -514,7 +551,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("日期格式有误"); return ApiResult.Failed("日期格式有误");
} }
string msg = sellCommissionModule.SetSellCommissionInfo(Month, userInfo); string msg = sellAchievementsModule.SetAchievementsCommissionInfo(Month, userInfo);
if (msg == "") if (msg == "")
{ {
return ApiResult.Success(); return ApiResult.Success();
......
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