Files
odoo_source/addons/payment_adyen/utils.py
T
Ivan Yelizariev 8b027b69ce [FIX] payment_adyen: add missing fields to api call
It's needed to use "Automatic Risk assessment" feature in Adyen.

Technical docs:
https://docs.adyen.com/risk-management/configure-manual-risk/required-risk-field-reference

opw-3004646

X-original-commit: a8a166086b41692af49e0a9d4c44c0afdc0e05d4
Part-of: odoo/odoo#105664
2022-11-14 16:21:36 +01:00

58 lines
1.9 KiB
Python

from odoo.addons.payment import utils as payment_utils
def format_partner_name(partner_name):
""" Format the partner name to comply with the payload structure of the API request.
:param str partner_name: The name of the partner making the payment.
:return: The formatted partner name.
:rtype: dict
"""
first_name, last_name = payment_utils.split_partner_name(partner_name)
return {
'firstName': first_name,
'lastName': last_name,
}
def include_partner_addresses(tx_sudo):
""" Include the billing and delivery addresses of the related sales order to the payload of the
API request.
If no related sales order exists, the addresses are not included.
Note: `self.ensure_one()`
:param payment.transaction tx_sudo: The sudoed transaction of the payment.
:return: The subset of the API payload that includes the billing and delivery addresses.
:rtype: dict
"""
tx_sudo.ensure_one()
if 'sale_order_ids' in tx_sudo._fields: # The module `sale` is installed.
order = tx_sudo.sale_order_ids[:1]
if order:
return {
'billingAddress': format_partner_address(order.partner_invoice_id),
'deliveryAddress': format_partner_address(order.partner_shipping_id),
}
return {}
def format_partner_address(partner):
""" Format the partner address to comply with the payload structure of the API request.
:param res.partner partner: The partner making the payment.
:return: The formatted partner address.
:rtype: dict
"""
street_data = partner._get_street_split()
return {
'city': partner.city,
'country': partner.country_id.code or 'ZZ', # 'ZZ' if the country is not known.
'stateOrProvince': partner.state_id.code,
'postalCode': partner.zip,
'street': street_data['street_name'],
'houseNumberOrName': street_data['street_number'],
}