Commit 920ed0e2 authored by 黄奎's avatar 黄奎

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

parents 41991af2 c2516484
......@@ -97,5 +97,10 @@ namespace Edu.Model.Entity.Course
/// 流程编号
/// </summary>
public int FlowId { get; set; }
}
/// <summary>
/// 财务单据id
/// </summary>
public int FinanceId;
}
}

using Edu.Cache.User;
using Edu.Common;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
......@@ -8,7 +9,9 @@ using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using Edu.Repository.Course;
using Edu.Repository.Flow;
using Edu.Repository.Log;
using Edu.Repository.User;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -47,6 +50,16 @@ 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_SchoolRepository schoolRepository = new RB_SchoolRepository();
/// <summary>
/// 流程仓储层对象
/// </summary>
......@@ -57,6 +70,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 日志
/// </summary>
private readonly RB_User_ChangeLogRepository changeLogRepository = new RB_User_ChangeLogRepository();
/// <summary>
/// 获取学员退课单据分页列表
/// </summary>
......@@ -706,5 +724,114 @@ namespace Edu.Module.Course
}
return obj;
}
/// <summary>
/// 退课一键制单
/// </summary>
/// <param name="backClassId"></param>
/// <param name="isPublic"></param>
/// <param name="currencyId"></param>
/// <param name="clientType"></param>
/// <param name="clientId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetStudentBackFinance(int backClassId, int IsPublic, int CurrencyId, int clientType, int clientId, UserInfo userInfo)
{
var backModel = student_BackClassRepository.GetEntity(backClassId);
if (backModel == null || backModel.AuditStatus != BackClassAuditStatusEnum.Pass) { return "退课流程未审核通过"; }
var guestModel = order_GuestRepository.GetEntity(backModel.GuestId);
if (guestModel == null || guestModel.GuestState != 2) { return "客人名单状态不正确"; }
string msg = "";
#region 新增财务单据
var detailList = new List<object>
{
new
{
CostTypeId = Config.ReadConfigKey("StuBackCostTypeId"),
Number = 1,
OriginalMoney = backModel.BackMoney,
UnitPrice = backModel.BackMoney,
Remark = "学员【"+guestModel.GuestName+"】退课"
}
};
var classModel = classRepository.GetEntity(backModel.ClassId);
string Remark = "【" + (classModel?.ClassName ?? "") + "】下订单" + backModel.OrderId + " 客人退课";
var financeObj = new
{
IsPublic,
ClientType = clientType,
ClientID = clientId,
CurrencyId,
WBMoney = backModel.BackMoney,
PayDate = DateTime.Now.ToString("yyyy-MM-dd"),
TemplateId = Config.ReadConfigKey("StuBackTemplete"),
OrderSource = 17,
OrderID = backModel.OrderId,
TCIDList = new List<int>() { backModel.ClassId },
OtherType = 28,
ReFinanceId = backModel.BackId,
Remark,
detailList,
CreateBy = userInfo.Id,
RB_Branch_Id = classModel.School_Id,
RB_Depart_Id = userInfo.DeptId,
RB_Group_Id = userInfo.Group_Id,
RB_CreateByName = userInfo.AccountName,
RB_DepartName = userInfo.DeptName,
RB_BranchName = schoolRepository.GetEntity(classModel.School_Id)?.SName ?? "",
RB_GroupName = userInfo.GroupName,
FinanceType = 2
};
string sign = EncryptionHelper.AesEncrypt(JsonHelper.Serialize(financeObj), Config.ReadConfigKey("FinanceKey"));
var resultInfo = new
{
msg = sign
};
string apiResult = HttpHelper.HttpPost(Config.ReadConfigKey("PaymentFinanceApi"), JsonHelper.Serialize(resultInfo), "");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("resultCode");
int frid = parmsJob.GetInt("data", 0);
if (resultCode == "1" && frid > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Student_BackClass.FinanceId),frid}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Teaching_Perf_ViewModel.Id),
FiledValue=backModel.BackId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = student_BackClassRepository.Update(keyValues, wheres);
if (flag)
{
//记录日志
changeLogRepository.Insert(new Model.Entity.Log.RB_User_ChangeLog()
{
Id = 0,
Type = 1,
CreateBy = userInfo.Id,
CreateTime = DateTime.Now,
Group_Id = userInfo.Group_Id,
LogContent = "生成学员退课财务单据【" + backModel.BackId + "】",
School_Id = userInfo.School_Id,
SourceId = 0
});
}
}
else
{
string message = parmsJob.GetStringValue("message");
LogHelper.Write("SetStudentBackFinance:" + message);
msg += backModel.BackId + "创建财务单据失败;";
}
#endregion
return msg;
}
}
}
......@@ -605,6 +605,7 @@ namespace Edu.Module.Course
string msg = "";
//查询出所有需要发提成的人
List<int> EmpList = list.Select(x => x.TeacherId).Distinct().ToList();
if (!EmpList.Any()) { return "暂无老师有可发放的提成金额"; }
//根据教师ids 查询 账号ids
var teachList = teacherRepository.GetTeacherList(string.Join(",", EmpList));
//查询所有的账户信息 不存在的需要提示
......
......@@ -21,38 +21,38 @@ namespace Edu.Repository.Course
/// <returns></returns>
public List<RB_Teaching_BonusDetail_ViewModel> GetList(RB_Teaching_BonusDetail_ViewModel demodel)
{
string where = $@" 1=1 and Status=0";
string where = $@" 1=1 and A.Status=0";
if (demodel.Group_Id > 0)
{
where += $@" and {nameof(RB_Teaching_BonusDetail.Group_Id)} ={demodel.Group_Id}";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id > 0)
{
where += $@" and {nameof(RB_Teaching_BonusDetail.School_Id)} ={demodel.School_Id}";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.School_Id)} ={demodel.School_Id}";
}
if (demodel.BonusId > 0)
{
where += $@" and {nameof(RB_Teaching_BonusDetail.BonusId)} ={demodel.BonusId}";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.BonusId)} ={demodel.BonusId}";
}
if (!string.IsNullOrEmpty(demodel.BonusIds))
{
where += $@" and {nameof(RB_Teaching_BonusDetail.BonusId)} in({demodel.BonusIds})";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.BonusId)} in({demodel.BonusIds})";
}
if (demodel.TeacherId > 0)
{
where += $@" and {nameof(RB_Teaching_BonusDetail.TeacherId)} ={demodel.TeacherId}";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.TeacherId)} ={demodel.TeacherId}";
}
if (demodel.ClassId > 0)
{
where += $@" and {nameof(RB_Teaching_BonusDetail.ClassId)} ={demodel.ClassId}";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.ClassId)} ={demodel.ClassId}";
}
if (demodel.Type > 0)
{
where += $@" and {nameof(RB_Teaching_BonusDetail.Type)} ={demodel.Type}";
where += $@" and A.{nameof(RB_Teaching_BonusDetail.Type)} ={demodel.Type}";
}
string sql = $@" select * from RB_Teaching_BonusDetail where {where} order by Id desc";
string sql = $@" select * from RB_Teaching_BonusDetail as A LEFT JOIN rb_teaching_bonus as b on a.BonusId=b.Id and b.State=2 where {where} order by a.Id desc";
return Get<RB_Teaching_BonusDetail_ViewModel>(sql).ToList();
}
......
......@@ -12,6 +12,7 @@ using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.Course
{
......@@ -122,5 +123,39 @@ namespace Edu.WebApi.Controllers.Course
var extModel = studentBillModule.GetStuBackInfoModule(BackId);
return ApiResult.Success(data: extModel);
}
/// <summary>
/// 退学 一键生成财务单据
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetStudentBackFinance()
{
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(RequestParm.Msg.ToString());
int BackClassId = parms.GetInt("BackClassId", 0);
int IsPublic = parms.GetInt("IsPublic", 0);
int CurrencyId = parms.GetInt("CurrencyId", 0);
int ClientType = parms.GetInt("ClientType", 0);
int ClientId = parms.GetInt("ClientId", 0);
if (BackClassId <= 0)
{
return ApiResult.ParamIsNull();
}
if (ClientId <= 0)
{
return ApiResult.ParamIsNull();
}
string msg = studentBillModule.SetStudentBackFinance(BackClassId, IsPublic, CurrencyId, ClientType, ClientId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed(msg);
}
}
}
}
......@@ -306,7 +306,7 @@ namespace Edu.WebApi.Controllers.Course
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 = 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 },
......
......@@ -71,12 +71,12 @@ namespace Edu.WebApi.Controllers.Finance
ProfitNow = (IncomeActual + OtherIncomeActual) - PayActual;
//提成
decimal SaleCommission = (orderList != null && orderList.Any()) ? orderList.Sum(x => x.CommissionMoney) : 0; ;//销售提成
decimal SaleCommission = (orderList != null && orderList.Any()) ? orderList.Where(x => x.IsCommissionGive == 1).Sum(x => x.CommissionMoney) : 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.OrderByDescending(x => x.CreateTime).FirstOrDefault()?.Money ?? 0) : 0;//绩效提成
decimal MeritsProfit = (meritsProfitList != null && meritsProfitList.Any()) ? (meritsProfitList.Where(x=>x.PerfState==Common.Enum.Course.PerfStateEnum.Confirmed).OrderByDescending(x => x.CreateTime).FirstOrDefault()?.Money ?? 0) : 0;//绩效提成
var classInfo = classModule.GetClassAndCourseListRepository(new Model.ViewModel.Course.RB_Class_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId }).FirstOrDefault();
var recultFiniceList = financeList.Select(x => new
......@@ -157,11 +157,11 @@ namespace Edu.WebApi.Controllers.Finance
RB_Finance_Extend model = new RB_Finance_Extend() { TCID = classId, OrderSource = OrderResourceEnum.Education, RB_Group_Id = base.UserInfo.Group_Id, FinanceType = 2 };
var financeList = financeModule.GetFinanceInfoList(model).Where(t => (t.Status == FinanceAuditStatus.InReview || t.Status == FinanceAuditStatus.Pass || t.Status == FinanceAuditStatus.CTemporary)).ToList();
var classInfo = classModule.GetClassAndCourseListRepository(new Model.ViewModel.Course.RB_Class_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId }).FirstOrDefault();
//收入
decimal IncomeReceive = 0;//应收
decimal IncomeActual = 0;//实收
var orderList = orderModule.GetClassOrderList_V2(classId, base.UserInfo.Group_Id);
var orderList = orderModule.GetClassOrderList_V2(classId, base.UserInfo.Group_Id).Where(x => (int)x.OrderState < 3);
IncomeReceive = (orderList != null && orderList.Any()) ? orderList.Sum(x => x.PreferPrice) : 0;
IncomeActual = (orderList != null && orderList.Any()) ? orderList.Sum(x => x.Income) : 0;
......@@ -183,13 +183,14 @@ namespace Edu.WebApi.Controllers.Finance
ProfitNow = (IncomeActual + OtherIncomeActual) - PayActual;
//提成
//提成
decimal SaleCommission = (orderList != null && orderList.Any()) ? orderList.Sum(x => x.CommissionMoney) : 0; ;//销售提成
var teacherProfitList = teachingRewardsModule.GetBonusDetailList(new RB_Teaching_BonusDetail_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId });
decimal SaleCommission = (orderList != null && orderList.Any()) ? orderList.Where(x=>x.IsCommissionGive == 1).Sum(x => x.CommissionMoney) : 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});
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.OrderByDescending(x => x.CreateTime).FirstOrDefault()?.Money ?? 0) : 0;//绩效提成
var classInfo = classModule.GetClassAndCourseListRepository(new Model.ViewModel.Course.RB_Class_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId }).FirstOrDefault();
List<RB_Finance_Extend> financeReciveList = financeList.Where(t => t.Type == WFTempLateClassEnum.IN).ToList();
List<RB_Finance_Extend> financePayList = financeList.Where(t => t.Type == WFTempLateClassEnum.OUT).ToList();
//var recultFiniceList = financeList.Select(x => new
......
......@@ -28,6 +28,8 @@
"BonusCostTypeId": 540,
"TeachingPerfTemplete": 141,
"PerfCostTypeId": 540,
"StuBackTemplete": 141,
"StuBackCostTypeId": 540,
"RabbitMqConfig": {
"HostName": "47.96.25.130",
"VirtualHost": "/",
......
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