Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Romain Courteaud
slapos.core
Commits
d9461ebe
Commit
d9461ebe
authored
Oct 18, 2023
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_accounting: test: fix create payment tests
parent
416b3627
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
53 additions
and
30 deletions
+53
-30
master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Entity_createPaymentTransaction.py
...kins/slapos_accounting/Entity_createPaymentTransaction.py
+16
-4
master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Entity_createPaymentTransaction.xml
...ins/slapos_accounting/Entity_createPaymentTransaction.xml
+1
-1
master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Entity_createPaymentTransactionAction.py
...lapos_accounting/Entity_createPaymentTransactionAction.py
+2
-3
master/bt5/slapos_accounting/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5AccountingScenario.py
..._components/test.erp5.testSlapOSERP5AccountingScenario.py
+5
-0
master/bt5/slapos_accounting/TestTemplateItem/portal_components/test.erp5.testSlapOSEntityCreatePayment.py
...tal_components/test.erp5.testSlapOSEntityCreatePayment.py
+29
-22
No files found.
master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Entity_createPaymentTransaction.py
View file @
d9461ebe
...
...
@@ -6,8 +6,11 @@ portal = context.getPortalObject()
if
not
invoice_list
:
raise
ValueError
(
'You need to provide at least one Invoice transaction'
)
payment_tag
=
'Entity_createPaymentTransaction_%s'
%
context
.
getUid
()
if
context
.
REQUEST
.
get
(
payment_tag
,
None
)
is
not
None
:
raise
ValueError
(
'This script was already called twice on the same transaction '
)
activate_kw
=
{
'tag'
:
'Entity_createPaymentTransaction_%s'
%
context
.
getUid
()
'tag'
:
payment_tag
}
# Ensure all invoice use the same arrow and resource
...
...
@@ -40,6 +43,9 @@ if not price:
if
first_invoice
.
getDestinationSection
()
!=
context
.
getRelativeUrl
():
raise
ValueError
(
'Invoice not related to the context'
)
if
start_date
is
None
:
start_date
=
DateTime
()
# create the payment transaction
payment_transaction
=
portal
.
accounting_module
.
newContent
(
portal_type
=
'Payment Transaction'
,
...
...
@@ -49,8 +55,8 @@ payment_transaction = portal.accounting_module.newContent(
source_payment
=
first_invoice
.
getSourcePayment
(),
destination_section
=
first_invoice
.
getDestinationSection
(),
destination_section_value
=
context
,
start_date
=
DateTime
()
,
#payment_mode=
,
start_date
=
start_date
,
payment_mode
=
payment_mode
,
#specialise
ledger
=
first_invoice
.
getLedger
(),
resource
=
first_invoice
.
getResource
(),
...
...
@@ -82,5 +88,11 @@ for index, line in enumerate(invoice_list):
activate_kw
=
activate_kw
,
)
payment_transaction
.
stop
()
assert
len
(
payment_transaction
.
checkConsistency
())
==
0
payment_transaction
.
start
()
# Set a flag on the request for prevent 2 calls on the same transaction
context
.
REQUEST
.
set
(
payment_tag
,
1
)
return
payment_transaction
master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Entity_createPaymentTransaction.xml
View file @
d9461ebe
...
...
@@ -50,7 +50,7 @@
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
invoice_list, destination_administration=None, REQUEST=None
</string>
</value>
<value>
<string>
invoice_list, destination_administration=None,
payment_mode=None, start_date=None,
REQUEST=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
...
...
master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Entity_createPaymentTransactionAction.py
View file @
d9461ebe
...
...
@@ -25,10 +25,9 @@ payment_transaction = context.Entity_createPaymentTransaction(
resource_uid
=
outstanding_amount
.
getPriceCurrencyUid
(),
ledger_uid
=
outstanding_amount
.
getLedgerUid
(),
group_by_node
=
False
)
)
payment_transaction
.
edit
(
),
start_date
=
date
,
payment_mode
=
payment_mode
)
payment_transaction
.
stop
()
return
payment_transaction
.
Base_redirect
()
master/bt5/slapos_accounting/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5AccountingScenario.py
View file @
d9461ebe
...
...
@@ -183,6 +183,7 @@ class TestSlapOSAccountingScenario(TestSlapOSVirtualMasterScenarioMixin):
group_by_node
=
False
)
)
payment_transaction
.
stop
()
self
.
assertEquals
(
payment_transaction
.
AccountingTransaction_getTotalCredit
(),
74.78399999999999
)
self
.
tic
()
self
.
assertTrue
(
owner_person
.
Entity_hasOutstandingAmount
())
...
...
@@ -197,6 +198,9 @@ class TestSlapOSAccountingScenario(TestSlapOSVirtualMasterScenarioMixin):
# Ensure no unexpected object has been created
self
.
assertRelatedObjectCount
(
project
,
22
)
payment_tag
=
"Entity_createPaymentTransaction_%s"
%
owner_person
.
getUid
()
owner_person
.
REQUEST
.
set
(
payment_tag
,
None
)
payment_transaction
=
owner_person
.
Entity_createPaymentTransaction
(
owner_person
.
Entity_getOutstandingAmountList
(
include_planned
=
False
,
...
...
@@ -206,6 +210,7 @@ class TestSlapOSAccountingScenario(TestSlapOSVirtualMasterScenarioMixin):
group_by_node
=
False
)
)
payment_transaction
.
stop
()
self
.
assertEquals
(
payment_transaction
.
AccountingTransaction_getTotalCredit
(),
50.4
)
self
.
tic
()
self
.
assertTrue
(
owner_person
.
Entity_hasOutstandingAmount
())
...
...
master/bt5/slapos_accounting/TestTemplateItem/portal_components/test.erp5.testSlapOSEntityCreatePayment.py
View file @
d9461ebe
...
...
@@ -33,7 +33,8 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
portal_type
=
"Bank Account"
)
currency
=
self
.
portal
.
currency_module
.
newContent
(
portal_type
=
"Currency"
portal_type
=
"Currency"
,
base_unit_quantity
=
0.1
)
if
person
is
None
:
person
=
self
.
portal
.
person_module
.
template_member
\
...
...
@@ -95,31 +96,29 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
expected_set
=
[
'causality/%s'
%
invoice
.
getRelativeUrl
(),
'destination_section/%s'
%
invoice
.
getDestinationSection
(),
'destination_project/%s'
%
invoice
.
getDestinationProject
(),
'price_currency/%s'
%
invoice
.
getPriceCurrency
(),
'resource/%s'
%
invoice
.
getResource
(),
'resource/%s'
%
invoice
.
getPriceCurrency
(),
'source_payment/%s'
%
invoice
.
getSourcePayment
(),
'payment_mode/%s'
%
self
.
payment_mode
,
'source_section/%s'
%
invoice
.
getSourceSection
(),
#'source_project/%s' % invoice.getSourceProject(),
'ledger/%s'
%
invoice
.
getLedger
(),
]
self
.
assertSameSet
(
expected_set
,
payment
.
getCategoryList
())
self
.
assertEqual
(
invoice
.
getStartDate
(),
payment
.
getStartDate
())
self
.
assertEqual
(
invoice
.
getSt
op
Date
(),
payment
.
getStopDate
())
self
.
assertEqual
(
invoice
.
getSt
art
Date
(),
payment
.
getStopDate
())
invoice_movement_list
=
invoice
.
getMovementList
()
movement_list
=
payment
.
getMovementList
()
self
.
assertEqual
(
2
,
len
(
movement_list
))
bank_list
=
[
q
for
q
in
movement_list
if
q
.
getSource
()
==
'account_module/payment_to_encash'
]
rec_list
=
[
q
for
q
in
movement_list
if
q
.
getSource
()
==
'account_module/receivable'
]
self
.
assertEqual
(
1
,
len
(
bank_list
))
self
.
assertEqual
(
1
,
len
(
rec_list
))
self
.
assertEqual
(
len
([
q
for
q
in
invoice_movement_list
if
q
.
getSource
()
==
'account_module/receivable'
]),
len
(
rec_list
))
def
assertLine
(
line
,
quantity
,
category_list
):
self
.
assert
Tru
e
(
line
.
hasStartDate
())
self
.
assert
Tru
e
(
line
.
hasStopDate
())
self
.
assert
Fals
e
(
line
.
hasStartDate
())
self
.
assert
Fals
e
(
line
.
hasStopDate
())
self
.
assertEqual
(
quantity
,
line
.
getQuantity
())
self
.
assertSameSet
(
category_list
,
line
.
getCategoryList
())
...
...
@@ -127,18 +126,25 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
assertLine
(
bank_list
[
0
],
invoice_amount
,
[
'destination/account_module/payment_to_encash'
,
'source/account_module/payment_to_encash'
])
assertLine
(
rec_list
[
0
],
-
1
*
invoice_amount
,
[
'destination/account_module/payable'
,
'source/account_module/receivable'
])
for
rec
in
rec_list
:
assertLine
(
rec
,
-
invoice_amount
/
len
(
rec_list
),
[
'destination/account_module/payable'
,
'source/account_module/receivable'
])
def
fullBuild
(
self
,
person
,
invoice_list
):
payment
=
person
.
Entity_createPaymentTransaction
(
invoice_list
)
payment
=
person
.
Entity_createPaymentTransaction
(
person
.
Entity_getOutstandingAmountList
(
include_planned
=
False
,
section_uid
=
invoice_list
[
0
].
getSourceSectionUid
(),
resource_uid
=
invoice_list
[
0
].
getPriceCurrencyUid
(),
ledger_uid
=
invoice_list
[
0
].
getLedgerUid
(),
group_by_node
=
False
),
payment_mode
=
self
.
payment_mode
,
start_date
=
invoice_list
[
0
].
getStartDate
())
self
.
assertNotEqual
(
None
,
payment
)
return
payment
def
resetPaymentTag
(
self
,
invoice
):
payment_tag
=
"
sale_invoice_transaction_create_payment_%s"
%
invoice
.
getUid
()
invoice
.
REQUEST
.
set
(
payment_tag
,
None
)
def
resetPaymentTag
(
self
,
person
):
payment_tag
=
"
Entity_createPaymentTransaction_%s"
%
person
.
getUid
()
person
.
REQUEST
.
set
(
payment_tag
,
None
)
def
_test
(
self
):
person
,
invoice
=
self
.
makeSaleInvoiceTransaction
()
...
...
@@ -157,7 +163,7 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
payment
=
self
.
fullBuild
(
person
,
[
invoice
])
self
.
assertPayment
(
payment
,
invoice
)
self
.
tic
()
self
.
resetPaymentTag
(
invoice
)
self
.
resetPaymentTag
(
person
)
# Create twice, generate 2 payments
payment
=
self
.
fullBuild
(
person
,
[
invoice
])
...
...
@@ -181,7 +187,7 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
payment
=
self
.
fullBuild
(
person
,
[
invoice
])
self
.
commit
()
# Request was over, so emulate start a new one
self
.
resetPaymentTag
(
invoice
)
self
.
resetPaymentTag
(
person
)
# Should we take into account that a payment is ongoing?
payment2
=
self
.
fullBuild
(
person
,
[
invoice
])
...
...
@@ -198,7 +204,7 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
payment
=
self
.
fullBuild
(
person
,
[
invoice
])
payment
.
cancel
()
self
.
tic
()
self
.
resetPaymentTag
(
invoice
)
self
.
resetPaymentTag
(
person
)
payment
=
self
.
fullBuild
(
person
,
[
invoice
])
self
.
tic
()
...
...
@@ -212,8 +218,9 @@ class TestSlapOSEntityCreatePaymentMixin(SlapOSTestCaseMixin):
invoice_2
.
confirm
()
invoice_2
.
stop
()
self
.
tic
()
payment_list
=
[
self
.
fullBuild
(
person
,
[
invoice_1
]),
self
.
fullBuild
(
person
,
[
invoice_2
])]
payment_list
=
[
self
.
fullBuild
(
person
,
[
invoice_1
])]
self
.
resetPaymentTag
(
person
)
payment_list
.
append
(
self
.
fullBuild
(
person
,
[
invoice_2
]))
self
.
tic
()
self
.
assertEqual
(
2
,
len
(
payment_list
))
...
...
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