Commit d530a8a1 authored by 吴春's avatar 吴春

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

parents d9ccbba1 035ed495
......@@ -269,33 +269,7 @@ namespace Edu.Model.Entity.Finance
private int? otherType = 0;
/// <summary>
/// 其他来源类型 1追加团款 2单机票(2019-11-20 机票管理里 只有机票不绑团,其财务单据 需要在简易报表那边排除)
/// 3 平台 4 外交平台 (2019-12-05)ld
/// 5 酒店折让单 2019-12-18 ld
/// 6 手配费收入 2019-12-30 ld
/// 7 预付款冲抵 2019-12-30 ld
/// 8 领队返款单据 2020-03-30 ld
/// 9 电商单据 2020-04-01 ld
/// 10 财务收据 2020-04-09 ld
/// 11 赞羊返佣 2020-06-09 ld
/// 12 赞羊已发货退货退款 2020-06-09 ld
/// 13 赞羊成本 2020-06-09 ld
/// 14 赞羊未发货退款 2020-06-09 ld
/// 15 电商采购 2020-07-07 ld
/// 16 电商出库 2020-07-09 ld
/// 17 电商报损/报溢单 2020-07-28 ld
/// 18 电商推荐返佣 2020-08-05 ld
/// 19 微店返佣 2020-08-05 ld
/// 20 直播返佣 2020-08-18 ld
/// 21 赞羊订单其他收入 2020-08-18 ld
/// 22 赞羊订单其他支出 2020-08-18 ld
/// 23 电商erp已发货退货退款 2020-09-15 ld
/// 24 电商erp未发货退款(制单就原路退款) 2020-09-15 ld
/// 25 和平甲鹤 已复制单据
/// 26 教育教师奖金单据
/// 27 教育教师绩效单据 2020-12-18 ld
/// 28 教育退课单据 2020-12-23 ld
/// 29 教育报价单-订单 2021-03-15 ld
/// 在旅游erp项目查看详情
/// </summary>
public int? OtherType { get => otherType; set => otherType = value; }
......
......@@ -296,6 +296,16 @@ namespace Edu.Model.Entity.Sell
/// </summary>
public int VisitorReserveId { get; set; }
/// <summary>
/// 留学订单确认状态 1已确认
/// </summary>
public int LXConfirmState { get; set; }
/// <summary>
/// 确认人
/// </summary>
public int LXConfirmEmpId { get; set; }
/// <summary>
/// 留学确认时间(确认后 才能发提成 才进报表)
/// </summary>
......
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_StudyAbroad_Details
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 父级ID
/// </summary>
public int PeriodId { get; set; }
/// <summary>
/// 关联用户
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 留学项目id
/// </summary>
public int SourceId { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 提成总金额
/// </summary>
public decimal CommissionMoney { 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 Periods { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 报名人数
/// </summary>
public int StudentCount { 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_StudyAbroad_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; }
}
}
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_StudyAbroad_Rule
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 类型 枚举列表
/// </summary>
public int OrderType { get; set; }
/// <summary>
/// 提成类型 1销售额 2利润
/// </summary>
public int CommissionType { get; set; }
/// <summary>
/// 提成比列
/// </summary>
public decimal CommissionRate { 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; }
}
}
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 销售提成期数明细实体类
/// </summary>
[Serializable]
public class RB_Sell_StudyAbroad_Details_ViewModel : RB_Sell_StudyAbroad_Details
{
/// <summary>
/// 用户名称
/// </summary>
public string UserName { 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 SourceName { get; set; }
/// <summary>
/// 项目类型 1留学 2就业
/// </summary>
public int SourceType { get; set; }
/// <summary>
/// 订单ids
/// </summary>
public string OrderIds { 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_StudyAbroad_Periods_ViewModel : RB_Sell_StudyAbroad_Periods
{
/// <summary>
/// 校区id
/// </summary>
public int SchoolId { get; set; }
/// <summary>
/// 该校区提成
/// </summary>
public decimal SchooldCommission { 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_StudyAbroad_Rule_ViewModel : RB_Sell_StudyAbroad_Rule
{
}
}
\ No newline at end of file
......@@ -18,6 +18,7 @@ using Edu.Repository.Finance;
using Edu.Repository.Grade;
using Edu.Repository.Log;
using Edu.Repository.Sell;
using Edu.Repository.StudyAbroad;
using Edu.Repository.User;
using Newtonsoft.Json.Linq;
using System;
......@@ -57,6 +58,23 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Order_GuestRepository order_GuestRepository = new RB_Order_GuestRepository();
/// <summary>
/// 留学提成规则
/// </summary>
private readonly RB_Sell_StudyAbroad_RuleRepository studyAbroad_RuleRepository = new RB_Sell_StudyAbroad_RuleRepository();
/// <summary>
/// 留学提成期数
/// </summary>
private readonly RB_Sell_StudyAbroad_PeriodsRepository studyAbroad_PeriodsRepository = new RB_Sell_StudyAbroad_PeriodsRepository();
/// <summary>
/// 留学提成明细
/// </summary>
private readonly RB_Sell_StudyAbroad_DetailsRepository studyAbroad_DetailsRepository = new RB_Sell_StudyAbroad_DetailsRepository();
/// <summary>
/// 留学就业项目
/// </summary>
private readonly RB_StudyAbroadRepository studyAbroadRepository = new RB_StudyAbroadRepository();
/// <summary>
/// 签到
/// </summary>
......@@ -1491,7 +1509,7 @@ namespace Edu.Module.Course
}
return "";
}
}
/// <summary>
/// 生成当期提成
......@@ -2661,5 +2679,471 @@ namespace Edu.Module.Course
}
#endregion
#region 留学提成
/// <summary>
/// 获取规则列表
/// </summary>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Rule_ViewModel> GetSellStudyAbroadRuleList(int group_Id)
{
return studyAbroad_RuleRepository.GetList(new RB_Sell_StudyAbroad_Rule_ViewModel() { Group_Id = group_Id });
}
/// <summary>
/// 保存规则
/// </summary>
/// <param name="deList"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public bool SetSellStudyAbroadRule(List<RB_Sell_StudyAbroad_Rule_ViewModel> deList, UserInfo userInfo)
{
foreach (var item in deList) {
if (item.Id > 0)
{
//修改
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_StudyAbroad_Rule_ViewModel.OrderType), item.OrderType},
{ nameof(RB_Sell_StudyAbroad_Rule_ViewModel.CommissionType), item.CommissionType},
{ nameof(RB_Sell_StudyAbroad_Rule_ViewModel.CommissionRate), item.CommissionRate},
{ nameof(RB_Sell_StudyAbroad_Rule_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Sell_StudyAbroad_Rule_ViewModel.UpdateTime), DateTime.Now}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Sell_StudyAbroad_Rule_ViewModel.Id),
FiledValue= item.Id,
OperatorEnum= OperatorEnum.Equal
}
};
studyAbroad_RuleRepository.Update(keyValues, wheres);
}
else {
//新增
studyAbroad_RuleRepository.Insert(item);
}
}
return true;
}
/// <summary>
/// 获取留学提成期数分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Periods_ViewModel> GetSellStudyAbroadPeriodsPageList(int pageIndex, int pageSize, out long count, RB_Sell_StudyAbroad_Periods_ViewModel dmodel)
{
var list = studyAbroad_PeriodsRepository.GetPageList(pageIndex, pageSize, out count, dmodel);
if (list.Any())
{
//查询财务单据
string periodsIds = string.Join(",", list.Select(x => x.Id));
var financeList = financeRepository.GetListSingle(new RB_Finance_Extend() { RB_Group_Id = dmodel.Group_Id, FinanceType = 2, OtherType = 44, ReFinanceIds = periodsIds, IsSelectNormal = 1 });
List<RB_Sell_Commission_Details_ViewModel> scList = new List<RB_Sell_Commission_Details_ViewModel>();
if (dmodel.SchoolId >= 0)
{
//获取该校区应发提成
scList = sell_Commission_DetailsRepository.GetSchoolCommission(dmodel.SchoolId, periodsIds);
}
foreach (var item in list)
{
var flist = financeList.Where(x => x.ReFinanceId == item.Id).Select(x => x.FrID);
if (flist.Any())
{
item.Financials = string.Join(",", flist);
}
item.SchooldCommission = item.SumPrice;
if (dmodel.SchoolId >= 0)
{
item.SchooldCommission = scList.Where(x => x.PeriodId == item.Id).FirstOrDefault()?.CurrentPeriodMoney ?? 0;
}
}
}
return list;
}
/// <summary>
/// 获取留学提成期数列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Periods_ViewModel> GetSellStudyAbroadPeriodsList(RB_Sell_StudyAbroad_Periods_ViewModel dmodel)
{
return studyAbroad_PeriodsRepository.GetList(dmodel);
}
/// <summary>
/// 获取留学销售提成列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Details_ViewModel> GetSellStudyAbroadUserList(RB_Sell_StudyAbroad_Details_ViewModel dmodel)
{
var list = studyAbroad_DetailsRepository.GetSellCommissionUserList(dmodel);
if (list.Any())
{
//查询用户 部门 校区
string userIds = string.Join(",", list.Select(x => x.UserId).Distinct());
string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct());
string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds });
var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds });
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds });
foreach (var item in list)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? "";
item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? "";
}
}
return list;
}
/// <summary>
/// 获取留学销售提成明细
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Details_ViewModel> GetSellStudyAbroadUserDetailList(RB_Sell_StudyAbroad_Details_ViewModel dmodel)
{
var list = studyAbroad_DetailsRepository.GetList(dmodel);
if (list.Any())
{
//查询用户 部门 校区
string userIds = string.Join(",", list.Select(x => x.UserId).Distinct());
string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct());
string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds });
var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds });
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds });
//查询出所属留学项目信息
string classIds = string.Join(",", list.Select(x => x.SourceId).Distinct());
var clist = studyAbroadRepository.GetStudyAbroadListRepository(new Model.ViewModel.StudyAbroad.RB_StudyAbroad_ViewModel() { Group_Id = dmodel.Group_Id, QIds = classIds });
foreach (var item in list)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? "";
item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? "";
item.SourceName = clist.Where(x => x.Id == item.SourceId).FirstOrDefault()?.Name ?? "";
item.SourceType = clist.Where(x => x.Id == item.SourceId).FirstOrDefault()?.Type ?? 1;// 1留学 2就业
}
}
return list;
}
/// <summary>
/// 获取财务统计 - 销售提成明细列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Details_ViewModel> GetSellStudyAbroadStatisticsPageList(int pageIndex, int pageSize, out long count, RB_Sell_StudyAbroad_Details_ViewModel dmodel)
{
var list = studyAbroad_DetailsRepository.GetPageList(pageIndex, pageSize, out count, dmodel);
if (list.Any())
{
//查询用户 部门 校区
string userIds = string.Join(",", list.Select(x => x.UserId).Distinct());
string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct());
string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds });
var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds });
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds });
//查询出所属留学项目信息
string classIds = string.Join(",", list.Select(x => x.SourceId).Distinct());
var clist = studyAbroadRepository.GetStudyAbroadListRepository(new Model.ViewModel.StudyAbroad.RB_StudyAbroad_ViewModel() { Group_Id = dmodel.Group_Id, QIds = classIds });
foreach (var item in list)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? "";
item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? "";
item.SourceName = clist.Where(x => x.Id == item.SourceId).FirstOrDefault()?.Name ?? "";
item.SourceType = clist.Where(x => x.Id == item.SourceId).FirstOrDefault()?.Type ?? 1;// 1留学 2就业
}
}
return list;
}
/// <summary>
/// 获取留学累积提成金额统计
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public decimal GetSellStudyAbroadStatistics(RB_Sell_StudyAbroad_Details_ViewModel dmodel)
{
return studyAbroad_DetailsRepository.GetSellStudyAbroadStatistics(dmodel);
}
/// <summary>
/// 设置留学订单确认
/// </summary>
/// <param name="orderId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetStudyAboradOrderConfirm(int orderId, UserInfo userInfo)
{
var model = orderRepository.GetEntity(orderId);
if (model == null) { return "订单不存在"; }
if (model.OrderType != Common.Enum.Sale.OrderTypeEnum.StudyabroadOrder) { return "非留学就业订单,不可确定"; }
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Order.LXConfirmEmpId), userInfo.Id},
{ nameof(RB_Order.LXConfirmState), 1},
{ nameof(RB_Order.LXConfirmDate), DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_Order.OrderId),
FiledValue= orderId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = orderRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
/// <summary>
/// 生成留学提成
/// </summary>
/// <param name="month"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetSellStudyAbroadInfo(string month, UserInfo userInfo)
{
//首先查询该月是否已创建
var plist = studyAbroad_PeriodsRepository.GetList(new RB_Sell_StudyAbroad_Periods_ViewModel() { Group_Id = userInfo.Group_Id, Periods = month });
if (plist.Any())
{
return "当月提成已创建";
}
string EDate = Convert.ToDateTime(month + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
var orderList = orderRepository.GetAllCanSendStudyAbroadCommissionList(userInfo.Group_Id, EDate);//当前时间以前的所有未发放提成的订单
if (orderList.Any())
{
#region 基础数据
//查询规则列表
var rulelist = studyAbroad_RuleRepository.GetList(new RB_Sell_StudyAbroad_Rule_ViewModel() { Group_Id = userInfo.Group_Id });
//查询所有的人员
var saleIdList = orderList.Select(x => x.EnterID).Distinct().ToList();
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.SourceId).Distinct());
var clist = studyAbroadRepository.GetStudyAbroadListRepository(new Model.ViewModel.StudyAbroad.RB_StudyAbroad_ViewModel() { Group_Id = userInfo.Group_Id, QIds = classIds });
//财务单据
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
var financeList = financeRepository.GetListSingle(new RB_Finance_Extend() { RB_Group_Id = userInfo.Group_Id, FinanceType = 2, Type = Common.Enum.Finance.WFTempLateClassEnum.OUT, OrderIdStr = orderIds, Status = Common.Enum.Finance.FinanceAuditStatus.Pass });
#endregion
List<RB_Sell_StudyAbroad_Details_ViewModel> CurrentList = new List<RB_Sell_StudyAbroad_Details_ViewModel>();//当期的提成明细
foreach (var item in orderList)
{
//查询留学项目
var classModel = clist.Where(x => x.Id == item.SourceId).FirstOrDefault();
if (classModel == null) { continue; }
//查询规则
var ruleModel = rulelist.Where(x => x.OrderType == (int)item.OrderNature).FirstOrDefault();
if (ruleModel == null) { continue; }
var flist = financeList.Where(x => x.OrderID == item.OrderId).ToList();
decimal TotalMoney = 0;//销售额/利润
if (ruleModel.CommissionType == 1)
{
//销售额
decimal XSEMoney = item.Income + item.PlatformTax;
XSEMoney -= flist.Where(x => x.OtherType != 45).Sum(x => x.Money ?? 0);//排除成本的
TotalMoney = XSEMoney;
}
else
{
//利润
decimal LRMoney = item.Income - flist.Sum(x => x.Money ?? 0);//利润=实收减成本退款的
TotalMoney = LRMoney;
}
//计算提成
item.CommissionMoney = Math.Round(TotalMoney * ruleModel.CommissionRate / 100, 2, MidpointRounding.AwayFromZero);
CurrentList.Add(new RB_Sell_StudyAbroad_Details_ViewModel()
{
Id = 0,
BackMoney = item.ExtraDeductMoney,
CommissionMoney = item.CommissionMoney,
OrderId = item.OrderId,
OtherMoney = item.ExtraRewardMoney,
UserId = item.EnterID,
StudentCount = item.GuestNum,
PeriodId = 0,
SourceId = item.SourceId,
Periods = item.LXConfirmDate.Value.ToString("yyyy-MM"),
Remark = (ruleModel.CommissionType == 1 ? "销售额" : "利润") + ":" + TotalMoney + " 返佣比例:" + ruleModel.CommissionRate
});
}
#region 开始创建
var trans = studyAbroad_PeriodsRepository.DbTransaction;
try
{
int PeriodsId = studyAbroad_PeriodsRepository.Insert(new RB_Sell_StudyAbroad_Periods()
{
Id = 0,
CreateBy = userInfo.Id,
CreateTime = DateTime.Now,
Financials = "",
Group_Id = userInfo.Group_Id,
Name = month + "期提成",
Periods = month,
SumPrice = 0
}, 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;
studyAbroad_DetailsRepository.Insert(qitem, trans);
}
#region 计算累计应发
decimal SumPrice = CurrentList.Sum(x => x.CommissionMoney + x.OtherMoney - x.BackMoney);
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_StudyAbroad_Periods.SumPrice),SumPrice}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Sell_StudyAbroad_Periods.Id),
FiledValue=PeriodsId,
OperatorEnum=OperatorEnum.Equal
}
};
studyAbroad_PeriodsRepository.Update(keyValues, wheres, trans);
#endregion
}
studyAbroad_PeriodsRepository.DBSession.Commit();
#region 订单更新
//再次查询所有订单的
foreach (var item in orderList)
{
if (item.CommissionMoney != -1)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Order_ViewModel.CommissionMoney), item.CommissionMoney},
{ nameof(RB_Order_ViewModel.ExtraCommissionMoney), item.ExtraRewardMoney - item.ExtraDeductMoney},
{ nameof(RB_Order_ViewModel.IsCommissionGive), 1},
{ nameof(RB_Order_ViewModel.IsCommissionGiveOK), 1}
};
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
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetSellStudyAbroadInfo");
studyAbroad_PeriodsRepository.DBSession.Rollback();
return "出错了,请联系管理员";
}
#endregion
}
else {
return "当月并没有可发放提成订单";
}
return "";
}
/// <summary>
/// 获取可发放人员
/// </summary>
/// <param name="periodId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public object GetSellStudyAbroadSendEmployeeList(int periodId, UserInfo userInfo)
{
var model = studyAbroad_PeriodsRepository.GetEntity(periodId);
if (model == null) { return "周期不存在"; }
List<int> EmpIdList = new List<int>();
if (!string.IsNullOrEmpty(model.EmpIds))
{
EmpIdList = JsonHelper.DeserializeObject<List<int>>("[" + model.EmpIds + "]");
}
var list = GetSellStudyAbroadUserList(new RB_Sell_StudyAbroad_Details_ViewModel() { Group_Id = userInfo.Group_Id, PeriodId = periodId });
return list.Select(x => new
{
x.UserId,
x.UserName,
x.StudentCount,
CommissionMoney = x.CommissionMoney + x.OtherMoney - x.BackMoney,
IsGiveOut = EmpIdList.Contains(x.UserId) ? 1 : 2
});
}
/// <summary>
/// 设置已发放人员
/// </summary>
/// <param name="periodId"></param>
/// <param name="empIds"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetSellStudyAbroadSendEmployee(int periodId, string empIds, UserInfo userInfo)
{
var model = studyAbroad_PeriodsRepository.GetEntity(periodId);
if (model == null) { return "周期不存在"; }
if (model.Group_Id != userInfo.Group_Id) { return "集团不正确"; }
List<int> EmpIdList = new List<int>();
if (!string.IsNullOrEmpty(model.EmpIds))
{
EmpIdList = JsonHelper.DeserializeObject<List<int>>("[" + model.EmpIds + "]");
}
List<int> NewIdList = JsonHelper.DeserializeObject<List<int>>("[" + empIds + "]");
foreach (var item in NewIdList)
{
if (EmpIdList.Contains(item))
{
return "用户ID" + item + "已发放了提成,无法重复发放";
}
}
EmpIdList.AddRange(NewIdList);
string empids2 = string.Join(",", EmpIdList);
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Sell_StudyAbroad_Periods_ViewModel.EmpIds),empids2}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_Sell_StudyAbroad_Periods_ViewModel.Id),
FiledValue=periodId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = studyAbroad_PeriodsRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
}
}
......@@ -327,7 +327,7 @@ namespace Edu.Module.Finance
}
//查询日期范围内所有的班级
var classList = classRepository.GetClassAndCourseListRepository(new RB_Class_ViewModel() { Group_Id = GroupId, StartTime = STime, EndTime = ETime }).ToList();
var classList = classRepository.GetClassAndCourseListRepository(new RB_Class_ViewModel() { Group_Id = GroupId, StartTime = STime, EndTime = ETime }).ToList();
List<RB_Order_ViewModel> orderAllList = new List<RB_Order_ViewModel>();
List<RB_Finance_Extend> FAllList = new List<RB_Finance_Extend>();
List<RB_Teaching_BonusDetail_ViewModel> teacherBonusList = new List<RB_Teaching_BonusDetail_ViewModel>();
......@@ -526,7 +526,7 @@ namespace Edu.Module.Finance
demodel.QTShouRu = cfinanceList.Where(y => y.Is_Cashier == 1).Sum(x => x.Money ?? 0);
demodel.QTShouRu -= cfinanceList.Where(x => x.Is_Cashier == 1 && x.Fee > 0).GroupBy(x => new { x.FrID, x.Fee }).Sum(x => x.Key.Fee ?? 0);
//支出
demodel.TiCheng = 0;//销售提成 -留学提成暂定
demodel.TiCheng = (orderList != null && orderList.Any()) ? orderList.Where(x => x.IsCommissionGive == 1).Sum(x => x.CommissionMoney + x.ExtraCommissionMoney) : 0;//销售提成 -留学提成暂定
demodel.ClassFee = 0;//老师提成 -留学暂定
demodel.JiXiaoMoney = 0;//绩效提成 -留学暂定
......@@ -1390,8 +1390,8 @@ namespace Edu.Module.Finance
{
SourceIdArr.AddRange(lxOrderList.Select(x => x.SourceId).Distinct());
}
//财务单据
var lxFinanceList = RB_FinanceRepository.GetListForReportClass(new RB_Finance_Extend() { RB_Group_Id = GroupId, RB_Branch_Id = branchitem.SId, TCID = -2, sAduitDate = Convert.ToDateTime(startTime), eAduitDate = Convert.ToDateTime(endTime), FinanceType = 2, OrderSource = OrderResourceEnum.EducationStudy }, datebaseStr);
//财务单据 付款单制单那月就统计进那月, 王姐的需求 因为这个是按照月份分摊的
var lxFinanceList = RB_FinanceRepository.GetListForReportClass(new RB_Finance_Extend() { RB_Group_Id = GroupId, RB_Branch_Id = branchitem.SId, TCID = -3, sAduitDate = Convert.ToDateTime(startTime), eAduitDate = Convert.ToDateTime(endTime), FinanceType = 2, OrderSource = OrderResourceEnum.EducationStudy }, datebaseStr);
if (lxFinanceList.Any())
{
SourceIdArr.AddRange(lxFinanceList.Select(x => x.TCID ?? 0));
......@@ -1425,11 +1425,11 @@ namespace Edu.Module.Finance
decimal QTShouRu = cfinanceList.Where(y => y.Is_Cashier == 1).Sum(x => x.Money ?? 0);
QTShouRu -= cfinanceList.Where(x => x.Is_Cashier == 1 && x.Fee > 0).GroupBy(x => new { x.FrID, x.Fee }).Sum(x => x.Key.Fee ?? 0);
//支出
decimal TiCheng = 0;//销售提成 -留学提成暂定
decimal TiCheng = (olist != null && olist.Any()) ? olist.Where(x => x.IsCommissionGive == 1).Sum(x => x.CommissionMoney + x.ExtraCommissionMoney) : 0;//销售提成 -留学提成暂定
decimal ClassFee = 0;//老师提成 -留学暂定
decimal JiXiaoMoney = 0;//绩效提成 -留学暂定
var ofinanceList = lxflist.Where(x => x.OrderID == 0 && x.Type == WFTempLateClassEnum.OUT).ToList();
var ofinanceList = lxflist.Where(x => (x.OrderID == 0 || (x.OrderID > 0 && x.OtherType == 45)) && x.Type == WFTempLateClassEnum.OUT).ToList();
decimal QTZhiChu = ofinanceList.Sum(x => x.Money ?? 0);
#endregion
......
......@@ -55,6 +55,10 @@ WHERE 1=1
{
builder.AppendFormat(@" AND FIND_IN_SET('{0}', A.HandoverDlandetails)>0 ", query.HandoverDlandetails);
}
if (query.CreateBy > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Duty_Content_ViewModel.CreateBy), query.CreateBy);
}
}
return Get<RB_Duty_Content_ViewModel>(builder.ToString()).ToList();
}
......
......@@ -296,11 +296,16 @@ LEFT JOIN rb_travel_finance_relation as E ON A.FinanceId=E.FinanceId where 1=1 "
{
where.Append(" and IFNULL(E.TCID,0)=0");
}
if (model.TCID == -2)
else if (model.TCID == -2)
{
where.Append(" and IFNULL(E.TCID,0) >0");//班级上的单据
where.Append(" and IFNULL(b.OrderID,0) =0");
}
else if (model.TCID == -3)
{
where.Append(" and IFNULL(E.TCID,0) >0");//班级上的单据
where.Append(" and (IFNULL(b.OrderID,0) =0 or (IFNULL(b.OrderID,0) >0 and b.OtherType =45))");
}
if (model.RB_Branch_Id >= 0)
{
where.Append(" AND c.School_Id =" + model.RB_Branch_Id);
......
......@@ -645,6 +645,19 @@ WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.EffectStatus in(1,2) and
return obj != null ? Convert.ToInt32(obj) : 0;
}
/// <summary>
/// 获取可发放提成的留学订单列表
/// </summary>
/// <param name="group_Id"></param>
/// <param name="eDate"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetAllCanSendStudyAbroadCommissionList(int group_Id, string eDate)
{
string sql = $@"SELECT * FROM rb_order WHERE Group_Id ={group_Id} and OrderType =2 and OrderState <>3
and LXConfirmState =1 and IFNULL(CommissionMoney,0) = -1 and LXConfirmDate <='{eDate} 23:59:59'";
return Get<RB_Order_ViewModel>(sql).ToList();
}
#endregion
#region 销售业绩统计
......
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_StudyAbroad_DetailsRepository : BaseRepository<RB_Sell_StudyAbroad_Details>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Details_ViewModel> GetList(RB_Sell_StudyAbroad_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (!string.IsNullOrEmpty(demodel.UserIds))
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.UserId)} in({demodel.UserIds})";
}
if (demodel.SourceId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrEmpty(demodel.OrderIds))
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.OrderId)} in({demodel.OrderIds})";
}
string sql = $@" select r.* from RB_Sell_StudyAbroad_Details r where {where} order by r.Id asc";
return Get<RB_Sell_StudyAbroad_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_StudyAbroad_Details_ViewModel> GetPageList(int pageIndex, int pageSize, out long count, RB_Sell_StudyAbroad_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.SourceId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select r.* from RB_Sell_StudyAbroad_Details r where {where} order by r.Id desc";
return GetPage<RB_Sell_StudyAbroad_Details_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取用户提成列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Details_ViewModel> GetSellCommissionUserList(RB_Sell_StudyAbroad_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.SourceId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select r.UserId,r.Depart_Id,r.School_Id,sum(r.StudentCount) as StudentCount,sum(r.CommissionMoney) as CommissionMoney,sum(r.OtherMoney) as OtherMoney,sum(r.BackMoney) as BackMoney
from RB_Sell_StudyAbroad_Details r where {where} group by r.UserId,r.Depart_Id,r.School_Id";
return Get<RB_Sell_StudyAbroad_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取每期校区对应提成
/// </summary>
/// <param name="schoolId"></param>
/// <param name="periodsIds"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Details_ViewModel> GetSchoolCommission(int schoolId, string periodsIds)
{
string sql = $@"select PeriodId,SUM(CommissionMoney + OtherMoney - BackMoney) as CommissionMoney from RB_Sell_StudyAbroad_Details
WHERE School_Id ={schoolId} and PeriodId in ({periodsIds})
GROUP BY PeriodId ";
return Get<RB_Sell_StudyAbroad_Details_ViewModel>(sql).ToList();
}
/// <summary>
/// 累计提成金额
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public decimal GetSellStudyAbroadStatistics(RB_Sell_StudyAbroad_Details_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id >= 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.School_Id)} ={demodel.School_Id}";
}
if (demodel.Depart_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.Depart_Id)} ={demodel.Depart_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.UserId)} ={demodel.UserId}";
}
if (demodel.SourceId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.OrderId > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Details_ViewModel.OrderId)} ={demodel.OrderId}";
}
string sql = $@" select sum(r.CommissionMoney + r.OtherMoney - r.BackMoney) from RB_Sell_StudyAbroad_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.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_StudyAbroad_PeriodsRepository : BaseRepository<RB_Sell_StudyAbroad_Periods>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Periods_ViewModel> GetList(RB_Sell_StudyAbroad_Periods_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Periods_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Periods_ViewModel.Name)} like '%{demodel.Name}%'";
}
if (!string.IsNullOrEmpty(demodel.Periods))
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Periods_ViewModel.Periods)} ='{demodel.Periods}'";
}
string sql = $@" select r.* from RB_Sell_StudyAbroad_Periods r where {where} order by r.Id desc";
return Get<RB_Sell_StudyAbroad_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_StudyAbroad_Periods_ViewModel> GetPageList(int pageIndex,int pageSize,out long count, RB_Sell_StudyAbroad_Periods_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Periods_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Periods_ViewModel.Name)} like '%{demodel.Name}%'";
}
string sql = $@" select r.* from RB_Sell_StudyAbroad_Periods r where {where} order by r.Id desc";
return GetPage<RB_Sell_StudyAbroad_Periods_ViewModel>(pageIndex, pageSize, out count, 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_StudyAbroad_RuleRepository : BaseRepository<RB_Sell_StudyAbroad_Rule>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Sell_StudyAbroad_Rule_ViewModel> GetList(RB_Sell_StudyAbroad_Rule_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Rule_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.OrderType > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Rule_ViewModel.OrderType)} ={demodel.OrderType}";
}
if (demodel.CommissionType > 0)
{
where += $@" and r.{nameof(RB_Sell_StudyAbroad_Rule_ViewModel.CommissionType)} ={demodel.CommissionType}";
}
string sql = $@" select r.* from RB_Sell_StudyAbroad_Rule r where {where} order by r.Id desc";
return Get<RB_Sell_StudyAbroad_Rule_ViewModel>(sql).ToList();
}
}
}
......@@ -249,6 +249,7 @@ namespace Edu.WebApi.Controllers.Course
x.RenewOrderId,
x.FirstOrderId,
x.IsBackClass,
x.LXConfirmState,
SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new
{
qitem.S_ClassId,
......@@ -1820,6 +1821,9 @@ namespace Edu.WebApi.Controllers.Course
x.OrderNature,
OrderNatureName = x.OrderNature.ToName(),
x.OldPreferPrice,
x.LXConfirmState,
x.LXConfirmDate,
x.LXConfirmEmpId,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -1939,6 +1943,9 @@ namespace Edu.WebApi.Controllers.Course
x.OrderNature,
OrderNatureName = x.OrderNature.ToName(),
x.OldPreferPrice,
x.LXConfirmDate,
x.LXConfirmEmpId,
x.LXConfirmState,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......
......@@ -573,5 +573,480 @@ namespace Edu.WebApi.Controllers.Course
#endregion
#region 留学提成
#region 规则配置
/// <summary>
/// 获取销售规则列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadRuleList()
{
var userInfo = base.UserInfo;
var list = sellCommissionModule.GetSellStudyAbroadRuleList(userInfo.Group_Id);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.OrderType,
x.CommissionType,
x.CommissionRate
}));
}
/// <summary>
/// 保存销售规则配置
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetSellStudyAbroadRule()
{
var userInfo = base.UserInfo;
List<RB_Sell_StudyAbroad_Rule_ViewModel> deList = JsonHelper.DeserializeObject<List<RB_Sell_StudyAbroad_Rule_ViewModel>>(RequestParm.Msg.ToString());
if (!deList.Any())
{
return ApiResult.ParamIsNull("请传递比例列表");
}
foreach (var item in deList)
{
if (item.OrderType <= 0)
{
return ApiResult.ParamIsNull("请传递订单类型");
}
if (item.CommissionType <= 0)
{
return ApiResult.ParamIsNull("请传递提成类型");
}
if (item.CommissionRate < 0)
{
return ApiResult.ParamIsNull("提成比例不能小于0");
}
}
var flag = sellCommissionModule.SetSellStudyAbroadRule(deList, userInfo);
if (flag)
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed();
}
}
#endregion
#region 留学提成
/// <summary>
/// 获取提成期数分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadPeriodsPageList()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Periods_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
var list = sellCommissionModule.GetSellStudyAbroadPeriodsPageList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list.Select(x => new
{
x.Id,
x.Periods,
x.SumPrice,
x.SchooldCommission,
x.Name,
FrIdList = string.IsNullOrEmpty(x.Financials) ? new List<string>() : x.Financials.Split(',').ToList(),
x.CreateBy,
CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "",
CreateTime = x.CreateTime.ToString("yyyy-MM-dd")
});
return ApiResult.Success("", pageModel);
}
/// <summary>
/// 获取期数列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadPeriodsList()
{
var userInfo = base.UserInfo;
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Periods_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
var list = sellCommissionModule.GetSellStudyAbroadPeriodsList(dmodel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Periods,
x.Name,
}));
}
/// <summary>
/// 获取提成销售列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadUserList()
{
var userInfo = base.UserInfo;
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Details_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
if (dmodel.PeriodId <= 0)
{
return ApiResult.ParamIsNull("请传递期数id");
}
var list = sellCommissionModule.GetSellStudyAbroadUserList(dmodel);
return ApiResult.Success("", list.Select(x => new
{
x.School_Id,
x.SchoolName,
x.Depart_Id,
x.DeptName,
x.UserId,
x.UserName,
x.StudentCount,
x.CommissionMoney,
x.OtherMoney,
x.BackMoney,
FinalCommission = x.CommissionMoney + x.OtherMoney - x.BackMoney
}));
}
/// <summary>
/// 获取销售提成明细列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadUserDetailList()
{
var userInfo = base.UserInfo;
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Details_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
if (dmodel.PeriodId <= 0)
{
return ApiResult.ParamIsNull("请传递期数id");
}
var list = sellCommissionModule.GetSellStudyAbroadUserDetailList(dmodel);
return ApiResult.Success("", list.Select(x => new
{
x.School_Id,
x.SchoolName,
x.Depart_Id,
x.DeptName,
x.UserId,
x.UserName,
x.SourceId,
x.SourceName,
x.SourceType,
x.OrderId,
x.StudentCount,
x.Periods,
x.Remark,
x.CommissionMoney,
x.OtherMoney,
x.BackMoney,
YFMoney = x.CommissionMoney + x.OtherMoney - x.BackMoney
}));
}
/// <summary>
/// 获取提成订单明细列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadForOrderList()
{
var userInfo = base.UserInfo;
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Details_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
if (dmodel.OrderId <= 0)
{
return ApiResult.ParamIsNull("请传递订单id");
}
var list = sellCommissionModule.GetSellStudyAbroadUserDetailList(dmodel);
return ApiResult.Success("", list.Select(x => new
{
x.School_Id,
x.SchoolName,
x.Depart_Id,
x.DeptName,
x.UserId,
x.UserName,
x.SourceId,
x.SourceName,
x.SourceType,
x.OrderId,
x.StudentCount,
x.Periods,
x.Remark,
x.CommissionMoney,
x.OtherMoney,
x.BackMoney,
YFMoney = x.CommissionMoney + x.OtherMoney - x.BackMoney
}));
}
/// <summary>
/// 提成统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadStatistics()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Details_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
var list = sellCommissionModule.GetSellStudyAbroadStatisticsPageList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel);
decimal TotalMoney = sellCommissionModule.GetSellStudyAbroadStatistics(dmodel);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = new
{
TotalCommission = TotalMoney,
List = list.Select(x => new
{
x.School_Id,
x.SchoolName,
x.Depart_Id,
x.DeptName,
x.UserId,
x.UserName,
x.SourceId,
x.SourceName,
x.SourceType,
x.OrderId,
x.StudentCount,
x.Periods,
x.Remark,
x.CommissionMoney,
x.OtherMoney,
x.BackMoney,
YFMoney = x.CommissionMoney + x.OtherMoney - x.BackMoney
})
};
return ApiResult.Success("", pageModel);
}
/// <summary>
/// 导出提成统计 Excel
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult GetSellStudyAbroadStatisticsToExcel()
{
var userInfo = base.UserInfo;
var dmodel = JsonHelper.DeserializeObject<RB_Sell_StudyAbroad_Details_ViewModel>(RequestParm.Msg.ToString());
dmodel.Group_Id = userInfo.Group_Id;
string ExcelName = "留学就业提成" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "校区") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "部门") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "销售") { CellWidth = 25, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "项目名称") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "项目类型") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "客人数量") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "订单号") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "订单应发") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "额外奖励") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "额外扣除") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "最终发放") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "期数") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "备注") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER }
}
};
slist.Add(header);
try
{
var list = sellCommissionModule.GetSellStudyAbroadStatisticsPageList(1, 1000000, out long count, dmodel);
decimal TotalMoney = sellCommissionModule.GetSellStudyAbroadStatistics(dmodel);
#region 组装数据
foreach (var item in list)
{
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: item.SchoolName){ },
new ExcelColumn(value: item.DeptName){ },
new ExcelColumn(value: item.UserName){ },
new ExcelColumn(value: item.SourceName){ },
new ExcelColumn(value: (item.SourceType == 1 ? "留学" : "就业")){ },
new ExcelColumn(value: item.StudentCount.ToString()){ },
new ExcelColumn(value: item.OrderId.ToString()){ },
new ExcelColumn(value: item.CommissionMoney.ToString("#0.00")){ },
new ExcelColumn(value: (item.OtherMoney).ToString("#0.00")){ },
new ExcelColumn(value: (item.BackMoney).ToString("#0.00")){ },
new ExcelColumn(value: (item.CommissionMoney + item.OtherMoney - item.BackMoney).ToString("#0.00")){ },
new ExcelColumn(value: item.Periods){ },
new ExcelColumn(value: item.Remark){ },
},
ColumnHight = 30
};
slist.Add(datarow);
}
//统计
ExcelDataSource datarows = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "汇总"){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: TotalMoney.ToString("#0.00")){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
},
ColumnHight = 30
};
slist.Add(datarows);
#endregion
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", ExcelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, string.Format("GetTeachingBonusDetailToExcel: {0}", JsonHelper.Serialize(RequestParm)));
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
}
/// <summary>
/// 设置留学订单已确认
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetStudyAboradOrderConfirm() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int OrderId = parms.GetInt("OrderId", 0);//订单id
if (OrderId <= 0) {
return ApiResult.ParamIsNull();
}
string msg = sellCommissionModule.SetStudyAboradOrderConfirm(OrderId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 创建销售提成
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetSellStudyAbroadInfo()
{
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(RequestParm.Msg.ToString());
string Month = parms.GetStringValue("Month");//月份
if (string.IsNullOrEmpty(Month))
{
return ApiResult.ParamIsNull();
}
try
{
Month = Convert.ToDateTime(Month + "-01").ToString("yyyy-MM");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
string msg = sellCommissionModule.SetSellStudyAbroadInfo(Month, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 获取提成可发放人员列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellStudyAbroadSendEmployeeList()
{
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(RequestParm.Msg.ToString());
int PeriodId = parms.GetInt("PeriodId", 0);//期数id
if (PeriodId <= 0)
{
return ApiResult.ParamIsNull();
}
var list = sellCommissionModule.GetSellStudyAbroadSendEmployeeList(PeriodId, userInfo);
return ApiResult.Success("", list);
}
/// <summary>
/// 设置提成发放人员
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetSellStudyAbroadSendEmployee()
{
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(RequestParm.Msg.ToString());
int PeriodId = parms.GetInt("PeriodId", 0);//期数id
string EmpIds = parms.GetStringValue("EmpIds");//人员列表
if (PeriodId <= 0)
{
return ApiResult.ParamIsNull();
}
if (string.IsNullOrEmpty(EmpIds))
{
return ApiResult.ParamIsNull("请传递用户id");
}
string msg = sellCommissionModule.SetSellStudyAbroadSendEmployee(PeriodId, EmpIds, userInfo);
if (msg == "")
{
return ApiResult.Success("");
}
else
{
return ApiResult.Failed(msg);
}
}
#endregion
#endregion
}
}
......@@ -97,12 +97,17 @@ namespace Edu.WebApi.Controllers.Finance
//提成
decimal SaleCommission = (orderList != null && orderList.Any()) ? orderList.Where(x => x.IsCommissionGive == 1).Sum(x => x.CommissionMoney + x.ExtraCommissionMoney) : 0;//销售提成
var teacherProfitList = teachingRewardsModule.GetBonusDetailList(new RB_Teaching_BonusDetail_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId });
decimal TeacherProfitNow = (teacherProfitList != null && teacherProfitList.Any()) ? teacherProfitList.Sum(x => x.Money) : 0;//老师提成
var meritsProfitList = teachingRewardsModule.GetTeachingPerfList(new RB_Teaching_Perf_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId });
decimal MeritsProfit = (meritsProfitList != null && meritsProfitList.Any()) ? (meritsProfitList.Where(x => x.PerfState == Common.Enum.Course.PerfStateEnum.Confirmed).OrderByDescending(x => x.CreateTime).FirstOrDefault()?.Money ?? 0) : 0;//绩效提成
decimal TeacherProfitNow = 0, MeritsProfit = 0;
if (classId > 0)
{
//课时费 老师绩效
var teacherProfitList = teachingRewardsModule.GetBonusDetailList(new RB_Teaching_BonusDetail_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId });
TeacherProfitNow = (teacherProfitList != null && teacherProfitList.Any()) ? teacherProfitList.Sum(x => x.Money) : 0;//老师提成
var meritsProfitList = teachingRewardsModule.GetTeachingPerfList(new RB_Teaching_Perf_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId });
MeritsProfit = (meritsProfitList != null && meritsProfitList.Any()) ? (meritsProfitList.Where(x => x.PerfState == Common.Enum.Course.PerfStateEnum.Confirmed).OrderByDescending(x => x.CreateTime).FirstOrDefault()?.Money ?? 0) : 0;//绩效提成
}
PayReceive += (SaleCommission + TeacherProfitNow + MeritsProfit);//支出加上提成的
PayActual += (SaleCommission + TeacherProfitNow + MeritsProfit);
......
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