Commit 6cf43737 authored by liudong1993's avatar liudong1993

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

parents 63fb5a00 91154cef
......@@ -109,21 +109,11 @@ namespace Edu.Model.Entity.Bonus
/// </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>
......@@ -133,5 +123,10 @@ namespace Edu.Model.Entity.Bonus
/// 以前月份的冲抵金额
/// </summary>
public decimal BeforeMoney { get; set; }
/// <summary>
/// 当月人头奖励配置数据Json格式
/// </summary>
public string HisBonusData { get; set; }
}
}
......@@ -36,5 +36,10 @@ namespace Edu.Model.Entity.Bonus
/// 日志内容
/// </summary>
public string LogContent { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}
}
......@@ -14,5 +14,10 @@ namespace Edu.Model.ViewModel.Bonus
/// 奖励主表编号【查询使用】
/// </summary>
public string QBonusIds { get; set; }
/// <summary>
/// 创建时间字符串
/// </summary>
public string CreateTimeStr { get { return Common.ConvertHelper.FormatTime(this.CreateTime); } }
}
}
......@@ -40,4 +40,51 @@ namespace Edu.Model.ViewModel.Bonus
/// </summary>
public string QPeriodIds { get; set; }
}
/// <summary>
/// 当月人头奖励配置数据
/// </summary>
public class CurrentMonthBonusData
{
/// <summary>
/// 开单奖金
/// </summary>
public decimal OpenBonus { get; set; }
/// <summary>
/// 每5条线索奖金
/// </summary>
public decimal ClueNumSalary { get; set; }
/// <summary>
/// 当月目标金额
/// </summary>
public decimal MonthGoalMoney { get; set; }
/// <summary>
/// 人头梯度详情
/// </summary>
public List<CurrentMonthBonusDataDetails> DetailList { get; set; }
}
/// <summary>
/// 当月人头奖励梯度配置数据
/// </summary>
public class CurrentMonthBonusDataDetails
{
/// <summary>
/// 开始人数
/// </summary>
public decimal StartNum { get; set; }
/// <summary>
/// 结束人数
/// </summary>
public decimal EndNum { get; set; }
/// <summary>
/// 奖励金额
/// </summary>
public decimal Money { get; set; }
}
}
......@@ -14,5 +14,10 @@ namespace Edu.Model.ViewModel.Bonus
/// 奖励主表编号【查询使用】
/// </summary>
public string QBonusIds { get; set; }
/// <summary>
/// 创建时间字符串
/// </summary>
public string CreateTimeStr { get { return Common.ConvertHelper.FormatTime(this.CreateTime); } }
}
}
\ No newline at end of file
......@@ -81,7 +81,8 @@ namespace Edu.Module.Course
});
foreach (var item in list)
{
item.SumPrice = bonusList?.Where(qitem => qitem.PeriodId == item.Id)?.Sum(qitem => qitem.CurRewardMoney)??0;
item.SumPrice = bonusList?.Where(qitem => qitem.PeriodId == item.Id)
?.Sum(qitem => qitem.CurRewardMoney+qitem.ClueNumSalary+qitem.OpenBonus-qitem.BeforeMoney)??0;
}
}
return list;
......@@ -226,21 +227,29 @@ namespace Edu.Module.Course
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);
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderState), orderModel.OrderState);
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);
dItem.OrderGuestNum = 0;
dItem.OrderMoney = newMoney;
dItem.OrderState = orderModel.OrderState;
}
if (detailFileds != null && detailFileds.Count > 0)
{
personnel_BonusDetailRepository.Update(detailFileds, new WhereHelper(nameof(RB_Personnel_BonusDetail_Extend.Id), dItem.Id));
}
}
//当月有效订单数量
bool isNormalOrder = sItem.DetailList.Where(qitem => qitem.OrderState == Common.Enum.Course.OrderStateEnum.Normal).Count() > 0;
var sumNum = sItem?.DetailList?.Sum(qitem => qitem.OrderGuestNum) ?? 0;
var sumOrderMoney = sItem?.DetailList?.Sum(qitem => qitem.OrderMoney);
var curRewardMoney = GetStepAwardAmount(planModel, sumNum);
//历史人头提成方案
var hisModel = Common.Plugin.JsonHelper.DeserializeObject<CurrentMonthBonusData>(sItem.HisBonusData);
var curRewardMoney = GetHisStepAwardAmount(hisModel, sumNum);
deductionMoney = sItem.CurRewardMoney - curRewardMoney;
//修改已发放
string _bonusLog = $"订单号变更:完成人数:{sItem.CurGuestNum}=>{sumNum},订单完成金额由:{sItem.CurOrderMoney}=>{sumOrderMoney}"
......@@ -250,9 +259,16 @@ namespace Edu.Module.Course
{
{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) },
{nameof(RB_Personnel_Bonus.IsReach),(sumOrderMoney>hisModel.MonthGoalMoney?1:0) },
};
decimal newOpenBonus = 0;
//当月有开单奖金且没有有效订单
if (sItem.OpenBonus > 0 && !isNormalOrder)
{
newOpenBonus = sItem.OpenBonus;
_bonusLog += $",开单奖金由:{sItem.OpenBonus}=>0";
}
bonusFileds.Add(nameof(RB_Personnel_Bonus.DeductionMoney), deductionMoney + newOpenBonus);
personnel_BonusRepository.Update(bonusFileds, new WhereHelper(nameof(RB_Personnel_Bonus.Id), sItem.Id));
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(sItem.Id, 1, 0, _bonusLog);
}
......@@ -260,6 +276,29 @@ namespace Edu.Module.Course
}
}
/// <summary>
/// 获取历史梯度奖励金额
/// </summary>
/// <param name="item"></param>
/// <param name="GuestNum"></param>
/// <returns></returns>
private decimal GetHisStepAwardAmount(CurrentMonthBonusData item, int GuestNum)
{
decimal awardAmount = 0;
if (item != null && item.DetailList != null && item.DetailList.Count > 0)
{
for (var i = 0; i < item.DetailList.Count; i++)
{
var tempNum = item.DetailList[i];
if (tempNum.StartNum <= GuestNum && GuestNum <= tempNum.EndNum)
{
awardAmount = tempNum.Money;
}
}
}
return awardAmount;
}
/// <summary>
/// 计算人员业绩
/// </summary>
......@@ -304,13 +343,32 @@ namespace Edu.Module.Course
UpdateBy = 1,
UpdateTime = DateTime.Now,
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;
var totalMoney = (pModel.BasicSalary + pModel.OpenBonus + pModel.WorkAgeSalary + pModel.ClueNumSalary);
//历史提成数据
var CurrentMonthBonusData = new CurrentMonthBonusData()
{
OpenBonus = item.OpenBonus,
ClueNumSalary = item.ClueNumSalary,
MonthGoalMoney = item.MonthGoalMoney,
DetailList = new List<CurrentMonthBonusDataDetails>()
};
foreach (var sItem in item.DetailList)
{
CurrentMonthBonusData.DetailList.Add(new CurrentMonthBonusDataDetails()
{
StartNum = sItem.StartNum,
EndNum = sItem.EndNum,
Money = sItem.Money
});
}
pModel.HisBonusData = Common.Plugin.JsonHelper.Serialize(CurrentMonthBonusData);
//当月总业绩
var totalMoney = (pModel.CurRewardMoney + pModel.OpenBonus + pModel.ClueNumSalary);
if (totalMoney >= chaE)
{
pModel.BeforeMoney = chaE;
......@@ -319,6 +377,8 @@ namespace Edu.Module.Course
{
pModel.BeforeMoney = totalMoney;
}
var newId = personnel_BonusRepository.Insert(pModel);
pModel.Id = newId;
//写抵扣记录表信息
if (pModel.BeforeMoney > 0)
{
......@@ -343,6 +403,13 @@ namespace Edu.Module.Course
{nameof(RB_Personnel_Bonus_Extend.FinishDeductionMoney),(sItem?.FinishDeductionMoney??0)+sItem.DeductionMoney }
};
personnel_BonusRepository.Update(fileds, new WhereHelper(nameof(RB_Personnel_Bonus_Extend.Id), sItem.Id));
//冲抵以前日志
string logContent = pModel.YearNum + "年" + pModel.MonthNum + "月,完成抵扣金额" + sItem.DeductionMoney;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(sItem.Id, 1, 0, logContent);
//添加本月的日志
string logContent2= "抵扣"+sItem.YearNum + "年" + sItem.MonthNum + "月, 人头奖励" + sItem.DeductionMoney;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(pModel.Id, 1, 0, logContent2);
tempChaE -= sItem.DeductionMoney;
}
else
......@@ -361,13 +428,18 @@ namespace Edu.Module.Course
{nameof(RB_Personnel_Bonus_Extend.FinishDeductionMoney),(sItem?.FinishDeductionMoney??0)+tempChaE }
};
personnel_BonusRepository.Update(fileds, new WhereHelper(nameof(RB_Personnel_Bonus_Extend.Id), sItem.Id));
string logContent = pModel.YearNum + "年" + pModel.MonthNum + "月,抵扣金额" + tempChaE;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(sItem.Id, 1, 0, logContent);
//添加本月的日志
string logContent2 = "抵扣" + sItem.YearNum + "年" + sItem.MonthNum + "月, 人头奖励" + tempChaE;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(pModel.Id, 1, 0, logContent2);
tempChaE = 0;
}
}
}
}
var newId = personnel_BonusRepository.Insert(pModel);
pModel.Id = newId;
foreach (var oItem in allOrderList)
{
var detailModel = new RB_Personnel_BonusDetail()
......
......@@ -66,7 +66,8 @@ WHERE 1=1
BonusId = BonusId,
LogType = LogType,
OrderId = OrderId,
LogContent = LogContent
LogContent = LogContent,
CreateTime=DateTime.Now,
};
var newId = base.Insert(newModel);
return newId > 0;
......
......@@ -1196,7 +1196,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.CreateTime >= '2021-09-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) ");
......
......@@ -260,9 +260,7 @@ namespace Edu.WebApi.Controllers.Bonus
CreateTime=Common.ConvertHelper.FormatTime(item.CreateTime),
item.IsReach,
IsReachStr= item.IsReach==1?"已达标":"未达标",
item.BasicSalary,
item.OpenBonus,
item.WorkAgeSalary,
item.ClueNumSalary,
item.BeforeMoney,
item.DetailList,
......
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