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
af646526
Commit
af646526
authored
Apr 19, 2023
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化了划转功能,支持未使用未开票金额优先划出
parent
ea0e471a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
87 additions
and
26 deletions
+87
-26
PaymentExtension.cs
Src/Extensions/PaymentExtension.cs
+81
-22
AssemblyInfo.cs
Src/Properties/AssemblyInfo.cs
+2
-2
RestfulPayment.Split.cs
Src/Transforms/RestfulPayment.Split.cs
+4
-2
No files found.
Src/Extensions/PaymentExtension.cs
View file @
af646526
...
@@ -497,10 +497,14 @@ namespace Kivii.Finances
...
@@ -497,10 +497,14 @@ namespace Kivii.Finances
/// </summary>
/// </summary>
/// <param name="payment"></param>
/// <param name="payment"></param>
/// <param name="amountAssign"></param>
/// <param name="amountAssign"></param>
/// <param name="remark"></param>
/// <param name="ownerKvid"></param>
/// <param name="ownerKvid"></param>
/// <param name="ownerName"></param>
/// <param name="ownerName"></param>
/// <param name="conn"></param>
/// <param name="AmountFirst">标记划转出去的金额没有开票和没有使用优先,默认true,优先划转已经开票和使用的金额</param>
/// <returns></returns>
/// <returns></returns>
public
static
Payment
BizAssign
(
this
Payment
payment
,
decimal
amountAssign
,
string
remark
=
null
,
Guid
?
ownerKvid
=
null
,
string
ownerName
=
null
,
IDbConnection
conn
=
null
)
/// <exception cref="Exception"></exception>
public
static
Payment
BizAssign
(
this
Payment
payment
,
decimal
amountAssign
,
string
remark
=
null
,
Guid
?
ownerKvid
=
null
,
string
ownerName
=
null
,
IDbConnection
conn
=
null
,
bool
AmountFirst
=
true
)
{
{
payment
.
ThrowIfNull
(
$"传入payment参数为空"
);
payment
.
ThrowIfNull
(
$"传入payment参数为空"
);
if
(
payment
.
Type
!=
PaymentType
.
Split
)
throw
new
Exception
(
"请选择正确类型!"
);
if
(
payment
.
Type
!=
PaymentType
.
Split
)
throw
new
Exception
(
"请选择正确类型!"
);
...
@@ -511,44 +515,99 @@ namespace Kivii.Finances
...
@@ -511,44 +515,99 @@ namespace Kivii.Finances
if
(
payment
.
OwnerKvid
==
ownerKvid
)
throw
new
Exception
(
"不可划转至同部门!"
);
if
(
payment
.
OwnerKvid
==
ownerKvid
)
throw
new
Exception
(
"不可划转至同部门!"
);
decimal
amountInvoice
=
0
;
decimal
amountInvoice
=
0
;
decimal
amountUsed
=
0
;
decimal
amountUsed
=
0
;
if
(
payment
.
AmountInvoice
>
0
||
payment
.
AmountUsed
>
0
)
//如果要拆分的到账已经开过票 就要计算拆分项的开票金额
#
region
计算开票金额和使用金额
if
(
AmountFirst
)
{
{
if
(
conn
==
null
)
conn
=
KiviiContext
.
GetOpenedDbConnection
<
Payment
>();
if
(
payment
.
AmountInvoice
>
0
||
payment
.
AmountUsed
>
0
)
//如果要拆分的到账已经开过票 就要计算拆分项的开票金额
//查看已经拆分的项目分得的已经开票金额
var
existSplits
=
conn
.
Select
<
Payment
>(
o
=>
o
.
RootKvid
==
payment
.
RootKvid
&&
o
.
OffsetKvid
==
Guid
.
Empty
&&
Sql
.
In
(
o
.
Type
,
PaymentType
.
Assign
));
if
(
payment
.
AmountInvoice
<
payment
.
Amount
)
//到账的部分进行了开票 就需要计算拆分项的开票金额
{
{
if
(!
existSplits
.
IsNullOrEmpty
())
if
(
conn
==
null
)
conn
=
KiviiContext
.
GetOpenedDbConnection
<
Payment
>();
//查看已经拆分的项目分得的已经开票金额
var
existSplits
=
conn
.
Select
<
Payment
>(
o
=>
o
.
RootKvid
==
payment
.
RootKvid
&&
o
.
OffsetKvid
==
Guid
.
Empty
&&
Sql
.
In
(
o
.
Type
,
PaymentType
.
Assign
));
if
(
payment
.
AmountInvoice
<
payment
.
Amount
)
//到账的部分进行了开票 就需要计算拆分项的开票金额
{
{
//剩余的开票金额
if
(!
existSplits
.
IsNullOrEmpty
())
var
remainAmountInvoice
=
payment
.
AmountInvoice
-
existSplits
.
Sum
(
o
=>
o
.
AmountInvoice
);
{
if
(
remainAmountInvoice
>
0
)
amountInvoice
=
remainAmountInvoice
>
amountAssign
?
amountAssign
:
remainAmountInvoice
;
//剩余的开票金额
var
remainAmountInvoice
=
payment
.
AmountInvoice
-
existSplits
.
Sum
(
o
=>
o
.
AmountInvoice
);
if
(
remainAmountInvoice
>
0
)
amountInvoice
=
remainAmountInvoice
>
amountAssign
?
amountAssign
:
remainAmountInvoice
;
}
else
{
amountInvoice
=
payment
.
AmountInvoice
>
amountAssign
?
amountAssign
:
payment
.
AmountInvoice
;
}
}
}
else
else
amountInvoice
=
amountAssign
;
//否则直接记录拆分项完全开票
if
(
payment
.
AmountUsed
<
payment
.
Amount
)
{
{
amountInvoice
=
payment
.
AmountInvoice
>
amountAssign
?
amountAssign
:
payment
.
AmountInvoice
;
if
(!
existSplits
.
IsNullOrEmpty
())
{
//剩余的开票金额
var
remainAmountUsed
=
payment
.
AmountUsed
-
existSplits
.
Sum
(
o
=>
o
.
AmountUsed
);
if
(
remainAmountUsed
>
0
)
amountUsed
=
remainAmountUsed
>
amountAssign
?
amountAssign
:
remainAmountUsed
;
}
else
{
amountUsed
=
payment
.
AmountUsed
>
amountAssign
?
amountAssign
:
payment
.
AmountUsed
;
}
}
}
else
amountUsed
=
amountAssign
;
}
}
else
amountInvoice
=
amountAssign
;
//否则直接记录拆分项完全开票
}
if
(
payment
.
AmountUsed
<
payment
.
Amount
)
else
{
if
(
payment
.
AmountInvoice
>
0
||
payment
.
AmountUsed
>
0
)
//如果要拆分的到账已经开过票 就要计算拆分项的开票金额
{
{
if
(!
existSplits
.
IsNullOrEmpty
())
if
(
conn
==
null
)
conn
=
KiviiContext
.
GetOpenedDbConnection
<
Payment
>();
//查看已经拆分的项目分得的已经开票金额
var
existAssigns
=
conn
.
Select
<
Payment
>(
o
=>
o
.
RootKvid
==
payment
.
RootKvid
&&
o
.
OffsetKvid
==
Guid
.
Empty
&&
Sql
.
In
(
o
.
Type
,
PaymentType
.
Assign
));
if
(
payment
.
AmountInvoice
<
payment
.
Amount
)
//到账的部分进行了开票 就需要计算拆分项的开票金额
{
{
//剩余的开票金额
//剩余的未开票金额
var
remainAmountUsed
=
payment
.
AmountUsed
-
existSplits
.
Sum
(
o
=>
o
.
AmountUsed
);
var
paymentAmountUnInvoice
=
payment
.
Amount
-
payment
.
AmountInvoice
;
if
(
remainAmountUsed
>
0
)
amountUsed
=
remainAmountUsed
>
amountAssign
?
amountAssign
:
remainAmountUsed
;
if
(!
existAssigns
.
IsNullOrEmpty
())
{
//已经划转未开票的金额
var
existAssignsAmountUnInvoice
=
existAssigns
.
Sum
(
o
=>
o
.
Amount
)
-
existAssigns
.
Sum
(
o
=>
o
.
AmountInvoice
);
var
leftAmountUnInvoice
=
paymentAmountUnInvoice
-
existAssignsAmountUnInvoice
<
0
?
0
:
paymentAmountUnInvoice
-
existAssignsAmountUnInvoice
;
//要是剩余未开票金额小于要划转金额那么划转开票金额就是差值否则就是0元
amountInvoice
=
leftAmountUnInvoice
<
amountAssign
?
amountAssign
-
leftAmountUnInvoice
:
0
;
}
else
{
amountInvoice
=
paymentAmountUnInvoice
<
amountAssign
?
amountAssign
-
paymentAmountUnInvoice
:
0
;
}
}
}
else
else
amountInvoice
=
amountAssign
;
//否则直接记录拆分项完全开票
if
(
payment
.
AmountUsed
<
payment
.
Amount
)
{
{
amountUsed
=
payment
.
AmountUsed
>
amountAssign
?
amountAssign
:
payment
.
AmountUsed
;
//剩余的未使用金额
var
paymentAmountUnUsed
=
payment
.
Amount
-
payment
.
AmountUsed
;
if
(!
existAssigns
.
IsNullOrEmpty
())
{
//已经划转未使用的金额
var
existAssignsAmountUnUsed
=
existAssigns
.
Sum
(
o
=>
o
.
Amount
)
-
existAssigns
.
Sum
(
o
=>
o
.
AmountUsed
);
var
leftAmountUnUsed
=
paymentAmountUnUsed
-
existAssignsAmountUnUsed
<
0
?
0
:
paymentAmountUnUsed
-
existAssignsAmountUnUsed
;
//要是剩余未使用金额小于要划转金额那么划转使用金额就是差值否则就是0元
amountUsed
=
leftAmountUnUsed
<
amountAssign
?
amountAssign
-
leftAmountUnUsed
:
0
;
}
else
{
amountUsed
=
paymentAmountUnUsed
<
amountAssign
?
amountAssign
-
paymentAmountUnUsed
:
0
;
}
}
}
else
amountUsed
=
amountAssign
;
}
}
else
amountUsed
=
amountAssign
;
}
}
#
endregion
#
region
新增拆分项目
#
region
新增拆分项目
var
assignPayment
=
new
Payment
();
var
assignPayment
=
new
Payment
();
assignPayment
.
PopulateWith
(
payment
);
//先从父级中拷贝所有参数
assignPayment
.
PopulateWith
(
payment
);
//先从父级中拷贝所有参数
//赋值
//赋值
assignPayment
.
Kvid
=
Guid
.
NewGuid
();
assignPayment
.
Kvid
=
Guid
.
NewGuid
();
assignPayment
.
ParentKvid
=
payment
.
Kvid
;
assignPayment
.
ParentKvid
=
payment
.
Kvid
;
assignPayment
.
RootKvid
=
payment
.
RootKvid
;
assignPayment
.
RootKvid
=
payment
.
RootKvid
;
...
...
Src/Properties/AssemblyInfo.cs
View file @
af646526
...
@@ -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.202
2.1207
0")]
[assembly: AssemblyVersion("5.4.202
3.419
0")]
[assembly: AssemblyFileVersion("5.4.202
2.1207
0")]
[assembly: AssemblyFileVersion("5.4.202
3.419
0")]
Src/Transforms/RestfulPayment.Split.cs
View file @
af646526
...
@@ -519,6 +519,7 @@ namespace Kivii.Finances.Transforms
...
@@ -519,6 +519,7 @@ namespace Kivii.Finances.Transforms
[
ApiMember
(
Description
=
"所属类型,默认为Department,Organization,Member"
)]
[
ApiMember
(
Description
=
"所属类型,默认为Department,Organization,Member"
)]
public
OwnerType
OwnerType
{
get
;
set
;
}
=
OwnerType
.
Department
;
public
OwnerType
OwnerType
{
get
;
set
;
}
=
OwnerType
.
Department
;
public
bool
AmountFirst
{
get
;
set
;
}
=
true
;
//标记划转出去的金额没有开票和没有使用优先,默认true,优先划转已经开票和使用的金额
public
Guid
OwnerKvid
{
get
;
set
;
}
public
Guid
OwnerKvid
{
get
;
set
;
}
public
string
OwnerName
{
get
;
set
;
}
public
string
OwnerName
{
get
;
set
;
}
...
@@ -571,7 +572,7 @@ namespace Kivii.Finances.Transforms
...
@@ -571,7 +572,7 @@ namespace Kivii.Finances.Transforms
ownerName
=
OwnerName
;
ownerName
=
OwnerName
;
}
}
if
(
payment
.
OwnerKvid
==
ownerKvid
)
throw
new
Exception
(
"不可划转至同部门!"
);
if
(
payment
.
OwnerKvid
==
ownerKvid
)
throw
new
Exception
(
"不可划转至同部门!"
);
var
assign
=
payment
.
BizAssign
(
Amount
,
Remark
,
ownerKvid
,
ownerName
,
conn
);
var
assign
=
payment
.
BizAssign
(
Amount
,
Remark
,
ownerKvid
,
ownerName
,
conn
,
AmountFirst
);
var
rtns
=
new
RestfulExecutionResponse
<
Payment
>();
var
rtns
=
new
RestfulExecutionResponse
<
Payment
>();
rtns
.
Results
=
new
List
<
Payment
>();
rtns
.
Results
=
new
List
<
Payment
>();
...
@@ -608,6 +609,7 @@ namespace Kivii.Finances.Transforms
...
@@ -608,6 +609,7 @@ namespace Kivii.Finances.Transforms
public
Guid
OwnerKvid
{
get
;
set
;
}
public
Guid
OwnerKvid
{
get
;
set
;
}
public
string
OwnerName
{
get
;
set
;
}
public
string
OwnerName
{
get
;
set
;
}
public
bool
AmountFirst
{
get
;
set
;
}
=
true
;
//标记划转出去的金额没有开票和没有使用优先,默认true,优先划转已经开票和使用的金额
public
List
<
Guid
>
Kvids
{
get
;
set
;
}
public
List
<
Guid
>
Kvids
{
get
;
set
;
}
...
@@ -662,7 +664,7 @@ namespace Kivii.Finances.Transforms
...
@@ -662,7 +664,7 @@ namespace Kivii.Finances.Transforms
{
{
var
amount
=
payment
.
Amount
-
payment
.
AmountSplited
;
var
amount
=
payment
.
Amount
-
payment
.
AmountSplited
;
if
(
amount
<=
0
)
continue
;
if
(
amount
<=
0
)
continue
;
var
assignPayment
=
payment
.
BizAssign
(
amount
,
Remark
,
ownerKvid
,
ownerName
,
conn
);
var
assignPayment
=
payment
.
BizAssign
(
amount
,
Remark
,
ownerKvid
,
ownerName
,
conn
,
AmountFirst
);
assigns
.
Add
(
assignPayment
);
assigns
.
Add
(
assignPayment
);
spliteds
.
Add
(
payment
);
spliteds
.
Add
(
payment
);
...
...
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