Commit 8143fbb1 authored by 黄奎's avatar 黄奎

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

parents bc9c22d7 57c24d3e
......@@ -90,5 +90,15 @@ namespace Edu.Model.ViewModel.Sell
/// 订单类型
/// </summary>
public OrderTypeEnum OrderType { get; set; }
/// <summary>
/// 总课时费
/// </summary>
public decimal TotalHours { get; set; }
/// <summary>
/// 已上课课时
/// </summary>
public decimal CompleteHours { get; set; }
}
}
......@@ -464,7 +464,7 @@ namespace Edu.Module.Course
};
if (model.OrderType == OrderTypeEnum.CourseOrder)
{
FormatOrderCommissionByCourse(ref commissionModel, model.CourseId, 0);
FormatOrderCommissionByCourse(ref commissionModel, model.CourseId, model.PreferPrice - model.DiscountMoney);
}
else if (model.OrderType == OrderTypeEnum.StudyabroadOrder)
{
......@@ -502,7 +502,22 @@ namespace Edu.Module.Course
};
//查询符合返佣条件的学员(非订单)
var list = returnComissionRepository.GetListBySetBatch(gid, type);
#region 处理需要 开课后才发放
if (list.Where(x => x.CommissionReType == 3).Any())
{
List<int> NotOrder = new List<int>();
//判断 课时进度是否达到发放标准
foreach (var item in list.Where(x => x.CommissionReType == 3)) {
if (item.CommissionReValue > (item.CompleteHours / item.TotalHours) *100) {
//未达标
NotOrder.Add(item.OrderId);
}
}
if (NotOrder.Any()) {
list = list.Where(x => !NotOrder.Contains(x.OrderId)).ToList();
}
}
#endregion
if (list.Any())
{
//开始生成用户待提现的金额
......@@ -658,8 +673,8 @@ namespace Edu.Module.Course
{
m.CommissionMoeny = customerCompany.RebateMoney;
}
m.CommissionReType = (int)CourseRebateSetEnum.NextMonth;
m.CommissionReValue = 0;
m.CommissionReType = (int)CourseRebateSetEnum.CourseProportion;
m.CommissionReValue = Convert.ToDecimal(0.01);
m.Remark = $"学员来源为:同业,学员为首次报名,本次报名金额为:{sellPrice},本次返佣金额为:{m.CommissionMoeny:0.00}";
}
else
......
......@@ -767,8 +767,7 @@ namespace Edu.Module.Course
string SchoolIds = string.Join(",", rulelist.Select(x => x.SchoolIds));
//查询 班级订单 1.尾款收齐
//string SDate = "2024-08-01";
string SDate = "2023-11-01";
string SDate = "2024-08-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>();//需要新增当月的
......@@ -777,7 +776,6 @@ namespace Edu.Module.Course
//查询历史所有 退费的单子 汇总金额计入其当月的业绩计算 并回扣所有订单的提成(是 2023-10月这一期开始 回扣提成 ) PeriodId =64 开始扣提成
//首先查询 所有退费的单子
var ROrderList = sell_Achievements_EmpRepository.GetAllRefundWaitPendingList(userInfo.Group_Id);
ROrderList = ROrderList.Where(x => x.OrderId == 1501).ToList();
if (ROrderList.Any()) {
string orderIds = string.Join(",", ROrderList.Select(x => x.OrderId));
var bdList = order_ReturnComissionRepository.GetOrderReturnComissionListRepositpry(new RB_Order_ReturnComission_ViewModel() { GroupId = userInfo.Group_Id, QOrderIds = orderIds });
......@@ -1699,9 +1697,9 @@ namespace Edu.Module.Course
{
ruleModel = new RB_Sell_Achievements_Rule_ViewModel()
{
CourseRate = 0,
CourseRate = Convert.ToDecimal(0.01),
FirstRate = 100
};//规则不存在的这种情况
};//规则不存在的这种情况 默认开课后发放提成
}
//验证是否满足 上课课时超15%sss
if (TotalLearn >= TotalHours * (ruleModel.CourseRate / 100) || item.OrderType == Common.Enum.Sale.OrderTypeEnum.StudyabroadOrder)
......@@ -1753,6 +1751,34 @@ namespace Edu.Module.Course
}
}
}
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 = 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
});
}
}
#endregion
}
......
......@@ -1097,9 +1097,10 @@ namespace Edu.Module.Duty
CoverImg = "",
CreateByName = UserInfo.AccountName,
JumpUrl = "",
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "试听课",
Title = "学员试听课通知",
Platform = 2,
ReceiveId = (teacherList.Where(qitem => qitem.AccountId == model.TeacherId)?.FirstOrDefault()?.WorkUserId ?? "").ToString(),
};
......@@ -1129,9 +1130,10 @@ namespace Edu.Module.Duty
CoverImg = "",
CreateByName = UserInfo.AccountName,
JumpUrl = "",
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "试听课",
Title = "学员试听课通知",
Platform = 2,
ReceiveId = (saleModel?.WorkUserId ?? "").ToString(),
};
......
......@@ -4,6 +4,7 @@ using Edu.Model.Entity.Reserve;
using Edu.Model.ViewModel.Duty;
using Edu.Model.ViewModel.Reserve;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -175,6 +176,11 @@ WHERE 1=1
builder.AppendFormat(" AND B.{0} LIKE @StuName ", nameof(RB_Visitor_Reserve_Extend.StuName));
parameters.Add("StuName", "%" + query.StuName.Trim() + "%");
}
if (query.IsReserve == 0)
{
query.IsReserve = 1;
}
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
}
return Get<RB_Visitor_Reserve_Extend>(builder.ToString(), parameters).ToList();
}
......@@ -193,6 +199,11 @@ WHERE 1=1
{
builder.AppendFormat(@" AND A.{0} IN ({1}) ", nameof(RB_Visitor_Reserve_Extend.ReserveClassId), query.Q_ReserveClassIds);
}
if (query.IsReserve == 0)
{
query.IsReserve = 1;
}
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
string sql = string.Format(@"
SELECT A.*,IFNULL(B.StuName,'') AS VisitorName
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_student AS B ON A.Visitor_Id=B.StuId
......@@ -226,6 +237,11 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Visitor_Reserve_Extend.Id), query.Id);
}
if (query.IsReserve == 0)
{
query.IsReserve = 1;
}
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
}
return Get<RB_Visitor_ViewModel>(builder.ToString(), parameters).ToList();
}
......@@ -252,6 +268,12 @@ WHERE 1=1 AND A.Status=0
{
builder.AppendFormat(" AND A.ReserveClassId={0} ", query.ReserveClassId);
}
if (query.IsReserve == 0)
{
query.IsReserve = 1;
}
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
if (query.Id > 0)
{
builder.AppendFormat(" AND A.Id<>{0} ", query.Id);
......@@ -285,6 +307,12 @@ WHERE 1=1
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Visitor_Reserve_Extend.Visitor_Id), query.QVisitor_Ids);
}
}
if ((query?.IsReserve ?? 0) == 0)
{
query.IsReserve = 1;
}
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
builder.AppendFormat(" GROUP BY A.Visitor_Id ");
return Get<RB_Visitor_Reserve_Extend>(builder.ToString(), parameters).ToList();
......@@ -331,6 +359,12 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Visitor_Reserve_Extend.CreateTime), query.EndClassDate);
}
if (query.IsReserve == 0)
{
query.IsReserve = 1;
}
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
}
builder.AppendFormat(@" GROUP BY A.CreateBy,DATE_FORMAT(A.CreateTime,'%Y/%m/%d') ");
builder.AppendFormat(@" ORDER BY A.CreateBy,DATE_FORMAT(A.CreateTime,'%Y/%m/%d') ");
......@@ -354,6 +388,12 @@ WHERE 1=1 AND A.Status=0 {0}
{
sql += string.Format(@" AND A.CreateBy={0} ", query.CreateBy);
}
if (query.IsReserve == 0)
{
query.IsReserve = 1;
}
sql += string.Format(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.IsReserve), query.IsReserve);
sql += " GROUP BY A.CreateBy ";
string todayWhere = "";
if (!string.IsNullOrEmpty(query.StartClassDate))
......@@ -446,9 +486,8 @@ WHERE 1=1 AND A.Status=0 {0}
{
string sql = $@"SELECT c.TeacherId FROM rb_visitor_reserve r
INNER JOIN rb_reserve_class c on r.ReserveClassId = c.ReserveClassId
WHERE r.Group_Id ={groupId} and r.`Status` =0 and c.`Status` =0 and r.Visitor_Id ={stuId}
WHERE r.Group_Id ={groupId} and r.`Status` =0 and c.`Status` =0 and r.Visitor_Id ={stuId} AND A.IsReserve=1
ORDER BY c.ClassDate DESC LIMIT 1";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToInt32(obj) : 0;
}
......
......@@ -58,7 +58,7 @@ namespace Edu.Repository.Sell
/// <returns></returns>
public List<RB_Order_ReturnComission_ViewModel> GetListBySetBatch(int groupId, int type)
{
var sql = @"select a.* from rb_order_returncomission a
var sql = @"select a.*,c.TotalHours,c.CompleteHours from rb_order_returncomission a
left join rb_student_orderguest b on a.OrderId=b.OrderId and a.StuId=b.Student_Id
left join rb_order_guest c on b.GuestId=c.Id
where a.`Status`=0 and c.CreateTime<date_add(curdate(),interval -day(curdate())+1 day) and a.GroupId=@gid and a.CommissionType=@type";
......
......@@ -190,7 +190,7 @@ GROUP BY e.Type,e.EmpId,e.Rate,e.IsDept,p.Periods";
{
string sql = $@"SELECT e.*,(o.Income - o.Refund - o.CoursewareFee - o.TotalClassHours) as OrderMoney,o.Refund FROM rb_sell_achievements_emp e
LEFT JOIN rb_order o on e.OrderId =o.OrderId
WHERE e.Group_Id={group_Id} and o.CreateTime >='2023-10-01' and (e.Type=2 or (e.Type=1 and e.IsDept=1)) and e.OrderSaleMoney <> (o.Income - o.Refund - o.CoursewareFee - o.TotalClassHours) and e.OrderId>0 and e.Remark not like '%退款回扣%'
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.CoursewareFee - o.TotalClassHours) and e.OrderId>0 and e.Remark not like '%退款回扣%'
ORDER BY e.OrderId ASC ";
return Get<RB_Sell_Achievements_Emp_ViewModel>(sql).ToList();
}
......
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