using Edu.AOP.CustomerAttribute;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Finance;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Contract;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Finance;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using Edu.Repository.BackClass;
using Edu.Repository.Contract;
using Edu.Repository.Course;
using Edu.Repository.Finance;
using Edu.Repository.Grade;
using Edu.Repository.Sell;
using Edu.Repository.User;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using VT.FW.DB;
namespace Edu.Module.Course
{
///
/// 教育合同处理类
///
public class EducationContractModule
{
///
/// 教育合同
///
private readonly RB_Education_ContractRepository education_ContractRepository = new RB_Education_ContractRepository();
///
/// 账号
///
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
///
/// 集团仓储对象
///
private readonly RB_GroupRepository groupRepository = new RB_GroupRepository();
///
/// 订单仓储层对象
///
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
///
/// 订单学员仓储层对象
///
private readonly RB_Order_GuestRepository order_GuestRepository = new RB_Order_GuestRepository();
///
/// 班级仓储层对象
///
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
///
/// 班级仓储层对象
///
private readonly RB_Finance_OrderRecordRepository financeOrderRecordRepository = new RB_Finance_OrderRecordRepository();
///
/// 班级仓储层对象
///
private readonly RB_Online_Trade_DetailRepository OnlineTradeDetailRepository = new RB_Online_Trade_DetailRepository();
///
/// 财务配置
///
private readonly RB_Finance_ConfigRepository finance_ConfigRepository = new RB_Finance_ConfigRepository();
///
/// 课程处理类对象
///
private readonly RB_CourseRepository courseRepository = new RB_CourseRepository();
///
/// 退课协议仓储层
///
private readonly RB_BackClass_ProtocolRepository backClass_ProtocolRepository = new RB_BackClass_ProtocolRepository();
///
/// 退课申请仓储层对象
///
private readonly RB_Student_BackClassRepository student_BackClassRepository = new RB_Student_BackClassRepository();
///
/// 学员单据处理类
///
private readonly StudentBillModule studentBillModule = new StudentBillModule();
private readonly RB_Order_ReturnComissionRepository returnComissionRepository = new RB_Order_ReturnComissionRepository();
private readonly RB_User_ReturnComissionRepository userReturnComissionRepository = new RB_User_ReturnComissionRepository();
private readonly RB_Student_OrderGuestRepository student_OrderGuestRepository = new RB_Student_OrderGuestRepository();
///
/// 获取学员信息
///
///
///
///
public object GetStudentInfoModule(int OrderId, int GuestId)
{
var obj = new object();
var orderModel = orderRepository.GetEntity(OrderId);
var guestModel = order_GuestRepository.GetEntity(GuestId);
var classModel = new RB_Class_ViewModel();
var courseModel = new RB_Course_ViewModel();
decimal PreferPrice = 0;//总金额
decimal DiscountMoney = 0;//优惠金额
decimal Money = 0;//实际金额
if (orderModel != null && orderModel.OrderId > 0)
{
if (orderModel.OrderType == Common.Enum.Sale.OrderTypeEnum.CourseOrder)
{
classModel = classRepository.GetClassAndCourseListRepository(new RB_Class_ViewModel() { ClassId = orderModel.ClassId })?.FirstOrDefault();
courseModel = courseRepository.GetEntity(orderModel.CourseId);
}
}
var qids = (classModel?.ManagerId ?? 0).ToString() + "," + (orderModel?.EnterID ?? 0).ToString();
var empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { QIds = qids });
PreferPrice = orderModel.PreferPrice / orderModel.GuestNum;
DiscountMoney = orderModel.PerDiscountMoney;
Money = (orderModel.PreferPrice - orderModel.DiscountMoney) / orderModel.GuestNum;//平均每人费用
string dxMoney = StringHelper.MoneyToUpper(Money.ToString());
obj = new
{
StudentName = guestModel?.GuestName ?? "",
StuBirth = Common.ConvertHelper.FormatDate(guestModel?.BirthDate),
StuSex = (guestModel?.Sex ?? 0) == 1 ? 0 : 1,
StuAddress = guestModel?.ContactAddress ?? "",
StuTel = guestModel?.Mobile ?? "",
StuEmail = "",
CourseName = courseModel?.CourseName ?? "",
SchoolName = classModel?.SchoolName ?? "",
SchoolPrincipal = empList?.Where(qitem => qitem.Id == (classModel?.ManagerId ?? 0))?.FirstOrDefault()?.EmployeeName ?? "",
StartLevel = guestModel?.Basics ?? "",
CourseConsultant = empList?.Where(qitem => qitem.Id == (orderModel?.EnterID ?? 0))?.FirstOrDefault()?.EmployeeName ?? "",
Payee = empList?.Where(qitem => qitem.Id == (orderModel?.EnterID ?? 0))?.FirstOrDefault()?.EmployeeName ?? "",
FirstClassHours = (courseModel?.ClassHours ?? 0)-(orderModel?.StartClassHours ?? 0),
FirstCourseFee = PreferPrice,
FirstBookFee = 0,
FirstClassFee = 0,
FirstDiscountMoney = DiscountMoney,
FirstMoney = Money,
CNYCaps = dxMoney,
Money,
};
return obj;
}
///
/// 获取合同分页列表
///
///
///
///
///
///
public List GetEducationContractPageListModule(int pageIndex, int pageSize, out long count, RB_Education_Contract_ViewModel dmodel)
{
var list = education_ContractRepository.GetEducationContractPageListRepository(pageIndex, pageSize, out count, dmodel);
if (list != null && list.Count > 0)
{
var userIds = string.Join(",", list.Select(x => x.CreateBy).Distinct());
var alist = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() { QIds = userIds });
foreach (var item in list)
{
var amodel = alist.Where(x => x.Id == item.CreateBy).FirstOrDefault();
item.CreateByName = amodel?.AccountName ?? "";
item.CreateByPhoto = amodel?.UserIcon ?? "";
if (item.Status == 0)
{
item.SchoolStatusStr = "草稿";
item.AdminStatusStr = "草稿";
}
else if (item.Status == 1)
{
item.SchoolStatusStr = "待审核";
item.AdminStatusStr = "待审核";
}
else if (item.Status == 2)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "审核通过";
}
else if (item.Status == 3)
{
if (item.AuditEmpId > 0 && item.SchoolManageEmpId > 0)
{
if (item.SchoolManageAuditDate.HasValue)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "驳回";
}
else
{
if (item.AuditDate > item.SchoolManageAuditDate)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "驳回";
}
else
{
item.SchoolStatusStr = "驳回";
item.AdminStatusStr = "";
}
}
}
else if (item.SchoolManageEmpId > 0)
{
item.SchoolStatusStr = "驳回";
item.AdminStatusStr = "";
}
else
{
item.SchoolStatusStr = "";
item.AdminStatusStr = "驳回";
}
}
else if (item.Status == 4)
{
item.SchoolStatusStr = "合同已取消";
item.AdminStatusStr = "合同已取消";
}
else if (item.Status == 5)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "待审核";
}
}
}
return list;
}
///
/// 获取合同分页列表
///
///
///
///
///
///
public List GetEducationContractPageListModule_V3(int pageIndex, int pageSize, out long count, RB_Education_Contract_ViewModel dmodel)
{
var list = education_ContractRepository.GetEducationContractPageListRepository(pageIndex, pageSize, out count, dmodel);
if (list != null && list.Count > 0)
{
var userIds = string.Join(",", list.Select(x => x.CreateBy).Distinct());
var alist = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() { QIds = userIds });
foreach (var item in list)
{
var amodel = alist.Where(x => x.Id == item.CreateBy).FirstOrDefault();
item.CreateByName = amodel?.AccountName ?? "";
item.CreateByPhoto = amodel?.UserIcon ?? "";
if (item.Status == 0)
{
item.SchoolStatusStr = "草稿";
item.AdminStatusStr = "草稿";
}
else if (item.Status == 1)
{
item.SchoolStatusStr = "待审核";
item.AdminStatusStr = "待审核";
}
else if (item.Status == 2)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "审核通过";
}
else if (item.Status == 3)
{
if (item.AuditEmpId > 0 && item.SchoolManageEmpId > 0)
{
if (item.SchoolManageAuditDate.HasValue)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "驳回";
}
else
{
if (item.AuditDate > item.SchoolManageAuditDate)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "驳回";
}
else
{
item.SchoolStatusStr = "驳回";
item.AdminStatusStr = "";
}
}
}
else if (item.SchoolManageEmpId > 0)
{
item.SchoolStatusStr = "驳回";
item.AdminStatusStr = "";
}
else
{
item.SchoolStatusStr = "";
item.AdminStatusStr = "驳回";
}
}
else if (item.Status == 4)
{
item.SchoolStatusStr = "合同已取消";
item.AdminStatusStr = "合同已取消";
}
else if (item.Status == 5)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "待审核";
}
}
}
return list;
}
///
/// 获取分页列表
///
///
///
///
///
///
///
public List GetEducationContractPageList_V2(int pageIndex, int pageSize, out long rowsCount, RB_Education_Contract_ViewModel demodel)
{
var list = education_ContractRepository.GetEducationContractPageList_V2(pageIndex, pageSize, out rowsCount, demodel);
if (list != null && list.Count > 0)
{
var userIds = string.Join(",", list.Select(x => x.CreateBy).Distinct());
var alist = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() { QIds = userIds });
foreach (var item in list)
{
var amodel = alist.Where(x => x.Id == item.CreateBy).FirstOrDefault();
item.CreateByName = amodel?.AccountName ?? "";
item.CreateByPhoto = amodel?.UserIcon ?? "";
if (item.Status == 0)
{
item.SchoolStatusStr = "草稿";
item.AdminStatusStr = "草稿";
}
else if (item.Status == 1)
{
item.SchoolStatusStr = "待审核";
item.AdminStatusStr = "待审核";
}
else if (item.Status == 2)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "审核通过";
}
else if (item.Status == 3)
{
if (item.AuditEmpId > 0 && item.SchoolManageEmpId > 0)
{
if (item.SchoolManageAuditDate.HasValue)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "驳回";
}
else
{
if (item.AuditDate > item.SchoolManageAuditDate)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "驳回";
}
else
{
item.SchoolStatusStr = "驳回";
item.AdminStatusStr = "";
}
}
}
else if (item.SchoolManageEmpId > 0)
{
item.SchoolStatusStr = "驳回";
item.AdminStatusStr = "";
}
else
{
item.SchoolStatusStr = "";
item.AdminStatusStr = "驳回";
}
}
else if (item.Status == 4)
{
item.SchoolStatusStr = "合同已取消";
item.AdminStatusStr = "合同已取消";
}
else if (item.Status == 5)
{
item.SchoolStatusStr = "审核通过";
item.AdminStatusStr = "待审核";
}
}
}
return list;
}
///
/// 单独新增/修改合同
///
///
///
public bool SetEducationContractModule(RB_Education_Contract_ViewModel model)
{
bool flag;
if (model.Id > 0)
{
model.CNYCaps = StringHelper.MoneyToUpper(model.Money.ToString());
Dictionary keyValues = new Dictionary()
{
{ nameof(RB_Education_Contract_ViewModel.StudentName),model.StudentName},
{ nameof(RB_Education_Contract_ViewModel.StuBirth),model.StuBirth},
{ nameof(RB_Education_Contract_ViewModel.StuSex),model.StuSex},
{ nameof(RB_Education_Contract_ViewModel.StuAddress),model.StuAddress},
{ nameof(RB_Education_Contract_ViewModel.StuTel),model.StuTel},
{ nameof(RB_Education_Contract_ViewModel.StuEmail),model.StuEmail},
{ nameof(RB_Education_Contract_ViewModel.ParentName),model.ParentName},
{ nameof(RB_Education_Contract_ViewModel.ParentRelation),model.ParentRelation},
{ nameof(RB_Education_Contract_ViewModel.ParentTel),model.ParentTel},
{ nameof(RB_Education_Contract_ViewModel.ParentEmail),model.ParentEmail},
{ nameof(RB_Education_Contract_ViewModel.UrgentName),model.UrgentName},
{ nameof(RB_Education_Contract_ViewModel.UrgentRelation),model.UrgentRelation},
{ nameof(RB_Education_Contract_ViewModel.UrgentTel),model.UrgentTel},
{ nameof(RB_Education_Contract_ViewModel.UrgentEmail),model.UrgentEmail},
{ nameof(RB_Education_Contract_ViewModel.GuardianIDCard),model.GuardianIDCard},
{ nameof(RB_Education_Contract_ViewModel.CourseName),model.CourseName},
{ nameof(RB_Education_Contract_ViewModel.SchoolName),model.SchoolName},
{ nameof(RB_Education_Contract_ViewModel.SchoolPrincipal),model.SchoolPrincipal},
{ nameof(RB_Education_Contract_ViewModel.StartLevel),model.StartLevel},
{ nameof(RB_Education_Contract_ViewModel.CourseConsultant),model.CourseConsultant},
{ nameof(RB_Education_Contract_ViewModel.Payee),model.Payee},
{ nameof(RB_Education_Contract_ViewModel.FirstClassHours),model.FirstClassHours},
{ nameof(RB_Education_Contract_ViewModel.FirstCourseFee),model.FirstCourseFee},
{ nameof(RB_Education_Contract_ViewModel.FirstBookFee),model.FirstBookFee},
{ nameof(RB_Education_Contract_ViewModel.FirstClassFee),model.FirstClassFee},
{ nameof(RB_Education_Contract_ViewModel.FirstDiscountMoney),model.FirstDiscountMoney},
{ nameof(RB_Education_Contract_ViewModel.FirstMoney),model.FirstMoney},
{ nameof(RB_Education_Contract_ViewModel.FirstPayDate),model.FirstPayDate},
{ nameof(RB_Education_Contract_ViewModel.SecondClassHours),model.SecondClassHours},
{ nameof(RB_Education_Contract_ViewModel.SecondCourseFee),model.SecondCourseFee},
{ nameof(RB_Education_Contract_ViewModel.SecondBookFee),model.SecondBookFee},
{ nameof(RB_Education_Contract_ViewModel.SecondClassFee),model.SecondClassFee},
{ nameof(RB_Education_Contract_ViewModel.SecondDiscountMoney),model.SecondDiscountMoney},
{ nameof(RB_Education_Contract_ViewModel.SecondMoney),model.SecondMoney},
{ nameof(RB_Education_Contract_ViewModel.SecondPayDate),model.SecondPayDate},
{ nameof(RB_Education_Contract_ViewModel.ThirdClassHours),model.ThirdClassHours},
{ nameof(RB_Education_Contract_ViewModel.ThirdCourseFee),model.ThirdCourseFee},
{ nameof(RB_Education_Contract_ViewModel.ThirdBookFee),model.ThirdBookFee},
{ nameof(RB_Education_Contract_ViewModel.ThirdClassFee),model.ThirdClassFee},
{ nameof(RB_Education_Contract_ViewModel.ThirdDiscountMoney),model.ThirdDiscountMoney},
{ nameof(RB_Education_Contract_ViewModel.ThirdMoney),model.ThirdMoney},
{ nameof(RB_Education_Contract_ViewModel.ThirdPayDate),model.ThirdPayDate},
{ nameof(RB_Education_Contract_ViewModel.CNYCaps),model.CNYCaps},
{ nameof(RB_Education_Contract_ViewModel.Money),model.Money},
{ nameof(RB_Education_Contract_ViewModel.Exam),model.Exam},
{ nameof(RB_Education_Contract_ViewModel.IsSupplement),model.IsSupplement},
{ nameof(RB_Education_Contract_ViewModel.StuIDCard),model.StuIDCard},
};
flag = education_ContractRepository.Update(keyValues, new WhereHelper(nameof(RB_Education_Contract_ViewModel.Id), model.Id));
}
else
{
var orderModel = orderRepository.GetEntity(model.OrderId);
var classModel = new RB_Class_ViewModel();
if (orderModel != null && orderModel.ClassId > 0)
{
classModel = classRepository.GetClassAndCourseListRepository(new RB_Class_ViewModel() { ClassId = orderModel.ClassId })?.FirstOrDefault();
}
model.School_Id = classModel?.School_Id ?? 0;
//生成合同编码
model.ContractNo = education_ContractRepository.CreateContractNumRepository(model.Group_Id, model.School_Id);
model.IsSystemUse = 1;
model.SourceContractId = 0;
var newId = education_ContractRepository.Insert(model);
model.Id = newId;
flag = newId > 0;
}
return flag;
}
///
/// 获取详情
///
///
///
public RB_Education_Contract_ViewModel GetEducationContractModule(int contractId)
{
var model = education_ContractRepository.GetEntity(contractId);
if (model != null)
{
var gmodel = groupRepository.GetEntity(model.Group_Id);
model.GroupSealImg = gmodel?.SealImage ?? "";
if (model.OrderId > 0)
{
var orderModel= orderRepository.GetEntity(model.OrderId);
if (orderModel.CourseId > 0)
{
model.CourseContracrInfo = courseRepository.GetEntity(orderModel.CourseId)?.ContractInfo ?? "";
}
}
}
return model;
}
///
/// 合同审核
///
///
///
///
///
public bool SetEducationContractAuditModule(int contractId, int state, UserInfo userInfo)
{
Dictionary keyValues = new Dictionary();
if (state == 5)
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.IsCompanySeal), 1);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.SealDate), DateTime.Now);
}
else
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.Status), state);
if (state == 1 || state == 4)
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.UpdateBy), userInfo.Id);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.UpdateTime), DateTime.Now);
}
else
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.AuditEmpId), userInfo.Id);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.AuditDate), DateTime.Now);
}
}
#region 企业消息推送
var model = education_ContractRepository.GetEntity(contractId);
if (state == 1)
{
var notifyList = accountRepository.GetWorkUserIdByFunctionNameRepository("'EducationContractSchool','EducationContractAdmin'");
if (notifyList != null && notifyList.Any())
{
notifyList.ForEach(x =>
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractAudit?no={model.ContractNo}");
var content = $"合同通知 你收到了一份需要审批的合同\n>**概要信息** \n>申 领 人:{userInfo.AccountName}\n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同详情]({Config.ErpUrl}/autologin?loginId={x.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, x.WorkUserId, "合同审批通知");
});
}
}
else if (state == 2 || state == 3 || state==6)
{
var notifyObj = accountRepository.GetEntity(model.CreateBy);
if (notifyObj != null && !string.IsNullOrEmpty(notifyObj.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractManage?no={model.ContractNo}");
var content = $"{((state == 2 || state == 6) ? "合同审核通过" : "`合同审核驳回`")} 你收到了一份合同审批结果通知\n>**概要信息** \n>审 批 人:{userInfo.AccountName}\n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同]({Config.ErpUrl}/autologin?loginId={notifyObj.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyObj.WorkUserId, "合同审批通知");
}
}
else if (state == 5)
{
var notifyObj = accountRepository.GetEntity(model.CreateBy);
if (notifyObj != null && !string.IsNullOrEmpty(notifyObj.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractManage?no={model.ContractNo}");
var content = $"合同已盖章 你收到了一份合同加盖公章通知\n>**概要信息** \n>盖 章 人:{userInfo.AccountName}\n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同]({Config.ErpUrl}/autologin?loginId={notifyObj.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyObj.WorkUserId, "合同审批通知");
}
}
#endregion
return education_ContractRepository.Update(keyValues, new WhereHelper(nameof(RB_Education_Contract_ViewModel.Id), contractId));
}
///
/// 合同审核
///
///
///
///
///
public bool SetEducationContractAuditModule_V2(int contractId, int state, int type, UserInfo userInfo)
{
Dictionary keyValues = new Dictionary();
if (state == 5 && type == 2)
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.IsCompanySeal), 1);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.SealDate), DateTime.Now);
}
else
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.Status), (state == 6 ? 5 : state));
if (state == 1 || state == 4)
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.UpdateBy), userInfo.Id);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.UpdateTime), DateTime.Now);
}
else
{
if (type == 1)//学管审核
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.SchoolManageEmpId), userInfo.Id);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.SchoolManageAuditDate), DateTime.Now);
}
else if (type == 2)//行政审核
{
keyValues.Add(nameof(RB_Education_Contract_ViewModel.AuditEmpId), userInfo.Id);
keyValues.Add(nameof(RB_Education_Contract_ViewModel.AuditDate), DateTime.Now);
}
}
}
#region 企业消息推送
var model = education_ContractRepository.GetEntity(contractId);
if (state == 1)
{
var notifyList = accountRepository.GetWorkUserIdByFunctionNameRepository("'EducationContractSchool','EducationContractAdmin'");
if (notifyList != null && notifyList.Any())
{
notifyList.ForEach(x =>
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractAudit?no={model.ContractNo}");
var content = $"合同通知 你收到了一份需要审批的合同\n>**概要信息** \n>申 领 人:{userInfo.AccountName}\n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同详情]({Config.ErpUrl}/autologin?loginId={x.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, x.WorkUserId, "合同审批通知");
});
}
}
else if (state == 2 || state == 3 || state==6)
{
var notifyObj = accountRepository.GetEntity(model.CreateBy);
if (notifyObj != null && !string.IsNullOrEmpty(notifyObj.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractManage?no={model.ContractNo}");
var content = $"{((state == 2||state==6) ? "合同审核通过" : "`合同审核驳回`")} 你收到了一份合同审批结果通知\n>**概要信息** \n>审 批 人:{userInfo.AccountName}\n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同]({Config.ErpUrl}/autologin?loginId={notifyObj.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyObj.WorkUserId, "合同审批通知");
}
}
else if (state == 5)
{
var notifyObj = accountRepository.GetEntity(model.CreateBy);
if (notifyObj != null && !string.IsNullOrEmpty(notifyObj.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractManage?no={model.ContractNo}");
var content = $"合同已盖章 你收到了一份合同加盖公章通知\n>**概要信息** \n>盖 章 人:{userInfo.AccountName}\n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同]({Config.ErpUrl}/autologin?loginId={notifyObj.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyObj.WorkUserId, "合同审批通知");
}
}
#endregion
return education_ContractRepository.Update(keyValues, new WhereHelper(nameof(RB_Education_Contract_ViewModel.Id), contractId));
}
///
/// 合同签名
///
///
///
///
///
public bool SetEducationContractSignModule(int contractId, string sign)
{
Dictionary keyValues = new Dictionary()
{
{ nameof(RB_Education_Contract_ViewModel.Sign),sign},
{ nameof(RB_Education_Contract_ViewModel.SignDate),DateTime.Now},
};
var model = education_ContractRepository.GetEntity(contractId);
var notifyObj = accountRepository.GetEntity(model.CreateBy);
if (notifyObj != null && !string.IsNullOrEmpty(notifyObj.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/sale/contractManage?no={model.ContractNo}");
var content = $"合同签字确认 你的一份合同用户已签字确认\n>**概要信息** \n>合同编号:{model.ContractNo}\n>合同类型:{EnumHelper.ToName(model.CType)}合同 \n>订单编号:{model.OrderId}\n>合同金额:{model.Money:C}\n>请点击:[查看合同]({Config.ErpUrl}/autologin?loginId={notifyObj.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyObj.WorkUserId, "合同审批通知");
}
return education_ContractRepository.Update(keyValues, new WhereHelper(nameof(RB_Education_Contract_ViewModel.Id), contractId));
}
///
/// 修改学员身份证
///
/// 合同编号
/// 学员身份证
///
public bool SetEducationContractIDCardModule(int contractId, string StuIDCard)
{
Dictionary keyValues = new Dictionary()
{
{ nameof(RB_Education_Contract_ViewModel.StuIDCard),StuIDCard},
};
return education_ContractRepository.Update(keyValues, new WhereHelper(nameof(RB_Education_Contract_ViewModel.Id), contractId));
}
#region 合同订单信息
///
/// 获取财务配置列表
///
///
///
public List GetFinanceConfigList(RB_Finance_Config_ViewModel dmodel)
{
return finance_ConfigRepository.GetList(dmodel);
}
///
/// 新增合同的付款记录
///
///
///
///
public bool SetEducationContractFinance(RB_Online_Trade_Detail model, RB_Finance_OrderRecord orderRecordModel)
{
bool flag = false;
if (orderRecordModel != null)
{
flag = financeOrderRecordRepository.Insert(orderRecordModel) > 0;
if (flag && model != null && !string.IsNullOrWhiteSpace(model.Trade_Order))
{
OnlineTradeDetailRepository.Insert(model);
}
}
return flag;
}
//
/// 获取分页列表
///
///
///
///
///
///
public List GetOrderRecordList(RB_Finance_OrderRecord model)
{
return financeOrderRecordRepository.GetOrderRecordList(model);
}
#endregion
///
/// 获取退课协议分页列表
///
///
///
///
///
///
public List GetBackClassProtocolPageModule(int pageIndex, int pageSize, RB_BackClass_Protocol_ViewModel query, out long rowsCount)
{
return backClass_ProtocolRepository.GetBackClassProtocolPageRepository(pageIndex, pageSize, query, out rowsCount);
}
///
/// 获取退课协议详情
///
///
///
public RB_BackClass_Protocol_ViewModel GetBackClassProtocolModule(object Id)
{
var extModel = backClass_ProtocolRepository.GetEntity(Id);
if (extModel == null)
{
extModel = new RB_BackClass_Protocol_ViewModel();
}
if (extModel != null && extModel.Id > 0)
{
var backModel = student_BackClassRepository.GetEntity(extModel.BackId);
extModel.BackAccountName = backModel?.BackAccountName ?? "";
extModel.BackAccount = backModel?.BackAccount ?? "";
var gmodel = groupRepository.GetEntity(extModel.Group_Id);
extModel.GroupSealImg = gmodel?.SealImage ?? "";
}
return extModel;
}
///
/// 退课协议,学员签字
///
/// 协议编号
///
///
public bool SetBackClassProtocolSignModule(int Id, string sign)
{
Dictionary keyValues = new Dictionary()
{
{ nameof(RB_BackClass_Protocol_ViewModel.PartyASign),sign},
{ nameof(RB_BackClass_Protocol_ViewModel.PartyASignDate),DateTime.Now},
{ nameof(RB_BackClass_Protocol_ViewModel.SignDate),DateTime.Now},
};
UpdateReturnMoneyStatus(Id);
return backClass_ProtocolRepository.Update(keyValues, new WhereHelper(nameof(RB_BackClass_Protocol_ViewModel.Id), Id));
}
///
/// 追回佣金
///
///
private void UpdateReturnMoneyStatus(int id)
{
var guestModel = student_OrderGuestRepository.GetModelByBackId(id);
var model = returnComissionRepository.GetModelByOrderIdStuId(guestModel.OrderId, guestModel.Student_Id);
if (model != null && (model.Status==0 || model.Status==1))
{
var userModel = userReturnComissionRepository.GetModelBySourceId((int)model.OrderSourceType, model.OrderSourceId,model.CommissionType);
userModel.SttlementMoney -= model.CommissionMoeny;
if (model.Status == 1)
{
userModel.CanCashOutMoney -= model.CommissionMoeny;
}
Dictionary userKeyValues = new Dictionary()
{
{ nameof(RB_User_ReturnComission_ViewModel.SttlementMoney),userModel.SttlementMoney},
{ nameof(RB_User_ReturnComission_ViewModel.CanCashOutMoney),userModel.CanCashOutMoney}
};
List userWheres = new List()
{
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserType),
FiledValue=model.OrderSourceType,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserId),
FiledValue=model.OrderSourceId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.CommissionType),
FiledValue=model.CommissionType,
OperatorEnum= OperatorEnum.Equal
}
};
userReturnComissionRepository.Update(userKeyValues, userWheres);
Dictionary keyValues = new Dictionary()
{
{ nameof(RB_Order_ReturnComission.Status),-1}
};
List wheres = new List()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_ReturnComission.StuId),
FiledValue=guestModel.Student_Id,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_Order_ReturnComission.OrderId),
FiledValue=guestModel.OrderId,
OperatorEnum= OperatorEnum.Equal
}
};
returnComissionRepository.Update(keyValues, wheres);
}
}
///
/// 退课协议,销售确认【0826新增生成财务单据】
///
/// 协议编号
/// 是否销售确认(1-是)
///
[TransactionCallHandler]
public virtual bool SetBackClassProtocolSureModule(int Id, int IsSure,int ClientId, UserInfo user,out string message)
{
bool flag = false;
message = "";
var extModel = backClass_ProtocolRepository.GetEntity(Id);
if (extModel != null && extModel.Id > 0)
{
var backModel = student_BackClassRepository.GetEntity(extModel.BackId);
var orderModel = orderRepository.GetEntity(backModel.OrderId);
#region 销售退课确认,重新计算订单应收:订单应收-学员合同费用总计 (实收-应退)
var newPreferPrice = orderModel.PreferPrice - backModel.RealityBackMoney;
Dictionary orderFileds = new Dictionary()
{
{nameof(RB_Order_ViewModel.PreferPrice),newPreferPrice },
{nameof(RB_Order_ViewModel.OrderState),(int)OrderStateEnum.DropOut },
};
flag = orderRepository.Update(orderFileds, new WhereHelper(nameof(RB_Order_ViewModel.OrderId), backModel.OrderId));
#endregion
}
if (flag)
{
Dictionary keyValues = new Dictionary()
{
{ nameof(RB_BackClass_Protocol_ViewModel.IsSure),IsSure},
};
flag = backClass_ProtocolRepository.Update(keyValues, new WhereHelper(nameof(RB_BackClass_Protocol_ViewModel.Id), Id));
}
if (flag)
{
message= studentBillModule.SetStudentBackFinance(Convert.ToInt32(extModel.BackId), ClientId, user);
if (!string.IsNullOrEmpty(message))
{
flag = false;
}
}
return flag;
}
///
/// 根据学生id获取学生的有效合同信息
///
///
///
public List GetStudentContractInfo(int Student_Id, int Group_Id)
{
return education_ContractRepository.GetStudentContractInfo(Student_Id, Group_Id);
}
///
/// 根据学生id获取学生的退课合同信息
///
///
///
public List GetStudentBackClassInfo(int Student_Id, int Group_Id)
{
return student_BackClassRepository.GetStudentBackClassInfo(Student_Id, Group_Id);
}
}
}