Commit 864227ae by 陶然

优化

parent 6d1a150c
......@@ -344,7 +344,7 @@ namespace Kivii.Finances
/// <param name="ownerKvid"></param>
/// <param name="ownerName"></param>
/// <returns></returns>
public static Payment BizSplit(this Payment payment, decimal amountSplit, Guid? ownerKvid = null, string ownerName = null, IDbConnection conn = null)
public static Payment BizSplit(this Payment payment, decimal amountSplit, string remark = null, Guid? ownerKvid = null, string ownerName = null, IDbConnection conn = null)
{
payment.ThrowIfNull($"传入payment参数为空");
if (payment.Type != PaymentType.Bank) throw new Exception("非银行到账不可以认领!");
......@@ -395,7 +395,7 @@ namespace Kivii.Finances
splitPayment.AmountUsed = 0;
splitPayment.AmountInvoice = amountInvoice;// payment.AmountInvoice > amountSplit ? amountSplit : payment.AmountInvoice;
splitPayment.Summary = string.Empty;
splitPayment.Remark = string.Empty;
splitPayment.Remark = remark;
splitPayment.OperateTime = payment.OperateTime;
splitPayment.OperatorName = KiviiContext.CurrentMember.FullName;
splitPayment.OperatorKvid = KiviiContext.CurrentMember.Kvid;
......@@ -414,7 +414,7 @@ namespace Kivii.Finances
/// <param name="ownerKvid"></param>
/// <param name="ownerName"></param>
/// <returns></returns>
public static Payment UnBizSplit(this Payment payment, decimal amountSplit, PaymentType paymentType, IDbConnection conn = null)
public static Payment UnBizSplit(this Payment payment, decimal amountSplit, PaymentType paymentType, string remark = null, IDbConnection conn = null)
{
payment.ThrowIfNull($"传入payment参数为空");
if (payment.Type != PaymentType.Bank) throw new Exception("非银行到账不可以操作!");
......@@ -466,7 +466,7 @@ namespace Kivii.Finances
splitPayment.AmountUsed = 0;
splitPayment.AmountInvoice = amountInvoice;
splitPayment.Summary = string.Empty;
splitPayment.Remark = string.Empty;
splitPayment.Remark = remark;
splitPayment.OperateTime = payment.OperateTime;
splitPayment.OperatorName = KiviiContext.CurrentMember.FullName;
splitPayment.OperatorKvid = KiviiContext.CurrentMember.Kvid;
......
......@@ -110,7 +110,10 @@ namespace Kivii.Finances.Transforms
var request = new RestfulQuery<Account>();
request = request.PopulateWith(this);
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
sqlExpress.Where(o => o.Type != AccountType.Balance && Sql.In(o.OwnerKvid, KiviiContext.CurrentMember.OrganizationKvid, KiviiContext.CurrentMember.DepartmentKvid, KiviiContext.CurrentMember.Kvid));
var ownerKvids = KiviiContext.CurrentMember.DepartmentKvids.ToList();
ownerKvids.Add(KiviiContext.CurrentMember.OrganizationKvid);
ownerKvids.Add(KiviiContext.CurrentMember.Kvid);
sqlExpress.Where(o => o.Type != AccountType.Balance && Sql.In(o.OwnerKvid, ownerKvids));
var rtns = autoQuery.Execute(Request, conn, request, sqlExpress);
return rtns;
}
......
......@@ -518,14 +518,17 @@ namespace Kivii.Finances.Transforms
/// </summary>
public Guid OperatorKvid { get; set; }
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { get; set; }
public Guid OrganizationKvid { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
if (OwnerKvid != Guid.Empty) OwnerKvids.Add(OwnerKvid);
var conn = KiviiContext.GetOpenedDbConnection<InvoiceApply>();
var query = conn.From<InvoiceApply>();
query.Where(o => o.Status == (int)InvoiceApplyStatus.FinancialExecute);
if (OperatorKvid != Guid.Empty) query.And(o => o.OperatorKvid == OperatorKvid);
else if (OwnerKvid != Guid.Empty) query.And(o => o.OwnerKvid == OwnerKvid);
else if (!OwnerKvids.IsNullOrEmpty()) query.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
else if (OrganizationKvid != Guid.Empty) query.And(o => o.OrganizationKvid == OrganizationKvid);
var applys = conn.Select(query);
......
......@@ -27,8 +27,14 @@ namespace Kivii.Finances.Transforms
[ApiMember(Description = "认领类型,默认为Department,Organization,Member")]
public OwnerType OwnerType { get; set; } = OwnerType.Department;
public Guid OwnerKvid { get; set; }
public string OwnerName { get; set; }
public Guid Kvid { get; set; }
public string Remark { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (Kvid == Guid.Empty) throw new Exception("请选择要认领的收款!");
......@@ -63,7 +69,11 @@ namespace Kivii.Finances.Transforms
break;
}
}
if (OwnerKvid != Guid.Empty)
{
ownerKvid = OwnerKvid;
ownerName = OwnerName;
}
Payment bank = null;
Payment split = null;
EntityLog<Payment> log = null;
......@@ -77,7 +87,7 @@ namespace Kivii.Finances.Transforms
if (amountSplit + Amount > payment.Amount) throw new Exception("认领金额超出范围!");
bank = payment;
split = bank.BizSplit(Amount, ownerKvid, ownerName, conn);
split = bank.BizSplit(Amount, Remark, ownerKvid, ownerName, conn);
#region 记录日志
log = new EntityLog<Payment>();
......@@ -98,6 +108,8 @@ namespace Kivii.Finances.Transforms
split.AddOnlyProperties(o => o.OwnerKvid);
split.OwnerName = ownerName;
split.AddOnlyProperties(o => o.OwnerName);
split.Remark = Remark;
split.AddOnlyProperties(o => o.Remark);
#region 记录日志
log = new EntityLog<Payment>();
......@@ -155,7 +167,13 @@ namespace Kivii.Finances.Transforms
[ApiMember(Description = "认领类型,默认为Department,Organization,Member")]
public OwnerType OwnerType { get; set; } = OwnerType.Department;
public Guid OwnerKvid { get; set; }
public string OwnerName { get; set; }
public List<Guid> Kvids { get; set; }
public string Remark { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (Kvids.IsNullOrEmpty()) throw new Exception("请选择要认领的收款!");
......@@ -191,7 +209,11 @@ namespace Kivii.Finances.Transforms
break;
}
}
if (OwnerKvid != Guid.Empty)
{
ownerKvid = OwnerKvid;
ownerName = OwnerName;
}
var banks = new List<Payment>();
var splits = new List<Payment>();
var splitsSetOwner = new List<Payment>();
......@@ -203,7 +225,7 @@ namespace Kivii.Finances.Transforms
{
var amount = payment.Amount - payment.AmountSplited;
if (amount <= 0) continue;
var splitPayment = payment.BizSplit(amount, ownerKvid, ownerName, conn);
var splitPayment = payment.BizSplit(amount, Remark, ownerKvid, ownerName, conn);
splits.Add(splitPayment);
banks.Add(payment);
......@@ -225,6 +247,8 @@ namespace Kivii.Finances.Transforms
payment.AddOnlyProperties(o => o.OwnerKvid);
payment.OwnerName = ownerName;
payment.AddOnlyProperties(o => o.OwnerName);
payment.Remark = Remark;
payment.AddOnlyProperties(o => o.Remark);
splitsSetOwner.Add(payment);
#region 记录日志
......
......@@ -17,6 +17,7 @@ namespace Kivii.Finances.Transforms
public Guid Kvid { get; set; }
public string Remark { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (Amount <= 0) throw new Exception("金额不能为小于0!");
......@@ -33,7 +34,7 @@ namespace Kivii.Finances.Transforms
//if (payment.AmountInvoice > 0) throw new Exception("已开票,无法非业务处理!");
if (payment.AmountUsed > 0) throw new Exception("已使用金额,无法非业务处理!");
var split = payment.UnBizSplit(Amount, PaymentType.UnBiz);
var split = payment.UnBizSplit(Amount, PaymentType.UnBiz, Remark);
#region 记录日志
var log = new EntityLog<Payment>();
......@@ -75,6 +76,7 @@ namespace Kivii.Finances.Transforms
{
public List<Guid> Kvids { get; set; }
public string Remark { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (Kvids.IsNullOrEmpty()) throw new Exception("请选择要非业务收款处理的到账!");
......@@ -97,7 +99,7 @@ namespace Kivii.Finances.Transforms
{
var amount = payment.Amount - payment.AmountSplited;
if (amount <= 0) continue;
var split = payment.UnBizSplit(amount, PaymentType.UnBiz);
var split = payment.UnBizSplit(amount, PaymentType.UnBiz, Remark);
banks.Add(payment);
splits.Add(split);
......@@ -222,6 +224,7 @@ namespace Kivii.Finances.Transforms
public Guid Kvid { get; set; }
public string Remark { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (Amount <= 0) throw new Exception("金额不能为小于0!");
......@@ -238,7 +241,7 @@ namespace Kivii.Finances.Transforms
//if (payment.AmountInvoice > 0) throw new Exception("已开票,无法退款处理!");
if (payment.AmountUsed > 0) throw new Exception("已使用金额,无法退款处理!");
var split = payment.UnBizSplit(Amount, PaymentType.Refund);
var split = payment.UnBizSplit(Amount, PaymentType.Refund, Remark);
#region 记录日志
var log = new EntityLog<Payment>();
......@@ -279,6 +282,7 @@ namespace Kivii.Finances.Transforms
public class PaymentMultiRefund : RestfulExecution<Payment>
{
public List<Guid> Kvids { get; set; }
public string Remark { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
......@@ -302,7 +306,7 @@ namespace Kivii.Finances.Transforms
{
var amount = payment.Amount - payment.AmountSplited;
if (amount <= 0) continue;
var split = payment.UnBizSplit(amount, PaymentType.Refund);
var split = payment.UnBizSplit(amount, PaymentType.Refund, Remark);
banks.Add(payment);
splits.Add(split);
......
......@@ -55,7 +55,7 @@ namespace Kivii.Finances.Transforms
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
sqlExpress.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.AliPay, PaymentType.WeChat, PaymentType.Bank, PaymentType.Cash, PaymentType.Pos));
if (OwnerType == OwnerType.Organization) sqlExpress.And(o => o.OwnerKvid == KiviiContext.CurrentMember.OrganizationKvid || o.OwnerKvid == Guid.Empty);
if (OwnerType == OwnerType.Department) sqlExpress.And(o => o.OwnerKvid == KiviiContext.CurrentMember.DepartmentKvid || o.OwnerKvid == Guid.Empty);
if (OwnerType == OwnerType.Department) sqlExpress.And(o => Sql.In(o.OwnerKvid,KiviiContext.CurrentMember.DepartmentKvids) || o.OwnerKvid == Guid.Empty);
if (OwnerType == OwnerType.Member) sqlExpress.And(o => o.OwnerKvid == KiviiContext.CurrentMember.Kvid || o.OwnerKvid == Guid.Empty);
if (IsSplit != null)
{
......@@ -289,7 +289,7 @@ namespace Kivii.Finances.Transforms
request = request.PopulateWith(this);
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
if (OwnerType == OwnerType.Organization) sqlExpress.And(o => o.OwnerKvid == KiviiContext.CurrentMember.OrganizationKvid || o.OwnerKvid == Guid.Empty);
if (OwnerType == OwnerType.Department) sqlExpress.And(o => o.OwnerKvid == KiviiContext.CurrentMember.DepartmentKvid || o.OwnerKvid == Guid.Empty);
if (OwnerType == OwnerType.Department) sqlExpress.And(o => Sql.In(o.OwnerKvid, KiviiContext.CurrentMember.DepartmentKvids) || o.OwnerKvid == Guid.Empty);
if (OwnerType == OwnerType.Member) sqlExpress.And(o => o.OwnerKvid == KiviiContext.CurrentMember.Kvid || o.OwnerKvid == Guid.Empty);
if (IsBiz == null) sqlExpress.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.WeChat, PaymentType.Cash, PaymentType.AliPay, PaymentType.Pos, PaymentType.Split, PaymentType.Refund, PaymentType.UnBiz));
else if (IsBiz.Value) sqlExpress.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.WeChat, PaymentType.Cash, PaymentType.AliPay, PaymentType.Pos, PaymentType.Split));
......
......@@ -27,22 +27,26 @@ namespace Kivii.Finances.Transforms
Items.Exists(o => o.PayerName.IsNullOrEmpty()).ThrowIfTrue("付款单位不能为空!");
Items.Exists(o => o.Currency == CurrencyUnit.Unsupported).ThrowIfTrue("不支持的货币单位!");
Items.Exists(o => o.Details.IsNullOrEmpty()).ThrowIfTrue("结算明细不能为空!");
var bizKvids = Items.ConvertAll(p => p.BizKvid);
bizKvids.RemoveAll(o => o == Guid.Empty);
//var bizKvids = Items.ConvertAll(p => p.BizKvid);
//bizKvids.RemoveAll(o => o == Guid.Empty);
var bizids = Items.ConvertAll(p => p.BizId);
bizids.RemoveAll(o => o.IsNullOrEmpty());
var connF = KiviiContext.GetOpenedDbConnection<Settlement>();
if (connF.Exists<Settlement>(o => o.OffsetKvid == Guid.Empty && (Sql.In(o.BizKvid, bizKvids) || Sql.In(o.BizId, bizids)))) throw new Exception("存在重复结算的对象!");
foreach (var bizId in bizids)
{
if (connF.Exists<Settlement>(o => o.OffsetKvid == Guid.Empty && o.BizId == bizId)) throw new Exception($"{bizId}重复结算的对象!");
}
//if (connF.Exists<Settlement>(o => o.OffsetKvid == Guid.Empty && (Sql.In(o.BizKvid, bizKvids) || Sql.In(o.BizId, bizids)))) throw new Exception("存在重复结算的对象!");
var connE = KiviiContext.GetOpenedDbConnection<G>();
//如果泛型类型不是Settlement本身就需要判断
if (typeof(G) != typeof(Settlement)) connE.Exists<EntitySettlement<G>>(o => o.OffsetKvid == Guid.Empty && (Sql.In(o.BizKvid, bizKvids) || Sql.In(o.BizId, bizids))).ThrowIfTrue("存在重复结算的对象!");
var allDetails = new List<SettlementDetail>();
Items.ForEach(o => allDetails.AddRange(o.Details));
var detailBizKvids = allDetails.ConvertAll(p => p.BizKvid);
detailBizKvids.RemoveAll(o => o == Guid.Empty);
var detailBizids = allDetails.ConvertAll(p => p.BizId);
detailBizids.RemoveAll(o => o.IsNullOrEmpty());
if (connE.Exists<EntitySettlementDetail<G>>(o => o.OffsetKvid != Guid.Empty && (Sql.In(o.BizKvid, detailBizKvids) || Sql.In(o.BizId, detailBizids)))) throw new Exception("存在重复结算的明细项目!");
////如果泛型类型不是Settlement本身就需要判断
//if (typeof(G) != typeof(Settlement)) connE.Exists<EntitySettlement<G>>(o => o.OffsetKvid == Guid.Empty && Sql.In(o.BizId, bizids)).ThrowIfTrue("存在重复结算的对象!");
//var allDetails = new List<SettlementDetail>();
//Items.ForEach(o => allDetails.AddRange(o.Details));
//var detailBizKvids = allDetails.ConvertAll(p => p.BizKvid);
//detailBizKvids.RemoveAll(o => o == Guid.Empty);
//var detailBizids = allDetails.ConvertAll(p => p.BizId);
//detailBizids.RemoveAll(o => o.IsNullOrEmpty());
//if (connE.Exists<EntitySettlementDetail<G>>(o => o.OffsetKvid != Guid.Empty && (Sql.In(o.BizKvid, detailBizKvids) || Sql.In(o.BizId, detailBizids)))) throw new Exception("存在重复结算的明细项目!");
var rtns = new RestfulCreateResponse<Settlement>();
rtns.Results = new List<Settlement>();
......
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