Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
Kivii.Biz.Finances.V2.0
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶然
Kivii.Biz.Finances.V2.0
Commits
864227ae
Commit
864227ae
authored
Nov 10, 2022
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
6d1a150c
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
107 additions
and
39 deletions
+107
-39
PaymentExtension.cs
Src/Extensions/PaymentExtension.cs
+4
-4
RestfulAccount.cs
Src/Transforms/RestfulAccount.cs
+4
-1
RestfulInvoiceApply.Apply.cs
Src/Transforms/RestfulInvoiceApply.Apply.cs
+4
-1
RestfulPayment.Split.cs
Src/Transforms/RestfulPayment.Split.cs
+28
-4
RestfulPayment.UnBiz.Refund.cs
Src/Transforms/RestfulPayment.UnBiz.Refund.cs
+8
-4
RestfulPayment.cs
Src/Transforms/RestfulPayment.cs
+2
-2
RestfulSettlement.cs
Src/Transforms/RestfulSettlement.cs
+16
-12
RestfulStatistic.cs
Src/Transforms/RestfulStatistic.cs
+41
-11
No files found.
Src/Extensions/PaymentExtension.cs
View file @
864227ae
...
...
@@ -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
;
...
...
Src/Transforms/RestfulAccount.cs
View file @
864227ae
...
...
@@ -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
;
}
...
...
Src/Transforms/RestfulInvoiceApply.Apply.cs
View file @
864227ae
...
...
@@ -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
);
...
...
Src/Transforms/RestfulPayment.Split.cs
View file @
864227ae
...
...
@@ -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
记录日志
...
...
Src/Transforms/RestfulPayment.UnBiz.Refund.cs
View file @
864227ae
...
...
@@ -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
);
...
...
Src/Transforms/RestfulPayment.cs
View file @
864227ae
...
...
@@ -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
));
...
...
Src/Transforms/RestfulSettlement.cs
View file @
864227ae
...
...
@@ -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
>();
...
...
Src/Transforms/RestfulStatistic.cs
View file @
864227ae
...
...
@@ -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
(
OwnerKvid
s
.
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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment