Commit a373fefe authored by 黄奎's avatar 黄奎

页面修改

parent 7006ee43
......@@ -16,11 +16,16 @@ namespace Edu.Model.Entity.Bonus
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 关联方案编号
/// </summary>
public int PlanId { get; set; }
/// <summary>
/// 类型(1-市场人员,2-课程顾问)
/// </summary>
public int RewardType { get; set; }
public int PlanType { get; set; }
/// <summary>
/// 年份
......@@ -52,15 +57,17 @@ namespace Edu.Model.Entity.Bonus
/// </summary>
public decimal CurOrderMoney { get; set; }
/// <summary>
/// 抵扣人数
/// 待抵扣金额
/// </summary>
public int DeductionNum { get; set; }
public decimal DeductionMoney { get; set; }
/// <summary>
/// 抵扣金额
/// 已完成抵扣金额
/// </summary>
public decimal DeductionMoney { get; set; }
public decimal FinishDeductionMoney { get; set; }
/// <summary>
/// 创建人
......@@ -96,5 +103,25 @@ namespace Edu.Model.Entity.Bonus
/// 是否达成本月目标(1-是)
/// </summary>
public int IsReach { get; set; }
/// <summary>
/// 基本工资
/// </summary>
public decimal BasicSalary { get; set; }
/// <summary>
/// 开单奖金
/// </summary>
public decimal OpenBonus { get; set; }
/// <summary>
/// 工龄工资
/// </summary>
public decimal WorkAgeSalary { get; set; }
/// <summary>
/// 每5条线索奖金
/// </summary>
public decimal ClueNumSalary { get; set; }
}
}
......@@ -254,5 +254,10 @@ namespace Edu.Model.ViewModel.User
/// 客户需求名称
/// </summary>
public string StuNeedsName { get; set; }
/// <summary>
/// 线索条数
/// </summary>
public int ClueCount { get; set; }
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ using Edu.Model.Entity.Bonus;
using Edu.Model.ViewModel.Bonus;
using Edu.Common.Plugin;
using VT.FW.DB;
using Edu.Repository.User;
namespace Edu.Module.Course
{
......@@ -47,6 +48,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 学员仓储层对象
/// </summary>
private readonly RB_StudentRepository studentRepository = new RB_StudentRepository();
/// <summary>
/// 生成业绩
/// </summary>
......@@ -83,6 +89,78 @@ namespace Edu.Module.Course
}
}
/// <summary>
/// 订单退款变更
/// </summary>
public void ChangeEmployeeBonusModule(int orderId)
{
//待冲抵金额
decimal deductionMoney = 0;
var orderModel = orderRepository.GetEntity(orderId);
if (orderModel != null)
{
//查询销售已发放的奖励
var saleBonusList = personnel_BonusRepository.GetPersonnelBonusListRepository(new RB_Personnel_Bonus_Extend()
{
EmployeeId = orderModel.EnterID,
YearNum=orderModel.CreateTime.Year,
MonthNum=orderModel.CreateTime.Month,
});
if (saleBonusList != null && saleBonusList.Count > 0)
{
//人头配置列表
var planList = bonus_PlanRepository.GetBounsPlanListRepository(new RB_Bonus_PlanExtend()
{
Group_Id = orderModel.Group_Id
}, isGetDetail: true);
foreach (var sItem in saleBonusList)
{
var planModel = planList?.Where(qitem => qitem.Id == sItem.PlanId)?.FirstOrDefault();
foreach (var dItem in sItem.DetailList)
{
Dictionary<string, object> detailFileds = new Dictionary<string, object>();
detailFileds.Clear();
var tempCurMonthOrder = orderModel;
if (dItem.OrderState != (tempCurMonthOrder?.OrderState))
{
var newMoney = tempCurMonthOrder.Income - tempCurMonthOrder.Refund - tempCurMonthOrder.PlatformTax;
dItem.OrderGuestNum = 0;
dItem.OrderMoney = newMoney;
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderGuestNum), 0);
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderMoney), newMoney);
string _log1 = $"订单号【{dItem.OrderId}】的订单状态由:{dItem.OrderState.ToName()}=>{tempCurMonthOrder?.OrderState.ToName()}" +
$"订单人数由:{dItem.OrderGuestNum}=>0,订单金额由:{dItem.OrderMoney}=>{newMoney}"
;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(sItem.Id, 1, dItem.OrderId, _log1);
}
if (detailFileds != null && detailFileds.Count > 0)
{
personnel_BonusDetailRepository.Update(detailFileds, new WhereHelper(nameof(RB_Personnel_BonusDetail_Extend.Id), dItem.Id));
}
}
var sumNum = sItem?.DetailList?.Sum(qitem => qitem.OrderGuestNum) ?? 0;
var sumOrderMoney = sItem?.DetailList?.Sum(qitem => qitem.OrderMoney);
var curRewardMoney = GetStepAwardAmount(planModel, sumNum);
deductionMoney = sItem.CurRewardMoney - curRewardMoney;
//修改已发放
string _bonusLog = $"订单号变更: 由:{sItem.CurGuestNum}=>{sumNum},订单完成金额由:{sItem.CurOrderMoney}=>{sumOrderMoney}"
+ $"奖励金额由:{sItem.CurRewardMoney}=>{curRewardMoney}"
;
Dictionary<string, object> bonusFileds = new Dictionary<string, object>()
{
{nameof(RB_Personnel_Bonus.CurGuestNum),sumNum },
{nameof(RB_Personnel_Bonus.CurOrderMoney),sumOrderMoney },
{nameof(RB_Personnel_Bonus.DeductionMoney),deductionMoney },
{nameof(RB_Personnel_Bonus.IsReach),(sumOrderMoney>planModel.MonthGoalMoney?1:0) },
};
personnel_BonusRepository.Update(bonusFileds, new WhereHelper(nameof(RB_Personnel_Bonus.Id), sItem.Id));
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(sItem.Id, 1, 0, _bonusLog);
}
}
}
}
/// <summary>
/// 计算人员业绩
/// </summary>
......@@ -99,48 +177,15 @@ namespace Edu.Module.Course
var curNum = orderList?.Where(qitem => qitem.Year == CurrentYear && qitem.Month == CurrentMonth)?.Sum(qitem => qitem.GuestNum) ?? 0;
var curOrderMoney = orderList?.Where(qitem => qitem.Year == CurrentYear && qitem.Month == CurrentMonth)?.Sum(qitem => qitem.OrderMoney) ?? 0;
int DeductionNum = 0;
decimal DeductionMoney = 0;
//查询销售已发放的奖励
var saleBonusList = personnel_BonusRepository.GetPersonnelBonusListRepository(new RB_Personnel_Bonus_Extend()
{
EmployeeId = saleId,
RewardType=item.PlanType,
});
//计算抵扣
foreach (var bItem in saleBonusList)
{
//查询此月份的订单列表
var curMonthOrderList = allOrderList?.Where(qitem => qitem.CreateTime.Year == bItem.YearNum && qitem.CreateTime.Month == bItem.MonthNum)?.ToList();
foreach (var dItem in bItem.DetailList)
{
Dictionary<string, object> detailFileds = new Dictionary<string, object>();
detailFileds.Clear();
var tempCurMonthOrder = curMonthOrderList?.FirstOrDefault(qitem => qitem.OrderId == dItem.OrderId);
if (dItem.OrderState != (tempCurMonthOrder?.OrderState))
{
var newMoney = tempCurMonthOrder.Income - tempCurMonthOrder.Refund - tempCurMonthOrder.PlatformTax;
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderGuestNum), 0);
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderMoney), newMoney);
string _log1 = $"订单号【{dItem.OrderId}】的订单状态由:{dItem.OrderState.ToName()}=>{tempCurMonthOrder?.OrderState.ToName()}" +
$"订单人数由:{dItem.OrderGuestNum}=>0,订单金额由:{dItem.OrderMoney}=>{newMoney}"
;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(bItem.Id, 1, dItem.OrderId, _log1);
}
if (detailFileds != null && detailFileds.Count > 0)
{
personnel_BonusDetailRepository.Update(detailFileds, new WhereHelper(nameof(RB_Personnel_BonusDetail_Extend.Id), dItem.Id));
}
}
}
var startDate = Common.ConvertHelper.FormatDate(new DateTime(CurrentYear, CurrentMonth, 1));
var stuModel= studentRepository.GetStudentStaticRepository(saleId.ToString(), startDate, endDate)?.FirstOrDefault();
//新增当月的人头奖励
var pModel = new RB_Personnel_Bonus()
{
Id = 0,
RewardType = item.PlanType,
PlanId = item.Id,
PlanType = item.PlanType,
YearNum = CurrentYear,
MonthNum = CurrentMonth,
EmployeeId = saleId,
......@@ -152,8 +197,11 @@ namespace Edu.Module.Course
CreateTime = DateTime.Now,
UpdateBy = 1,
UpdateTime = DateTime.Now,
DeductionNum= DeductionNum,
DeductionMoney= DeductionMoney,
DeductionMoney = DeductionMoney,
BasicSalary = item.BasicSalary,
OpenBonus = curNum > 0 ? item.OpenBonus : 0,
WorkAgeSalary = item.WorkAgeSalary,
ClueNumSalary = stuModel?.ClueCount > 5 ? item.ClueNumSalary : 0
};
pModel.IsReach = pModel.CurOrderMoney > item.MonthGoalMoney ? 1 : 0;
......@@ -211,7 +259,7 @@ namespace Edu.Module.Course
{
List<PersionOrderItem> list = new List<PersionOrderItem>();
//所有当前人员订单列表
orderList = orderRepository.GetAllBonusOrderListRepository(GroupId, endDate, SaleId);
orderList = orderRepository.GetAllBonusOrderListRepository(GroupId, endDate, item.PlanType, SaleId);
//适用课程
if (!string.IsNullOrEmpty(item.UseCourseIds))
{
......
......@@ -85,9 +85,9 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_Bonus_Extend.EmployeeId), query.EmployeeId);
}
if (query.RewardType > 0)
if (query.PlanType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_Bonus_Extend.RewardType), query.RewardType);
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_Bonus_Extend.PlanType), query.PlanType);
}
}
var list= Get<RB_Personnel_Bonus_Extend>(builder.ToString()).ToList();
......
......@@ -1182,7 +1182,7 @@ group by o.OrderId
/// <param name="group_Id">集团编号</param>
/// <param name="eDate">结束日期</param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetAllBonusOrderListRepository(int group_Id, string eDate,int SaleId)
public List<RB_Order_ViewModel> GetAllBonusOrderListRepository(int group_Id, string eDate,int PlanType,int SaleId)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
......@@ -1193,6 +1193,7 @@ WHERE 1=1
builder.AppendFormat(" AND o.OrderState IN({0},{1}) ", (int)OrderStateEnum.Normal, (int)OrderStateEnum.DropOut);
builder.AppendFormat(" AND o.{0}={1} ", nameof(RB_Order_ViewModel.OrderType), (int)OrderTypeEnum.CourseOrder);
builder.AppendFormat(" AND o.CreateTime >= '2021-11-01' ");
builder.AppendFormat(" AND o.OrderId NOT IN(SELECT B.OrderId FROM rb_personnel_bonus AS A INNER JOIN rb_personnel_bonusdetail AS B ON A.Id=B.BonusId WHERE A.PlanType={0} AND A.EmployeeId ={1}) ", PlanType, SaleId);
//帐平
builder.AppendFormat(" AND o.PreferPrice = (o.Income - o.Refund + o.DiscountMoney + o.PlatformTax) ");
if (group_Id > 0)
......
......@@ -715,5 +715,22 @@ WHERE 1=1
}
return Get<RB_Student_ViewModel>(builder.ToString(), parameters)?.FirstOrDefault();
}
/// <summary>
/// 线索统计
/// </summary>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentStaticRepository(string createByIds,string startDate,string endDate)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT CreateBy,Count(1) AS ClueCount
FROM RB_Student
WHERE Status=0 AND CreateBy IN({0}) and CreateTime>='{1}' and CreateTime<='{2} 23:59:59'
", createByIds, startDate, endDate);
var list = Get<RB_Student_ViewModel>(builder.ToString()).ToList();
return list;
}
}
}
\ No newline at end of file
......@@ -34,6 +34,11 @@ namespace Edu.WebApi.Controllers.Third
/// </summary>
private readonly SellAchievementsModule sellAchievementsModule = new SellAchievementsModule();
/// <summary>
/// 员工人头奖励处理类
/// </summary>
private readonly EmployeeBonusModule employeeBonusModule = new EmployeeBonusModule();
/// <summary>
/// 根部部门层级获取部门主管
/// </summary>
......@@ -162,6 +167,7 @@ namespace Edu.WebApi.Controllers.Third
if (Refund > 0) {
//是退款 检验订单是否会影响 业绩提成
System.Threading.Tasks.Task.Run(() => sellAchievementsModule.ValidataAchievements(OrderId));
System.Threading.Tasks.Task.Run(() => employeeBonusModule.ChangeEmployeeBonusModule(OrderId));
}
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