Commit fd6de31d by 陶然

优化

parent 86829e4a
...@@ -94,5 +94,49 @@ namespace Kivii.Finances ...@@ -94,5 +94,49 @@ namespace Kivii.Finances
} }
} }
/// <summary>
/// 账单验证是否归档方法
/// </summary>
/// <param name="bill"></param>
/// <param name="conn"></param>
/// <returns></returns>
public static Bill Archiving(this Bill bill,IDbConnection conn = null)
{
bill.ThrowIfNull("账单不能为空!");
if (conn == null)
{
conn = KiviiContext.GetOpenedDbConnection<Bill>();
}
var queryDetails = conn.From<BillDetail>();
queryDetails.Where(o => o.BillKvid == bill.Kvid);
queryDetails.Select(o => o.BizKvid);
//var details = conn.Select(queryDetails);
var querySettlements=conn.From<Settlement>();
querySettlements.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Kvid, queryDetails));
querySettlements.Select(o => new { o.Amount, o.AmountPlan, o.AmountPayment });
var settlements = conn.Select(querySettlements);
if (settlements.IsNullOrEmpty())//未找到结算信息 说明此账单没有费用
{
bill.Amount = 0;
bill.AddOnlyProperties(o => o.Amount);
bill.AmountPlan = 0;
bill.AddOnlyProperties(o => o.AmountPlan);
bill.AmountPayment = 0;
bill.AddOnlyProperties(o => o.AmountPayment);
conn.UpdateOnly(bill);
return bill;
}
bill.Amount = settlements.Sum(o => o.Amount);
bill.AddOnlyProperties(o => o.Amount);
bill.AmountPlan = settlements.Sum(o => o.AmountPlan);
bill.AddOnlyProperties(o => o.AmountPlan);
bill.AmountPayment = settlements.Sum(o => o.AmountPayment);
bill.AddOnlyProperties(o => o.AmountPayment);
conn.UpdateOnly(bill);
return bill;
}
} }
} }
...@@ -33,5 +33,5 @@ using System.Runtime.InteropServices; ...@@ -33,5 +33,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示: //通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("5.4.2023.9210")] [assembly: AssemblyVersion("5.4.2023.10180")]
[assembly: AssemblyFileVersion("5.4.2023.9210")] [assembly: AssemblyFileVersion("5.4.2023.10180")]
...@@ -177,8 +177,12 @@ namespace Kivii.Finances.Transforms ...@@ -177,8 +177,12 @@ namespace Kivii.Finances.Transforms
o.BizType o.BizType
}); });
bills = conn.Select(queryBills); bills = conn.Select(queryBills);
if (!bills.IsNullOrEmpty())
{
var existKvids = bills.ConvertAll(o => o.BizKvid);
if (conn.Exists<InvoiceApply>(o => Sql.In(o.Kvid, existKvids) && o.Status != (int)InvoiceApplyStatus.ApplyReject)) throw new Exception("存在账单已申请,请勿重复操作!");
}
} }
if (bills.Exists(o => o.BizKvid != Guid.Empty)) throw new Exception("存在账单已申请,请勿重复操作!");
var trans = conn.OpenTransaction(); var trans = conn.OpenTransaction();
try try
......
...@@ -163,33 +163,35 @@ namespace Kivii.Finances.Transforms ...@@ -163,33 +163,35 @@ namespace Kivii.Finances.Transforms
var rtns = new RestfulUpdateResponse<Bill>(); var rtns = new RestfulUpdateResponse<Bill>();
rtns.Results = new List<Bill>(); rtns.Results = new List<Bill>();
var allBillDetails = conn.Select<BillDetail>(o => Sql.In(o.BillKvid, bills.ConvertAll(p => p.Kvid))); //var allBillDetails = conn.Select<BillDetail>(o => Sql.In(o.BillKvid, bills.ConvertAll(p => p.Kvid)));
var allSettlements = conn.Select<Settlement>(o => Sql.In(o.Kvid, allBillDetails.ConvertAll(p => p.BizKvid))); //var allSettlements = conn.Select<Settlement>(o => Sql.In(o.Kvid, allBillDetails.ConvertAll(p => p.BizKvid)));
foreach (var bill in bills) foreach (var bill in bills)
{ {
var billDetails = allBillDetails.Where(o => o.BillKvid == bill.Kvid).ToList(); var item = bill.Archiving(conn);
if (billDetails.IsNullOrEmpty()) continue;
var settlements = allSettlements.Where(o => billDetails.ConvertAll(p => p.BizKvid).Contains(o.Kvid)).ToList();
if (settlements.IsNullOrEmpty())//未找到结算信息 说明此账单没有费用
{
bill.Amount = 0;
bill.AddOnlyProperties(o => o.Amount);
bill.AmountPlan = 0;
bill.AddOnlyProperties(o => o.AmountPlan);
bill.AmountPayment = 0;
bill.AddOnlyProperties(o => o.AmountPayment);
conn.UpdateOnly(bill);
rtns.Results.Add(bill);
continue;
}
bill.Amount = settlements.Sum(o => o.Amount);
bill.AddOnlyProperties(o => o.Amount);
bill.AmountPlan = settlements.Sum(o => o.AmountPlan);
bill.AddOnlyProperties(o => o.AmountPlan);
bill.AmountPayment = settlements.Sum(o => o.AmountPayment);
bill.AddOnlyProperties(o => o.AmountPayment);
conn.UpdateOnly(bill);
rtns.Results.Add(bill); rtns.Results.Add(bill);
//var billDetails = allBillDetails.Where(o => o.BillKvid == bill.Kvid).ToList();
//if (billDetails.IsNullOrEmpty()) continue;
//var settlements = allSettlements.Where(o => billDetails.ConvertAll(p => p.BizKvid).Contains(o.Kvid)).ToList();
//if (settlements.IsNullOrEmpty())//未找到结算信息 说明此账单没有费用
//{
// bill.Amount = 0;
// bill.AddOnlyProperties(o => o.Amount);
// bill.AmountPlan = 0;
// bill.AddOnlyProperties(o => o.AmountPlan);
// bill.AmountPayment = 0;
// bill.AddOnlyProperties(o => o.AmountPayment);
// conn.UpdateOnly(bill);
// rtns.Results.Add(bill);
// continue;
//}
//bill.Amount = settlements.Sum(o => o.Amount);
//bill.AddOnlyProperties(o => o.Amount);
//bill.AmountPlan = settlements.Sum(o => o.AmountPlan);
//bill.AddOnlyProperties(o => o.AmountPlan);
//bill.AmountPayment = settlements.Sum(o => o.AmountPayment);
//bill.AddOnlyProperties(o => o.AmountPayment);
//conn.UpdateOnly(bill);
//rtns.Results.Add(bill);
} }
return rtns; return rtns;
......
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