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>();
......
......@@ -213,6 +213,7 @@ namespace Kivii.Finances.Transforms
public DateTime EndTime { get; set; }
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { get; set; }
public bool? IsPayee { get; set; }//查收款还是付款
......@@ -224,6 +225,8 @@ namespace Kivii.Finances.Transforms
public override object OnExecution(IRequest req, IResponse res)
{
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
if (OwnerKvid != Guid.Empty) OwnerKvids.Add(OwnerKvid);
int monthDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
if (BeginTime == DateTime.MinValue) BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
......@@ -242,14 +245,14 @@ namespace Kivii.Finances.Transforms
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
sqlExpress.Where(o => o.OperateTime >= BeginTime && o.OperateTime < EndTime);
if (OwnerKvid == Guid.Empty)//没传部门信息就查全部到账的数据
if (OwnerKvids.IsNullOrEmpty())//没传部门信息就查全部到账的数据
{
sqlExpress.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.WeChat, PaymentType.Cash, PaymentType.AliPay, PaymentType.Pos, PaymentType.Bank));
}
else//指定了部门就只查部门认领的到账数据内容
{
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));
sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
}
//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);
......@@ -294,6 +297,7 @@ namespace Kivii.Finances.Transforms
public class AccountStatistic : RestfulExecution<Account>
{
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { get; set; }
public DateTime BeginTime { get; set; }
......@@ -301,6 +305,8 @@ namespace Kivii.Finances.Transforms
public override object OnExecution(IRequest req, IResponse res)
{
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
if (OwnerKvid != Guid.Empty) OwnerKvids.Add(OwnerKvid);
int monthDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
if (BeginTime == DateTime.MinValue) BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
......@@ -312,11 +318,11 @@ namespace Kivii.Finances.Transforms
var conn = KiviiContext.GetOpenedDbConnection<Account>();
var queryKvids = conn.From<Account>();
queryKvids.Where(o => o.Type == AccountType.Deposit);
if (OwnerKvid != Guid.Empty) queryKvids.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) queryKvids.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
queryKvids.Select(o => o.Kvid);
var sqlExpress = conn.From<Account>();
sqlExpress.Where(o => o.Type == AccountType.Deposit);
if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
var results = conn.Select(sqlExpress);
var rtns = new StatisticResponse<Analysis>();
if (results.IsNullOrEmpty()) return rtns;
......@@ -327,7 +333,7 @@ namespace Kivii.Finances.Transforms
queryDetails.And(o => o.CreateTime >= BeginTime && o.CreateTime < EndTime);
var allDetails = conn.Select(queryDetails);
if (OwnerKvid != Guid.Empty)
if (!OwnerKvids.IsNullOrEmpty())
{
foreach (var item in results)
{
......@@ -366,6 +372,7 @@ namespace Kivii.Finances.Transforms
public class PaymentSplitAnalysis : RestfulExecution<Payment>
{
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { get; set; }
public AnalysisType Type { get; set; } = AnalysisType.Depart;//按时间分析,否则按部门分析
......@@ -374,6 +381,8 @@ namespace Kivii.Finances.Transforms
public DateTime EndTime { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
if (OwnerKvid != Guid.Empty) OwnerKvids.Add(OwnerKvid);
int monthDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
if (BeginTime == DateTime.MinValue) BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
......@@ -390,7 +399,8 @@ namespace Kivii.Finances.Transforms
var sqlExpress = conn.From<Payment>();
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));
sqlExpress.And(o => o.OperateTime >= BeginTime && o.OperateTime < EndTime);
if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress.And(o => (Sql.In(o.PayerAccountKvid, queryAccount)));
sqlExpress.OrderBy(o => o.OwnerName);
sqlExpress.Select(o => new { o.OwnerKvid, o.OwnerName, o.Amount, o.AmountInvoice, o.AmountUsed, o.OperateTime, o.CreateTime, o.Type });
......@@ -457,6 +467,7 @@ namespace Kivii.Finances.Transforms
public class SettlementPayedAnalysis : RestfulExecution<Settlement>
{
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { get; set; }
public AnalysisType Type { get; set; } = AnalysisType.Depart;//按时间,部门,类型分析
......@@ -465,6 +476,8 @@ namespace Kivii.Finances.Transforms
public DateTime EndTime { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
if (OwnerKvid != Guid.Empty) OwnerKvids.Add(OwnerKvid);
int monthDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
if (BeginTime == DateTime.MinValue) BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
......@@ -477,7 +490,8 @@ namespace Kivii.Finances.Transforms
var sqlExpress = conn.From<Settlement>();
//sqlExpress.Where(o => o.OffsetKvid == Guid.Empty);
sqlExpress.Where(o => o.CreateTime >= BeginTime && o.CreateTime < EndTime);
if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress.OrderBy(o => o.CreateTime);
sqlExpress.Select(o => new { o.OwnerKvid, o.OwnerName, o.Type, o.AmountPlan, o.Amount, o.AmountPayment, o.OperateTime, o.CreateTime });
var results = conn.Select(sqlExpress);
......@@ -602,8 +616,11 @@ namespace Kivii.Finances.Transforms
public class PaymentUnInvoiceAnalysis : RestfulExecution<Payment>
{
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { 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<Payment>();
var queryAccount = conn.From<Account>();
queryAccount.Where(o => o.OrganizationKvid == KiviiContext.CurrentMember.OrganizationKvid && Sql.In(o.Type, AccountType.Balance, AccountType.Cash, AccountType.Pos));
......@@ -611,7 +628,8 @@ namespace Kivii.Finances.Transforms
var sqlExpress = conn.From<Payment>();
sqlExpress.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.AliPay, PaymentType.WeChat, PaymentType.Split, PaymentType.Cash, PaymentType.Pos));
if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress.And(o => o.AmountInvoice == 0 || o.AmountInvoice < o.Amount);
sqlExpress.And(o => (Sql.In(o.PayerAccountKvid, queryAccount)));
sqlExpress.Select(o => new { o.AmountInvoice, o.Amount });
......@@ -631,8 +649,11 @@ namespace Kivii.Finances.Transforms
public class PaymentUnUsedAnalysis : RestfulExecution<Payment>
{
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { 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<Payment>();
var queryAccount = conn.From<Account>();
queryAccount.Where(o => o.OrganizationKvid == KiviiContext.CurrentMember.OrganizationKvid && Sql.In(o.Type, AccountType.Balance, AccountType.Cash, AccountType.Pos));
......@@ -640,7 +661,8 @@ namespace Kivii.Finances.Transforms
var sqlExpress = conn.From<Payment>();
sqlExpress.Where(o => o.OffsetKvid == Guid.Empty && Sql.In(o.Type, PaymentType.AliPay, PaymentType.WeChat, PaymentType.Split, PaymentType.Cash, PaymentType.Pos));
if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress.And(o => o.AmountUsed == 0 || o.AmountUsed < o.Amount);
sqlExpress.And(o => (Sql.In(o.PayerAccountKvid, queryAccount)));
sqlExpress.Select(o => new { o.AmountUsed, o.Amount });
......@@ -660,13 +682,17 @@ namespace Kivii.Finances.Transforms
public class SettlementUnPayedAnalysis : RestfulExecution<Settlement>
{
public Guid OwnerKvid { get; set; }
public List<Guid> OwnerKvids { 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<Settlement>();
var sqlExpress = conn.From<Settlement>();
sqlExpress.Where(o => o.OffsetKvid == Guid.Empty);
sqlExpress.And(o => o.AmountPayment < o.Amount || o.AmountPayment == 0);
if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//if (OwnerKvid != Guid.Empty) sqlExpress.And(o => o.OwnerKvid == OwnerKvid);
sqlExpress.Select(o => new { o.AmountPayment, o.Amount });
var results = conn.Select(sqlExpress);
......@@ -685,6 +711,7 @@ namespace Kivii.Finances.Transforms
public class InvoiceAnalysis : RestfulExecution<Invoice>
{
public Guid? OwnerKvid { get; set; }
public List<Guid> OwnerKvids { get; set; }
public AnalysisType Type { get; set; } = AnalysisType.Depart;//按时间分析,否则按部门分析
......@@ -694,6 +721,8 @@ namespace Kivii.Finances.Transforms
public override object OnExecution(IRequest req, IResponse res)
{
if (OwnerKvids.IsNullOrEmpty()) OwnerKvids = new List<Guid>();
if (OwnerKvid != null) OwnerKvids.Add(OwnerKvid.Value);
int monthDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
if (BeginTime == DateTime.MinValue) BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
if (EndTime == DateTime.MinValue) EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, monthDay);
......@@ -706,7 +735,8 @@ namespace Kivii.Finances.Transforms
var sqlExpress = conn.From<Invoice>();
sqlExpress.Where(o => o.RootKvid == o.Kvid && o.Type != "Relation");
sqlExpress.And(o => (o.OperateTime >= BeginTime && o.OperateTime < EndTime));
if (OwnerKvid != null) sqlExpress.And(o => o.OwnerKvid == OwnerKvid.Value);
if (!OwnerKvids.IsNullOrEmpty()) sqlExpress.And(o => Sql.In(o.OwnerKvid, OwnerKvids));
//if (OwnerKvid != null) sqlExpress.And(o => o.OwnerKvid == OwnerKvid.Value);
sqlExpress.OrderBy(o => o.OwnerName);
sqlExpress.Select(o => new { o.OwnerKvid, o.OwnerName, o.OffsetKvid, o.Amount, o.AmountPayment, o.AmountUsed, o.OperateTime, o.CreateTime, o.Type });
var results = conn.Select(sqlExpress);
......
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