Commit d02d7bf6 authored by liudong1993's avatar liudong1993

销售提成

parent 1d4fc2d1
......@@ -510,6 +510,15 @@ namespace Edu.Common
}
}
/// <summary>
/// 销售发放提成的前提比例
/// </summary>
public static string SellCommissionFFBL {
get {
return ReadConfigKey("SellCommissionFFBL");
}
}
/// <summary>
/// 收入请求加密
/// </summary>
......
......@@ -214,5 +214,35 @@ namespace Edu.Model.Entity.Course
/// 是否插班报入
/// </summary>
public int IsChaBan { get; set; }
/// <summary>
/// 销售返佣类型 0百分比 1固定值
/// </summary>
public decimal CommissionType { get; set; }
/// <summary>
/// 提成比例/固定值
/// </summary>
public decimal CommissionRate { get; set; }
/// <summary>
/// 提成补交
/// </summary>
public decimal CommissionBack { get; set; }
/// <summary>
/// 提成备注: 记录下单时 使用的 比例
/// </summary>
public string CommissionRemark { get; set; }
/// <summary>
/// 额外提成已发放金额
/// </summary>
public decimal ExtraCommissionMoney { get; set; }
/// <summary>
/// 提成是否发放完毕 1是 0否
/// </summary>
public int IsCommissionGiveOK { get; set; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Course
{
/// <summary>
/// 销售提成抵扣实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Commission_Deduction
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 订单id (需抵扣的订单Id)
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 来源id(抵扣订单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 decimal DeductionExtraMoney { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 集团id
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 期数id
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { 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.Course
{
/// <summary>
/// 销售提成期数明细实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Commission_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>
/// 提成总金额(不是发放的)
/// </summary>
public decimal CommissionMoney { get; set; }
/// <summary>
/// 期数id
/// </summary>
public int PeriodId { get; set; }
/// <summary>
/// 期号
/// </summary>
public string Periods { get; set; }
/// <summary>
/// 额外奖励
/// </summary>
public decimal OtherMoney { get; set; }
/// <summary>
/// 额外扣除
/// </summary>
public decimal BackMoney { 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>
/// 当期发放额外提成
/// </summary>
public decimal CurrentExtraMoney { get; set; }
/// <summary>
/// 是否首次发放提成 1是 其他否
/// </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>
/// 是否续班 1是 其他否
/// </summary>
public int IsContinueClass { get; set; }
/// <summary>
/// 累计已发放金额
/// </summary>
public decimal GiveOutMoney { get; set; }
/// <summary>
/// 销售提成比例
/// </summary>
public decimal SalesRate { get; set; }
/// <summary>
/// 老师比例
/// </summary>
public decimal TeacherRate { get; set; }
/// <summary>
/// 助教比例
/// </summary>
public decimal AssistantRate { get; set; }
/// <summary>
/// 首次发放比例
/// </summary>
public decimal FirstRate { get; set; }
/// <summary>
/// 抵扣订单
/// </summary>
public int DeductionOrder { get; set; }
/// <summary>
/// 抵扣金额
/// </summary>
public decimal DeductionMoney { get; set; }
/// <summary>
/// 抵扣额外奖励
/// </summary>
public decimal DeductionExtraMoney { get; set; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Course
{
/// <summary>
/// 销售提成期数实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Commission_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; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Course
{
/// <summary>
/// 销售提成规则实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Sell_Commission_Rule
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 班级类型
/// </summary>
public int ClassType { get; set; }
/// <summary>
/// 报名类型 1初次 2续班
/// </summary>
public int EnrollType { get; set; }
/// <summary>
/// 销售提成比例
/// </summary>
public decimal SalesRate { get; set; }
/// <summary>
/// 老师比例
/// </summary>
public decimal TeacherRate { get; set; }
/// <summary>
/// 助教比例
/// </summary>
public decimal AssistantRate { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 首次发放比例
/// </summary>
public decimal FirstRate { get; set; }
}
}
......@@ -20,6 +20,29 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public string StartDate { get; set; }
/// <summary>
/// 月份
/// </summary>
public string MonthDateStr { get; set; }
/// <summary>
/// 月份日期
/// </summary>
public DateTime? MonthDate
{
get
{
if (!string.IsNullOrEmpty(this.MonthDateStr))
{
return Convert.ToDateTime(this.MonthDateStr);
}
else
{
return null;
}
}
}
/// <summary>
/// ids
/// </summary>
......@@ -31,9 +54,9 @@ namespace Edu.Model.ViewModel.Course
public int CheckNum { get; set; }
/// <summary>
/// 已上课分钟数
/// 订单id
/// </summary>
public int MinutesNum { get; set; }
public int OrderId { get; set; }
/// 学员名称
/// </summary>
......
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Course
{
/// <summary>
/// 销售提成抵扣扩展类
/// </summary>
[Serializable]
public class RB_Sell_Commission_Deduction_ViewModel : Model.Entity.Course.RB_Sell_Commission_Deduction
{
/// <summary>
/// 订单ids
/// </summary>
public string OrderIds { get; set; }
/// <summary>
/// 来源ids
/// </summary>
public string SourceIds { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Course
{
/// <summary>
/// 销售提成期数明细实体类
/// </summary>
[Serializable]
public class RB_Sell_Commission_Details_ViewModel : Model.Entity.Course.RB_Sell_Commission_Details
{
/// <summary>
/// 用户名称
/// </summary>
public string UserName { 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 ClassTypeName { get; set; }
/// <summary>
/// 订单ids
/// </summary>
public string OrderIds { get; set; }
/// <summary>
/// 是否需抵扣 1是
/// </summary>
public int IsDeduction { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Course
{
/// <summary>
/// 销售提成期数实体类
/// </summary>
[Serializable]
public class RB_Sell_Commission_Periods_ViewModel : Model.Entity.Course.RB_Sell_Commission_Periods
{
/// <summary>
/// 校区id
/// </summary>
public int SchoolId { get; set; }
/// <summary>
/// 该校区提成
/// </summary>
public decimal SchooldCommission { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Course
{
/// <summary>
/// 销售提成规则实体类
/// </summary>
[Serializable]
public class RB_Sell_Commission_Rule_ViewModel : Model.Entity.Course.RB_Sell_Commission_Rule
{
}
}
\ No newline at end of file
......@@ -15,6 +15,10 @@ namespace Edu.Model.ViewModel.Finance
[DB(ConnectionName = "FinanceConnection")]
public class RB_Finance_Extend : RB_Finance
{
/// <summary>
/// 关联ids
/// </summary>
public string ReFinanceIds { get; set; }
/// <summary>
/// 审批人信息
......
......@@ -33,6 +33,10 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 班级
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary>
/// 订单备注
/// </summary>
private readonly RB_Order_RemarkRepository order_RemarkRepository = new RB_Order_RemarkRepository();
......@@ -49,6 +53,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly CourseModule courseModule = new CourseModule();
/// <summary>
/// 课程优惠仓储层对象
/// </summary>
private readonly RB_Course_PreferentialRepository course_PreferentialRepository = new RB_Course_PreferentialRepository();
/// <summary>
/// 留学就业仓储层对象
/// </summary>
......@@ -387,6 +396,42 @@ namespace Edu.Module.Course
{
orderModel.OrderType = OrderTypeEnum.CourseOrder;
orderModel.SourceId = 0;
#region 计算订单提成信息
int CourseId = classRepository.GetEntity(orderModel.ClassId)?.CouseId ?? 0;
if (CourseId > 0)
{
//获取课程优惠
var coursePreferentialList = course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend()
{
CourseId = CourseId
});
RB_Course_Preferential_Extend coursePreferentialModel = null;
if (coursePreferentialList != null && coursePreferentialList.Count > 0)
{
if (orderModel.GuestNum == 1)
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == Common.Enum.Course.CoursePriceDiscountEnum.SingleJoin)?.FirstOrDefault();
}
if (orderModel.GuestNum >= 2)
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == Common.Enum.Course.CoursePriceDiscountEnum.DoubleJoin)?.FirstOrDefault();
}
#region 记录提成信息
if (coursePreferentialModel == null)
{
coursePreferentialModel = coursePreferentialList.FirstOrDefault();
}
orderModel.CommissionType = coursePreferentialModel?.SaleCommissionType ?? 0;
orderModel.CommissionRate = coursePreferentialModel?.SaleCommissionMoney ?? 0;
if (coursePreferentialModel != null)
{
orderModel.CommissionRemark = "使用优惠Id:" + coursePreferentialModel.Id + " 返佣类型:" + orderModel.CommissionType + " 返佣比例/金额:" + orderModel.CommissionRate;
}
#endregion
}
}
#endregion
}
else
{
......
......@@ -352,6 +352,17 @@ namespace Edu.Module.Course
{
coursePrice -= coursePreferentialModel.PriceMoney;
}
#region 记录提成信息
if (coursePreferentialModel == null) {
coursePreferentialModel = coursePreferentialList.FirstOrDefault();
}
demodel.CommissionType = coursePreferentialModel?.SaleCommissionType ?? 0;
demodel.CommissionRate = coursePreferentialModel?.SaleCommissionMoney ?? 0;
if (coursePreferentialModel != null)
{
demodel.CommissionRemark = "使用优惠Id:" + coursePreferentialModel.Id + " 返佣类型:" + demodel.CommissionType + " 返佣比例/金额:" + demodel.CommissionRate;
}
#endregion
}
if (demodel.IsLessPrice == 1 && demodel.LessPrice > 0)
{
......@@ -596,6 +607,73 @@ namespace Edu.Module.Course
return flag;
}
/// <summary>
/// 更新订单提成比例
/// </summary>
/// <returns></returns>
public bool UpdateClassOrderCommissionRate() {
var orderList = orderRepository.GetList(new RB_Order_ViewModel() { Group_Id = 100000, OrderType = OrderTypeEnum.CourseOrder, Q_OrderState = 1 });
foreach (var item in orderList) {
//根据班级查询课程
var classModel = classRepository.GetEntity(item.ClassId);
#region 计算订单优惠信息
//获取课程优惠
var coursePreferentialList = course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend()
{
CourseId = classModel.CouseId
});
//课程优惠信息
RB_Course_Preferential_Extend coursePreferentialModel = null;
if (coursePreferentialList != null && coursePreferentialList.Count > 0)
{
if (item.RenewOrderId > 0 && coursePreferentialList.Where(x => x.PriceDiscountType == CoursePriceDiscountEnum.Renewal).Any())
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.Renewal)?.FirstOrDefault();
}
if (coursePreferentialModel == null)
{
if (item.GuestNum == 1)
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.SingleJoin)?.FirstOrDefault();
}
if (item.GuestNum >= 2)
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.DoubleJoin)?.FirstOrDefault();
}
}
if (coursePreferentialModel == null) {
//随便取一个了
coursePreferentialModel = coursePreferentialList.FirstOrDefault();
}
#region 记录提成信息
item.CommissionType = coursePreferentialModel?.SaleCommissionType ?? 0;
item.CommissionRate = coursePreferentialModel?.SaleCommissionMoney ?? 0;
if (coursePreferentialModel != null)
{
item.CommissionRemark = "初始化使用优惠Id:" + coursePreferentialModel.Id + " 返佣类型:" + item.CommissionType + " 返佣比例/金额:" + item.CommissionRate;
}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Order_ViewModel.CommissionType),item.CommissionType},
{ nameof(RB_Order_ViewModel.CommissionRate),item.CommissionRate},
{ nameof(RB_Order_ViewModel.CommissionRemark),item.CommissionRemark},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Order_ViewModel.OrderId),
FiledValue=item.OrderId,
OperatorEnum=OperatorEnum.Equal
}
};
orderRepository.Update(keyValues, wheres);
#endregion
}
#endregion
}
return true;
}
/// <summary>
/// 留学就业下单
/// </summary>
......@@ -1354,6 +1432,9 @@ namespace Edu.Module.Course
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Order_ViewModel.PreferPrice),preferPrice}
};
if (orderModel.PreferPrice != preferPrice){
keyValues.Add(nameof(RB_Order_ViewModel.IsCommissionGiveOK), 0);
}
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Order_ViewModel.OrderId),
......@@ -2045,7 +2126,7 @@ namespace Edu.Module.Course
//查询所有学生的已上课时间
var stuTimeList = class_CheckRepository.GetClassGuestStudentTimeList(dmodel.Group_Id, guestIds);
//查询基础课时时长
var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = dmodel.Group_Id });
//var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = dmodel.Group_Id });
//用户信息
var userIds = string.Join(",", list.Select(x => x.CreateBy).Distinct());
var alist = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() { QIds = userIds });
......@@ -2057,14 +2138,15 @@ namespace Edu.Module.Course
item.Expend = item.FinanceList.Where(x => x.Type == Common.Enum.Finance.WFTempLateClassEnum.OUT).Sum(x => (x.Money ?? 0) + (x.Fee ?? 0));//制单就算
#endregion
var stuModel = stuTimeList.Where(x => x.OrderGuestId == item.GuestId).FirstOrDefault();
if (configModel == null || configModel.BasicMinutes <= 0)
{
item.UseClassHours = 0;
}
else
{
item.UseClassHours = (int)Math.Ceiling(Convert.ToDecimal(stuModel?.MinutesNum ?? 0) / configModel.BasicMinutes);// 已上课时 (暂时向上取整)
}
//if (configModel == null || configModel.BasicMinutes <= 0)
//{
// item.UseClassHours = 0;
//}
//else
//{
// item.UseClassHours = (int)Math.Ceiling(Convert.ToDecimal(stuModel?.MinutesNum ?? 0) / configModel.BasicMinutes);// 已上课时 (暂时向上取整)
//}
item.UseClassHours = Convert.ToInt32(stuModel?.CurrentDeductionHours ?? 0);
item.Unit_Price = 0;
item.UseCourseFee = 0;
if (item.TotalClassHours > 0)
......@@ -2077,7 +2159,7 @@ namespace Edu.Module.Course
else
{
item.Unit_Price = Math.Round(item.TotalCourseFee / item.TotalClassHours, 6, MidpointRounding.AwayFromZero);//根据合同计算(包含优惠, 需减去课件费等)
item.UseCourseFee = Math.Round((Convert.ToDecimal(item.UseClassHours) / item.TotalClassHours) * item.TotalClassHours, 6, MidpointRounding.AwayFromZero);
item.UseCourseFee = Math.Round((Convert.ToDecimal(item.UseClassHours) / item.TotalClassHours) * item.TotalCourseFee, 6, MidpointRounding.AwayFromZero);
}
}
item.UseBookFee = item.TotalBookFee;
......
This diff is collapsed.
......@@ -40,6 +40,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Student_BackRecordRepository student_BackRecordRepository = new RB_Student_BackRecordRepository();
/// <summary>
/// 课程优惠仓储层对象
/// </summary>
private readonly RB_Course_PreferentialRepository course_PreferentialRepository = new RB_Course_PreferentialRepository();
/// <summary>
/// 旅客表仓储层对象
/// </summary>
......@@ -992,6 +997,43 @@ namespace Edu.Module.Course
orderModel.OrderState = OrderStateEnum.Normal;
orderModel.OrderSource = oldOrderModel.OrderSource;
orderModel.OrderForm = oldOrderModel.OrderForm;
int CourseId = classModel?.CouseId ?? 0;
#region 计算订单提成信息
if (CourseId > 0)
{
//获取课程优惠
var coursePreferentialList = course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend()
{
CourseId = CourseId
});
RB_Course_Preferential_Extend coursePreferentialModel = null;
if (coursePreferentialList != null && coursePreferentialList.Count > 0)
{
if (orderModel.GuestNum == 1)
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.SingleJoin)?.FirstOrDefault();
}
if (orderModel.GuestNum >= 2)
{
coursePreferentialModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.DoubleJoin)?.FirstOrDefault();
}
#region 记录提成信息
if (coursePreferentialModel == null)
{
coursePreferentialModel = coursePreferentialList.FirstOrDefault();
}
orderModel.CommissionType = coursePreferentialModel?.SaleCommissionType ?? 0;
orderModel.CommissionRate = coursePreferentialModel?.SaleCommissionMoney ?? 0;
if (coursePreferentialModel != null)
{
orderModel.CommissionRemark = "使用优惠Id:" + coursePreferentialModel.Id + " 返佣类型:" + orderModel.CommissionType + " 返佣比例/金额:" + orderModel.CommissionRate;
}
#endregion
}
}
#endregion
//新增订单
var newOrderId = orderRepository.Insert(orderModel);
......
......@@ -376,7 +376,49 @@ GROUP BY A.ClassId
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassGuestStudentTimeList(int groupId, string guestIds)
{
string sql = $@"SELECT OrderGuestId, SUM(StudyNum) as MinutesNum FROM rb_class_check where `Status`=0 and Group_Id ={groupId} and CheckStatus =0 and OrderGuestId in ({guestIds}) group by OrderGuestId";
string sql = $@"SELECT OrderGuestId, SUM(CurrentDeductionHours) as CurrentDeductionHours FROM rb_class_check where `Status`=0 and Group_Id ={groupId} and CheckStatus =0 and OrderGuestId in ({guestIds}) group by OrderGuestId";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取学生的上课课时
/// </summary>
/// <param name="groupId"></param>
/// <param name="guestIds"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassStudentDeductionHoursList(int groupId, string guestIds)
{
string sql = $@"SELECT OrderGuestId, SUM(CurrentDeductionHours) as CurrentDeductionHours FROM rb_class_check where `Status`=0 and Group_Id ={groupId} and OrderGuestId in ({guestIds}) group by OrderGuestId";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取学生的上课课时
/// </summary>
/// <param name="groupId"></param>
/// <param name="orderIds"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassStudentHoursListForOrder(int groupId, string orderIds)
{
string sql = $@"SELECT g.Id as OrderGuestId,g.OrderId,SUM(c.CurrentDeductionHours) CurrentDeductionHours FROM rb_order_guest g
left join rb_class_check c on g.Id = c.OrderGuestId
WHERE g.Group_Id ={groupId} and g.`Status`=0 and g.GuestState <>2 and c.`Status` =0 and g.OrderId in({orderIds})
group by g.Id;";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取订单每月 消费课时
/// </summary>
/// <param name="groupId"></param>
/// <param name="orderIds"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassStudentHoursListForOrderMonth(int groupId, string orderIds)
{
string sql = $@"SELECT g.OrderId,DATE_FORMAT(c.CreateTime,'%Y-%m') as MonthDateStr,SUM(c.CurrentDeductionHours) CurrentDeductionHours FROM rb_order_guest g
left join rb_class_check c on g.Id = c.OrderGuestId
WHERE g.Group_Id ={groupId} and g.`Status`=0 and g.GuestState <>2 and c.`Status` =0 and g.OrderId in({orderIds})
group by g.OrderId,DATE_FORMAT(c.CreateTime,'%Y-%m');";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
}
......
......@@ -529,5 +529,41 @@ WHERE {where}
string sql = $@"SELECT ClassId, SUM(GuestNum) AS GuestNum FROM rb_order WHERE OrderState in (1,2) AND ClassId in ({classIds}) GROUP BY ClassId;";
return Get<RB_Order_ViewModel>(sql).ToList();
}
#region 销售提成
/// <summary>
/// 查询所有款收齐的订单
/// </summary>
/// <param name="group_Id"></param>
/// <param name="eDate">开班时间</param>
/// <param name="courseIds">内部班课程</param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetAllMoneyCollectedOrderList(int group_Id, string eDate,string courseIds)
{
string where = "";
if (!string.IsNullOrEmpty(courseIds))
{
where += $" and c.CouseId not in ({courseIds})";//排除内部班
}
string sql = $@"SELECT o.* FROM rb_order o
inner join rb_class c on o.ClassId = c.ClassId
WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.CommissionRate >0 and c.OpenTime <= '{eDate} 23:59:59' {where} and o.PreferPrice <= (o.Income - o.Refund + o.DiscountMoney + o.PlatformTax) and (o.IsCommissionGiveOK =0 or (o.ExtraRewardMoney -o.ExtraDeductMoney)<> o.ExtraCommissionMoney);";
return Get<RB_Order_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取销售 需补提成的订单数量
/// </summary>
/// <param name="userId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public int GetUserLeaveOrderCommission(int userId, int group_Id)
{
string sql = $@"SELECT COUNT(0) FROM rb_order WHERE Group_Id ={group_Id} and OrderState =1 and (EnterID ={userId} or HelpEnterId ={userId} ) and CommissionBack >0";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToInt32(obj) : 0;
}
#endregion
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Course
{
/// <summary>
/// 销售提成抵扣仓储层
/// </summary>
public class RB_Sell_Commission_DeductionRepository : BaseRepository<RB_Sell_Commission_Deduction>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Commission_Deduction_ViewModel> GetList(RB_Sell_Commission_Deduction_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Deduction_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Deduction_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (demodel.SourceId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Deduction_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Deduction_ViewModel.Type)} ={demodel.Type}";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_Commission_Deduction_ViewModel.OrderId)} in({demodel.OrderIds})";
}
if (!string.IsNullOrEmpty(demodel.SourceIds))
{
where += $@" and r.{nameof(RB_Sell_Commission_Deduction_ViewModel.SourceId)} in({demodel.SourceIds})";
}
string sql = $@" select r.* from RB_Sell_Commission_Deduction r where {where} order by r.Id desc";
return Get<RB_Sell_Commission_Deduction_ViewModel>(sql).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Course
{
/// <summary>
/// 销售提成期数明细仓储层
/// </summary>
public class RB_Sell_Commission_DetailsRepository : BaseRepository<RB_Sell_Commission_Details>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Commission_Details_ViewModel> GetList(RB_Sell_Commission_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.OrderId)} in({demodel.OrderIds})";
}
string sql = $@" select r.* from RB_Sell_Commission_Details r where {where} order by r.Id asc";
return Get<RB_Sell_Commission_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_Commission_Details_ViewModel> GetPageList(int pageIndex,int pageSize,out long count, RB_Sell_Commission_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select r.* from RB_Sell_Commission_Details r where {where} order by r.Id desc";
return GetPage<RB_Sell_Commission_Details_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取用户提成列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_Commission_Details_ViewModel> GetSellCommissionUserList(RB_Sell_Commission_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_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,sum(r.CurrentExtraMoney + r.DeductionExtraMoney) as CurrentExtraMoney
from RB_Sell_Commission_Details r where {where} group by r.UserId,r.Depart_Id,r.School_Id";
return Get<RB_Sell_Commission_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取每期校区对应提成
/// </summary>
/// <param name="schoolId"></param>
/// <param name="periodsIds"></param>
/// <returns></returns>
public List<RB_Sell_Commission_Details_ViewModel> GetSchoolCommission(int schoolId, string periodsIds)
{
string sql = $@"select PeriodId,SUM(CurrentPeriodMoney + CurrentExtraMoney + CurrentExtraMoney + DeductionExtraMoney) as CurrentPeriodMoney from rb_sell_commission_details
WHERE School_Id ={schoolId} and PeriodId in ({periodsIds})
GROUP BY PeriodId ";
return Get<RB_Sell_Commission_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 累计提成金额
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public decimal GetSellCommissionStatistics(RB_Sell_Commission_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.ClassId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select sum(r.CurrentPeriodMoney + r.CurrentExtraMoney + r.DeductionMoney + r.DeductionExtraMoney) from RB_Sell_Commission_Details r where {where}";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToDecimal(obj);
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Course
{
/// <summary>
/// 销售提成期数仓储层
/// </summary>
public class RB_Sell_Commission_PeriodsRepository : BaseRepository<RB_Sell_Commission_Periods>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Commission_Periods_ViewModel> GetList(RB_Sell_Commission_Periods_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Periods_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Sell_Commission_Periods_ViewModel.Name)} like '%{demodel.Name}%'";
}
if (!string.IsNullOrEmpty(demodel.Periods))
{
where += $@" and r.{nameof(RB_Sell_Commission_Periods_ViewModel.Periods)} ='{demodel.Periods}'";
}
string sql = $@" select r.* from RB_Sell_Commission_Periods r where {where} order by r.Id desc";
return Get<RB_Sell_Commission_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_Commission_Periods_ViewModel> GetPageList(int pageIndex,int pageSize,out long count,RB_Sell_Commission_Periods_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Periods_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Sell_Commission_Periods_ViewModel.Name)} like '%{demodel.Name}%'";
}
string sql = $@" select r.* from RB_Sell_Commission_Periods r where {where} order by r.Id desc";
return GetPage<RB_Sell_Commission_Periods_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Course
{
/// <summary>
/// 销售提成规则仓储层
/// </summary>
public class RB_Sell_Commission_RuleRepository : BaseRepository<RB_Sell_Commission_Rule>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_Commission_Rule_ViewModel> GetList(RB_Sell_Commission_Rule_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_Commission_Rule_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
string sql = $@" select r.* from RB_Sell_Commission_Rule r where {where} order by r.Id desc";
return Get<RB_Sell_Commission_Rule_ViewModel>(sql).ToList();
}
}
}
......@@ -109,6 +109,10 @@ namespace Edu.Repository.Finance
{
where += string.Format(" AND A." + nameof(RB_Finance.ReFinanceId) + " ={0}", model.ReFinanceId);
}
if (!string.IsNullOrEmpty(model.ReFinanceIds))
{
where += string.Format(" AND A." + nameof(RB_Finance.ReFinanceId) + " in({0})", model.ReFinanceIds);
}
if (model.Status > 0)
{
where += string.Format(" AND A." + nameof(RB_Finance.Status) + " ={0}", (int)model.Status);
......
......@@ -202,10 +202,13 @@ namespace Edu.WebApi.Controllers.Course
OrderSourceName = x.OrderSource.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
YFCommissionMoney = x.CommissionType == 1 ? x.CommissionRate : Math.Round(x.PreferPrice * x.CommissionRate / 100, 2, MidpointRounding.AwayFromZero),
x.CommissionMoney,
x.ExtraCommissionMoney,
x.ExtraRewardMoney,
x.ExtraDeductMoney,
x.IsCommissionGive,
x.CommissionBack,
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
x.SaleRemark,
x.TeacherRemark,
......@@ -280,7 +283,9 @@ namespace Edu.WebApi.Controllers.Course
OrderStateName = x.OrderState.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
YFCommissionMoney = x.CommissionType == 1 ? x.CommissionRate : Math.Round(x.PreferPrice * x.CommissionRate / 100, 2, MidpointRounding.AwayFromZero),
x.CommissionMoney,
x.ExtraCommissionMoney,
x.ExtraRewardMoney,
x.ExtraDeductMoney,
x.IsCommissionGive,
......@@ -1108,10 +1113,13 @@ namespace Edu.WebApi.Controllers.Course
OrderSourceName = x.OrderSource.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
YFCommissionMoney = x.CommissionType == 1 ? x.CommissionRate : Math.Round(x.PreferPrice * x.CommissionRate / 100, 2, MidpointRounding.AwayFromZero),
x.CommissionMoney,
x.ExtraCommissionMoney,
x.ExtraRewardMoney,
x.ExtraDeductMoney,
x.IsCommissionGive,
x.CommissionBack,
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
SaleRemark = x?.SaleRemark ?? "",
TeacherRemark = x?.TeacherRemark ?? "",
......@@ -1246,10 +1254,13 @@ namespace Edu.WebApi.Controllers.Course
OrderSourceName = x.OrderSource.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
YFCommissionMoney = x.CommissionType == 1 ? x.CommissionRate : Math.Round(x.PreferPrice * x.CommissionRate / 100, 2, MidpointRounding.AwayFromZero),
x.CommissionMoney,
x.ExtraCommissionMoney,
x.ExtraRewardMoney,
x.ExtraDeductMoney,
x.IsCommissionGive,
x.CommissionBack,
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
SaleRemark = x?.SaleRemark ?? "",
TeacherRemark = x?.TeacherRemark ?? "",
......
This diff is collapsed.
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