655 lines
26 KiB
C#
655 lines
26 KiB
C#
using BaseOUDAL;
|
|
using YLErp.Model;
|
|
using YLErp.Model.Enum;
|
|
using YLErp.Models;
|
|
|
|
namespace YLErp.Modules.SalesModule
|
|
{
|
|
/// <summary>
|
|
/// 销售提成数据服务
|
|
/// </summary>
|
|
public class SalesCommissionDataService : YLBaseService
|
|
{
|
|
public SalesCommissionDataService(OptUserInfo userInfo) : base(userInfo)
|
|
{
|
|
}
|
|
|
|
public SalesCommissionDataService(YLBaseService baseService) : base(baseService)
|
|
{
|
|
}
|
|
|
|
public SearchListResult<CommissionsGroupByClient> CommissionQueryByClient(BaseSearchReq req, List<int> salesmen, List<string> departments, List<int> clients)
|
|
{
|
|
var query = from s in DbContext.SalesCommissionInfo
|
|
where s.SaleMode == (int)PS.Config.ErpElement.SaleMode && s.IsValid
|
|
group s by s.ClientID into g
|
|
select new
|
|
{
|
|
Key=g.Key,
|
|
List=g.ToList()
|
|
};
|
|
var commissionGroups = new List<CommissionsGroupByClient>();
|
|
|
|
//根据客户查询
|
|
if (clients != null && clients.Count > 0)
|
|
{
|
|
query = query.Where(o => clients.Contains(o.Key));
|
|
}
|
|
|
|
var temp = query.ToList();
|
|
|
|
foreach (var item in temp)
|
|
{
|
|
var commissionGroup = new CommissionsGroupByClient
|
|
{
|
|
id = item.Key
|
|
};
|
|
item.List?.OrderBy(o => o.TradeID);
|
|
var oldTrdeId = 0;
|
|
foreach (var c in item.List)
|
|
{
|
|
if (oldTrdeId != c.TradeID)
|
|
{
|
|
double tempCommission;
|
|
if (!c.CommissionFixed)
|
|
{
|
|
var tradePrice = from t in DbContext.trade
|
|
where t.id == c.TradeID
|
|
select t.TradePrice;
|
|
if (tradePrice != null)
|
|
{
|
|
tempCommission = (tradePrice.FirstOrDefault() ?? 0) * c.Commission;
|
|
}
|
|
else
|
|
{
|
|
tempCommission = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
tempCommission = c.Commission;
|
|
}
|
|
|
|
commissionGroup.commissionCount++;
|
|
commissionGroup.commissionAmount += tempCommission;
|
|
oldTrdeId = c.TradeID;
|
|
}
|
|
}
|
|
var tempSalesmen = new List<int>();
|
|
foreach (var com in item.List)
|
|
{
|
|
tempSalesmen.Add(com.SalesmanID);
|
|
}
|
|
//根据销售员查询
|
|
if (salesmen != null && salesmen.Count > 0)
|
|
{
|
|
if (tempSalesmen.Except(salesmen).Count() == tempSalesmen.Distinct().Count())
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
if (PS.Config.ErpElement.SaleMode == YLErp.Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
var men = new SalesmenDataService(OptUser).GetSalesmen(tempSalesmen);
|
|
//根据部门查询
|
|
if (departments != null && departments.Count > 0)
|
|
{
|
|
var departmentGroup = men.GroupBy(o => o.Department).Select(o => o.Key);
|
|
if (departmentGroup.Except(departments).Count() == (departmentGroup).Distinct().Count())
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
foreach (var man in men)
|
|
{
|
|
commissionGroup.salesman += man.Name + "、";
|
|
if (commissionGroup.department == null || !commissionGroup.department.Contains(man.Department))
|
|
{
|
|
commissionGroup.department += man.Department + "、";
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
using (var db = DbContextFactory.GetErpBaseContext())
|
|
{
|
|
var sys = db.SystemUsers.Where(n => tempSalesmen.Contains(n.Id) && n.State == 0 && (n.AccountPost & (int)AccountPostEnum.客户经理) > 0);
|
|
|
|
foreach (var man in sys)
|
|
{
|
|
commissionGroup.salesman += man.Name + "、";
|
|
}
|
|
}
|
|
}
|
|
|
|
commissionGroup.salesman = commissionGroup.salesman?.TrimEnd('、');
|
|
commissionGroup.department = commissionGroup.department?.TrimEnd('、');
|
|
commissionGroup.clientname = DataCacheProvider.GetClientDataSource().GetData(commissionGroup.id)?.Name;
|
|
|
|
commissionGroups.Add(commissionGroup);
|
|
}
|
|
var ret = commissionGroups.AsQueryable().ToSearchList(req);
|
|
ret.Sum = new
|
|
{
|
|
AmountSum = ret.rows.Sum(o => o.commissionAmount),
|
|
CountSum = ret.rows.Sum(o => o.commissionCount)
|
|
|
|
};
|
|
return ret;
|
|
}
|
|
|
|
public SearchListResult<CommissionByTrade> CommissionQuery(SalesCommissionReq req)
|
|
{
|
|
var salesDic = new Lazy<Dictionary<int, string>>(() =>
|
|
{
|
|
if (PS.Config.ErpElement.SaleMode == YLErp.Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
return DbContext.salesmen.Select(n => new { n.id, n.Name }).ToDictionary(n => n.id, m => m.Name);
|
|
}
|
|
else
|
|
{
|
|
return DbContextFactory.GetErpBaseContext().SystemUsers.Where(n => n.State == 0 && (n.AccountPost & (int)AccountPostEnum.客户经理) > 0).Select(n => new { n.Id, n.Name }).ToDictionary(n => n.Id, m => m.Name);
|
|
}
|
|
|
|
});
|
|
var fliterSalesNames = new List<string>();
|
|
var query = from s in DbContext.SalesCommissionInfo
|
|
where s.SaleMode == (int)PS.Config.ErpElement.SaleMode && s.IsValid
|
|
join t in DbContext.trade
|
|
on s.TradeID equals t.id
|
|
select new CommissionByTrade
|
|
{
|
|
id = s.id,
|
|
tradeid = t.id,
|
|
tradeNumber = t.TradeNumber,
|
|
tradeStatus = t.TradeStatus,
|
|
salesmanName = s.SalesmanID.ToString(),
|
|
traderName = t.TraderName,
|
|
clientName = t.ClientName,
|
|
clientId = t.ClientId.ToString(),
|
|
buySell = t.BuySell,
|
|
tradeDate = t.TradeDate,
|
|
tradeType = t.TradeType,
|
|
structureType = t.StructureType,
|
|
StockEqvNotional = t.OriginalStockEqvNotional,
|
|
TradeSinglePrice = t.TradeType == "现金流交易" ? (t.TradePrice ?? 0) : (t.TradeSinglePrice ?? 0),
|
|
commissionAmout = s.CommissionFixed ? s.Commission : (s.Commission * t.TradePrice ?? 0)
|
|
};
|
|
if (!string.IsNullOrWhiteSpace(req.salesmanIds))
|
|
{
|
|
var ids = req.salesmanIds.Split(',').ToList();
|
|
foreach (var item in ids)
|
|
{
|
|
if (int.TryParse(item, out var id) && id > 0
|
|
&& salesDic.Value.TryGetValue(id, out var name) && !string.IsNullOrWhiteSpace(name))
|
|
{
|
|
fliterSalesNames.Add(name);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(req.clientIds))
|
|
{
|
|
var clients = req.clientIds.Split(',').ToList();
|
|
query = query.Where(o => clients.Contains(o.clientId));
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(req.TradeNumber))
|
|
{
|
|
query = query.Where(o => o.tradeNumber.Contains(req.TradeNumber));
|
|
}
|
|
|
|
if (req.tradeDateStart != null)
|
|
{
|
|
query = query.Where(o => o.tradeDate >= req.tradeDateStart);
|
|
}
|
|
|
|
if (req.tradeDateEnd != null)
|
|
{
|
|
query = query.Where(o => o.tradeDate <= req.tradeDateEnd);
|
|
}
|
|
|
|
var temp = query.ToList().OrderBy(o => o.tradeid);
|
|
if (temp.Count() == 0)
|
|
{
|
|
return null;
|
|
}
|
|
var line = new CommissionByTrade();
|
|
var result = new List<CommissionByTrade>();
|
|
foreach (var item in temp)
|
|
{
|
|
if (line == null || line.tradeid != item.tradeid)
|
|
{
|
|
if (line != null && line.tradeid > 0)
|
|
{
|
|
line.salesmanName = line.salesmanName?.TrimEnd('、');
|
|
if (JudgeSalesmanName(line, fliterSalesNames))
|
|
{
|
|
result.Add(line);
|
|
}
|
|
}
|
|
line = new CommissionByTrade()
|
|
{
|
|
id = item.id,
|
|
tradeid = item.tradeid,
|
|
buySell = item.buySell,
|
|
clientId = item.clientId,
|
|
clientName = item.clientName,
|
|
commissionAmout = item.commissionAmout,
|
|
StockEqvNotional = item.StockEqvNotional,
|
|
TradeSinglePrice = item.TradeSinglePrice,
|
|
structureType = item.structureType,
|
|
tradeDate = item.tradeDate,
|
|
tradeNumber = item.tradeNumber,
|
|
traderName = item.traderName,
|
|
tradeStatus = item.tradeStatus,
|
|
tradeType = item.tradeType
|
|
};
|
|
}
|
|
if (int.TryParse(item.salesmanName, out var id) && id > 0
|
|
&& salesDic.Value.TryGetValue(id, out var name) && !string.IsNullOrWhiteSpace(name))
|
|
{
|
|
line.salesmanName += name + "、";
|
|
}
|
|
}
|
|
if (line != null && !string.IsNullOrWhiteSpace(line.salesmanName))
|
|
{
|
|
line.salesmanName = line.salesmanName.TrimEnd('、');
|
|
}
|
|
if (JudgeSalesmanName(line, fliterSalesNames))
|
|
{
|
|
result.Add(line);
|
|
}
|
|
var ret = result.AsQueryable().ToSearchList(req);
|
|
return ret;
|
|
}
|
|
|
|
private bool JudgeSalesmanName(CommissionByTrade line, List<string> fliterNames)
|
|
{
|
|
if (fliterNames == null || !fliterNames.Any())
|
|
{
|
|
return true;
|
|
}
|
|
if (!string.IsNullOrEmpty(line.salesmanName) && line.salesmanName.Split('、').Any(o => fliterNames.Contains(o)))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
|
|
}
|
|
/// <summary>
|
|
/// 保存交易提成明细
|
|
/// </summary>
|
|
public int SaveCommission(IEnumerable<SalesCommissionInfo> commissions, int tradeId)
|
|
{
|
|
if (commissions is null || !commissions.Any())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
//删除原来的数据
|
|
var oldCommissions = DbContext.SalesCommissionInfo.Where(o => o.TradeID == tradeId);
|
|
|
|
DbContext.SalesCommissionInfo.RemoveRange(oldCommissions);
|
|
|
|
foreach (var commission in commissions)
|
|
{
|
|
if (commission.ClientID <= 0)
|
|
{
|
|
continue;
|
|
}
|
|
if (commission.SalesmanID <= 0)
|
|
{
|
|
continue;
|
|
}
|
|
if (commission.Commission < 0)
|
|
{
|
|
throw new ServiceException("提成金额不应为负");
|
|
}
|
|
if (tradeId <= 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
commission.OptDate = DateTime.Now;
|
|
commission.TradeID = tradeId;
|
|
DbContext.SalesCommissionInfo.Add(commission);
|
|
}
|
|
|
|
try
|
|
{
|
|
return DbContext.SaveChanges();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger("CommissionDataService").Error(ex);
|
|
throw new ServiceException("销售提成保存失败", ex);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存交易提成明细
|
|
/// </summary>
|
|
public int SaveTradeCommission(int tradeId, TradeSalesCommissionInfo salesCommission, bool isValid)
|
|
{
|
|
if (tradeId < 0)
|
|
{
|
|
throw new ServiceException("参数错误:" + nameof(tradeId));
|
|
}
|
|
|
|
if (salesCommission != null)
|
|
{
|
|
if (salesCommission.ClientId < 1)
|
|
{
|
|
throw new ServiceException("参数错误:" + nameof(salesCommission.ClientId));
|
|
}
|
|
|
|
if (salesCommission.Commission < 0)
|
|
{
|
|
throw new ServiceException("提成金额 必须大于等于0");
|
|
}
|
|
}
|
|
|
|
//删除原来的数据
|
|
var oldCommissions = DbContext.SalesCommissionInfo.Where(o => o.TradeID == tradeId);
|
|
DbContext.SalesCommissionInfo.RemoveRange(oldCommissions);
|
|
|
|
//如果销售员,销售提成没了,那也没必要新增了
|
|
if (salesCommission?.SalesIds is null || !salesCommission.SalesIds.Any())
|
|
{
|
|
DbContext.SaveChanges();
|
|
return 0;
|
|
}
|
|
|
|
if (!salesCommission.Commission.HasValue || salesCommission.Commission == 0)
|
|
{
|
|
DbContext.SaveChanges();
|
|
return 0;
|
|
}
|
|
|
|
|
|
var commissions = salesCommission.SalesIds.Select(n => new SalesCommissionInfo
|
|
{
|
|
ClientID = salesCommission.ClientId,
|
|
Commission = salesCommission.Commission.Value,
|
|
CommissionFixed = salesCommission.CommissionFixed,
|
|
OptDate = OptDate,
|
|
SalesmanID = n,
|
|
SaleMode = (int)PS.Config.ErpElement.SaleMode,
|
|
TradeID = tradeId,
|
|
IsValid = salesCommission.IsValid ?? isValid
|
|
}).ToArray();
|
|
|
|
DbContext.SalesCommissionInfo.AddRange(commissions);
|
|
|
|
return DbContext.SaveChanges();
|
|
}
|
|
|
|
public void SetCommissionVaild(int tradeId)
|
|
{
|
|
if (tradeId > 0)
|
|
{
|
|
var commissions = DbContext.SalesCommissionInfo.Where(o => o.TradeID == tradeId);
|
|
if (commissions != null)
|
|
{
|
|
foreach (var item in commissions)
|
|
{
|
|
item.IsValid = true;
|
|
item.OptDate = DateTime.Now;
|
|
}
|
|
DbContext.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetCommissionInVaild(int tradeId)
|
|
{
|
|
if (tradeId > 0)
|
|
{
|
|
var commissions = DbContext.SalesCommissionInfo.Where(o => o.TradeID == tradeId);
|
|
foreach (var item in commissions)
|
|
{
|
|
item.IsValid = false;
|
|
item.OptDate = DateTime.Now;
|
|
}
|
|
DbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取交易关联的销售提成信息
|
|
/// </summary>
|
|
public IEnumerable<SalesCommissionInfo> GetSalesCommissionInfo(int tradeId)
|
|
{
|
|
return DbContext.SalesCommissionInfo.AsNoTracking().Where(n => n.TradeID == tradeId).ToArray();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取交易关联的销售提成信息
|
|
/// </summary>
|
|
public TradeSalesCommissionInfo GetTradeCommissionInfo(int tradeId)
|
|
{
|
|
if (PS.Config.ErpElement.SalesCommissionCalculation == "公式1")
|
|
{
|
|
var tradeCashId = DbContext.SalesCommissionDetail
|
|
.Where(O => O.TradeID == tradeId && O.IsValid)
|
|
.OrderByDescending(O => O.OptDate)
|
|
.Select(O => O.TradeCashID).FirstOrDefault();
|
|
var infos = DbContext.SalesCommissionDetail.AsNoTracking().Where(n => n.TradeID == tradeId && n.TradeCashID == tradeCashId).ToArray();
|
|
return new TradeSalesCommissionInfo(infos);
|
|
}
|
|
else
|
|
{
|
|
var infos = DbContext.SalesCommissionInfo.AsNoTracking().Where(n => n.TradeID == tradeId).ToArray();
|
|
var tradeSalesModel = new TradeSalesCommissionInfo(infos);
|
|
if (tradeSalesModel.SaleMode == (int)Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
if (tradeSalesModel.SalesIds != null)
|
|
{
|
|
tradeSalesModel.SalesNames = DbContext.salesmen.Where(l => tradeSalesModel.SalesIds.Contains(l.id)).Select(l => l.Name).ToList();
|
|
tradeSalesModel.SalesNameStr = string.Join(",", tradeSalesModel.SalesNames);
|
|
}
|
|
|
|
}
|
|
else if (tradeSalesModel.SaleMode == (int)Configuration.Enums.SaleMode.CustomerManager)
|
|
{
|
|
using (var db = DbContextFactory.GetErpBaseContext())
|
|
{
|
|
if (tradeSalesModel.SalesIds != null)
|
|
{
|
|
tradeSalesModel.SalesNames = db.SystemUsers.Where(l => tradeSalesModel.SalesIds.Contains(l.Id)).Select(l => l.Name).ToList();
|
|
tradeSalesModel.SalesNameStr = string.Join(",", tradeSalesModel.SalesNames);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return tradeSalesModel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 批量 获取交易关联的销售提成信息
|
|
/// </summary>
|
|
/// <param name="tradeIds"></param>
|
|
/// <returns></returns>
|
|
public Dictionary<int, TradeSalesCommissionInfo> GetTradeCommissionInfoByTradeIds(List<int> tradeIds)
|
|
{
|
|
var res = new Dictionary<int, TradeSalesCommissionInfo>();
|
|
if (PS.Config.ErpElement.SalesCommissionCalculation == "公式1")
|
|
{
|
|
var tradeCashList = DbContext.SalesCommissionDetail.AsNoTracking().Where(p => tradeIds.Contains(p.TradeID) && p.IsValid).ToList();
|
|
if (tradeCashList == null || tradeCashList.Count == 0)
|
|
{
|
|
return res;
|
|
}
|
|
tradeIds.ForEach(tradeId =>
|
|
{
|
|
var lastTradeCash = tradeCashList.Where(p => p.TradeID == tradeId).OrderByDescending(p => p.OptDate).FirstOrDefault();
|
|
if (lastTradeCash != null)
|
|
{
|
|
var infos = tradeCashList.Where(p => p.TradeID == tradeId && p.TradeCashID == lastTradeCash.TradeCashID).ToArray();
|
|
res.Add(tradeId, new TradeSalesCommissionInfo(infos));
|
|
}
|
|
|
|
});
|
|
}
|
|
else
|
|
{
|
|
var salesCommssionList = DbContext.SalesCommissionInfo.AsNoTracking().Where(p => tradeIds.Contains(p.TradeID)).ToList();
|
|
if (salesCommssionList == null || salesCommssionList.Count == 0)
|
|
{
|
|
return res;
|
|
}
|
|
|
|
List<Salesman> saleMenList = null;
|
|
var salesMenIds = salesCommssionList.Where(p => p.SaleMode == (int)Configuration.Enums.SaleMode.SaleMen).Select(p => p.SalesmanID).Distinct().ToList();
|
|
if (salesMenIds != null && salesMenIds.Any())
|
|
{
|
|
saleMenList = DbContext.salesmen.Where(p => salesMenIds.Contains(p.id)).ToList();
|
|
}
|
|
if (saleMenList == null)
|
|
{
|
|
saleMenList = new List<Salesman>();
|
|
}
|
|
List<SystemUser> sysUsers = null;
|
|
var sysUserIds = salesCommssionList.Where(p => p.SaleMode == (int)Configuration.Enums.SaleMode.CustomerManager).Select(p => p.SalesmanID).Distinct().ToList();
|
|
if (sysUserIds != null && sysUserIds.Any())
|
|
{
|
|
using (var db = DbContextFactory.GetErpBaseContext())
|
|
{
|
|
sysUsers = db.SystemUsers.Where(l => sysUserIds.Contains(l.Id)).ToList();
|
|
}
|
|
}
|
|
if (sysUsers == null)
|
|
{
|
|
sysUsers = new List<SystemUser>();
|
|
}
|
|
|
|
tradeIds.ForEach(tradeId =>
|
|
{
|
|
var salesCListByTradeId = salesCommssionList.Where(p => p.TradeID == tradeId).ToList();
|
|
if (salesCListByTradeId != null && salesCListByTradeId.Any())
|
|
{
|
|
var info = new TradeSalesCommissionInfo(salesCListByTradeId);
|
|
|
|
if (info.SaleMode == (int)Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
info.SalesNames = saleMenList.Where(d => info.SalesIds.Contains(d.id)).Select(d => d.Name).ToList();
|
|
info.SalesNameStr = string.Join(",", info.SalesNames);
|
|
}
|
|
else if (info.SaleMode == (int)Configuration.Enums.SaleMode.CustomerManager)
|
|
{
|
|
info.SalesNames = sysUsers.Where(d => info.SalesIds.Contains(d.Id)).Select(d => d.Name).ToList();
|
|
info.SalesNameStr = string.Join(",", info.SalesNames);
|
|
}
|
|
res.Add(tradeId, info);
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取交易关联的销售提成信息
|
|
/// </summary>
|
|
public IEnumerable<SalesCommissionInfoDto> GetSalesCommissionInfoDtos(int tradeId)
|
|
{
|
|
if (PS.Config.ErpElement.SalesCommissionCalculation == "公式1")
|
|
{
|
|
var tradeCashId = DbContext.SalesCommissionDetail
|
|
.Where(O => O.TradeID == tradeId && O.IsValid)
|
|
.OrderByDescending(O => O.OptDate)
|
|
.Select(O => O.TradeCashID).FirstOrDefault();
|
|
var query = from a in DbContext.SalesCommissionDetail
|
|
where a.TradeID == tradeId && a.TradeCashID == tradeCashId //&& a.IsValid
|
|
select a;
|
|
|
|
var data = query.ToArray();
|
|
var ids = data.Select(O => O.SalesmanID).ToList();
|
|
Dictionary<int, string> salemanDict = null;
|
|
using (var db = DbContextFactory.GetErpBaseContext())
|
|
{
|
|
if (PS.Config.ErpElement.SaleMode == Configuration.Enums.SaleMode.CustomerManager)
|
|
{
|
|
salemanDict = db.SystemUsers.Where(l => ids.Contains(l.Id)).ToDictionary(K => K.Id, V => V.Name);
|
|
}
|
|
else if (PS.Config.ErpElement.SaleMode == Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
salemanDict = DbContext.salesmen.Where(l => ids.Contains(l.id)).ToDictionary(K => K.id, V => V.Name);
|
|
}
|
|
}
|
|
return data.Select(n =>
|
|
{
|
|
var dto = new SalesCommissionInfoDto();
|
|
dto.TradeID = n.TradeID;
|
|
dto.ClientID = n.ClientID;
|
|
dto.ClientName = n.ClientID;
|
|
dto.Commission = n.Commission;
|
|
dto.CommissionFixed = n.CommissionFixed;
|
|
dto.SalesmanID = n.SalesmanID;
|
|
dto.SalesmanName = salemanDict.ContainsKey(n.SalesmanID) ? salemanDict[n.SalesmanID] : "";
|
|
dto.IsValid = n.IsValid;
|
|
return dto;
|
|
}).ToArray();
|
|
}
|
|
else
|
|
{
|
|
var infos = DbContext.SalesCommissionInfo.AsNoTracking().Where(n => n.TradeID == tradeId).ToList();
|
|
using (var db = DbContextFactory.GetErpBaseContext())
|
|
{
|
|
return infos.Select(n =>
|
|
{
|
|
var dto = YLAutoMapper.Map<SalesCommissionInfoDto>(n);
|
|
if (n.SaleMode == (int)Configuration.Enums.SaleMode.CustomerManager)
|
|
{
|
|
dto.SalesmanName = db.SystemUsers.Where(l => n.SalesmanID == l.Id).Select(l => l.Name).FirstOrDefault();
|
|
}
|
|
else if (n.SaleMode == (int)Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
dto.SalesmanName = DbContext.salesmen.Where(l => n.SalesmanID == l.id).Select(l => l.Name).FirstOrDefault();
|
|
}
|
|
|
|
return dto;
|
|
}).ToArray();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class SalesCommissionReq : BaseSearchReq
|
|
{
|
|
/// <summary>
|
|
/// 销售员ID
|
|
/// </summary>
|
|
public string salesmanIds { get; set; }
|
|
/// <summary>
|
|
/// 客户ID
|
|
/// </summary>
|
|
public string clientIds { get; set; }
|
|
/// <summary>
|
|
/// 交易编号
|
|
/// </summary>
|
|
public string TradeNumber { get; set; }
|
|
/// <summary>
|
|
/// 交易日期始
|
|
/// </summary>
|
|
public DateTime? tradeDateStart { get; set; }
|
|
/// <summary>
|
|
/// 交易日期末
|
|
/// </summary>
|
|
public DateTime? tradeDateEnd { get; set; }
|
|
}
|
|
}
|