Commit b39ef7f5 authored by 吴春's avatar 吴春

1

parent a9ee7a9f
......@@ -23,9 +23,11 @@ using REBORN.IM.Service;
using REBORN.Model.CacheEntity;
using REBORN.Model.Entity;
using REBORN.Model.Entity.Dmc;
using REBORN.Model.Entity.Finance;
using REBORN.Model.Entity.Log;
using REBORN.Model.Entity.Million;
using REBORN.Model.Entity.Sell;
using REBORN.Model.Entity.ThirdHotel.ZYX;
using REBORN.Model.Extend;
using REBORN.Model.Extend.DataStatistics;
using REBORN.Model.Extend.Dmc;
......@@ -54,8 +56,10 @@ using System.IO;
using System.Linq;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Xml.Linq;
using static System.Net.WebRequestMethods;
using Config = REBORN.Common.Config;
namespace REBORN.Module.SellModule
......@@ -65,6 +69,21 @@ namespace REBORN.Module.SellModule
/// </summary>
public partial class SellOrderModule
{
/// <summary>
/// 财务日志
/// </summary>
private RB_Finance_InfoChange_LogRepository finance_InfoChange_LogRepository = new RB_Finance_InfoChange_LogRepository();
/// <summary>
/// 金融机构
/// </summary>
private RB_FinancialInstitutionsRepository infoChange_LogRepository = new RB_FinancialInstitutionsRepository();
/// <summary>
/// 供应商类型仓储对象
/// </summary>
private Rb_Supplier_TypeRepository supplier_TypeRepository = new Rb_Supplier_TypeRepository();
/// <summary>
/// 消息推送处理类
/// </summary>
......@@ -5185,7 +5204,1413 @@ namespace REBORN.Module.SellModule
}
return flag;
}
/// <summary>
/// 新增/修改供应商信息
/// </summary>
/// <param name="supplierModel"></param>
/// <param name="UpdateTime"></param>
/// <param name="clientBankAccountList"></param>
/// <param name="supplierId"></param>
/// <returns></returns>
public bool AddSupplierType(RB_Supplier_Extend supplierModel, DateTime UpdateTime, List<Model.Extend.Finance.RB_ClientBankAccount_Extend> clientBankAccountList, out int supplierId)
{
supplierId = 0;
bool flag = false;
if (supplierModel.ID == 0)//供应商要新增
{
supplierId = supplierRepository.Insert(supplierModel);
if (supplierId > 0)
{
supplierModel.ID = supplierId;
flag = true;
}
}
else
{
supplierId = supplierModel.ID;
IDictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Supplier.Name),supplierModel.Name},
{ nameof(RB_Supplier.Contact),supplierModel.Contact},
{ nameof(RB_Supplier.CompanyName),supplierModel.CompanyName},
{ nameof(RB_Supplier.UpdateBy),supplierModel.UpdateBy},
{ nameof(RB_Supplier.UpdateDate),UpdateTime},
{ nameof(RB_Supplier.DutyParagraph),supplierModel.DutyParagraph},
{ nameof(RB_Supplier.Tel),supplierModel.Tel},
{ nameof(RB_Supplier.CompanyPhone),supplierModel.CompanyPhone},
{ nameof(RB_Supplier.OpeningBank),supplierModel.OpeningBank},
{ nameof(RB_Supplier.BankNo),supplierModel.BankNo},
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>()
{
new WhereHelper (){ FiledName=nameof(RB_Supplier.ID),FiledValue=supplierModel.ID,OperatorEnum=OperatorEnum.Equal}
};
flag = supplierRepository.Update(fileds, whereHelpers);
}
if (flag)//新增供应商类型
{
// 获取现有的供应商类型列表
#region 类型
var oldList = supplier_TypeRepository.GetSupplierTypeListRepository(supplierId.ToString(), supplierModel.RB_Group_id ?? 0);
if (oldList != null && oldList.Any())
{
// 处理需要更新和新增的记录
foreach (var newItem in supplierModel.TypeList)
{
var existingItem = oldList.FirstOrDefault(oldItem => (int)oldItem.Type == newItem);
if ((existingItem?.ID ?? 0) == 0)
{
RB_Supplier_Type supplierTypeModel = new RB_Supplier_Type
{
SupplierId = supplierId,
RB_Group_Id = supplierModel.RB_Group_id ?? 0,
Status = REBORN.Common.Enum.DateStateEnum.Normal,
Type = (REBORN.Common.Enum.Finance.ClientTypeEnum)newItem,
};
supplier_TypeRepository.Insert(supplierTypeModel);
}
}
}
else
{
// 如果oldList为空,则全部新增
foreach (var newItem in supplierModel.TypeList)
{
RB_Supplier_Type supplierTypeModel = new RB_Supplier_Type
{
SupplierId = supplierId,
RB_Group_Id = supplierModel.RB_Group_id ?? 0,
Status = REBORN.Common.Enum.DateStateEnum.Normal,
Type = (REBORN.Common.Enum.Finance.ClientTypeEnum)newItem,
};
supplier_TypeRepository.Insert(supplierTypeModel);
}
}
#endregion
#region 账户信息
if (clientBankAccountList != null && clientBankAccountList.Any())
{
foreach (var item in clientBankAccountList)
{
item.ObjID = supplierId;
item.AccountAlias = supplierModel.Name; //item.AccountHolder + item.BankName;
bool flagB = SetEmpBankAccount(item, 1, out int ClientId, out string msg);
if (!flagB)
{
LogHelper.Write("供应商新建付款对象失败:" + supplierId + "失败原因:" + msg);
}
}
}
#endregion
}
return flag;
}
/// <summary>
/// 新增修改员工银行账户绑定信息
/// </summary>
/// <param name="dmodel"></param>
/// <param name="ClientId"></param>
/// <param name="isOtherEdit"></param>
/// <param name="msg"></param>
/// <returns></returns>
public bool SetEmpBankAccount(Model.Extend.Finance.RB_ClientBankAccount_Extend dmodel, int isOtherEdit, out int ClientId, out string msg)
{
msg = "";
ClientId = 0;
bool flag = true;
if (dmodel.ID > 0)
{
//验证付款对象是否已经存在单据, 存在的话 无法修改, 只能再新增
var list = financeRepository.GetListSingle(new Model.Extend.Finance.RB_Finance_Extend() { RB_Group_Id = dmodel.RB_Group_Id, IsSelectNormal = 1, ClientID = dmodel.ID });
if (list.Any())
{
if (isOtherEdit == 1)
{
var model = clientBankAccountRepository.GetEntity(dmodel.ID);
if (model.Type == Common.Enum.Finance.ClientTypeEnum.MyClient && model.IsDefaultCommission == 2)//2025-03-28 add by:W
{
msg = "大红包结算账户暂不支持修改!";
return false;
}
string LogMsg = $"只修改账户类型及类型对象:由【{model.Type}】【{model.ObjID}】修改为【{dmodel.Type}】【{dmodel.ObjID}】";
if (model.AccountAlias != dmodel.AccountAlias)
{
LogMsg += $",修改账户别名,由【{model.AccountAlias}】修改为【{dmodel.AccountAlias}】";
model.AccountAlias = dmodel.AccountAlias;
}
model.Type = dmodel.Type;
model.ObjID = dmodel.ObjID;
clientBankAccountRepository.Update(model);
msg = "此帐号已关联" + list.Count() + "张有效单据,无法修改基本信息,成功修改账户别名及客户类型";
#region 记录日志
finance_InfoChange_LogRepository.Insert(new Model.Entity.Log.RB_Finance_Infochange_Log()
{
LogId = 0,
RB_Branch_id = dmodel.RB_Branch_Id,
RB_Group_id = dmodel.RB_Group_Id,
UpdateBy = dmodel.CreateBy,
UpdateDate = System.DateTime.Now,
ResourceId = dmodel.ID,
StartValue = LogMsg,
Type = Common.Enum.Log.TemplateEnum.ClientPay,
EndValue = "",
Description = ""
});
#endregion
return false;
}
else
{
msg = "此帐号已关联" + list.Count() + "张有效单据,无法再修改账户基础信息,可联系财务调整或者添加新的账户";
return false;
}
}
}
Model.Extend.Finance.RB_FinancialInstitutions_Extend rB_Financial = new Model.Extend.Finance.RB_FinancialInstitutions_Extend();
#region 添加银行机构
var FinancialInstitutions = infoChange_LogRepository.GetByNameList(dmodel.BankName, dmodel.RB_Group_Id ?? 0)?.FirstOrDefault();
if (FinancialInstitutions == null)
{
FinancialInstitutions = new Model.Extend.Finance.RB_FinancialInstitutions_Extend()
{
Name = dmodel.BankName,
EnCode = "",
Logo = "",
Status = DateStateEnum.Normal,
Type = (Common.Enum.Finance.FinancialInstitutionsTypeEnum)(dmodel.AccountClassify == 2 ? 0 : 1),
GroupId = dmodel.RB_Group_Id ?? 0
};
FinancialInstitutions.ID = infoChange_LogRepository.Insert(FinancialInstitutions);
flag = FinancialInstitutions.ID > 0;
}
#endregion
if (flag)
{
dmodel.BankId = FinancialInstitutions.ID;
if (dmodel.AccountClassify == 3 || dmodel.AccountClassify == 4)
{
dmodel.BankId = -1;
dmodel.OpenBankName = dmodel.AccountAlias;//复制为同一个
if (string.IsNullOrWhiteSpace(dmodel.AccountHolder))
{
dmodel.AccountHolder = dmodel.AccountAlias;//复制为同一个
}
}
#region 检查是否包含日语
if (dmodel.ClientAccountType == 0 && !string.IsNullOrEmpty(dmodel.BankName) && StringHelper.IsIncludeJapan(dmodel.BankName))
{
dmodel.ClientAccountType = 1;
}
if (dmodel.ClientAccountType == 0 && !string.IsNullOrEmpty(dmodel.OpenBankName) && StringHelper.IsIncludeJapan(dmodel.OpenBankName))
{
dmodel.ClientAccountType = 1;
}
if (dmodel.ClientAccountType == 0 && !string.IsNullOrEmpty(dmodel.CardNum) && StringHelper.IsIncludeJapan(dmodel.CardNum))
{
dmodel.ClientAccountType = 1;
}
if (dmodel.ClientAccountType == 0 && !string.IsNullOrEmpty(dmodel.AccountAlias) && StringHelper.IsIncludeJapan(dmodel.AccountAlias))
{
dmodel.ClientAccountType = 1;
}
if (dmodel.ClientAccountType == 0 && !string.IsNullOrEmpty(dmodel.AccountHolder) && StringHelper.IsIncludeJapan(dmodel.AccountHolder))
{
dmodel.ClientAccountType = 1;
}
if (dmodel.ClientAccountType == 0 && !string.IsNullOrEmpty(dmodel.CardNum) && (dmodel.CardNum.Contains("普通") || dmodel.CardNum.Length == 7))
{
dmodel.ClientAccountType = 1;
}
#endregion
if (dmodel.ID > 0)
{
var model = clientBankAccountRepository.GetEntity(dmodel.ID);
if (model.Type == Common.Enum.Finance.ClientTypeEnum.MyClient && model.IsDefaultCommission == 2)//2025-03-28 add by:W
{
msg = "大红包结算账户暂不支持修改!";
return false;
}
model.BankId = dmodel.BankId;
model.OpenBankName = dmodel.OpenBankName;
model.CardNum = dmodel.CardNum;
model.AccountAlias = dmodel.AccountAlias;
model.AccountHolder = dmodel.AccountHolder;
model.DutyNo = dmodel.DutyNo;
model.SupplierName = dmodel.SupplierName;
if (isOtherEdit == 0)
{
model.CreateBy = dmodel.CreateBy;
model.CreateDate = dmodel.CreateDate;
model.RB_CreateByName = dmodel.RB_CreateByName;
}
if (isOtherEdit == 1)
{
model.Type = dmodel.Type;
}
model.ObjID = dmodel.ObjID;
model.AccountClassify = dmodel.AccountClassify;
model.AccountType = dmodel.AccountType;
model.CategoryId = dmodel.CategoryId;
bool fflag = clientBankAccountRepository.Update(model);
if (fflag)
{
#region 记录日志
finance_InfoChange_LogRepository.Insert(new Model.Entity.Log.RB_Finance_Infochange_Log()
{
LogId = 0,
RB_Branch_id = dmodel.RB_Branch_Id,
RB_Group_id = dmodel.RB_Group_Id,
UpdateBy = dmodel.CreateBy,
UpdateDate = System.DateTime.Now,
ResourceId = dmodel.ID,
StartValue = "修改账户信息",
Type = Common.Enum.Log.TemplateEnum.ClientPay,
EndValue = "",
Description = ""
});
#endregion
}
return fflag;
}
else
{
if (dmodel.Type == Common.Enum.Finance.ClientTypeEnum.MyClient)
{
//我的客户 强验证 只能一个有效账户
// var list = clientBankAccountRepository.GetList(new RB_ClientBankAccount_Extend() { RB_Group_Id = dmodel.RB_Group_Id, Type = dmodel.Type, ObjID = dmodel.ObjID });//2025-03-28 update by:W 客户大红包账户排除
var list = clientBankAccountRepository.GetList(new Model.Extend.Finance.RB_ClientBankAccount_Extend() { RB_Group_Id = dmodel.RB_Group_Id, Type = dmodel.Type, ObjID = dmodel.ObjID })?.Where(x => x.IsDefaultCommission != 2)?.ToList() ?? new List<RB_ClientBankAccount>();
if (list.Any())
{
msg = "一个客户只能存在一个有效账户,请冻结其他账户后再试";
return false;
}
}
ClientId = clientBankAccountRepository.Insert(dmodel);
return ClientId > 0;
}
}
else
{
return false;
}
}
/// <summary>
/// 新增与修改订单
/// </summary>
/// <param name="dmodel"></param>
/// <param name="tConfigModel"></param>
/// <param name="supplierModel"></param>
/// <param name="clientBankAccountList"></param>
/// <param name="userInfo"></param>
/// <param name="orderId"></param>
/// <param name="IsInsertXQD"></param>
/// <param name="IsInsertXQDFC"></param>
/// <param name="IsAutoOrder"></param>
/// <param name="employeeId"></param>
/// <param name="appointOPList"></param>
/// <returns></returns>
public string SetOrderInfo_YL(RB_Travel_Order_Extend dmodel, RB_Travel_Config_Extend tConfigModel, RB_Supplier_Extend supplierModel, List<Model.Extend.Finance.RB_ClientBankAccount_Extend> clientBankAccountList, UserInfo userInfo, out int orderId, int IsInsertXQD = 0, int IsInsertXQDFC = 0, int IsAutoOrder = 0, int employeeId = 0, List<RB_Appoint_OP> appointOPList = null)
{
string msg = "";
string UpdatePeopleMsg = "";
bool IsUpdateMoney = false;
Rb_Coupon_AllotRepository coupon_AllotRepository = new Rb_Coupon_AllotRepository();
bool isAddorder = false;
bool IsMoneyComplete = false;//款是否收齐
bool updateGuest = false;
dmodel.ChirdNoNeedBedNum = dmodel.ChirdNoNeedBedNum ?? 0;
orderId = 0;
int oldGuestNum = 0;
var tmodel = tConfigModel.PriceList?.FirstOrDefault() ?? new RB_Travel_Price_Extend();
//先新曾供应商信息,在新增团信息最后是订单信息
int supplierId = 0;
bool supplierFlag = AddSupplierType(supplierModel, dmodel.UpdateDate ?? DateTime.Now, clientBankAccountList, out supplierId);
if (!supplierFlag)
{
return "创建订单失败";
}
supplierModel.ID = supplierId;
tmodel.SupplierId = supplierId;
//新增修改团信息
if (tConfigModel.ID == 0)//要新增
{
var hotelId = travel_ConfigRepository.Insert(tConfigModel);
if (hotelId > 0)
{
tConfigModel.ID = hotelId;
tmodel.ConfigID = hotelId;
}
}
else
{
var gfiles = new Dictionary<string, object>()
{
{ nameof(RB_Travel_Config.DayNum),tmodel.DayNum},
{ nameof(RB_Travel_Config.Title),tmodel.Title},
};
var gwheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Travel_Config.ID),
FiledValue=tConfigModel.ID,
OperatorEnum=OperatorEnum.Equal
}
};
travel_ConfigRepository.Update(gfiles, gwheres);
tmodel.ConfigID = tConfigModel.ID;
}
if (tmodel.TCID == 0)
{
tmodel.CreateBy = dmodel.CreateBy;
tmodel.UpdateBy = dmodel.CreateBy;
tmodel.CreateDate = dmodel.CreateDate;
tmodel.UpdateDate = dmodel.UpdateDate;
tmodel.RB_Branch_Id = dmodel.RB_Branch_Id;
tmodel.OutBranchId = userInfo.RB_Branch_id;
tmodel.RB_Group_Id = dmodel.RB_Group_Id;
tmodel.RB_Department_Id = userInfo.RB_Department_Id;
tmodel.TCNUM = tmodel.StartDate.Value.ToString("yyyyMMddHHmmssfff");
tmodel.Status = GroupStateEnum.Normal;
tmodel.TCState = TravelSaleStateEnum.SaleTeam;
var hotelId = travel_PriceRepository.Insert(tmodel);
if (hotelId > 0)
{
dmodel.TCID = hotelId;
tmodel.TCID = hotelId;
}
}
else
{
Dictionary<string, object> gfiles = new Dictionary<string, object>()
{
{ nameof(RB_Travel_Price.StartDate),tmodel.StartDate},
{ nameof(RB_Travel_Price.YSeat),tmodel.YSeat},
{ nameof(RB_Travel_Price.SupplierId),tmodel.SupplierId},
{ nameof(RB_Travel_Price.WordPath),tmodel.WordPath},
{ nameof(RB_Travel_Price.PriceTeamType),(int)tmodel.PriceTeamType},
};
List<WhereHelper> gwheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Travel_Price.TCID),
FiledValue=tmodel.TCID,
OperatorEnum=OperatorEnum.Equal
}
};
travel_PriceRepository.Update(gfiles, gwheres);
dmodel.TCID = tmodel.TCID;
}
var trans = orderRepository.DbTransaction;
var sellTrans = coupon_AllotRepository.DbTransaction;
try
{
if (dmodel.OrderId > 0)
{
orderId = dmodel.OrderId;
//修改
RB_Travel_Order tomodel = orderRepository.GetEntity(dmodel.OrderId);
if (tomodel.GuestNum != dmodel.GuestNum)
{
oldGuestNum = (tomodel.GuestNum ?? 0) - (dmodel.GuestNum ?? 0);
updateGuest = true;
}
dmodel.CreateDate = tomodel.CreateDate;
string OldPlatformOrder = tomodel.PlatformOrder;
decimal OldPreferPrice = tomodel.PreferPrice ?? 0;
#region 更新订单 同时查询旅客名单是否需要删除
RB_Travel_Guest_Extend dmodel1 = new RB_Travel_Guest_Extend
{
OrderId = dmodel.OrderId,
IsAllograph = 2
};
var guestList = GuestRepository.GetPeopleList(dmodel1).OrderByDescending(x => x.Id).ToList();
// 获取需要删除的客人(存在于旧数据但不在新数据中)
var guestsToDelete = guestList.Where(old => !dmodel.GuestList.Any(newG => newG.Id == old.Id)).ToList();
// 获取需要更新的客人(同时存在于旧数据和新数据中)
var guestsToUpdate = guestList.Where(old => dmodel.GuestList.Any(newG => newG.Id == old.Id)).ToList();
// 获取需要新增的客人(存在于新数据但不在旧数据中)
var guestsToAdd = dmodel.GuestList.Where(newG => !guestList.Any(old => old.Id == newG.Id)).ToList();
// 删除操作
foreach (var guest in guestsToDelete)
{
Dictionary<string, object> gfiles = new Dictionary<string, object>()
{
{ nameof(RB_Travel_Guest.Status),1}
};
List<WhereHelper> gwheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Travel_Guest.Id),
FiledValue=guest.Id,
OperatorEnum=OperatorEnum.Equal
}
};
GuestRepository.Update(gfiles, gwheres, trans);
}
// 更新操作
foreach (var guest in guestsToUpdate)
{
var newGuest = dmodel.GuestList.FirstOrDefault(g => g.Id == guest.Id);
if (newGuest != null)
{
Dictionary<string, object> gfiles = new Dictionary<string, object>()
{
{ nameof(RB_Travel_Guest.Name), newGuest.Name },
{ nameof(RB_Travel_Guest.Birthday), newGuest.Birthday },
{ nameof(RB_Travel_Guest.PassportNo), newGuest.PassportNo },
{ nameof(RB_Travel_Guest.Nationality), newGuest.Nationality ?? 2 },
{ nameof(RB_Travel_Guest.Remarks), newGuest.Remarks },
{ nameof(RB_Travel_Guest.MobilePhone), newGuest.Tel },
{ nameof(RB_Travel_Guest.Tel), newGuest.Tel },
{ nameof(RB_Travel_Guest.UpdateBy), dmodel.UpdateBy },
{ nameof(RB_Travel_Guest.UpdateDate), DateTime.Now },
{ nameof(RB_Travel_Guest.IdCard), newGuest.IdCard },
{ nameof(RB_Travel_Guest.PassportExpiry), newGuest.PassportExpiry },
{ nameof(RB_Travel_Guest.PassportIssued), newGuest.PassportIssued }
};
List<WhereHelper> gwheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Travel_Guest.Id),
FiledValue = guest.Id,
OperatorEnum = OperatorEnum.Equal
}
};
GuestRepository.Update(gfiles, gwheres, trans);
}
}
// 新增操作
foreach (var newGuest in guestsToAdd)
{
GuestRepository.Insert(new RB_Travel_Guest()
{
Id = 0, // 新增记录,Id 由数据库自动生成
TCID = dmodel.TCID,
OrderId = dmodel.OrderId,
SurName = newGuest.SurName,
Name = newGuest.Name,
Sex = newGuest.Sex,
ESurName = newGuest.ESurName,
EName = newGuest.EName,
Birthday = newGuest.Birthday,
PassportNo = newGuest.PassportNo,
Nationality = newGuest.Nationality ?? 2,
EconomicCapability = "[]",
Remarks = newGuest.Remarks,
MobilePhone = newGuest.Tel,
Tel = newGuest.Tel,
Status = 0,
TravelType = 0,
UnitType = 0,
DutyType = 0,
CreateBy = dmodel.CreateBy,
UpdateBy = dmodel.UpdateBy,
CreateDate = DateTime.Now,
UpdateDate = DateTime.Now,
IsAllograph = 2,
IsBed = 1,
IdCard = newGuest.IdCard,
PassportExpiry = newGuest.PassportExpiry,
PassportIssued = newGuest.PassportIssued,
}, trans);
}
#endregion
bool IsAllotHouse = false;
#region 日志
//变动的数据写入日志
RB_Travel_Order_Log logmodel = new RB_Travel_Order_Log();
//对比
if (dmodel.Unit_Price != tomodel.Unit_Price)
{
logmodel.LogInfo += "成交单价:" + tomodel.Unit_Price + "->" + dmodel.Unit_Price + ";";
}
if (dmodel.TC_Price != tomodel.TC_Price)
{
logmodel.LogInfo += "本团单价:" + tomodel.TC_Price + "->" + dmodel.TC_Price + ";";
}
if (dmodel.PreferPrice != tomodel.PreferPrice)
{
logmodel.LogInfo += "应收总额:" + tomodel.PreferPrice + "->" + dmodel.PreferPrice + ";";
IsUpdateMoney = true;
}
if (dmodel.Commission != tomodel.Commission)
{
// logmodel.LogInfo += "预计提成:" + tomodel.Commission + "->" + dmodel.Commission + ";";
}
if (dmodel.FSeatNum != tomodel.FSeatNum)
{
logmodel.LogInfo += "头等舱:" + tomodel.FSeatNum + "->" + dmodel.FSeatNum + ";";
}
if (dmodel.ESeatNum != tomodel.ESeatNum)
{
logmodel.LogInfo += "商务舱:" + tomodel.ESeatNum + "->" + dmodel.ESeatNum + ";";
}
if (dmodel.YSeatNum != tomodel.YSeatNum)
{
logmodel.LogInfo += "经济舱:" + tomodel.YSeatNum + "->" + dmodel.YSeatNum + ";";
}
if (dmodel.ManNum != tomodel.ManNum)
{
logmodel.LogInfo += "成人数量:" + tomodel.ManNum + "->" + dmodel.ManNum + ";";
IsAllotHouse = true;
IsUpdateMoney = true;
}
if (dmodel.ChirdNum != tomodel.ChirdNum)
{
logmodel.LogInfo += "儿童数量:" + tomodel.ChirdNum + "->" + dmodel.ChirdNum + ";";
IsUpdateMoney = true;
}
if (dmodel.ChirdNeedBedNum != tomodel.ChirdNeedBedNum)
{
logmodel.LogInfo += "儿童占床:" + tomodel.ChirdNeedBedNum + "->" + dmodel.ChirdNeedBedNum + ";";
IsAllotHouse = true;
IsUpdateMoney = true;
}
if (dmodel.BabyNum != tomodel.BabyNum)
{
logmodel.LogInfo += "婴儿数量:" + tomodel.BabyNum + "->" + dmodel.BabyNum + ";";
IsUpdateMoney = true;
}
if (dmodel.OldPeopleNum != tomodel.OldPeopleNum)
{
logmodel.LogInfo += "老人数量:" + tomodel.OldPeopleNum + "->" + dmodel.OldPeopleNum + ";";
IsAllotHouse = true;
IsUpdateMoney = true;
}
if (dmodel.SingleRoomNum != tomodel.SingleRoomNum)
{
logmodel.LogInfo += "单房数量:" + tomodel.SingleRoomNum + "->" + dmodel.SingleRoomNum + ";";
IsAllotHouse = true;
}
if (dmodel.BigRoomNum != tomodel.BigRoomNum)
{
logmodel.LogInfo += "大床房数量:" + tomodel.BigRoomNum + "->" + dmodel.BigRoomNum + ";";
IsAllotHouse = true;
}
if (dmodel.TripleRoomNum != tomodel.TripleRoomNum)
{
logmodel.LogInfo += "三人房数量:" + tomodel.TripleRoomNum + "->" + dmodel.TripleRoomNum + ";";
IsAllotHouse = true;
}
if (dmodel.VisaNum != tomodel.VisaNum)
{
logmodel.LogInfo += "签证数量:" + tomodel.VisaNum + "->" + dmodel.VisaNum + ";";
}
if (dmodel.SafeNum != tomodel.SafeNum)
{
logmodel.LogInfo += "保险数量:" + tomodel.SafeNum + "->" + dmodel.SafeNum + ";";
}
if (dmodel.AirticketNum != tomodel.AirticketNum)
{
logmodel.LogInfo += "单地接数量:" + tomodel.AirticketNum + "->" + dmodel.AirticketNum + ";";
IsAllotHouse = true;
}
if (dmodel.LuggageNum != tomodel.LuggageNum)
{
logmodel.LogInfo += "行李数量:" + tomodel.LuggageNum + "->" + dmodel.LuggageNum + ";";
}
if (string.IsNullOrWhiteSpace(logmodel.LogInfo))
{
logmodel.LogInfo = "修改订单基本信息!";
}
if (dmodel.GuestNum != tomodel.GuestNum)
{
UpdatePeopleMsg += "原报名" + tomodel.GuestNum + "人修改为" + dmodel.GuestNum + "人";
}
if (dmodel.UnionRemark != tomodel.UnionRemark)
{
logmodel.LogInfo += "联运备注:" + tomodel.UnionRemark + "=>" + dmodel.UnionRemark + ";";
}
if (dmodel.LessPrice != tomodel.LessPrice)
{
logmodel.LogInfo += "少价总额:" + tomodel.LessPrice + "->" + dmodel.LessPrice + ";";
}
if (dmodel.AirTicketIds != tomodel.AirTicketIds)
{
logmodel.LogInfo += "航班信息:" + tomodel.AirTicketIds + "->" + dmodel.AirTicketIds + ";";
}
if (dmodel.FinalPriceTips != tomodel.FinalPriceTips)
{
logmodel.LogInfo += "尾款提醒设置:" + tomodel.FinalPriceTips + "->" + dmodel.FinalPriceTips + ";";
}
logmodel.OrderId = dmodel.OrderId;
logmodel.RB_Branch_id = dmodel.RB_Branch_Id;
logmodel.RB_Group_id = dmodel.RB_Group_Id;
logmodel.UpdateBy = employeeId == 0 ? dmodel.UpdateBy : employeeId;
logmodel.UpdateDate = dmodel.UpdateDate;
travel_Order_LogRepository.Insert(logmodel);
#endregion
#region 写入订单备注
if (dmodel.Remarks != tomodel.Remarks)
{
Order_RemarksRepository.Insert(new RB_Travel_Order_Remarks()
{
CreateBy = dmodel.CreateBy,
CreateDate = DateTime.Now,
OrderId = dmodel.OrderId,
Remarks = dmodel.Remarks,
Type = 1
}, trans);
}
#endregion
#region 判断优惠券信息是否满足
string updateCouponAllotIds = "";
if (!string.IsNullOrWhiteSpace(tomodel.CouponAllotIds) && updateGuest)
{
decimal discountMoney = 0;
List<Rb_Coupon_Allot_Extend> couponAllotList = GetCouponAllotListByCouponAllotIds(tomodel.CouponAllotIds);
var tempCouponAllot = couponAllotList?.Where(t => t.OrderGuestNum > 0 && t.OrderGuestNum > dmodel.GuestNum)?.ToList() ?? new List<Rb_Coupon_Allot_Extend>();
if ((tempCouponAllot?.Count() ?? 0) > 0)
{
updateCouponAllotIds = string.Join(",", tempCouponAllot.Select(x => x.Id));
var couponAllotModel = tempCouponAllot.FirstOrDefault();
if (couponAllotModel.CouponsType == 1)
{
if (tempCouponAllot.Any())
{
foreach (var item in tempCouponAllot)
{
ExpansionModel expansionModel = new ExpansionModel();
var lineList = Common.ConvertHelper.ToListInt(item.CheckInLine);
if (!string.IsNullOrWhiteSpace(item.ExpansionInfo) && item.IsExpansion == 1 && lineList != null && lineList.Any(x => x == (tmodel?.LineID ?? 0)) && tomodel.GroupType != OrderJoinType.SingleAirTicket)
{
try
{
expansionModel = JsonConvert.DeserializeObject<ExpansionModel>(item.ExpansionInfo);
}
catch
{
expansionModel = new ExpansionModel();
}
if ((dmodel.GuestNum - dmodel.BabyNum ?? 0) >= expansionModel.orderGuestNum && expansionModel.denomination > 0)
{
discountMoney += (decimal)expansionModel.denomination;
}
else
{
discountMoney += (decimal)item.Denomination.Value;
}
}
else
{
discountMoney += (decimal)item.Denomination.Value;
}
}
}
}
else if (couponAllotModel.CouponsType == 2)
{
decimal preferPrice = dmodel.PreferPrice.Value;
decimal tempDiscountMoney = 0;
if (dmodel.GroupType != OrderJoinType.SingleAirTicket && tempCouponAllot.Any(x => x.IsExpansion == 1))
{
foreach (var item in tempCouponAllot.Where(x => x.IsExpansion == 1))
{
ExpansionModel expansionModel = new ExpansionModel();
var lineList = Common.ConvertHelper.ToListInt(item.CheckInLine);
if (!string.IsNullOrWhiteSpace(item.ExpansionInfo))
{
expansionModel = JsonConvert.DeserializeObject<ExpansionModel>(item.ExpansionInfo);
}
if ((dmodel.GuestNum - dmodel.BabyNum ?? 0) >= expansionModel.orderGuestNum && expansionModel.denomination > 0 && lineList != null && lineList.Any(x => x == (tmodel?.LineID ?? 0)))
{
tempDiscountMoney += (decimal)expansionModel.denomination;
}
else
{
preferPrice *= Convert.ToDecimal((item.Denomination ?? 0) / 10.0);
}
}
foreach (var item in tempCouponAllot.Where(x => x.IsExpansion == 0))
{
preferPrice *= Convert.ToDecimal((item.Denomination ?? 0) / 10.0);
}
}
else
{
foreach (var item in tempCouponAllot)
{
preferPrice *= Convert.ToDecimal((item.Denomination ?? 0) / 10.0);
}
}
discountMoney = Math.Round((dmodel.PreferPrice.Value - preferPrice), 2) + tempDiscountMoney;
}
}
var manZu = couponAllotList?.Where(t => t.OrderGuestNum > 0 && t.OrderGuestNum <= dmodel.GuestNum)?.ToList() ?? new List<Rb_Coupon_Allot_Extend>();
tomodel.CouponAllotIds = (manZu != null && manZu.Any()) ? string.Join(",", manZu?.Select(x => x.Id)) : "";
tomodel.DiscountMoney = (tomodel.DiscountMoney ?? 0) - discountMoney;
//优惠券撤销
if (!string.IsNullOrWhiteSpace(updateCouponAllotIds))
{
int affectCount = new Rb_Coupon_AllotRepository().CancelUseCouponAllot(updateCouponAllotIds, sellTrans);
}
}
#endregion
tomodel.LuggageNum = dmodel.LuggageNum;
tomodel.ChirdNoNeedBedNum = dmodel.ChirdNoNeedBedNum;
tomodel.BabyNum = dmodel.BabyNum;
tomodel.GroupTypeNeedHouse = dmodel.GroupTypeNeedHouse;
tomodel.BrandId = dmodel.BrandId;
tomodel.ChirdNeedBedNum = dmodel.ChirdNeedBedNum;
tomodel.ChirdNum = dmodel.ChirdNum;
tomodel.ClientSource = dmodel.ClientSource;
tomodel.Commission = dmodel.Commission;
tomodel.QuotationUrl = dmodel.QuotationUrl;
tomodel.DepartureCityId = dmodel.DepartureCityId;
tomodel.ESeatNum = dmodel.ESeatNum;
tomodel.FSeatNum = dmodel.FSeatNum;
tomodel.GroupType = dmodel.GroupType;
tomodel.GuestNum = dmodel.GuestNum;
tomodel.IsIntermodal = dmodel.IsIntermodal;
tomodel.ManNum = dmodel.ManNum;
tomodel.OldPeopleNum = dmodel.OldPeopleNum;
tomodel.PlatformOrder = dmodel.PlatformOrder;
tomodel.SingleRoomNum = dmodel.SingleRoomNum;
if (tomodel.GroupType == OrderJoinType.NurseryGrafting)
{
tomodel.TC_Price = dmodel.TC_Price;//2019-06-14取消注释:因为地接价格还是之前的就需要变
}
tomodel.OneSex = dmodel.OneSex;//2019-06-26 Add By:W
tomodel.TradeWay = dmodel.TradeWay;
tomodel.Unit_Price = dmodel.Unit_Price;
tomodel.UpdateBy = dmodel.UpdateBy;
tomodel.UpdateDate = dmodel.UpdateDate;
tomodel.YSeatNum = dmodel.YSeatNum;
tomodel.DoubleRoomNum = dmodel.DoubleRoomNum;
tomodel.PreferPrice = dmodel.PreferPrice;
tomodel.PredictRoomNum = dmodel.PredictRoomNum;
tomodel.Remarks = dmodel.Remarks;
tomodel.VisaNum = dmodel.VisaNum;
tomodel.SafeNum = dmodel.SafeNum;
tomodel.AirticketNum = dmodel.AirticketNum;
tomodel.ScenicRefund = dmodel.ScenicRefund;
tomodel.IsReturnIntermodal = dmodel.IsReturnIntermodal;
tomodel.IsGoWaitingUnionPrice = dmodel.IsGoWaitingUnionPrice;
tomodel.IsBackWaitingUnionPrice = dmodel.IsBackWaitingUnionPrice;
tomodel.ReturnArriveCityId = dmodel.ReturnArriveCityId;
tomodel.CommissionShareMoney = dmodel.CommissionShareMoney;
tomodel.CommissionSharePeople = dmodel.CommissionSharePeople;
tomodel.TripleRoomNum = dmodel.TripleRoomNum;
tomodel.BigRoomNum = dmodel.BigRoomNum;
tomodel.BackCityTime = dmodel.BackCityTime;
tomodel.GoCityTime = dmodel.GoCityTime;
tomodel.CommissionMinusRate = dmodel.CommissionMinusRate;
tomodel.PlatformAccount = dmodel.PlatformAccount;
tomodel.RefuseVisaNum = dmodel.RefuseVisaNum;
tomodel.UnionRemark = dmodel.UnionRemark;
tomodel.LessPrice = dmodel.LessPrice;
tomodel.AirTicketIds = dmodel.AirTicketIds;
tomodel.FinalPriceTips = dmodel.FinalPriceTips;
tomodel.Meet = dmodel.Meet;
orderRepository.Update(tomodel, trans);
//验证 团款是否收齐
if ((tomodel.PreferPrice ?? 0) <= (tomodel.Income ?? 0) + (tomodel.PlatformTax ?? 0) + (tomodel.DiscountMoney ?? 0) + (tomodel.RedEnvelopeMoney ?? 0) - (tomodel.Refund ?? 0))
{
IsMoneyComplete = true;
}
//写成交价格表
var oplist = orderPriceRepository.GetOrderPriceListInfo(dmodel.OrderId);
if (oplist.Count > 0)
{
RB_Travel_OrderPrice opmodel = oplist[0];
opmodel.MinUnitPrice = dmodel.MinUnitPrice;
opmodel.GoAddPrice = dmodel.GoAddPrice ?? 0;
opmodel.BackAddPrice = dmodel.BackAddPrice ?? 0;
orderPriceRepository.Update(opmodel, trans);
}
else
{
RB_Travel_OrderPrice opmodel = new RB_Travel_OrderPrice()
{
B2BMemberPrice = tmodel.B2BMemberPrice,
B2BPrice = tmodel.B2BPrice,
B2CMemberPrice = tmodel.B2CMemberPrice,
B2CPrice = tmodel.B2CPrice,
BabyChargePrice = tmodel.BabyChargePrice,
BabyPrice = tmodel.BabyPrice,
ChildNeedPrice = tmodel.ChildNeedPrice,
ChildNoNeedPrice = tmodel.ChildNoNeedPrice,
DiscountPrice = tmodel.DiscountPrice,
MinUnitPrice = dmodel.MinUnitPrice,
OldManChargePrice = tmodel.OldManChargePrice,
OrderId = dmodel.OrderId,
OtherPrice = tmodel.OtherPrice,
TCID = dmodel.TCID,
RB_Branch_id = dmodel.RB_Branch_Id,
RB_Group_id = dmodel.RB_Group_Id,
RebatePrice = tmodel.RebatePrice,
SingleDMCPrice = tmodel.SingleDMCPrice,
SingleRoomPrice = tmodel.SingleRoomPrice,
VisaPrice = tmodel.VisaPrice,
AirticketMoney = tmodel.AirticketMoney,
SafeMoney = tmodel.SafeMoney,
GoAddPrice = dmodel.GoAddPrice ?? 0,
BackAddPrice = dmodel.BackAddPrice ?? 0,
BackVisaPrice = tmodel.BackVisaPrice
};
orderPriceRepository.Insert(opmodel, trans);
}
if (msg == "" && IsInsertXQD == 1)
{
if (((dmodel.ManNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.ChirdNum ?? 0)) > 0)
{
//新增需求单
Model.Entity.Dmc.RB_DMC_Need nModel = new RB_DMC_Need()
{
TCID = dmodel.TCID,
OrderId = dmodel.OrderId,
MainId = dmodel.DepartureCityId,
SubId = dmodel.ConfigGoCityId,
Status = 0,
TicketType = 1,
NeedDate = dmodel.GoCityTime.HasValue ? dmodel.GoCityTime.Value.ToString("yyyy-MM-dd") : DateTime.Now.ToString("yyyy-MM-dd"),
RB_Group_Id = dmodel.RB_Group_Id,
RB_Branch_Id = dmodel.RB_Branch_Id,
Describe = "从" + (destinationRepository.GetEntity(dmodel.DepartureCityId)?.Name ?? "") + "到" + (destinationRepository.GetEntity(dmodel.ConfigGoCityId)?.Name ?? "") + "的机票,不接受中转",
DealStatus = Common.Enum.NeedDealStatusEnum.NotDeal,
CreateBy = dmodel.EnterID,
CreateTime = DateTime.Now,
UpdateBy = dmodel.EnterID,
UpdateTime = DateTime.Now,
UseNum = 1,
NeedType = Common.Enum.ResourceTypeEnum.TicketService
};
var flag = InsertTeamNeed(nModel);
if (flag == false)
{
msg = "需求单新增失败!";
}
}
}
if (msg == "" && IsInsertXQDFC == 1)
{
if (((dmodel.ManNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.ChirdNum ?? 0)) > 0)
{
//新增需求单
Model.Entity.Dmc.RB_DMC_Need nModel = new RB_DMC_Need()
{
TCID = dmodel.TCID,
OrderId = dmodel.OrderId,
MainId = dmodel.ConfigBackCityId,
SubId = dmodel.ReturnArriveCityId,
Status = 0,
TicketType = 2,
NeedDate = dmodel.BackCityTime.HasValue ? dmodel.BackCityTime.Value.ToString("yyyy-MM-dd") : DateTime.Now.ToString("yyyy-MM-dd"),
RB_Group_Id = dmodel.RB_Group_Id,
RB_Branch_Id = dmodel.RB_Branch_Id,
Describe = "从" + (destinationRepository.GetEntity(dmodel.ConfigBackCityId)?.Name ?? "") + "到" + (destinationRepository.GetEntity(dmodel.ReturnArriveCityId)?.Name ?? "") + "的机票,不接受中转",
DealStatus = Common.Enum.NeedDealStatusEnum.NotDeal,
CreateBy = dmodel.EnterID,
CreateTime = DateTime.Now,
UpdateBy = dmodel.EnterID,
UpdateTime = DateTime.Now,
UseNum = 1,
NeedType = Common.Enum.ResourceTypeEnum.TicketService
};
var flag = InsertTeamNeed(nModel);
if (flag == false)
{
msg = "需求单新增失败!";
}
}
}
if (msg == "" && !string.IsNullOrEmpty(logmodel.LogInfo))
{
//查询价格信息
var priceModel2 = travel_PriceRepository.GetEntity(dmodel.TCID);
if (priceModel2 != null)
{
RB_Employee pushEmp = new RB_Employee();
//销售修改=>推送给OP(企微-订单消息)
if (userInfo.EmployeeId == dmodel.EnterID)
{
pushEmp = employeeRepository.GetEntity((priceModel2?.CreateBy ?? 0));
}
//OP修改=>推送给销售(企微-订单消息)
else
{
pushEmp = employeeRepository.GetEntity(dmodel.EnterID);
}
string TeamTypeStr = "跟团游订单";
if (priceModel2.TeamType == 0)
{
TeamTypeStr = "跟团游订单";
}
else if (priceModel2.TeamType == TeamTypeEnum.PacketGroup)
{
TeamTypeStr = "小包团订单";
}
else if (priceModel2.TeamType == TeamTypeEnum.OneDayTrip)
{
TeamTypeStr = "当地游订单";
}
else if (priceModel2.TeamType == TeamTypeEnum.TravelTeam)
{
TeamTypeStr = "PAK订单";
}
else if (priceModel2.TeamType == TeamTypeEnum.CutPosition)
{
TeamTypeStr = "切位团订单";
}
Dictionary<string, string> dicList = new Dictionary<string, string>()
{
{ "订单类型" , TeamTypeStr },
{ "订单编号" , dmodel.OrderId.ToString() },
{ "团队信息" , priceModel2.TCNUM+"("+priceModel2.TCID+")"},
{ "变更内容" , logmodel.LogInfo},
};
if (!string.IsNullOrEmpty(pushEmp.EnterpriseWeChatId) && !string.IsNullOrEmpty(logmodel.LogInfo))
{
EnterpriseWeiXinHelper.PushEnterpriseSendMsg(pushEmp.EnterpriseWeChatId, "订单修改提醒", dicList);
}
}
}
}
else
{
//新增
isAddorder = true;
dmodel.Income = 0;
dmodel.Refund = 0;
dmodel.PlatformTax = 0;
dmodel.IsCommissionGive = 2;
dmodel.IsMoneyFinish = 2;
if (dmodel.GroupType == OrderJoinType.SingleGroup)
{
dmodel.IndustryCategory = dmodel.IndustryCategory ?? "";
}
else
{
dmodel.IndustryCategory = "";
}
dmodel.OrderType = tmodel.TeamType.HasValue ? (int)tmodel.TeamType + 1 : 1;
if (dmodel.EnterID == null || (dmodel.EnterID != null && dmodel.EnterID == 0))
{
dmodel.EnterID = dmodel.CreateBy;
}
#region 优化控制
if (dmodel.RB_Group_Id == 2 && dmodel.RB_Branch_Id == 1224)
{
dmodel.RB_Branch_Id = 0;//ld 2024-02-06 徐总通知 网络印象与成都之间无联运成本,并且网络部报名其他公司 返佣反到成都来, 所以直接处理 网络部下单 订单公司=成都
}
if (dmodel.RB_Group_Id == 2 && dmodel.RB_Branch_Id == 1245 && dmodel.OrderSource != OrderSourceEnum.B2CWechatApp)
{
if (dmodel.LureEmpId == 0) { dmodel.LureEmpId = dmodel.EnterID ?? 0; }// 2024-03-08 ld 赵文豪需求:印象票务 无引流人则默认为自己
if ((dmodel.CustomerType == SellClientTypeEnum.NormalDirect || dmodel.CustomerType == SellClientTypeEnum.MemberDirect) && dmodel.CRMGuestId <= 0) { return "客户信息遗漏、请走CRM客人订单创建入口"; }
}
if (dmodel.RB_Group_Id == 2 && dmodel.CustomerId > 0 && dmodel.CustomerChildrenId <= 0)
{
//前端没有传递同行联系人 默认抓取
dmodel.CustomerChildrenId = customerInfoRepository.GetOrderDefaultChildrenId(dmodel.CustomerId ?? 0);
}
#endregion
var Id = orderRepository.Insert(dmodel, trans);
if (Id > 0)
{
orderId = Id;
#region 一日游创建旅客名单
if (dmodel.GuestList != null && dmodel.GuestList.Any())
{
foreach (var item in dmodel.GuestList)
{
GuestRepository.Insert(new RB_Travel_Guest()
{
Id = 0,
TCID = dmodel.TCID,
OrderId = Id,
SurName = item.SurName,
Name = item.Name,
Sex = item.Sex,
ESurName = item.ESurName,
EName = item.EName,
Birthday = item.Birthday,
PassportNo = item.PassportNo,
Nationality = item.Nationality ?? 2,//默认中国
EconomicCapability = "[]",
Remarks = item.Remarks,
MobilePhone = item.Tel,
Tel = item.Tel,
Status = 0,
TravelType = 0,
UnitType = 0,
DutyType = 0,
CreateBy = dmodel.CreateBy,
UpdateBy = dmodel.UpdateBy,
CreateDate = DateTime.Now,
UpdateDate = DateTime.Now,
IsAllograph = 2,
IsBed = 1,
IdCard = item.IdCard,
PassportExpiry = item.PassportExpiry,
PassportIssued = item.PassportIssued,
}, trans);
}
}
#endregion
#region 2023-09-26 add by:W 自动发放优惠券信息
if ((dmodel.DiscountMoney ?? 0) == 0 && ((dmodel.GuestNum ?? 0) - (dmodel.BabyNum ?? 0)) >= 2 && (dmodel.GroupType == OrderJoinType.PackageTour || dmodel.GroupType == OrderJoinType.SingleGroup) && dmodel.CustomerId > 0)
{
var orderAutoList = orderAutoCouponRepository.GetList(new Model.Entity.Dmc.RB_Order_AutoCoupon { CustomerId = dmodel.CustomerId ?? 0, TCID = dmodel.TCID ?? 0 }, "");
var customerModel = customerInfoRepository.GetCustomerInfoByIds((dmodel.CustomerId ?? 0).ToString())?.FirstOrDefault();
if (customerModel != null && !string.IsNullOrWhiteSpace(customerModel.BusinessCardPhoto))
{
var listBackAccount = clientBankAccountRepository.GetList(new Model.Entity.Finance.RB_ClientBankAccount { ObjID = (dmodel.CustomerId ?? 0), Type = Common.Enum.Finance.ClientTypeEnum.MyClient });
if (listBackAccount?.Count > 0)
{
if (orderAutoList?.Where(x => x.Status <= 1).Count() == 0)
{
var couponList = couponrepository.GetList(new Rb_Coupon_Extend { CouponStatus = 1, AutoGrant = 1 }).Where(x => x.ActivityStartDate.HasValue && x.ActivityEndDate.HasValue);
if (couponList != null && couponList.Any())
{
var couponModel = couponList.OrderBy(x => x.Denomination).FirstOrDefault(x => Convert.ToDateTime(StringHelper.FormatDate(x.ActivityStartDate)) <= Convert.ToDateTime(StringHelper.FormatDate(tmodel.StartDate)) && Convert.ToDateTime(StringHelper.FormatDate(x.ActivityEndDate)) >= Convert.ToDateTime(StringHelper.FormatDate(tmodel.StartDate)) && x.CheckInLine.Contains(dmodel.LineId.ToString()));
if (couponModel != null && couponModel.Id > 0)
{
var backAccountModel = listBackAccount.OrderBy(x => x.CreateDate).FirstOrDefault();
orderAutoCouponRepository.Insert(new RB_Order_AutoCoupon_Extend
{
ID = 0,
OrderId = Id,
CouponId = couponModel.Id,
TCID = dmodel.TCID ?? 0,
Status = 0,
CustomerId = dmodel.CustomerId ?? 0,
CreateDate = dmodel?.CreateDate ?? DateTime.Now,
ClientBackNum = backAccountModel?.CardNum ?? "",
AccountClassify = backAccountModel?.OpenBankName ?? "",
ClientName = backAccountModel?.AccountHolder ?? ""
}, trans);
}
}
}
}
}
}
#endregion
dmodel.OrderId = Id;
if (!string.IsNullOrWhiteSpace(dmodel.CouponAllotIds))
{
CouponAllotOrderTypeEnum couponAllotOrderTypeEnum = CouponAllotOrderTypeEnum.Group;
if (dmodel.GroupType == OrderJoinType.SingleAirTicket)
{
couponAllotOrderTypeEnum = CouponAllotOrderTypeEnum.AirTicket;
}
else
{
if (tmodel.TeamType == TeamTypeEnum.PacketGroup)
{
couponAllotOrderTypeEnum = CouponAllotOrderTypeEnum.SmallTeam;
}
else if (tmodel.TeamType == TeamTypeEnum.OneDayTrip)
{
couponAllotOrderTypeEnum = CouponAllotOrderTypeEnum.Local;
}
else if (tmodel.TeamType == TeamTypeEnum.CutPosition)
{
couponAllotOrderTypeEnum = CouponAllotOrderTypeEnum.QieWeiTeam;
}
}
int affectNum = coupon_AllotRepository.UserUseCouponAllot(Id, couponAllotOrderTypeEnum, dmodel.CouponAllotIds, sellTrans);
if (affectNum <= 0)
{
throw new Exception("用户下单,优惠券使用失败!");
}
}
#region 写入订单备注
if (!string.IsNullOrWhiteSpace(dmodel.Remarks))
{
Order_RemarksRepository.Insert(new RB_Travel_Order_Remarks()
{
CreateBy = dmodel.CreateBy,
CreateDate = DateTime.Now,
OrderId = dmodel.OrderId,
Remarks = dmodel.Remarks,
Type = 1
}, trans);
}
#endregion
//写入日志
#region 日志
//变动的数据写入日志
RB_Travel_Order_Log logmodel = new RB_Travel_Order_Log
{
LogInfo = "创建订单!" + (dmodel.LessPrice > 0 ? "少价" + dmodel.LessPrice : ""),
OrderId = dmodel.OrderId,
RB_Branch_id = dmodel.RB_Branch_Id,
RB_Group_id = dmodel.RB_Group_Id,
UpdateBy = dmodel.UpdateBy,
UpdateDate = dmodel.UpdateDate
};
travel_Order_LogRepository.Insert(logmodel);
#endregion
//写入价格
RB_Travel_OrderPrice opmodel = new RB_Travel_OrderPrice()
{
B2BMemberPrice = tmodel.B2BMemberPrice,
B2BPrice = tmodel.B2BPrice,
B2CMemberPrice = tmodel.B2CMemberPrice,
B2CPrice = tmodel.B2CPrice,
BabyChargePrice = tmodel.BabyChargePrice,
BabyPrice = tmodel.BabyPrice,
ChildNeedPrice = tmodel.ChildNeedPrice,
ChildNoNeedPrice = tmodel.ChildNoNeedPrice,
DiscountPrice = tmodel.DiscountPrice,
MinUnitPrice = dmodel.MinUnitPrice,
OldManChargePrice = tmodel.OldManChargePrice,
OrderId = Id,
OtherPrice = tmodel.OtherPrice,
TCID = dmodel.TCID,
RB_Branch_id = dmodel.RB_Branch_Id,
RB_Group_id = dmodel.RB_Group_Id,
RebatePrice = tmodel.RebatePrice,
SingleDMCPrice = tmodel.SingleDMCPrice,
SingleRoomPrice = tmodel.SingleRoomPrice,
VisaPrice = tmodel.VisaPrice,
SafeMoney = tmodel.SafeMoney,
AirticketMoney = tmodel.AirticketMoney,
BackAddPrice = dmodel.BackAddPrice ?? 0,
GoAddPrice = dmodel.GoAddPrice ?? 0,
BackVisaPrice = tmodel.BackVisaPrice
};
orderPriceRepository.Insert(opmodel, trans);
if (msg == "" && IsInsertXQD == 1)
{
if (((dmodel.ManNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.ChirdNum ?? 0)) > 0)
{
//新增需求单
Model.Entity.Dmc.RB_DMC_Need nModel = new RB_DMC_Need()
{
TCID = dmodel.TCID,
OrderId = Id,
MainId = dmodel.DepartureCityId,
SubId = dmodel.ConfigGoCityId,
Status = 0,
TicketType = 1,
NeedDate = dmodel.GoCityTime.HasValue ? dmodel.GoCityTime.Value.ToString("yyyy-MM-dd") : DateTime.Now.ToString("yyyy-MM-dd"),
RB_Group_Id = dmodel.RB_Group_Id,
RB_Branch_Id = dmodel.RB_Branch_Id,
Describe = "从" + (destinationRepository.GetEntity(dmodel.DepartureCityId)?.Name ?? "") + "到" + (destinationRepository.GetEntity(dmodel.ConfigGoCityId)?.Name ?? "") + "的机票,不接受中转",
DealStatus = Common.Enum.NeedDealStatusEnum.NotDeal,
CreateBy = dmodel.EnterID,
CreateTime = DateTime.Now,
UpdateBy = dmodel.EnterID,
UpdateTime = DateTime.Now,
UseNum = 1,
NeedType = Common.Enum.ResourceTypeEnum.TicketService
};
var flag = InsertTeamNeed(nModel);
if (flag == false)
{
msg = "需求单新增失败!";
}
}
}
if (msg == "" && IsInsertXQDFC == 1)
{
if (((dmodel.ManNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.ChirdNum ?? 0)) > 0)
{
//新增需求单
Model.Entity.Dmc.RB_DMC_Need nModel = new RB_DMC_Need()
{
TCID = dmodel.TCID,
OrderId = Id,
MainId = dmodel.ConfigBackCityId,
SubId = dmodel.ReturnArriveCityId,
Status = 0,
TicketType = 2,
NeedDate = dmodel.BackCityTime.HasValue ? dmodel.BackCityTime.Value.ToString("yyyy-MM-dd") : DateTime.Now.ToString("yyyy-MM-dd"),
RB_Group_Id = dmodel.RB_Group_Id,
RB_Branch_Id = dmodel.RB_Branch_Id,
Describe = "从" + (destinationRepository.GetEntity(dmodel.ConfigBackCityId)?.Name ?? "") + "到" + (destinationRepository.GetEntity(dmodel.ReturnArriveCityId)?.Name ?? "") + "的机票,不接受中转",
DealStatus = Common.Enum.NeedDealStatusEnum.NotDeal,
CreateBy = dmodel.EnterID,
CreateTime = DateTime.Now,
UpdateBy = dmodel.EnterID,
UpdateTime = DateTime.Now,
UseNum = 1,
NeedType = Common.Enum.ResourceTypeEnum.TicketService
};
var flag = InsertTeamNeed(nModel);
if (flag == false)
{
msg = "需求单新增失败!";
}
}
}
}
}
try
{
bool flag = false;
var oldOPList = appointOPRepository.GetList(new RB_Appoint_OP_Extend { OrderId = orderId, ResourceType = ResourceTypeEnum.TeamPrice }) ?? new List<RB_Appoint_OP_Extend>();
if (appointOPList != null && appointOPList.Any())
{
if (oldOPList != null && oldOPList.Any())
{
foreach (var item in oldOPList)
{
if (!appointOPList.Any(x => x.OPId == item.OPId))
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() { };
keyValues.Add(nameof(RB_Appoint_OP_Extend.Status), (int)DateStateEnum.Delete);
flag = appointOPRepository.Update(keyValues, new WhereHelper(nameof(RB_Appoint_OP_Extend.Id), item.Id));
}
}
}
foreach (var item in appointOPList)
{
if (!oldOPList.Any(x => x.OPId == item.OPId))
{
item.TCID = tmodel.TCID;
item.OrderId = orderId;
flag = appointOPRepository.Insert(item) > 0;
}
}
}
}
catch (Exception ex)
{
}
//HK 2019-07-24新增
try
{
backScenicRepository.SetOrderBackScenic(dmodel);
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetOrderInfo_01:处理订单退景点信息");
}
//修改计划方案状态 qyj 2019-05-06
if (msg == "" && tmodel.TeamType == TeamTypeEnum.PacketGroup && tmodel.FreePlan == 1)
{
RB_Travel_CustomRepository customRepository = new RB_Travel_CustomRepository();
RB_Travel_Custom custom = customRepository.GetCustomByTCID(tmodel.TCID);
if (custom != null && (custom.OrderStatus == 3 || custom.OrderStatus == 4))
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Travel_Custom.OrderStatus),5}
};
customRepository.Update(fileds, new WhereHelper(nameof(RB_Travel_Custom.CustomId), custom.CustomId));
}
}
if (msg == "")
{
orderRepository.DBSession.Commit();
coupon_AllotRepository.DBSession.Commit();
if (isAddorder && userInfo.SimpleEasy == 1)
{
//推送消息到企业微信
//新增订单,推送消息
Dictionary<string, string> dic = new Dictionary<string, string>();
string teamTypeName = "";
if (tmodel != null && tmodel.TeamType != null)
{
if (tmodel.PriceTeamType == PriceTeamTypeEnum.SanPing)
{
teamTypeName = "定制团";
}
else if (tmodel.PriceTeamType == PriceTeamTypeEnum.OutTravel)
{
teamTypeName = "外交团";
}
}
var priceExtModel = GetTravelInfoExt(dmodel?.TCID ?? 0);
if (!string.IsNullOrWhiteSpace(teamTypeName))
{
dic.Add("订单类型", teamTypeName);
}
string orderSourceStr = dmodel?.OrderSource?.ToName();
if (!string.IsNullOrEmpty(orderSourceStr))
{
dic.Add("订单来源", orderSourceStr);
}
dic.Add("订单编号", dmodel.OrderId.ToString());
//dic.Add("团队信息", priceExtModel.TCNUM + "(" + priceExtModel.TCID + ")");
dic.Add("产品名称", priceExtModel?.Title ?? "");
dic.Add("订单人数", (dmodel?.GuestNum ?? 0).ToString() + "人");
dic.Add("销售人员", userInfo.emName);
//新增订单,推送消息
messagePushConfigModule.MessagePushSend(userInfo.RB_Group_id, dic, MessagePushSendType.NewOrder);
}
return "";
}
else
{
orderRepository.DBSession.Rollback("SetOrderInfo_02");
coupon_AllotRepository.DBSession.Rollback("SetOrderInfo_02");
return msg;
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetOrderInfo_02");
orderRepository.DBSession.Rollback("SetOrderInfo_02");
coupon_AllotRepository.DBSession.Rollback("SetOrderInfo_02");
return "报错了,请联系管理员!";
}
}
/// <summary>
/// 新增与修改订单
/// </summary>
......@@ -5198,7 +6623,7 @@ namespace REBORN.Module.SellModule
/// <param name="IsAutoOrder">是否自动提交【HK新增】</param>
/// <param name="employeeId">员工编号</param>
/// <returns></returns>
public string SetOrderInfo_YL(RB_Travel_Order_Extend dmodel, RB_Travel_Price_Extend tmodel, UserInfo userInfo, out int orderId, int IsInsertXQD = 0, int IsInsertXQDFC = 0, int IsAutoOrder = 0, int employeeId = 0, List<RB_Appoint_OP> appointOPList = null)
public string SetOrderInfo_YL2(RB_Travel_Order_Extend dmodel, RB_Travel_Price_Extend tmodel, UserInfo userInfo, out int orderId, int IsInsertXQD = 0, int IsInsertXQDFC = 0, int IsAutoOrder = 0, int employeeId = 0, List<RB_Appoint_OP> appointOPList = null)
{
string msg = "";
string UpdatePeopleMsg = "";
......@@ -6371,6 +6371,520 @@ namespace REBORN.Services.SellService
return ApiResult.ParamIsNull("请输入联系电话");
}
//计算成人儿童老人的数量
int TotalPNum = (dmodel.ManNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.ChirdNum ?? 0);
int TotalSeat = (dmodel.YSeatNum ?? 0) + (dmodel.FSeatNum ?? 0) + (dmodel.ESeatNum ?? 0);
//ld 2019-2-11 收损订单
RB_Travel_Order tomodel = new RB_Travel_Order();
//if (dmodel.OrderId > 0)
//{
// tomodel = sellOrderModule.GetOrderEntity(dmodel.OrderId);
//}
//核对预计用房-------------------------------------------------------------------------------------
//验证是否平
//占床人数
int NeedBedPNum = 0;
if (dmodel.GroupType == OrderJoinType.NurseryGrafting)
{
NeedBedPNum = (dmodel.AirticketNum ?? 0) - (dmodel.ChirdNoNeedBedNum ?? 0);
}
else
{
NeedBedPNum = (dmodel.ManNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.ChirdNeedBedNum ?? 0) + (dmodel.AirticketNum ?? 0);
}
//求出 所有 单人房 三人房 人数 是否小于 占床人数 再看 剩下的人数 是否够分 双人床
int OtherRoomPNum = (dmodel.SingleRoomNum ?? 0) + (dmodel.BigRoomNum ?? 0) * 2 + (dmodel.TripleRoomNum ?? 0) * 3;
int SXDRoom = NeedBedPNum - OtherRoomPNum;
if (SXDRoom < 0)
{
//return ApiResult.ParamIsNull("房型选择有误,请核实后再试!");
}
dmodel.DoubleRoomNum = 0;
if (SXDRoom % 2 != 0)
{
dmodel.DoubleRoomNum = (SXDRoom + 1) / 2;
}
else
{
if (SXDRoom != 0)
{
dmodel.DoubleRoomNum = SXDRoom / 2;
}
}
//验证预计用房
double TotalRoomNum = 0;
if (dmodel.GroupTypeNeedHouse != 1 && (tomodel?.IsOneDay ?? 0) == 0)
{
if (dmodel.GroupType == OrderJoinType.NurseryGrafting)
{
TotalRoomNum = Convert.ToDouble((dmodel.AirticketNum ?? 0) - (dmodel.ChirdNoNeedBedNum ?? 0) - (dmodel.TripleRoomNum ?? 0) * 3 - (dmodel.SingleRoomNum ?? 0)) / 2
+ (dmodel.SingleRoomNum ?? 0) + (dmodel.TripleRoomNum ?? 0);
}
else
{
TotalRoomNum = Convert.ToDouble((dmodel.ManNum ?? 0) + (dmodel.ChirdNeedBedNum ?? 0) + (dmodel.OldPeopleNum ?? 0) + (dmodel.AirticketNum ?? 0) - (dmodel.TripleRoomNum ?? 0) * 3 - (dmodel.SingleRoomNum ?? 0)) / 2
+ (dmodel.SingleRoomNum ?? 0) + (dmodel.TripleRoomNum ?? 0);
}
//需求单转订单使用
if (IsAutoSubmitOrder == 1)
{
dmodel.PredictRoomNum = TotalRoomNum;
}
dmodel.PredictRoomNum = TotalRoomNum;
//if (TotalRoomNum != dmodel.PredictRoomNum)
//{
// return ApiResult.ParamIsNull("预计用房计算有误!");
//}
}
//判断是否有退景点
dmodel.ScenicRefund = "[]";
if (!string.IsNullOrWhiteSpace(dmodel.Remarks) && dmodel.Remarks.Length > 500)
{
return ApiResult.ParamIsNull("备注长度不能超过500");
}
#endregion
int IsInsertXQD = 0;//是否需要新增需求单 出发
int IsInsertXQDFC = 0;//是否需要新增需求单 返程
dmodel.PlatformAccount = (dmodel.PlatformAccount ?? 0);
//2019-06-06 Add By:w 判断修改的人数是否有变化,有变化前台提示重新分配房间信息
int isUpdateGuest = 0;
string XuZong = Common.Config.GetAppSetting("XuZongId");//徐总的id
string XieJie = Common.Config.GetAppSetting("XieJie");//徐总的id
string FilialeId = Common.Config.GetAppSetting("FilialeId");//分公司总经理岗位id
UserInfo nowUserInfo = CacheManager.User.RbUserCache.GetUserLoginInfo(request.uid);
//附件信息
List<FileData> fileData = new List<FileData>();
string fileDataStr = parms.GetStringValue("WordPathFileData");
if (!string.IsNullOrWhiteSpace(fileDataStr))
{
try
{
JArray guestInfoListArray = JArray.Parse(fileDataStr);
if (guestInfoListArray != null && guestInfoListArray.Count > 0)
{
foreach (var jItem in guestInfoListArray)
{
JObject jobj = JObject.Parse(JsonHelper.Serialize(jItem));
fileData.Add(new FileData
{
FileType = jobj.GetStringValue("FileType"),
Name = jobj.GetStringValue("Name"),
Url = jobj.GetStringValue("Url"),
VideoPath = jobj.GetStringValue("VideoPath"),
});
}
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "WordPathFileData");
}
}
if (fileData != null && fileData.Any())
{
dmodel.WordPath = JsonConvert.SerializeObject(fileData);
}
var newpriceModel = new RB_Travel_Price_Extend();
//是否是新增订单
bool isAddOrder = false;
#region 组装团信息
//供应商信息(供应商名称、联系人、联系电话是必须的,营业执照号、开户信息非必填))
RB_Supplier_Extend supplierModel = new RB_Supplier_Extend //供应商id
{
ID = parms.GetInt("SupplierId"),
Tel = parms.GetStringValue("Tel"),//联系人电话
Contact = parms.GetStringValue("Contact"),
Name = parms.GetStringValue("SupplierName"),
Status = Common.Enum.DateStateEnum.Normal,
// Type = Common.Enum.ResourceTypeEnum.TeamPrice,
CompanyName = parms.GetStringValue("CompanyName"),//公司名称
DutyParagraph = parms.GetStringValue("DutyParagraph"),//营业执照号
CompanyPhone = parms.GetStringValue("CompanyPhone"),//电话
OpeningBank = parms.GetStringValue("OpeningBank"),//开户行
BankNo = parms.GetStringValue("BankNo"),//开户账号
RB_Branch_id = userInfo.RB_Branch_id,
RB_Group_id = userInfo.RB_Group_id,
RB_Department_Id = userInfo.RB_Department_Id,
TypeList = new List<int> { (int)REBORN.Common.Enum.Finance.ClientTypeEnum.Travel },
};
string clientBankAccountListStr = parms.GetStringValue("ClientBankAccountList");
List<RB_ClientBankAccount_Extend> clientBankAccountList = new List<RB_ClientBankAccount_Extend>();
if (!string.IsNullOrWhiteSpace(clientBankAccountListStr))
{
try
{
JArray clientBankAccountArray = JArray.Parse(clientBankAccountListStr);
if (clientBankAccountArray != null && clientBankAccountArray.Count > 0)
{
foreach (var jItem in clientBankAccountArray)
{
JObject jobj = JObject.Parse(JsonHelper.Serialize(jItem));
string bankName = jobj.GetStringValue("BankName");//所属机构
int accountClassify = jobj.GetInt("AccountClassify");//账户分类
string cardNum = jobj.GetStringValue("CardNum");//卡号
string openBankName = jobj.GetStringValue("OpenBankName");//开户行
string accountHolder = jobj.GetStringValue("AccountHolder");//开户人
bool isAdd = false;
if (accountClassify == 2)
{
if (!string.IsNullOrEmpty(bankName) && !string.IsNullOrEmpty(cardNum) && !string.IsNullOrEmpty(openBankName) && !string.IsNullOrEmpty(accountHolder))
{
isAdd = true;
}
}
else if (!string.IsNullOrEmpty(cardNum) && !string.IsNullOrEmpty(accountHolder)) { isAdd = true; }
if (isAdd)
{
clientBankAccountList.Add(new RB_ClientBankAccount_Extend
{
BankName = bankName,//所属机构
AccountClassify = accountClassify,//账户分类
CardNum = cardNum,//卡号
OpenBankName = openBankName,//开户行
AccountHolder = accountHolder,//开户人
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
RB_Group_Id = userInfo.RB_Group_id,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_BranchName = userInfo.BranchName,
RB_CreateByName = userInfo.emName,
Status = 0,
AccountType = 1,
Type = Common.Enum.Finance.ClientTypeEnum.HotelSupplier,
});
}
}
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "SetTeavelTeam");
}
}
RB_Travel_Config_Extend modelConfig = new RB_Travel_Config_Extend
{
ArriveCityId = 0,
DayNum = parms.GetInt("DayNum"),//offerModel.DayNum,
ID = 0,
ImgCover = "",
IsUpdateHotel = 0,
LineId = 0,
LineteamId = 0,
NightNum = 0,
OfferId = 0,
OpenState = OpenStateEnum.OpenGroup,
OpenTeamDescribe = "",
PDFAlias = "",
IsDirect = 1,//全部默认直采
PriceIsDirect = 1,//全部默认直采
ProductRecommend = "",
ReturnArriveCityId = 0,
StartCityId = 0,
TeamType = TeamTypeEnum.PacketGroup, //审核的时候可以修改团队类型
Title = parms.GetStringValue("Title"),
TravelInfoIsCopy = false,
VideoStr = "",
WAreaId = 0,
WCityId = 0,
WCountryId = 0,
WLocationId = 0,
CustomerName = dmodel.ContactName,
IsUpdateOfferUrl = true,
PriceList = new List<RB_Travel_Price_Extend>(),
HotelList = new List<RB_Journey_Hotel_Extend>(),
DinnerList = new List<RB_Journey_Dinner_Extend>(),
ScenicList = new List<RB_Journey_Scenic_Extend2>(),
TrafficList = new List<RB_Journey_Traffic_Extend>(),
TitleList = new List<RB_Journey_Title_Extend>(),
FeaturePageType = 0,
};
RB_Travel_Price_Extend priceModel = new RB_Travel_Price_Extend
{
TCID = 0,
SupplierId = 0,//等哈要更新这个字段
ConfigID = modelConfig.ID,
IsOrder = 1,
IsB2B = 1,
IsB2C = 1,
IsSubstitution = 1,
B2BMemberPrice = dmodel.PreferPrice,
B2BPrice = dmodel.PreferPrice,
B2CMemberPrice = dmodel.PreferPrice,
B2CPrice = dmodel.PreferPrice,
SingleDMCPrice = 0,
ClearOrderHour = 0,
TCState = TravelSaleStateEnum.SaleTeam,
YSeat = (dmodel.GuestNum ?? 0) - (dmodel.BabyNum ?? 0),
FSeat = 0,
CSeat = 0,
Inventory = (dmodel.GuestNum ?? 0) - (dmodel.BabyNum ?? 0),
PriceOfferUrl = "",
TCSaleState = TCSaleStateEnum.General,
OPInnerRemark = "",
OfferId = 0,
IsNew = false,
SalePlat = "3,4",
OutBranchId = userInfo.RB_Branch_id,
StartDate = parms.GetDateTime("StartDate"),
WordPath = dmodel.WordPath,
TeamType = TeamTypeEnum.PacketGroup,
PriceTeamType = (PriceTeamTypeEnum)parms.GetInt("PriceTeamType", 1),// offerItem?.PriceTeamType ?? PriceTeamTypeEnum.SanPing,//02024-08-16 add by:W
IsSupportChildren = 1,
IsGuideDaiTuan = 1,
IsLeaderDaiTuan = 1,
VisaPrice = 0,
SafeMoney = 0,
DMCNum = "",
ExtPriceInfo = new RB_Travel_PriceInfo_Extend() { },
ChooseHotelArray = new List<PriceHotelItem>(),
};
priceModel.ChildNeedPrice = 0;
priceModel.ChildNoNeedPrice = 0;
priceModel.BabyPrice = 0;
priceModel.BabyChargePrice = 0;
priceModel.OldManChargePrice = 0;
priceModel.VisaPrice = 0;
priceModel.SafeMoney = 0;
priceModel.SingleRoomPrice = 0;
priceModel.SingleDMCPrice = 0;
priceModel.RebatePrice = 0;
priceModel.OtherPrice = 0;
priceModel.AirticketMoney = 0;
modelConfig.PriceList.Add(priceModel);
modelConfig.UpdateBy = userInfo.EmployeeId;
modelConfig.UpdateDate = DateTime.Now;
modelConfig.RB_Group_Id = userInfo.RB_Group_id;
modelConfig.RB_Branch_Id = userInfo.RB_Branch_id;
modelConfig.RB_Department_Id = userInfo.RB_Department_Id;
modelConfig.CreateDate = DateTime.Now;
#endregion
if (dmodel.OrderId > 0)
{
//修改 需要查询出下单时的价格 及 最低成交价
if (tomodel == null)
{
tomodel = sellOrderModule.GetOrderEntity(dmodel.OrderId);
}
if (tomodel == null)
{
return ApiResult.ParamIsNull("参数有误,请联系管理员!");
}
if (IsDealDiscount == 1)
{
dmodel.PreferPrice += (tomodel.DiscountMoney ?? 0) + (tomodel.RedEnvelopeMoney ?? 0);
}
modelConfig.PriceList.FirstOrDefault().TCID = tomodel.TCID ?? 0;
newpriceModel = sellOrderModule.GetTravelInfoExt(tomodel.TCID ?? 0);
modelConfig.ID = newpriceModel.ConfigID ?? 0;
//结束
if (tomodel.OrderId > 0)
{
if (dmodel.GuestNum <= 0 && tomodel.EnterID.ToString() == request.uid)
{
return ApiResult.ParamIsNull("订单总人数必须大于0");
}
}
//验证联运是否过关
dmodel.IsGoWaitingUnionPrice = tomodel.IsGoWaitingUnionPrice;
dmodel.IsBackWaitingUnionPrice = tomodel.IsBackWaitingUnionPrice;
if (dmodel.IsIntermodal == 2)
{
dmodel.IsGoWaitingUnionPrice = 2;
}
if (dmodel.IsReturnIntermodal == 2)
{
dmodel.IsBackWaitingUnionPrice = 2;
}
dmodel.OrderState = tomodel.OrderState;
dmodel.MinUnitPrice = 0;
//计算团的人头费,不包含婴儿 2023-04-18 add by:W
dmodel.PreferTipAmount = 0;
}
else
{
isAddOrder = true;
if ((dmodel.PreferPrice ?? 0) <= 0)
{
return ApiResult.Failed("应收总金额不能等于0!");
}
dmodel.OrderState = SellOrderStatusEnum.Occupied;
dmodel.SonControlID = -1;
//验证联运是否过关
dmodel.IsGoWaitingUnionPrice = 2;
dmodel.IsBackWaitingUnionPrice = 2;
//计算团的人头费,不包含婴儿 2023-04-18 add by:W
dmodel.PreferTipAmount = 0;
dmodel.MinUnitPrice = 0;
}
dmodel.CreateBy = userInfo.EmployeeId;
dmodel.EnterID = userInfo.EmployeeId;
dmodel.CreateDate = DateTime.Now;
dmodel.UpdateBy = userInfo.EmployeeId;
dmodel.UpdateDate = DateTime.Now;
dmodel.RB_Group_Id = userInfo.RB_Group_id;
dmodel.RB_Branch_Id = userInfo.RB_Branch_id;
dmodel.RB_Department_Id = userInfo.RB_Department_Id;
dmodel.ConfigGoCityId = 0;
dmodel.ConfigBackCityId = 0;
dmodel.LineteamId = 0;
dmodel.CommissionShareMoney = dmodel.CommissionShareMoney ?? 0;
dmodel.CommissionSharePeople = dmodel.CommissionSharePeople ?? 0;
dmodel.OrderSource = Common.Enum.OrderSourceEnum.Internal;
dmodel.WaitingESeatNum = dmodel.WaitingESeatNum ?? 0;
dmodel.WaitingFSeatNum = dmodel.WaitingFSeatNum ?? 0;
dmodel.WaitingYSeatNum = dmodel.WaitingYSeatNum ?? 0;
dmodel.CommissionSharePeople = dmodel.CommissionSharePeople == 0 ? -1 : dmodel.CommissionSharePeople;
dmodel.LineId = 0;
string updateScenic = "";
dmodel.GuestList = new List<RB_Travel_Guest_Extend>();
//出行人员名单(姓名、电话、出生年月日是必须的、护照号、身份证号、护照有效期非必填)
DateTime now = DateTime.Now;
string guestInfoStr = parms.GetStringValue("GuestList");
List<RB_Travel_Guest_Extend> orderGuestList = new List<RB_Travel_Guest_Extend>();
if (!string.IsNullOrWhiteSpace(guestInfoStr))
{
try
{
JArray guestInfoListArray = JArray.Parse(guestInfoStr);
if (guestInfoListArray != null && guestInfoListArray.Count > 0)
{
foreach (var jItem in guestInfoListArray)
{
JObject jobj = JObject.Parse(JsonHelper.Serialize(jItem));
string name = jobj.GetStringValue("Name");
string idCard = jobj.GetStringValue("IdCard");
orderGuestList.Add(new RB_Travel_Guest_Extend
{
Id = jobj.GetInt("GuestId"),
Birthday = jobj.GetDateTime("Birthday"),
Name = jobj.GetStringValue("Name"),
IdCard = jobj.GetStringValue("IdCard"),
PassportExpiry = jobj.GetDateTime("PassportExpiry"),
PassportIssued = jobj.GetDateTime("PassportIssued"),
PassportNo = jobj.GetStringValue("PassportNo"),
Tel = jobj.GetStringValue("Tel"),
});
}
//orderGuestList = orderGuestList?.Distinct()?.ToList() ?? new List<RB_Travel_Guest_Extend>();
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "SetTeavelTeam");
}
}
dmodel.GuestList = orderGuestList;
//指定op rb_appoint_op
List<RB_Appoint_OP> appointOPList = new List<RB_Appoint_OP>();
List<int> appointOPIdList = new List<int>();
string appointOPListStr = parms.GetStringValue("AppointOPList");
if (!string.IsNullOrWhiteSpace(appointOPListStr))
{
try
{
appointOPIdList = JsonConvert.DeserializeObject<List<int>>(appointOPListStr);
if (appointOPIdList != null && appointOPIdList.Count > 0)
{
foreach (var jItem in appointOPIdList)
{
appointOPList.Add(new RB_Appoint_OP
{
Id = 0,
OPId = jItem,
ResourceType = Common.Enum.ResourceTypeEnum.TeamPrice,
RB_Group_Id = userInfo.RB_Group_id,
CreateDate = now,
CreateBy = userInfo.EmployeeId,
Status = Common.Enum.DateStateEnum.Normal,
});
}
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "AppointOPList");
}
}
// dmodel.TCID = newpriceModel.TCID;
message = sellOrderModule.SetOrderInfo_YL(dmodel, modelConfig, supplierModel, clientBankAccountList, userInfo, out int orderId, IsInsertXQD, IsInsertXQDFC, IsAutoOrder: IsAutoSubmitOrder, userInfo?.EmployeeId ?? 0, appointOPList);
//message = sellOrderModule.SetOrderInfo_YL(dmodel, newpriceModel, userInfo, out int orderId, IsInsertXQD, IsInsertXQDFC, IsAutoOrder: IsAutoSubmitOrder, userInfo?.EmployeeId ?? 0, appointOPList);
if (message != "")
{
return ApiResult.ParamIsNull(message);
}
return ApiResult.Success(updateScenic + "订单操作成功", isUpdateGuest);
}
return ApiResult.Success("");
}
/// <summary>
/// 邮轮之前下单接口信息(下单速度太慢了,就不要这个接口了)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public virtual ApiResult SetOrderInfo_YL(RequestParm request)
{
Common.Plugin.LogHelper.RequestInfo("SetOrderInfo_03::" + request.msg.ToString());
JObject parms = JObject.Parse(request.msg.ToString());
string message = "";
UserInfo userInfo = new UserInfo();
//HK 2018-11-27修改 【报名清单页面修改订单使用(新加订单创建人字段)】
var CreateBy = parms.GetInt("CreateBy", 0);
var IsAutoSubmitOrder = parms.GetInt("IsAutoSubmitOrder", 0);
var IsDealDiscount = parms.GetInt("IsDealDiscount", 0);//=1 特殊处理 应收里 优惠券金额、幸福存折
if (CreateBy > 0)
{
userInfo = CacheManager.User.RbUserCache.GetUserLoginInfo(CreateBy.ToString());
}
else
{
userInfo = CacheManager.User.RbUserCache.GetUserLoginInfo(request.uid);
}
RB_Travel_Order_Extend dmodel = JsonHelper.DeserializeObject<RB_Travel_Order_Extend>(request.msg.ToString());
dmodel.OrderState = SellOrderStatusEnum.Normal;
if (dmodel.GroupType == OrderJoinType.NurseryGrafting)
{
dmodel.ChirdNum = 0;
dmodel.ChirdNeedBedNum = 0;
}
#region 非价格验证
//需要验证联系人和电话
if (string.IsNullOrWhiteSpace(dmodel.ContactName))
{
return ApiResult.ParamIsNull("请输入联系人");
}
if (string.IsNullOrWhiteSpace(dmodel.ContactMobile))
{
return ApiResult.ParamIsNull("请输入联系电话");
}
//先根据tcid求出团信息
var TModel = sellOrderModule.GetTravelInfoExt(dmodel.TCID ?? 0);
RB_Travel_PriceInfo_Extend extPriceInfo = new RB_Travel_PriceInfo_Extend();
......@@ -6654,7 +7168,7 @@ namespace REBORN.Services.SellService
isAdd = true;
}
}
else if (!string.IsNullOrEmpty(cardNum) ) { isAdd = true; }
else if (!string.IsNullOrEmpty(cardNum)) { isAdd = true; }
if (isAdd)
{
clientBankAccountList.Add(new RB_ClientBankAccount_Extend
......@@ -6689,9 +7203,9 @@ namespace REBORN.Services.SellService
if (!string.IsNullOrWhiteSpace(supplierModel.Name) && !string.IsNullOrWhiteSpace(supplierModel.Contact) && !string.IsNullOrWhiteSpace(supplierModel.Tel))
{
var addSupplier = supplierModule.Set(supplierModel, out supplierId);
if (supplierId>0)//新增成功了,现在需要新增账户信息
if (supplierId > 0)//新增成功了,现在需要新增账户信息
{
if (clientBankAccountList!=null&& clientBankAccountList.Any())
if (clientBankAccountList != null && clientBankAccountList.Any())
{
foreach (var item in clientBankAccountList)
{
......@@ -6700,7 +7214,7 @@ namespace REBORN.Services.SellService
bool flag = employeemodule.SetEmpBankAccount(item, 1, out int ClientId, out string msg);
if (!flag)
{
LogHelper.Write("供应商新建付款对象失败:"+ supplierId+"失败原因:"+ msg);
LogHelper.Write("供应商新建付款对象失败:" + supplierId + "失败原因:" + msg);
// return ApiResult.Failed(string.IsNullOrWhiteSpace(msg) ? null : msg);
}
}
......@@ -7076,15 +7590,14 @@ namespace REBORN.Services.SellService
dmodel.TCID = newpriceModel.TCID;
message = sellOrderModule.SetOrderInfo_YL(dmodel, newpriceModel, userInfo, out int orderId, IsInsertXQD, IsInsertXQDFC, IsAutoOrder: IsAutoSubmitOrder, userInfo?.EmployeeId ?? 0, appointOPList);
message = sellOrderModule.SetOrderInfo_YL2(dmodel, newpriceModel, userInfo, out int orderId, IsInsertXQD, IsInsertXQDFC, IsAutoOrder: IsAutoSubmitOrder, userInfo?.EmployeeId ?? 0, appointOPList);
if (message != "")
{
return ApiResult.ParamIsNull(message);
}
return ApiResult.Success(updateScenic + "订单操作成功", isUpdateGuest);
}
return ApiResult.Success("");
}
......
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