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
Labels
Merge Requests
19
Merge Requests
19
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
slapos.core
Commits
d11bb206
Commit
d11bb206
authored
May 02, 2024
by
Rafael Monnerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_panel: Fixup to allow us to pay deposit
parent
acb86e5c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
121 additions
and
19 deletions
+121
-19
master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSCodingStyle.py
...Item/portal_components/test.erp5.testSlapOSCodingStyle.py
+1
-0
master/bt5/slapos_panel/SkinTemplateItem/portal_skins/slapos_panel/AccountingTransactionModule_getCreateExternalPaymentTransactionOnSlaposPanelHTML.py
...e_getCreateExternalPaymentTransactionOnSlaposPanelHTML.py
+7
-19
master/bt5/slapos_panel/SkinTemplateItem/portal_skins/slapos_panel/Entity_createExternalPaymentTransactionFromDepositAndRedirect.py
...createExternalPaymentTransactionFromDepositAndRedirect.py
+51
-0
master/bt5/slapos_panel/SkinTemplateItem/portal_skins/slapos_panel/Entity_createExternalPaymentTransactionFromDepositAndRedirect.xml
...reateExternalPaymentTransactionFromDepositAndRedirect.xml
+62
-0
No files found.
master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSCodingStyle.py
View file @
d11bb206
...
...
@@ -237,6 +237,7 @@ def makeTestSlapOSCodingStyleTestCase(tested_business_template):
'slapos_panel/ComputerNetwork_getNewsDict'
,
'slapos_panel/ComputerNetwork_invalidateOnSlaposPanel'
,
'slapos_panel/Document_getNewsDict'
,
'slapos_panel/Entity_createExternalPaymentTransactionFromDepositAndRedirect'
,
'slapos_panel/Event_getSafeSourceTitle'
,
'slapos_panel/InstanceNode_addSlapOSAllocationSupply'
,
'slapos_panel/InstanceTreeModule_selectRequestProject'
,
...
...
master/bt5/slapos_panel/SkinTemplateItem/portal_skins/slapos_panel/AccountingTransactionModule_getCreateExternalPaymentTransactionOnSlaposPanelHTML.py
View file @
d11bb206
...
...
@@ -16,11 +16,11 @@ entity = portal.portal_membership.getAuthenticatedMember().getUserValue()
if
entity
is
None
:
return
'<p>Nothing to pay with your account</p>'
for
currency_
uid
,
secure_service_relative_url
in
[
(
portal
.
currency_module
.
EUR
.
getUid
()
,
portal
.
Base_getPayzenServiceRelativeUrl
()),
# (portal.currency_module.CNY
.getUid()
, portal.Base_getWechatServiceRelativeUrl())
for
currency_
value
,
secure_service_relative_url
in
[
(
portal
.
currency_module
.
EUR
,
portal
.
Base_getPayzenServiceRelativeUrl
()),
# (portal.currency_module.CNY, portal.Base_getWechatServiceRelativeUrl())
]:
currency_uid
=
currency_value
.
getCurrencyUid
()
if
secure_service_relative_url
is
not
None
:
# Existing invoices
outstanding_amount_list
=
entity
.
Entity_getOutstandingAmountList
(
...
...
@@ -36,26 +36,14 @@ for currency_uid, secure_service_relative_url in [
'payment_url'
:
'%s/SaleInvoiceTransaction_createExternalPaymentTransactionFromAmountAndRedirect'
%
outstanding_amount
.
absolute_url
()
}
# Existing subscription request
deposit_price
=
0
for
sql_subscription_request
in
portal
.
portal_catalog
(
portal_type
=
"Subscription Request"
,
simulation_state
=
'submitted'
,
destination_section__uid
=
entity
.
getUid
(),
price_currency__uid
=
currency_uid
,
ledger__uid
=
ledger_uid
):
subscription_request
=
sql_subscription_request
.
getObject
()
subscription_request_total_price
=
subscription_request
.
getTotalPrice
()
if
0
<
subscription_request_total_price
:
deposit_price
+=
subscription_request_total_price
deposit_price
=
entity
.
Entity_getOutstandingDepositAmount
(
currency_uid
)
if
0
<
deposit_price
:
html_content
+=
"""
<p><a href="%(payment_url)s">%(total_price)s %(currency)s</a></p>
"""
%
{
'total_price'
:
deposit_price
,
'currency'
:
currency_
uid
,
'payment_url'
:
'%s/
SaleInvoiceTransaction_createExternalPaymentTransactionFromAmountAndRedirect'
%
entity
.
absolute_url
(
)
'currency'
:
currency_
value
.
getReference
()
,
'payment_url'
:
'%s/
Entity_createExternalPaymentTransactionFromDepositAndRedirect?currency_reference=%s'
%
(
entity
.
absolute_url
(),
currency_value
.
getReference
()
)
}
if
html_content
:
...
...
master/bt5/slapos_panel/SkinTemplateItem/portal_skins/slapos_panel/Entity_createExternalPaymentTransactionFromDepositAndRedirect.py
0 → 100644
View file @
d11bb206
portal
=
context
.
getPortalObject
()
web_site
=
context
.
getWebSiteValue
()
if
currency_reference
is
not
None
:
currency_value
=
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
"Currency"
,
reference
=
currency_reference
,
validation_state
=
"validated"
)
if
currency_value
is
None
:
raise
ValueError
(
"Unknown Currency: %s"
%
currency_reference
)
currency_uid
=
currency_value
.
getUid
()
assert
web_site
is
not
None
deposit_price
=
context
.
Entity_getOutstandingDepositAmount
(
currency_uid
)
if
0
>=
deposit_price
:
raise
ValueError
(
"Nothing to pay"
)
payment_mode
=
None
resource_uid
=
currency_uid
for
accepted_resource_uid
,
accepted_payment_mode
,
is_activated
in
[
(
portal
.
currency_module
.
EUR
.
getUid
(),
'payzen'
,
portal
.
Base_getPayzenServiceRelativeUrl
()),
# (portal.currency_module.CNY, 'wechat', portal.Base_getWechatServiceRelativeUrl())
]:
if
is_activated
and
(
resource_uid
==
accepted_resource_uid
):
payment_mode
=
accepted_payment_mode
assert
payment_mode
is
not
None
def
wrapWithShadow
(
entity
,
total_amount
,
currency_value
):
return
entity
.
Person_addDepositPayment
(
total_amount
,
currency_value
.
getRelativeUrl
(),
batch
=
1
)
payment_transaction
=
context
.
Person_restrictMethodAsShadowUser
(
shadow_document
=
context
,
callable_object
=
wrapWithShadow
,
argument_list
=
[
context
,
deposit_price
,
currency_value
])
if
(
payment_mode
==
"wechat"
):
return
payment_transaction
.
PaymentTransaction_redirectToManualWechatPayment
(
web_site
=
web_site
)
elif
(
payment_mode
==
"payzen"
):
return
payment_transaction
.
PaymentTransaction_redirectToManualPayzenPayment
(
web_site
=
web_site
)
else
:
raise
NotImplementedError
(
'not implemented'
)
master/bt5/slapos_panel/SkinTemplateItem/portal_skins/slapos_panel/Entity_createExternalPaymentTransactionFromDepositAndRedirect.xml
0 → 100644
View file @
d11bb206
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
currency_reference=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Entity_createExternalPaymentTransactionFromDepositAndRedirect
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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