Commit dee93da5 authored by liudong1993's avatar liudong1993

1 提成比例调整+结团提成比例验证

parent d60b8d6b
using Newtonsoft.Json; using DapperExtensions.ValueObject;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using REBORN.CacheManager.Dmc; using REBORN.CacheManager.Dmc;
using REBORN.CacheManager.User; using REBORN.CacheManager.User;
...@@ -223,6 +224,16 @@ namespace REBORN.Module.DMCModule ...@@ -223,6 +224,16 @@ namespace REBORN.Module.DMCModule
/// </summary> /// </summary>
private readonly RB_Travel_OrderRepository travel_OrderRepository = new RB_Travel_OrderRepository(); private readonly RB_Travel_OrderRepository travel_OrderRepository = new RB_Travel_OrderRepository();
/// <summary>
/// 单订单提成规则
/// </summary>
private readonly RB_SingleOrder_CommissionRuleRepository singleOrder_CommissionRuleRepository = new RB_SingleOrder_CommissionRuleRepository();
/// <summary>
/// 单订单模式OP
/// </summary>
private readonly RB_Appoint_OPRepository appoint_OPRepository = new RB_Appoint_OPRepository();
/// <summary> /// <summary>
/// 领队档期仓储层对象 /// 领队档期仓储层对象
/// </summary> /// </summary>
...@@ -3529,6 +3540,54 @@ namespace REBORN.Module.DMCModule ...@@ -3529,6 +3540,54 @@ namespace REBORN.Module.DMCModule
} }
} }
} }
//新增 结团 提成比例验证 【2026-03-25】
if (travelModel.TeamType == TeamTypeEnum.PacketGroup) {
var order2List = travel_OrderRepository.GetBaseOrderList(new RB_Travel_Order_Extend() { RB_Group_Id = userInfo.RB_Group_id, TCID = extendModel.TCID });
order2List = order2List.Where(x => (x.IsLeaderOrder ?? 0) == 0).ToList();
//查询 订单下 所有的 提成比例设置
if (order2List.Any()) {
var ruleList = singleOrder_CommissionRuleRepository.GetList(new RB_SingleOrder_CommissionRule_Extend() { RB_Group_Id = userInfo.RB_Group_id });
foreach (var item in ruleList)
{
item.RuleList = JsonHelper.DeserializeObject<List<SingleOrderRule>>(item.Content);
}
foreach (var orderModel in order2List) {
var ruleModel = ruleList.Where(x => ("," + x.BranchIds + ",").Contains("," + orderModel.RB_Branch_Id + ",")).FirstOrDefault();
if (ruleModel == null) { ruleModel = ruleList.Where(x => x.BranchIds == "").FirstOrDefault(); }
int orderT = 2;
if (travelModel.PriceTeamType == Common.Enum.Dmc.PriceTeamTypeEnum.OutTravel) { orderT = 7; }
var ruleOrderModel = ruleModel.RuleList.Where(x => x.OrderType == orderT).FirstOrDefault();
if (orderModel.SaleRate <= 0)
{
orderModel.SaleRate = ruleOrderModel?.SaleRate ?? 0;
}
var OPList = appoint_OPRepository.GetList(new RB_Appoint_OP_Extend() { RB_Group_Id = userInfo.RB_Group_id, ResourceType = Common.Enum.ResourceTypeEnum.TeamPrice, OrderId = orderModel.OrderId });
orderModel.AppointOPInfoList = OPList;
if (orderModel.AppointOPInfoList != null && orderModel.AppointOPInfoList.Any())
{
var opcList = orderModel.AppointOPInfoList.Where(x => x.OPType == 0).ToList();
var visacList = orderModel.AppointOPInfoList.Where(x => x.OPType == 1).ToList();
if (opcList.Any() && !opcList.Any(x => x.CommissionRate > 0))
{
//赋默认值
opcList.FirstOrDefault().CommissionRate = ruleOrderModel?.OPRate ?? 0;
}
if (visacList.Any() && !visacList.Any(x => x.CommissionRate > 0))
{//赋默认值
visacList.FirstOrDefault().CommissionRate = ruleOrderModel?.VisaRate ?? 0;
}
}
if (orderModel.SaleRate == Convert.ToDecimal(0.01)) { orderModel.SaleRate = 0; }
if (orderModel.SaleRate + (orderModel.AppointOPInfoList?.Sum(x => x.CommissionRate) ?? 0) != 100) {
return "订单【" + orderModel.OrderId + "】提成比例未满100%";
}
}
}
}
} }
#region 验证酒店单据 日期是否每日完善 #region 验证酒店单据 日期是否每日完善
......
...@@ -422,7 +422,50 @@ namespace REBORN.Module.DMCModule ...@@ -422,7 +422,50 @@ namespace REBORN.Module.DMCModule
var list = sell_VisaOrderRepository.GetOrderList(new RB_Sell_VisaOrder_Extend() { RB_Group_Id = userInfo.RB_Group_id, OrderIds = visaOrderId }); var list = sell_VisaOrderRepository.GetOrderList(new RB_Sell_VisaOrder_Extend() { RB_Group_Id = userInfo.RB_Group_id, OrderIds = visaOrderId });
if (list != null && list.Any(x => x.PlatformMoney > 0)) if (list != null && list.Any(x => x.PlatformMoney > 0))
{ {
return "订单:" + string.Join(",", list.Where(x => x.PlatformMoney > 0).Select(x => x.OrderId)) + "在途金额大于0"; return "订单:" + string.Join(",", list.Where(x => x.PlatformMoney > 0).Select(x => x.Id)) + "在途金额大于0";
}
if (list.Any())
{
//查询OP
var ruleList = singleOrder_CommissionRuleRepository.GetList(new RB_SingleOrder_CommissionRule_Extend() { RB_Group_Id = userInfo.RB_Group_id });
foreach (var item in ruleList)
{
item.RuleList = JsonHelper.DeserializeObject<List<SingleOrderRule>>(item.Content);
}
var OPList = appointOPRepository.GetList(new RB_Appoint_OP_Extend() { RB_Group_Id = userInfo.RB_Group_id, ResourceType = Common.Enum.ResourceTypeEnum.Visa, QOrderIds = string.Join(",", list.Select(x => x.Id)) });
string OrderIdsMsg = "";
foreach (var orderModel in list)
{
var ruleModel = ruleList.Where(x => ("," + x.BranchIds + ",").Contains("," + orderModel.RB_Branch_Id + ",")).FirstOrDefault();
if (ruleModel == null) { ruleModel = ruleList.Where(x => x.BranchIds == "").FirstOrDefault(); }
var ruleOrderModel = ruleModel.RuleList.Where(x => x.OrderType == 6).FirstOrDefault();
if (orderModel.SaleRate <= 0)
{
orderModel.SaleRate = ruleOrderModel?.SaleRate ?? 0;
}
var AppointOPInfoList = OPList.Where(x => x.OrderId == orderModel.Id).ToList();
if (AppointOPInfoList != null && AppointOPInfoList.Any())
{
var opcList = AppointOPInfoList.Where(x => x.OPType == 0).ToList();
if (opcList.Any() && !opcList.Any(x => x.CommissionRate > 0))
{
//赋默认值
opcList.FirstOrDefault().CommissionRate = ruleOrderModel?.OPRate ?? 0;
}
}
if (orderModel.SaleRate == Convert.ToDecimal(0.01)) { orderModel.SaleRate = 0; }
if (orderModel.SaleRate + (AppointOPInfoList?.Sum(x => x.CommissionRate) ?? 0) != 100)
{
OrderIdsMsg += orderModel.Id + "、";
}
}
if (!string.IsNullOrEmpty(OrderIdsMsg))
{
return "订单 " + OrderIdsMsg + "提成比例未满100%";
}
} }
foreach (var item in list) foreach (var item in list)
{ {
......
...@@ -2466,6 +2466,46 @@ namespace REBORN.Module.SellModule ...@@ -2466,6 +2466,46 @@ namespace REBORN.Module.SellModule
{ {
return "订单:" + string.Join(",", list.Where(x => x.PlatformMoney > 0).Select(x => x.OrderId)) + "在途金额大于0"; return "订单:" + string.Join(",", list.Where(x => x.PlatformMoney > 0).Select(x => x.OrderId)) + "在途金额大于0";
} }
if (list.Any()) {
//查询OP
var ruleList = singleOrder_CommissionRuleRepository.GetList(new RB_SingleOrder_CommissionRule_Extend() { RB_Group_Id = userInfo.RB_Group_id });
foreach (var item in ruleList)
{
item.RuleList = JsonHelper.DeserializeObject<List<SingleOrderRule>>(item.Content);
}
var OPList = appointOPRepository.GetList(new RB_Appoint_OP_Extend() { RB_Group_Id = userInfo.RB_Group_id, ResourceType = Common.Enum.ResourceTypeEnum.Hotel, QOrderIds = string.Join(",", list.Select(x => x.OrderId)) });
string OrderIdsMsg = "";
foreach (var orderModel in list) {
var ruleModel = ruleList.Where(x => ("," + x.BranchIds + ",").Contains("," + orderModel.EmpBranchId + ",")).FirstOrDefault();
if (ruleModel == null) { ruleModel = ruleList.Where(x => x.BranchIds == "").FirstOrDefault(); }
var ruleOrderModel = ruleModel.RuleList.Where(x => x.OrderType == 3).FirstOrDefault();
if (orderModel.SaleRate <= 0)
{
orderModel.SaleRate = ruleOrderModel?.SaleRate ?? 0;
}
var AppointOPInfoList = OPList.Where(x => x.OrderId == orderModel.OrderId).ToList();
if (AppointOPInfoList != null && AppointOPInfoList.Any())
{
var opcList = AppointOPInfoList.Where(x => x.OPType == 0).ToList();
if (opcList.Any() && !opcList.Any(x => x.CommissionRate > 0))
{
//赋默认值
opcList.FirstOrDefault().CommissionRate = ruleOrderModel?.OPRate ?? 0;
}
}
if (orderModel.SaleRate == Convert.ToDecimal(0.01)) { orderModel.SaleRate = 0; }
if (orderModel.SaleRate + (AppointOPInfoList?.Sum(x => x.CommissionRate) ?? 0) != 100)
{
OrderIdsMsg += orderModel.OrderId + "、";
}
}
if (!string.IsNullOrEmpty(OrderIdsMsg)) {
return "订单 " + OrderIdsMsg + "提成比例未满100%";
}
}
foreach (var item in list) foreach (var item in list)
{ {
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>() {
...@@ -4557,6 +4597,59 @@ namespace REBORN.Module.SellModule ...@@ -4557,6 +4597,59 @@ namespace REBORN.Module.SellModule
{ {
return "订单:" + string.Join(",", list.Where(x => x.PlatformMoney > 0).Select(x => x.OrderId)) + "在途金额大于0"; return "订单:" + string.Join(",", list.Where(x => x.PlatformMoney > 0).Select(x => x.OrderId)) + "在途金额大于0";
} }
if (list.Any())
{
//查询OP
var ruleList = singleOrder_CommissionRuleRepository.GetList(new RB_SingleOrder_CommissionRule_Extend() { RB_Group_Id = userInfo.RB_Group_id });
foreach (var item in ruleList)
{
item.RuleList = JsonHelper.DeserializeObject<List<SingleOrderRule>>(item.Content);
}
var OPList = appointOPRepository.GetList(new RB_Appoint_OP_Extend() { RB_Group_Id = userInfo.RB_Group_id, ResourceType = Common.Enum.ResourceTypeEnum.TicketCoupons, QOrderIds = string.Join(",", list.Select(x => x.OrderId)) });
string OrderIdsMsg = "";
foreach (var orderModel in list)
{
var ruleModel = ruleList.Where(x => ("," + x.BranchIds + ",").Contains("," + orderModel.EmpBranchId + ",")).FirstOrDefault();
if (ruleModel == null) { ruleModel = ruleList.Where(x => x.BranchIds == "").FirstOrDefault(); }
var ruleOrderModel = ruleModel.RuleList.Where(x => x.OrderType == 4).FirstOrDefault();
if (orderModel.PlacplaceDeparture == 2)
{
ruleOrderModel = ruleModel.RuleList.Where(x => x.OrderType == 8).FirstOrDefault();
}
if (orderModel.SaleRate <= 0)
{
orderModel.SaleRate = ruleOrderModel?.SaleRate ?? 0;
}
var AppointOPInfoList = OPList.Where(x => x.OrderId == orderModel.OrderId).ToList();
if (AppointOPInfoList != null && AppointOPInfoList.Any())
{
var opcList = AppointOPInfoList.Where(x => x.OPType == 0).ToList();
if (opcList.Any() && !opcList.Any(x => x.CommissionRate > 0))
{
//赋默认值
opcList.FirstOrDefault().CommissionRate = ruleOrderModel?.OPRate ?? 0;
}
var opvList = AppointOPInfoList.Where(x => x.OPType == 1).ToList();
if (opvList.Any() && !opvList.Any(x => x.CommissionRate > 0))
{
//赋默认值
opvList.FirstOrDefault().CommissionRate = ruleOrderModel?.VisaRate ?? 0;
}
}
if (orderModel.SaleRate == Convert.ToDecimal(0.01)) { orderModel.SaleRate = 0; }
if (orderModel.SaleRate + (AppointOPInfoList?.Sum(x => x.CommissionRate) ?? 0) != 100)
{
OrderIdsMsg += orderModel.OrderId + "、";
}
}
if (!string.IsNullOrEmpty(OrderIdsMsg))
{
return "订单 " + OrderIdsMsg + "提成比例未满100%";
}
}
foreach (var item in list) foreach (var item in list)
{ {
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>() {
...@@ -6063,6 +6156,40 @@ namespace REBORN.Module.SellModule ...@@ -6063,6 +6156,40 @@ namespace REBORN.Module.SellModule
return "存在审核中财务单据:" + string.Join(",", flist.Select(x => x.FrID)); return "存在审核中财务单据:" + string.Join(",", flist.Select(x => x.FrID));
} }
#region 验证提成比例
var AppointOPInfoList = appointOPRepository.GetList(new RB_Appoint_OP_Extend() { RB_Group_Id = userInfo.RB_Group_id, ResourceType = Common.Enum.ResourceTypeEnum.SingleTicket, OrderId = orderId });
var ruleList = singleOrder_CommissionRuleRepository.GetList(new RB_SingleOrder_CommissionRule_Extend() { RB_Group_Id = userInfo.RB_Group_id });
foreach (var item in ruleList)
{
item.RuleList = JsonHelper.DeserializeObject<List<SingleOrderRule>>(item.Content);
}
var ruleModel = ruleList.Where(x => ("," + x.BranchIds + ",").Contains("," + orderModel.EmpBranchId + ",")).FirstOrDefault();
if (ruleModel == null) { ruleModel = ruleList.Where(x => x.BranchIds == "").FirstOrDefault(); }
var ruleOrderModel = ruleModel.RuleList.Where(x => x.OrderType == 1).FirstOrDefault();
if (orderModel.SaleRate <= 0)
{
orderModel.SaleRate = ruleOrderModel?.SaleRate ?? 0;
}
if (AppointOPInfoList != null && AppointOPInfoList.Any())
{
var opcList = AppointOPInfoList.Where(x => x.OPType == 0).ToList();
if (opcList.Any() && !opcList.Any(x => x.CommissionRate > 0))
{
//赋默认值
opcList.FirstOrDefault().CommissionRate = ruleOrderModel?.OPRate ?? 0;
}
}
if (orderModel.SaleRate == Convert.ToDecimal(0.01)) { orderModel.SaleRate = 0; }
if (orderModel.SaleRate + (AppointOPInfoList?.Sum(x => x.CommissionRate) ?? 0) != 100)
{
return "订单 " + orderModel.OrderId + "提成比例未满100%";
}
#endregion
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_CRMTicket_Order_Extend.OrderStatus), (int)CRMOrderStatusEnum.Finish}, { nameof(RB_CRMTicket_Order_Extend.OrderStatus), (int)CRMOrderStatusEnum.Finish},
{ nameof(RB_CRMTicket_Order_Extend.FinishTime), DateTime.Now}, { nameof(RB_CRMTicket_Order_Extend.FinishTime), DateTime.Now},
......
...@@ -2681,9 +2681,14 @@ namespace REBORN.Services.CommissionService ...@@ -2681,9 +2681,14 @@ namespace REBORN.Services.CommissionService
{ {
return ApiResult.ParamIsNull("合计提成比例不能超过100"); return ApiResult.ParamIsNull("合计提成比例不能超过100");
} }
if (demodel.AppointOPInfoList.Where(x => x.CommissionRate <= 0).Any()) { if (demodel.AppointOPInfoList.Where(x => x.CommissionRate < 0).Any())
{
return ApiResult.ParamIsNull("存在小于0的提成比例"); return ApiResult.ParamIsNull("存在小于0的提成比例");
} }
if (demodel.SaleRate + demodel.AppointOPInfoList.Sum(x => x.CommissionRate) != 100)
{
return ApiResult.ParamIsNull("销售OP合计提成比例需等于100,请调整后再试");
}
string msg = mergeCommissionModule.SetSingleOrderCommissionRate(demodel, userInfo); string msg = mergeCommissionModule.SetSingleOrderCommissionRate(demodel, userInfo);
if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); }
......
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