bug修复

This commit is contained in:
吴方海
2025-04-18 14:12:26 +08:00
parent 54b920b852
commit e4ef5d7d25
25 changed files with 134 additions and 145 deletions
@@ -9,6 +9,7 @@ using YLErp.BLL.EodSettlement;
using YLErp.Commons;
using YLErp.Configuration;
using YLErp.Core.Helpers;
using YLErp.DBModels.Enums;
using YLErp.Helpers;
using YLErp.Model;
using YLErp.Model.Enum;
@@ -648,12 +649,17 @@ namespace YLErp.Modules.ClientModule
#region
if ((("出金".Equals(r.Direction) && PS.Config.Company != Configuration.CompanyEnum.) || ("应付".Equals(r.Direction) && ClientCashInCashOut._预付金.Equals(r.Action))) && valuedateBLL.SystemDate.SpecialOperateForCashOut != 1 && PS.Config.Company != Configuration.CompanyEnum.)
if ("出金".Equals(r.Direction) && valuedateBLL.SystemDate.SpecialOperateForCashOut != 1)
{
//查看当前客户可用资金是否符合出金条件
var clientbalance = ClientBalanceUtility.GetClientBanlances(new List<int> { r.ClientId.Value }, DateTime.MinValue, DateTime.Now.Date).FirstOrDefault();
// 如果余额为 null,则视为无可用资金
if (clientbalance == null)
{
clientbalance = new YLErp.Models.ClientSettleBalance();
}
//当日可取现金
var availableFund = clientbalance == null ? 0 : clientbalance.DesirableFund;
var availableFund = clientbalance.DesirableFund;
//对于0.999999999情况的数据做下处理
var realAvailableFund = Math.Round((availableFund + (originalMoney ?? 0.0)) * Math.Pow(10, 8)) / Math.Pow(10, 8);
@@ -664,6 +670,24 @@ namespace YLErp.Modules.ClientModule
(Math.Floor(realAvailableFund * 100) / 100).ToString("0.00") + ";";
throw new ServiceException(msg);
}
if (r.Money <= clientbalance.VmFundSum)
{
// 出金金额小于等于 追保账户金额
r.cash_type = CashTypeEnum..ToString();
}
else
{
// 出金金额大于 追保账户金额,首先处理 VM 部分
r.cash_type = CashTypeEnum..ToString();
var newMoney = r.Money - clientbalance.VmFundSum;
r.Money = clientbalance.VmFundSum;
var newR = r.Clone();
newR.id = 0;
newR.Money = newMoney;
newR.cash_type = CashTypeEnum..ToString();
DbContext.ClientCashInCashOut.Add(newR);
}
}
#endregion
@@ -679,29 +703,7 @@ namespace YLErp.Modules.ClientModule
if (r.State != "未确认" && changecashs.Count > 0 && !(changecashs.Count == 1 && changecashs[0][0] == "Comments"))
{
//功能先禁掉了
//if (DbContext.clientcashincashout_update.Where(x => x.ClientcashincashoutId == r.id && x.State == "修改待确认" && x.ValidState != "InValid").Any())
//{
// var updateInValid = DbContext.clientcashincashout_update.Where(x => x.ClientcashincashoutId == r.id && x.State == "修改待确认" && x.ValidState != "InValid").ToList();
// updateInValid.ForEach(x => x.ValidState = "InValid");
//}
//var clientcashincashout_Update = new clientcashincashout_update
//{
// OptId = UserId,
// OptName = UserName,
// OptDate = DateTime.Now,
// ClientcashincashoutId = r.id,
// OldMoney = r.Money ?? 0,
// NewMoney = req.Money ?? 0,
// OldDirection = r.Direction,
// NewDirection = req.Direction ?? r.Direction,
// OldHappenDate = r.HappenDate,
// NewHappenDate = req.HappenDate ?? r.HappenDate,
// ValidState = "Valid",
// State = "修改待确认"
//};
//DbContext.clientcashincashout_update.Add(clientcashincashout_Update);
//ClientCashLog(r.id, "修改资金", comment, req.Explain);
}
else
{
@@ -912,35 +914,26 @@ namespace YLErp.Modules.ClientModule
}
}
}
else if ((("出金".Equals(e.Direction) && PS.Config.Company != Configuration.CompanyEnum.) || ("应付".Equals(e.Direction) && ClientCashInCashOut._预付金.Equals(e.Action))) && valuedateBLL.SystemDate.SpecialOperateForCashOut != 1 && PS.Config.Company != Configuration.CompanyEnum.)
{
//查看当前客户可用资金是否符合出金条件
var clientbalance = ClientBalanceUtility.GetClientBanlances(new List<int> { e.ClientId.Value }, DateTime.MinValue, DateTime.Now.Date).FirstOrDefault();
//当日可取现金
var availableFund = clientbalance == null ? 0 : clientbalance.DesirableFund;
//else if ((("出金".Equals(e.Direction) && PS.Config.Company != Configuration.CompanyEnum.中金) || ("应付".Equals(e.Direction) && ClientCashInCashOut.人工操作_预付金.Equals(e.Action))) && valuedateBLL.SystemDate.SpecialOperateForCashOut != 1 && PS.Config.Company != Configuration.CompanyEnum.中金)
//{
// //查看当前客户可用资金是否符合出金条件
// var clientbalance = ClientBalanceUtility.GetClientBanlances(new List<int> { e.ClientId.Value }, DateTime.MinValue, DateTime.Now.Date).FirstOrDefault();
// //当日可取现金
// var availableFund = clientbalance == null ? 0 : clientbalance.DesirableFund;
//对于0.999999999情况的数据做下处理
var realAvailableFund = Math.Round((availableFund + (e.Money??0)) * Math.Pow(10, 8)) / Math.Pow(10, 8);
//如果当前出金金额大于可用资金(不扣除冻结出金部分)则抛出错误
if (Math.Abs(e.Money ?? 0) > realAvailableFund)
{
if ("出金".Equals(e.Direction))
{
throw new ServiceException($"部分确认错误 客户:{e.ClientName},出金:{e.Money},实际可取出资金:{realAvailableFund:0.00};");
}
throw new ServiceException($"部分确认错误,客户:{e.ClientName},应付预付金:{Math.Abs(e.Money ?? 0)},实际可取出资金:{realAvailableFund:0.00};");
}
// //对于0.999999999情况的数据做下处理
// var realAvailableFund = Math.Round((availableFund + (e.Money??0)) * Math.Pow(10, 8)) / Math.Pow(10, 8);
// //如果当前出金金额大于可用资金(不扣除冻结出金部分)则抛出错误
// if (Math.Abs(e.Money ?? 0) > realAvailableFund)
// {
// if ("出金".Equals(e.Direction))
// {
// throw new ServiceException($"部分确认错误 客户:{e.ClientName},出金:{e.Money},实际可取出资金:{realAvailableFund:0.00};");
// }
// throw new ServiceException($"部分确认错误,客户:{e.ClientName},应付预付金:{Math.Abs(e.Money ?? 0)},实际可取出资金:{realAvailableFund:0.00};");
// }
}
if (PS.Config.Company == Configuration.CompanyEnum.)
{
if ("出金".Equals(e.Direction) && !CheckClientCashOut(e.ClientId ?? 0, Math.Abs(e.Money ?? 0), e.CurrencyCode))
{
throw new ServiceException($"{e.ClientName}币种{e.CurrencyCode}的出金金额不能大于客户账户余额");
}
}
//}
return true;
}