From 1f45de7eb3f8b9a23c85f8d50469139ead492b19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tr=E1=BB=8Bnh=20=C4=90=E1=BB=A9c=20=C4=90=E1=BB=99?=
 <59251518+haumenphai@users.noreply.github.com>
Date: Wed, 29 May 2024 14:51:47 +0700
Subject: [PATCH 1/2] [OU-ADD] payment: migrate to 17.0

---
 docsource/modules160-170.rst                  |   2 +-
 .../scripts/payment/17.0.2.0/end-migration.py |   9 +
 .../payment/17.0.2.0/post-migration.py        |  31 ++
 .../17.0.2.0/upgrade_analysis_work.txt        | 338 ++++++++++++++++++
 4 files changed, 379 insertions(+), 1 deletion(-)
 create mode 100644 openupgrade_scripts/scripts/payment/17.0.2.0/end-migration.py
 create mode 100644 openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py
 create mode 100644 openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt

diff --git a/docsource/modules160-170.rst b/docsource/modules160-170.rst
index f1d925eea135..781fcae87f0e 100644
--- a/docsource/modules160-170.rst
+++ b/docsource/modules160-170.rst
@@ -592,7 +592,7 @@ Module coverage 16.0 -> 17.0
 +---------------------------------------------------+----------------------+-------------------------------------------------+
 | partner_autocomplete                              |                      |                                                 |
 +---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment                                           |                      |                                                 |
+| payment                                           |Done                  |                                                 |
 +---------------------------------------------------+----------------------+-------------------------------------------------+
 | payment_adyen                                     |                      |                                                 |
 +---------------------------------------------------+----------------------+-------------------------------------------------+
diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/end-migration.py b/openupgrade_scripts/scripts/payment/17.0.2.0/end-migration.py
new file mode 100644
index 000000000000..2d71ba2173a8
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/end-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+    activated_providers = env["payment.provider"].search([("state", "!=", "disabled")])
+    activated_providers._activate_default_pms()
diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py
new file mode 100644
index 000000000000..bbc4c2b46f65
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py
@@ -0,0 +1,31 @@
+# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo)
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+def _fill_payment_method(env):
+    PaymentToken = env["payment.token"].with_context(active_test=False)
+    PaymentTransaction = env["payment.transaction"].with_context(active_test=False)
+    PaymentMethod = env["payment.method"].with_context(active_test=False)
+
+    for payment_token in PaymentToken.search([("payment_method_id", "=", False)]):
+        payment_token.payment_method_id = (
+            PaymentMethod._get_from_code(payment_token.provider_id.code)
+            or payment_token.provider_id.payment_method_ids[:1]
+        ).id
+
+    for transaction in PaymentTransaction.search([("payment_method_id", "=", False)]):
+        transaction.payment_method_id = (
+            PaymentMethod._get_from_code(transaction.provider_id.code)
+            or transaction.provider_id.payment_method_ids[:1]
+        ).id
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+    openupgrade.load_data(env, "payment", "17.0.2.0/noupdate_changes.xml")
+    openupgrade.delete_records_safely_by_xml_id(
+        env, ["payment.payment_transaction_user_rule"]
+    )
+    _fill_payment_method(env)
diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt
new file mode 100644
index 000000000000..bd0293d555bf
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt
@@ -0,0 +1,338 @@
+---Models in module 'payment'---
+obsolete model payment.icon
+new model payment.capture.wizard [transient]
+new model payment.method
+# NOTHING TO DO
+
+---Fields in module 'payment'---
+payment      / payment.icon             / image (binary)                : DEL attachment: True
+payment      / payment.icon             / image_payment_form (binary)   : DEL attachment: True
+payment      / payment.icon             / name (char)                   : DEL
+payment      / payment.icon             / provider_ids (many2many)      : DEL relation: payment.provider
+payment      / payment.icon             / sequence (integer)            : DEL
+# NOTHING TO DO
+
+payment      / payment.method           / active (boolean)              : NEW hasdefault: default
+payment      / payment.method           / brand_ids (one2many)          : NEW relation: payment.method
+payment      / payment.method           / code (char)                   : NEW required
+payment      / payment.method           / image (binary)                : NEW required, attachment: True
+payment      / payment.method           / image_payment_form (binary)   : NEW attachment: True, isrelated: related, stored
+payment      / payment.method           / name (char)                   : NEW required
+payment      / payment.method           / primary_payment_method_id (many2one): NEW relation: payment.method
+payment      / payment.method           / provider_ids (many2many)      : NEW relation: payment.provider
+payment      / payment.method           / sequence (integer)            : NEW hasdefault: default
+payment      / payment.method           / support_express_checkout (boolean): NEW
+payment      / payment.method           / support_refund (selection)    : NEW selection_keys: ['full_only', 'partial']
+payment      / payment.method           / support_tokenization (boolean): NEW
+payment      / payment.method           / supported_country_ids (many2many): NEW relation: res.country
+payment      / payment.method           / supported_currency_ids (many2many): NEW relation: res.currency
+# NOTHING TO DO: new model
+
+payment      / payment.provider         / available_currency_ids (many2many): NEW relation: res.currency, hasdefault: compute
+# NOTHING TO DO: handel by ORM
+
+payment      / payment.provider         / display_as (char)             : DEL
+payment      / payment.provider         / fees_active (boolean)         : DEL
+payment      / payment.provider         / fees_dom_fixed (float)        : DEL
+payment      / payment.provider         / fees_dom_var (float)          : DEL
+payment      / payment.provider         / fees_int_fixed (float)        : DEL
+payment      / payment.provider         / fees_int_var (float)          : DEL
+payment      / payment.provider         / payment_icon_ids (many2many)  : DEL relation: payment.icon
+# NOTHING TO DO
+
+payment      / payment.provider         / payment_method_ids (many2many): NEW relation: payment.method
+payment      / payment.provider         / support_manual_capture (boolean): selection_keys is now '['full_only', 'partial']' ('False')
+payment      / payment.provider         / support_manual_capture (boolean): type is now 'selection' ('boolean')
+# NOTHING TO DO
+
+payment      / payment.token            / payment_method_id (many2one)  : NEW relation: payment.method, required
+# DONE: fill in post-migration
+
+payment      / payment.token            / verified (boolean)            : DEL
+payment      / payment.transaction      / fees (float)                  : DEL
+# NOTHING TO DO
+
+payment      / payment.transaction      / payment_method_id (many2one)  : NEW relation: payment.method, required
+# DONE: fill in post-migration
+
+payment      / res.company              / payment_provider_onboarding_state (selection): DEL selection_keys: ['done', 'just_done', 'not_done']
+# NOTHING TO DO
+---XML records in module 'payment'---
+NEW ir.actions.act_window: payment.action_payment_method
+DEL ir.actions.act_window: payment.action_payment_icon
+NEW ir.model.access: payment.payment_capture_wizard_user
+NEW ir.model.access: payment.payment_method_employee
+NEW ir.model.access: payment.payment_method_portal
+NEW ir.model.access: payment.payment_method_public
+NEW ir.model.access: payment.payment_method_system
+NEW ir.model.access: payment.payment_token_employee
+NEW ir.model.access: payment.payment_token_public
+DEL ir.model.access: payment.payment_icon_all
+DEL ir.model.access: payment.payment_icon_system
+DEL ir.model.access: payment.payment_token_all
+DEL ir.model.access: payment.payment_token_user
+DEL ir.model.access: payment.payment_transaction_all
+DEL ir.model.access: payment.payment_transaction_user [renamed to account_payment module]
+NEW ir.rule: payment.payment_capture_wizard_rule (noupdate)
+# NOTHING TO DO
+
+DEL ir.rule: payment.payment_transaction_user_rule (noupdate)
+# DONE: safely delete in post-migration
+
+NEW ir.ui.view: payment.company_mismatch_warning
+NEW ir.ui.view: payment.form
+NEW ir.ui.view: payment.form_icon
+NEW ir.ui.view: payment.form_logo
+NEW ir.ui.view: payment.method_form
+NEW ir.ui.view: payment.payment_capture_wizard_view_form
+NEW ir.ui.view: payment.payment_method_form
+NEW ir.ui.view: payment.payment_method_kanban
+NEW ir.ui.view: payment.payment_method_search
+NEW ir.ui.view: payment.payment_method_tree
+NEW ir.ui.view: payment.portal_my_home_payment
+NEW ir.ui.view: payment.submit_button
+NEW ir.ui.view: payment.summary_item
+NEW ir.ui.view: payment.token_form
+# NOTHING TO DO
+
+DEL ir.ui.view: payment.checkout
+DEL ir.ui.view: payment.footer
+DEL ir.ui.view: payment.icon_list
+DEL ir.ui.view: payment.manage
+DEL ir.ui.view: payment.payment_icon_form
+DEL ir.ui.view: payment.payment_icon_tree
+DEL ir.ui.view: payment.verified_token_checkmark
+NEW onboarding.onboarding.step: payment.onboarding_onboarding_step_payment_provider (noupdate)
+DEL payment.icon: payment.payment_icon_airtel_money
+DEL payment.icon: payment.payment_icon_apple_pay
+DEL payment.icon: payment.payment_icon_barter_by_flutterwave
+DEL payment.icon: payment.payment_icon_bbva_bancomer
+DEL payment.icon: payment.payment_icon_cc_american_express
+DEL payment.icon: payment.payment_icon_cc_bancontact
+DEL payment.icon: payment.payment_icon_cc_cirrus
+DEL payment.icon: payment.payment_icon_cc_codensa_easy_credit
+DEL payment.icon: payment.payment_icon_cc_diners_club_intl
+DEL payment.icon: payment.payment_icon_cc_discover
+DEL payment.icon: payment.payment_icon_cc_eps
+DEL payment.icon: payment.payment_icon_cc_giropay
+DEL payment.icon: payment.payment_icon_cc_ideal
+DEL payment.icon: payment.payment_icon_cc_jcb
+DEL payment.icon: payment.payment_icon_cc_maestro
+DEL payment.icon: payment.payment_icon_cc_mastercard
+DEL payment.icon: payment.payment_icon_cc_p24
+DEL payment.icon: payment.payment_icon_cc_rupay
+DEL payment.icon: payment.payment_icon_cc_unionpay
+DEL payment.icon: payment.payment_icon_cc_visa
+DEL payment.icon: payment.payment_icon_cc_webmoney
+DEL payment.icon: payment.payment_icon_cc_western_union
+DEL payment.icon: payment.payment_icon_citibanamex
+DEL payment.icon: payment.payment_icon_kbc
+DEL payment.icon: payment.payment_icon_mada
+DEL payment.icon: payment.payment_icon_mpesa
+DEL payment.icon: payment.payment_icon_mtn_mobile_money
+DEL payment.icon: payment.payment_icon_paypal
+DEL payment.icon: payment.payment_icon_sadad
+DEL payment.icon: payment.payment_icon_sepa
+# NOTHING TO DO
+
+NEW payment.method: payment.payment_method_7eleven (noupdate)
+NEW payment.method: payment.payment_method_ach_direct_debit (noupdate)
+NEW payment.method: payment.payment_method_acss_debit (noupdate)
+NEW payment.method: payment.payment_method_affirm (noupdate)
+NEW payment.method: payment.payment_method_afterpay (noupdate)
+NEW payment.method: payment.payment_method_afterpay_riverty (noupdate)
+NEW payment.method: payment.payment_method_akulaku (noupdate)
+NEW payment.method: payment.payment_method_alipay (noupdate)
+NEW payment.method: payment.payment_method_alipay_hk (noupdate)
+NEW payment.method: payment.payment_method_alma (noupdate)
+NEW payment.method: payment.payment_method_amazon_pay (noupdate)
+NEW payment.method: payment.payment_method_amex (noupdate)
+NEW payment.method: payment.payment_method_argencard (noupdate)
+NEW payment.method: payment.payment_method_atome (noupdate)
+NEW payment.method: payment.payment_method_axis (noupdate)
+NEW payment.method: payment.payment_method_bacs_direct_debit (noupdate)
+NEW payment.method: payment.payment_method_bancnet (noupdate)
+NEW payment.method: payment.payment_method_banco_de_bogota (noupdate)
+NEW payment.method: payment.payment_method_bancolombia (noupdate)
+NEW payment.method: payment.payment_method_bancomat_pay (noupdate)
+NEW payment.method: payment.payment_method_bancontact (noupdate)
+NEW payment.method: payment.payment_method_bangkok_bank (noupdate)
+NEW payment.method: payment.payment_method_bank_account (noupdate)
+NEW payment.method: payment.payment_method_bank_bca (noupdate)
+NEW payment.method: payment.payment_method_bank_of_ayudhya (noupdate)
+NEW payment.method: payment.payment_method_bank_permata (noupdate)
+NEW payment.method: payment.payment_method_bank_reference (noupdate)
+NEW payment.method: payment.payment_method_bank_transfer (noupdate)
+NEW payment.method: payment.payment_method_becs_direct_debit (noupdate)
+NEW payment.method: payment.payment_method_belfius (noupdate)
+NEW payment.method: payment.payment_method_benefit (noupdate)
+NEW payment.method: payment.payment_method_bharatqr (noupdate)
+NEW payment.method: payment.payment_method_billease (noupdate)
+NEW payment.method: payment.payment_method_billink (noupdate)
+NEW payment.method: payment.payment_method_bizum (noupdate)
+NEW payment.method: payment.payment_method_blik (noupdate)
+NEW payment.method: payment.payment_method_bni (noupdate)
+NEW payment.method: payment.payment_method_boleto (noupdate)
+NEW payment.method: payment.payment_method_boost (noupdate)
+NEW payment.method: payment.payment_method_bpi (noupdate)
+NEW payment.method: payment.payment_method_brankas (noupdate)
+NEW payment.method: payment.payment_method_bri (noupdate)
+NEW payment.method: payment.payment_method_bsi (noupdate)
+NEW payment.method: payment.payment_method_cabal (noupdate)
+NEW payment.method: payment.payment_method_caixa (noupdate)
+NEW payment.method: payment.payment_method_card (noupdate)
+NEW payment.method: payment.payment_method_carnet (noupdate)
+NEW payment.method: payment.payment_method_cartes_bancaires (noupdate)
+NEW payment.method: payment.payment_method_cash_app_pay (noupdate)
+NEW payment.method: payment.payment_method_cashalo (noupdate)
+NEW payment.method: payment.payment_method_cebuana (noupdate)
+NEW payment.method: payment.payment_method_cencosud (noupdate)
+NEW payment.method: payment.payment_method_cimb_niaga (noupdate)
+NEW payment.method: payment.payment_method_cirrus (noupdate)
+NEW payment.method: payment.payment_method_clearpay (noupdate)
+NEW payment.method: payment.payment_method_cmr (noupdate)
+NEW payment.method: payment.payment_method_codensa (noupdate)
+NEW payment.method: payment.payment_method_cofidis (noupdate)
+NEW payment.method: payment.payment_method_cordial (noupdate)
+NEW payment.method: payment.payment_method_cordobesa (noupdate)
+NEW payment.method: payment.payment_method_credit (noupdate)
+NEW payment.method: payment.payment_method_dana (noupdate)
+NEW payment.method: payment.payment_method_dankort (noupdate)
+NEW payment.method: payment.payment_method_davivienda (noupdate)
+NEW payment.method: payment.payment_method_diners (noupdate)
+NEW payment.method: payment.payment_method_discover (noupdate)
+NEW payment.method: payment.payment_method_dolfin (noupdate)
+NEW payment.method: payment.payment_method_duitnow (noupdate)
+NEW payment.method: payment.payment_method_elo (noupdate)
+NEW payment.method: payment.payment_method_emi (noupdate)
+NEW payment.method: payment.payment_method_enets (noupdate)
+NEW payment.method: payment.payment_method_eps (noupdate)
+NEW payment.method: payment.payment_method_floa_bank (noupdate)
+NEW payment.method: payment.payment_method_fps (noupdate)
+NEW payment.method: payment.payment_method_fpx (noupdate)
+NEW payment.method: payment.payment_method_frafinance (noupdate)
+NEW payment.method: payment.payment_method_gcash (noupdate)
+NEW payment.method: payment.payment_method_giropay (noupdate)
+NEW payment.method: payment.payment_method_gopay (noupdate)
+NEW payment.method: payment.payment_method_grabpay (noupdate)
+NEW payment.method: payment.payment_method_gsb (noupdate)
+NEW payment.method: payment.payment_method_hd (noupdate)
+NEW payment.method: payment.payment_method_hipercard (noupdate)
+NEW payment.method: payment.payment_method_hoolah (noupdate)
+NEW payment.method: payment.payment_method_humm (noupdate)
+NEW payment.method: payment.payment_method_ideal (noupdate)
+NEW payment.method: payment.payment_method_in3 (noupdate)
+NEW payment.method: payment.payment_method_jcb (noupdate)
+NEW payment.method: payment.payment_method_jeniuspay (noupdate)
+NEW payment.method: payment.payment_method_jkopay (noupdate)
+NEW payment.method: payment.payment_method_kakaopay (noupdate)
+NEW payment.method: payment.payment_method_kasikorn_bank (noupdate)
+NEW payment.method: payment.payment_method_kbc_cbc (noupdate)
+NEW payment.method: payment.payment_method_klarna (noupdate)
+NEW payment.method: payment.payment_method_klarna_pay_over_time (noupdate)
+NEW payment.method: payment.payment_method_klarna_paynow (noupdate)
+NEW payment.method: payment.payment_method_knet (noupdate)
+NEW payment.method: payment.payment_method_kredivo (noupdate)
+NEW payment.method: payment.payment_method_krungthai_bank (noupdate)
+NEW payment.method: payment.payment_method_lider (noupdate)
+NEW payment.method: payment.payment_method_linepay (noupdate)
+NEW payment.method: payment.payment_method_linkaja (noupdate)
+NEW payment.method: payment.payment_method_lydia (noupdate)
+NEW payment.method: payment.payment_method_lyfpay (noupdate)
+NEW payment.method: payment.payment_method_mada (noupdate)
+NEW payment.method: payment.payment_method_maestro (noupdate)
+NEW payment.method: payment.payment_method_magna (noupdate)
+NEW payment.method: payment.payment_method_mandiri (noupdate)
+NEW payment.method: payment.payment_method_mastercard (noupdate)
+NEW payment.method: payment.payment_method_maya (noupdate)
+NEW payment.method: payment.payment_method_maybank (noupdate)
+NEW payment.method: payment.payment_method_mbway (noupdate)
+NEW payment.method: payment.payment_method_meeza (noupdate)
+NEW payment.method: payment.payment_method_mercado_livre (noupdate)
+NEW payment.method: payment.payment_method_mobile_money (noupdate)
+NEW payment.method: payment.payment_method_mobile_pay (noupdate)
+NEW payment.method: payment.payment_method_momo (noupdate)
+NEW payment.method: payment.payment_method_mpesa (noupdate)
+NEW payment.method: payment.payment_method_multibanco (noupdate)
+NEW payment.method: payment.payment_method_mybank (noupdate)
+NEW payment.method: payment.payment_method_napas_card (noupdate)
+NEW payment.method: payment.payment_method_naps (noupdate)
+NEW payment.method: payment.payment_method_naranja (noupdate)
+NEW payment.method: payment.payment_method_nativa (noupdate)
+NEW payment.method: payment.payment_method_naver_pay (noupdate)
+NEW payment.method: payment.payment_method_netbanking (noupdate)
+NEW payment.method: payment.payment_method_oca (noupdate)
+NEW payment.method: payment.payment_method_octopus (noupdate)
+NEW payment.method: payment.payment_method_omannet (noupdate)
+NEW payment.method: payment.payment_method_online_banking_czech_republic (noupdate)
+NEW payment.method: payment.payment_method_online_banking_india (noupdate)
+NEW payment.method: payment.payment_method_online_banking_slovakia (noupdate)
+NEW payment.method: payment.payment_method_online_banking_thailand (noupdate)
+NEW payment.method: payment.payment_method_open_banking (noupdate)
+NEW payment.method: payment.payment_method_ovo (noupdate)
+NEW payment.method: payment.payment_method_p24 (noupdate)
+NEW payment.method: payment.payment_method_pace (noupdate)
+NEW payment.method: payment.payment_method_pay_easy (noupdate)
+NEW payment.method: payment.payment_method_pay_id (noupdate)
+NEW payment.method: payment.payment_method_paybright (noupdate)
+NEW payment.method: payment.payment_method_paylib (noupdate)
+NEW payment.method: payment.payment_method_payme (noupdate)
+NEW payment.method: payment.payment_method_paynow (noupdate)
+NEW payment.method: payment.payment_method_paypal (noupdate)
+NEW payment.method: payment.payment_method_paypay (noupdate)
+NEW payment.method: payment.payment_method_paysafecard (noupdate)
+NEW payment.method: payment.payment_method_paytm (noupdate)
+NEW payment.method: payment.payment_method_paytrail (noupdate)
+NEW payment.method: payment.payment_method_payu (noupdate)
+NEW payment.method: payment.payment_method_pix (noupdate)
+NEW payment.method: payment.payment_method_poli (noupdate)
+NEW payment.method: payment.payment_method_poste_pay (noupdate)
+NEW payment.method: payment.payment_method_pps (noupdate)
+NEW payment.method: payment.payment_method_presto (noupdate)
+NEW payment.method: payment.payment_method_promptpay (noupdate)
+NEW payment.method: payment.payment_method_pse (noupdate)
+NEW payment.method: payment.payment_method_qris (noupdate)
+NEW payment.method: payment.payment_method_rabbit_line_pay (noupdate)
+NEW payment.method: payment.payment_method_ratepay (noupdate)
+NEW payment.method: payment.payment_method_revolut_pay (noupdate)
+NEW payment.method: payment.payment_method_rupay (noupdate)
+NEW payment.method: payment.payment_method_samsung_pay (noupdate)
+NEW payment.method: payment.payment_method_scb (noupdate)
+NEW payment.method: payment.payment_method_sepa_direct_debit (noupdate)
+NEW payment.method: payment.payment_method_shopback (noupdate)
+NEW payment.method: payment.payment_method_shopeepay (noupdate)
+NEW payment.method: payment.payment_method_shopping (noupdate)
+NEW payment.method: payment.payment_method_sofort (noupdate)
+NEW payment.method: payment.payment_method_swish (noupdate)
+NEW payment.method: payment.payment_method_tarjeta_mercadopago (noupdate)
+NEW payment.method: payment.payment_method_techcom (noupdate)
+NEW payment.method: payment.payment_method_tendopay (noupdate)
+NEW payment.method: payment.payment_method_tenpay (noupdate)
+NEW payment.method: payment.payment_method_tienphong (noupdate)
+NEW payment.method: payment.payment_method_tinka (noupdate)
+NEW payment.method: payment.payment_method_tmb (noupdate)
+NEW payment.method: payment.payment_method_toss_pay (noupdate)
+NEW payment.method: payment.payment_method_touch_n_go (noupdate)
+NEW payment.method: payment.payment_method_truemoney (noupdate)
+NEW payment.method: payment.payment_method_trustly (noupdate)
+NEW payment.method: payment.payment_method_ttb (noupdate)
+NEW payment.method: payment.payment_method_twint (noupdate)
+NEW payment.method: payment.payment_method_uatp (noupdate)
+NEW payment.method: payment.payment_method_unionpay (noupdate)
+NEW payment.method: payment.payment_method_unknown (noupdate)
+NEW payment.method: payment.payment_method_uob (noupdate)
+NEW payment.method: payment.payment_method_upi (noupdate)
+NEW payment.method: payment.payment_method_ussd (noupdate)
+NEW payment.method: payment.payment_method_venmo (noupdate)
+NEW payment.method: payment.payment_method_vietcom (noupdate)
+NEW payment.method: payment.payment_method_vipps (noupdate)
+NEW payment.method: payment.payment_method_visa (noupdate)
+NEW payment.method: payment.payment_method_vpay (noupdate)
+NEW payment.method: payment.payment_method_wallets_india (noupdate)
+NEW payment.method: payment.payment_method_walley (noupdate)
+NEW payment.method: payment.payment_method_wechat_pay (noupdate)
+NEW payment.method: payment.payment_method_welend (noupdate)
+NEW payment.method: payment.payment_method_zalopay (noupdate)
+NEW payment.method: payment.payment_method_zip (noupdate)
+NEW payment.provider: payment.payment_provider_xendit (noupdate)
+# NOTHING TO DO

From 39973e6163900a2cf3a21f2ba812d23f18b7c83e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?=
 <30716308+remi-filament@users.noreply.github.com>
Date: Fri, 11 Oct 2024 14:38:51 +0200
Subject: [PATCH 2/2] [OU-ADD] payment: continue migration script Remove
 payment.payment_method_acss_debit as does not exist anymore Move payment.icon
 to payment.method Reload payment methods and links to providers

---
 .../payment/17.0.2.0/noupdate_changes.xml     | 352 +++++++++++++++++-
 .../payment/17.0.2.0/post-migration.py        |   7 +-
 .../scripts/payment/17.0.2.0/pre-migration.py | 189 ++++++++++
 .../17.0.2.0/upgrade_analysis_work.txt        | 120 +++---
 4 files changed, 612 insertions(+), 56 deletions(-)
 create mode 100644 openupgrade_scripts/scripts/payment/17.0.2.0/pre-migration.py

diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment/17.0.2.0/noupdate_changes.xml
index 8650b62288d6..50c3a06c6af0 100644
--- a/openupgrade_scripts/scripts/payment/17.0.2.0/noupdate_changes.xml
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/noupdate_changes.xml
@@ -1,5 +1,355 @@
 <?xml version='1.0' encoding='utf-8'?>
 <odoo>
+    <record id="payment_method_bancontact" model="payment.method">
+        <field name="name">Bancontact</field>
+        <field name="code">bancontact</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/bancontact.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.be'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_eps" model="payment.method">
+        <field name="name">EPS</field>
+        <field name="code">eps</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/eps.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.at'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_giropay" model="payment.method">
+        <field name="name">Giropay</field>
+        <field name="code">giropay</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/giropay.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.de'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_ideal" model="payment.method">
+        <field name="name">iDEAL</field>
+        <field name="code">ideal</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/ideal.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.nl'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_kbc_cbc" model="payment.method">
+        <field name="name">KBC/CBC</field>
+        <field name="code">kbc_cbc</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/kbc.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.be'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_mobile_money" model="payment.method">
+        <field name="name">Mobile money</field>
+        <field name="code">mobile_money</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/mtn-mobile-money.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund"></field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.gh'),
+                         ref('base.cm'),
+                         ref('base.ci'),
+                         ref('base.ml'),
+                         ref('base.sn'),
+                         ref('base.ug'),
+                         ref('base.rw'),
+                         ref('base.zm'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.GHS'),
+                         ref('base.XAF'),
+                         ref('base.XOF'),
+                         ref('base.UGX'),
+                         ref('base.RWF'),
+                         ref('base.ZMW'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_mpesa" model="payment.method">
+        <field name="name">M-Pesa</field>
+        <field name="code">mpesa</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/mpesa.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund"></field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.ke'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.KES'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_paypal" model="payment.method">
+        <field name="name">Paypal</field>
+        <field name="code">paypal</field>
+        <field name="sequence">20</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/paypal.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+    </record>
+    <record id="payment_method_p24" model="payment.method">
+        <field name="name">P24</field>
+        <field name="code">p24</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/p24.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.pl'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                         ref('base.PLN'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_sepa_direct_debit" model="payment.method">
+        <field name="name">SEPA Direct Debit</field>
+        <field name="code">sepa_direct_debit</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/sepa.png"/>
+        <field name="support_tokenization">True</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund">partial</field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.at'),
+                         ref('base.be'),
+                         ref('base.cy'),
+                         ref('base.ee'),
+                         ref('base.fi'),
+                         ref('base.fr'),
+                         ref('base.de'),
+                         ref('base.gr'),
+                         ref('base.ie'),
+                         ref('base.it'),
+                         ref('base.lv'),
+                         ref('base.lt'),
+                         ref('base.lu'),
+                         ref('base.mt'),
+                         ref('base.nl'),
+                         ref('base.pt'),
+                         ref('base.sk'),
+                         ref('base.si'),
+                         ref('base.es'),
+                         ref('base.ch'),
+                         ref('base.cz'),
+                         ref('base.uk'),
+                         ref('base.is'),
+                         ref('base.hu'),
+                         ref('base.ro'),
+                         ref('base.se'),
+                         ref('base.hr'),
+                         ref('base.no'),
+                         ref('base.bg'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.EUR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_ussd" model="payment.method">
+        <field name="name">USSD</field>
+        <field name="code">ussd</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/flutterwave.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund"></field>
+    </record>
+    <record id="payment_method_amex" model="payment.method">
+        <field name="name">American Express</field>
+        <field name="code">amex</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/amex.png"/>
+    </record>
+    <record id="payment_method_cirrus" model="payment.method">
+        <field name="name">Cirrus</field>
+        <field name="code">cirrus</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/cirrus.png"/>
+    </record>
+    <record id="payment_method_codensa" model="payment.method">
+        <field name="name">Codensa</field>
+        <field name="code">codensa</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/codensa.png"/>
+    </record>
+    <record id="payment_method_diners" model="payment.method">
+        <field name="name">Diners Club International</field>
+        <field name="code">diners</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/diners.png"/>
+    </record>
+    <record id="payment_method_discover" model="payment.method">
+        <field name="name">Discover</field>
+        <field name="code">discover</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/discover.png"/>
+    </record>
+    <record id="payment_method_jcb" model="payment.method">
+        <field name="name">JCB</field>
+        <field name="code">jcb</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/jcb.png"/>
+    </record>
+    <record id="payment_method_mada" model="payment.method">
+        <field name="name">Mada</field>
+        <field name="code">mada</field>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/mada.png"/>
+        <field name="support_tokenization">False</field>
+        <field name="support_express_checkout">False</field>
+        <field name="support_refund"></field>
+        <field name="supported_country_ids"
+               eval="[Command.set([
+                         ref('base.sa'),
+                         ref('base.ae'),
+                     ])]"
+        />
+        <field name="supported_currency_ids"
+               eval="[Command.set([
+                         ref('base.SAR'),
+                     ])]"
+        />
+    </record>
+    <record id="payment_method_maestro" model="payment.method">
+        <field name="name">Maestro</field>
+        <field name="code">maestro</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/maestro.png"/>
+    </record>
+    <record id="payment_method_mastercard" model="payment.method">
+        <field name="name">MasterCard</field>
+        <field name="code">mastercard</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/mastercard.png"/>
+    </record>
+    <record id="payment_method_rupay" model="payment.method">
+        <field name="name">RuPay</field>
+        <field name="code">rupay</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/rupay.png"/>
+    </record>
+    <record id="payment_method_unionpay" model="payment.method">
+        <field name="name">UnionPay</field>
+        <field name="code">unionpay</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/unionpay.png"/>
+    </record>
+    <record id="payment_method_visa" model="payment.method">
+        <field name="name">VISA</field>
+        <field name="code">visa</field>
+        <field name="primary_payment_method_id" eval="ref('payment.payment_method_card')"/>
+        <field name="sequence">1000</field>
+        <field name="active">False</field>
+        <field name="image" type="base64" file="payment/static/img/visa.png"/>
+    </record>
   <record id="payment_provider_adyen" model="payment.provider">
     <field name="payment_method_ids" eval="[Command.set([                          ref('payment.payment_method_ach_direct_debit'),                          ref('payment.payment_method_affirm'),                          ref('payment.payment_method_afterpay'),                          ref('payment.payment_method_alipay'),                          ref('payment.payment_method_alipay_hk'),                          ref('payment.payment_method_alma'),                          ref('payment.payment_method_bacs_direct_debit'),                          ref('payment.payment_method_bancontact'),                          ref('payment.payment_method_benefit'),                          ref('payment.payment_method_bizum'),                          ref('payment.payment_method_blik'),                          ref('payment.payment_method_card'),                          ref('payment.payment_method_cash_app_pay'),                          ref('payment.payment_method_clearpay'),                          ref('payment.payment_method_dana'),                          ref('payment.payment_method_duitnow'),                          ref('payment.payment_method_elo'),                          ref('payment.payment_method_eps'),                          ref('payment.payment_method_fpx'),                          ref('payment.payment_method_gcash'),                          ref('payment.payment_method_giropay'),                          ref('payment.payment_method_gopay'),                          ref('payment.payment_method_hipercard'),                          ref('payment.payment_method_ideal'),                          ref('payment.payment_method_kakaopay'),                          ref('payment.payment_method_klarna'),                          ref('payment.payment_method_klarna_paynow'),                          ref('payment.payment_method_klarna_pay_over_time'),                          ref('payment.payment_method_knet'),                          ref('payment.payment_method_mbway'),                          ref('payment.payment_method_mobile_pay'),                          ref('payment.payment_method_momo'),                          ref('payment.payment_method_multibanco'),                          ref('payment.payment_method_napas_card'),                          ref('payment.payment_method_online_banking_czech_republic'),                          ref('payment.payment_method_online_banking_india'),                          ref('payment.payment_method_online_banking_slovakia'),                          ref('payment.payment_method_online_banking_thailand'),                          ref('payment.payment_method_open_banking'),                          ref('payment.payment_method_p24'),                          ref('payment.payment_method_paybright'),                          ref('payment.payment_method_paysafecard'),                          ref('payment.payment_method_paynow'),                          ref('payment.payment_method_paypal'),                          ref('payment.payment_method_paytm'),                          ref('payment.payment_method_paytrail'),                          ref('payment.payment_method_pix'),                          ref('payment.payment_method_promptpay'),                          ref('payment.payment_method_ratepay'),                          ref('payment.payment_method_samsung_pay'),                          ref('payment.payment_method_sepa_direct_debit'),                          ref('payment.payment_method_sofort'),                          ref('payment.payment_method_swish'),                          ref('payment.payment_method_touch_n_go'),                          ref('payment.payment_method_trustly'),                          ref('payment.payment_method_twint'),                          ref('payment.payment_method_upi'),                          ref('payment.payment_method_vipps'),                          ref('payment.payment_method_wallets_india'),                          ref('payment.payment_method_walley'),                          ref('payment.payment_method_wechat_pay'),                          ref('payment.payment_method_zip'),                      ])]"/>
   </record>
@@ -40,7 +390,7 @@
     <field name="payment_method_ids" eval="[Command.set([                          ref('payment.payment_method_card'),                          ref('payment.payment_method_ideal'),                          ref('payment.payment_method_sofort'),                          ref('payment.payment_method_giropay'),                          ref('payment.payment_method_kbc_cbc'),                          ref('payment.payment_method_paypal'),                          ref('payment.payment_method_samsung_pay'),                          ref('payment.payment_method_bancontact'),                          ref('payment.payment_method_lyfpay'),                          ref('payment.payment_method_lydia'),                          ref('payment.payment_method_floa_bank'),                          ref('payment.payment_method_cofidis'),                          ref('payment.payment_method_frafinance'),                      ])]"/>
   </record>
   <record id="payment_provider_stripe" model="payment.provider">
-    <field name="payment_method_ids" eval="[Command.set([                          ref('payment.payment_method_ach_direct_debit'),                          ref('payment.payment_method_acss_debit'),                          ref('payment.payment_method_affirm'),                          ref('payment.payment_method_afterpay'),                          ref('payment.payment_method_alipay'),                          ref('payment.payment_method_bacs_direct_debit'),                          ref('payment.payment_method_bancontact'),                          ref('payment.payment_method_becs_direct_debit'),                          ref('payment.payment_method_boleto'),                          ref('payment.payment_method_card'),                          ref('payment.payment_method_cash_app_pay'),                          ref('payment.payment_method_clearpay'),                          ref('payment.payment_method_eps'),                          ref('payment.payment_method_fpx'),                          ref('payment.payment_method_giropay'),                          ref('payment.payment_method_grabpay'),                          ref('payment.payment_method_ideal'),                          ref('payment.payment_method_klarna'),                          ref('payment.payment_method_mobile_pay'),                          ref('payment.payment_method_multibanco'),                          ref('payment.payment_method_p24'),                          ref('payment.payment_method_paynow'),                          ref('payment.payment_method_paypal'),                          ref('payment.payment_method_pix'),                          ref('payment.payment_method_promptpay'),                          ref('payment.payment_method_revolut_pay'),                          ref('payment.payment_method_sepa_direct_debit'),                          ref('payment.payment_method_sofort'),                          ref('payment.payment_method_upi'),                          ref('payment.payment_method_wechat_pay'),                          ref('payment.payment_method_zip'),                      ])]"/>
+    <field name="payment_method_ids" eval="[Command.set([                          ref('payment.payment_method_ach_direct_debit'),                          ref('payment.payment_method_affirm'),                          ref('payment.payment_method_afterpay'),                          ref('payment.payment_method_alipay'),                          ref('payment.payment_method_bacs_direct_debit'),                          ref('payment.payment_method_bancontact'),                          ref('payment.payment_method_becs_direct_debit'),                          ref('payment.payment_method_boleto'),                          ref('payment.payment_method_card'),                          ref('payment.payment_method_cash_app_pay'),                          ref('payment.payment_method_clearpay'),                          ref('payment.payment_method_eps'),                          ref('payment.payment_method_fpx'),                          ref('payment.payment_method_giropay'),                          ref('payment.payment_method_grabpay'),                          ref('payment.payment_method_ideal'),                          ref('payment.payment_method_klarna'),                          ref('payment.payment_method_mobile_pay'),                          ref('payment.payment_method_multibanco'),                          ref('payment.payment_method_p24'),                          ref('payment.payment_method_paynow'),                          ref('payment.payment_method_paypal'),                          ref('payment.payment_method_pix'),                          ref('payment.payment_method_promptpay'),                          ref('payment.payment_method_revolut_pay'),                          ref('payment.payment_method_sepa_direct_debit'),                          ref('payment.payment_method_sofort'),                          ref('payment.payment_method_upi'),                          ref('payment.payment_method_wechat_pay'),                          ref('payment.payment_method_zip'),                      ])]"/>
   </record>
   <record id="payment_token_company_rule" model="ir.rule">
     <field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py
index bbc4c2b46f65..385af4a4ffa9 100644
--- a/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/post-migration.py
@@ -1,4 +1,5 @@
 # Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo)
+# Copyright 2024 Le Filament (https://le-filament.com)
 # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
 
 from openupgradelib import openupgrade
@@ -9,16 +10,18 @@ def _fill_payment_method(env):
     PaymentTransaction = env["payment.transaction"].with_context(active_test=False)
     PaymentMethod = env["payment.method"].with_context(active_test=False)
 
+    unknown_payment_method = env.ref("payment.payment_method_unknown")
+
     for payment_token in PaymentToken.search([("payment_method_id", "=", False)]):
         payment_token.payment_method_id = (
             PaymentMethod._get_from_code(payment_token.provider_id.code)
-            or payment_token.provider_id.payment_method_ids[:1]
+            or unknown_payment_method
         ).id
 
     for transaction in PaymentTransaction.search([("payment_method_id", "=", False)]):
         transaction.payment_method_id = (
             PaymentMethod._get_from_code(transaction.provider_id.code)
-            or transaction.provider_id.payment_method_ids[:1]
+            or unknown_payment_method
         ).id
 
 
diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/pre-migration.py b/openupgrade_scripts/scripts/payment/17.0.2.0/pre-migration.py
new file mode 100644
index 000000000000..b51facaacc80
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/pre-migration.py
@@ -0,0 +1,189 @@
+# Copyright 2024 Le Filament (https://le-filament.com)
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from openupgradelib import openupgrade
+
+_xmlids_renames = [
+    (
+        "payment.action_payment_icon",
+        "payment.action_payment_method",
+    ),
+    (
+        "payment.payment_icon_cc_visa",
+        "payment.payment_method_visa",
+    ),
+    (
+        "payment.payment_icon_cc_mastercard",
+        "payment.payment_method_mastercard",
+    ),
+    (
+        "payment.payment_icon_cc_american_express",
+        "payment.payment_method_amex",
+    ),
+    (
+        "payment.payment_icon_cc_discover",
+        "payment.payment_method_discover",
+    ),
+    (
+        "payment.payment_icon_cc_diners_club_intl",
+        "payment.payment_method_diners",
+    ),
+    (
+        "payment.payment_icon_paypal",
+        "payment.payment_method_paypal",
+    ),
+    (
+        "payment.payment_icon_cc_rupay",
+        "payment.payment_method_rupay",
+    ),
+    # This one has been removed with https://github.com/odoo/odoo/pull/140907
+    # (
+    #     "payment.payment_icon_apple_pay",
+    #     "payment.payment_method_apple_pay",
+    # ),
+    (
+        "payment.payment_icon_cc_jcb",
+        "payment.payment_method_jcb",
+    ),
+    (
+        "payment.payment_icon_cc_maestro",
+        "payment.payment_method_maestro",
+    ),
+    (
+        "payment.payment_icon_cc_cirrus",
+        "payment.payment_method_cirrus",
+    ),
+    (
+        "payment.payment_icon_cc_unionpay",
+        "payment.payment_method_unionpay",
+    ),
+    (
+        "payment.payment_icon_cc_bancontact",
+        "payment.payment_method_bancontact",
+    ),
+    # This one has been removed with https://github.com/odoo/odoo/pull/140907
+    # (
+    #     "payment.payment_icon_cc_western_union",
+    #     "payment.payment_method_western_union",
+    # ),
+    (
+        "payment.payment_icon_sepa",
+        "payment.payment_method_sepa_direct_debit",
+    ),
+    (
+        "payment.payment_icon_cc_ideal",
+        "payment.payment_method_ideal",
+    ),
+    # This one has been removed with https://github.com/odoo/odoo/pull/120446
+    #
+    # (
+    #     "payment.payment_icon_cc_webmoney",
+    #     "payment.payment_method_webmoney",
+    # ),
+    (
+        "payment.payment_icon_cc_giropay",
+        "payment.payment_method_giropay",
+    ),
+    (
+        "payment.payment_icon_cc_eps",
+        "payment.payment_method_eps",
+    ),
+    (
+        "payment.payment_icon_cc_p24",
+        "payment.payment_method_p24",
+    ),
+    (
+        "payment.payment_icon_cc_codensa_easy_credit",
+        "payment.payment_method_codensa",
+    ),
+    (
+        "payment.payment_icon_kbc",
+        "payment.payment_method_kbc_cbc",
+    ),
+    (
+        "payment.payment_icon_mpesa",
+        "payment.payment_method_mpesa",
+    ),
+    # This one has been removed with https://github.com/odoo/odoo/pull/120446
+    # (
+    #     "payment.payment_icon_airtel_money",
+    #     "payment.payment_method_airtel_money",
+    # ),
+    (
+        "payment.payment_icon_mtn_mobile_money",
+        "payment.payment_method_mobile_money",
+    ),
+    (
+        "payment.payment_icon_barter_by_flutterwave",
+        "payment.payment_method_ussd",
+    ),
+    # This one has been removed with https://github.com/odoo/odoo/pull/120446
+    # (
+    #     "payment.payment_icon_sadad",
+    #     "payment.payment_method_sadad",
+    # ),
+    (
+        "payment.payment_icon_mada",
+        "payment.payment_method_mada",
+    ),
+    # These ones have been removed with https://github.com/odoo/odoo/pull/120446
+    # (
+    #     "payment.payment_icon_bbva_bancomer",
+    #     "payment.payment_method_bbva_bancomer",
+    # ),
+    # (
+    #     "payment.payment_icon_citibanamex",
+    #     "payment.payment_method_citibanamex",
+    # ),
+]
+
+_model_renames = [
+    ("payment.icon", "payment.method"),
+]
+
+_table_renames = [
+    ("payment_icon", "payment_method"),
+]
+
+_field_renames = [
+    (
+        "payment.provider",
+        "payment_provider",
+        "payment_icon_ids",
+        "payment_method_ids",
+    ),
+]
+
+_noupdate_xmlids = [
+    "payment_method_visa",
+    "payment_method_mastercard",
+    "payment_method_amex",
+    "payment_method_discover",
+    "payment_method_diners",
+    "payment_method_paypal",
+    "payment_method_rupay",
+    "payment_method_jcb",
+    "payment_method_maestro",
+    "payment_method_cirrus",
+    "payment_method_unionpay",
+    "payment_method_bancontact",
+    "payment_method_sepa_direct_debit",
+    "payment_method_ideal",
+    "payment_method_giropay",
+    "payment_method_eps",
+    "payment_method_p24",
+    "payment_method_codensa",
+    "payment_method_kbc_cbc",
+    "payment_method_mpesa",
+    "payment_method_mobile_money",
+    "payment_method_ussd",
+    "payment_method_mada",
+]
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+    openupgrade.rename_models(env.cr, _model_renames)
+    openupgrade.rename_tables(env.cr, _table_renames)
+    openupgrade.rename_fields(env, _field_renames)
+    openupgrade.rename_xmlids(env.cr, _xmlids_renames)
+    openupgrade.set_xml_ids_noupdate_value(env, "payment", _noupdate_xmlids, True)
diff --git a/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt
index bd0293d555bf..6fa4daa4de26 100644
--- a/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt
+++ b/openupgrade_scripts/scripts/payment/17.0.2.0/upgrade_analysis_work.txt
@@ -1,7 +1,9 @@
 ---Models in module 'payment'---
 obsolete model payment.icon
-new model payment.capture.wizard [transient]
 new model payment.method
+# DONE: pre-migration: rename model
+
+new model payment.capture.wizard [transient]
 # NOTHING TO DO
 
 ---Fields in module 'payment'---
@@ -10,26 +12,30 @@ payment      / payment.icon             / image_payment_form (binary)   : DEL at
 payment      / payment.icon             / name (char)                   : DEL
 payment      / payment.icon             / provider_ids (many2many)      : DEL relation: payment.provider
 payment      / payment.icon             / sequence (integer)            : DEL
-# NOTHING TO DO
-
-payment      / payment.method           / active (boolean)              : NEW hasdefault: default
-payment      / payment.method           / brand_ids (one2many)          : NEW relation: payment.method
-payment      / payment.method           / code (char)                   : NEW required
 payment      / payment.method           / image (binary)                : NEW required, attachment: True
 payment      / payment.method           / image_payment_form (binary)   : NEW attachment: True, isrelated: related, stored
 payment      / payment.method           / name (char)                   : NEW required
-payment      / payment.method           / primary_payment_method_id (many2one): NEW relation: payment.method
 payment      / payment.method           / provider_ids (many2many)      : NEW relation: payment.provider
 payment      / payment.method           / sequence (integer)            : NEW hasdefault: default
+# DONE: pre-migration: rename model and table
+
+payment      / payment.method           / active (boolean)              : NEW hasdefault: default
+payment      / payment.method           / brand_ids (one2many)          : NEW relation: payment.method
+payment      / payment.method           / code (char)                   : NEW required
+payment      / payment.method           / primary_payment_method_id (many2one): NEW relation: payment.method
 payment      / payment.method           / support_express_checkout (boolean): NEW
 payment      / payment.method           / support_refund (selection)    : NEW selection_keys: ['full_only', 'partial']
 payment      / payment.method           / support_tokenization (boolean): NEW
 payment      / payment.method           / supported_country_ids (many2many): NEW relation: res.country
 payment      / payment.method           / supported_currency_ids (many2many): NEW relation: res.currency
-# NOTHING TO DO: new model
+# NOTHING TO DO: new fields created by ORM
+
+payment      / payment.provider         / payment_icon_ids (many2many)  : DEL relation: payment.icon
+payment      / payment.provider         / payment_method_ids (many2many): NEW relation: payment.method
+# DONE: post-migration: recreate all payment methods on providers (from noupdate_changes.xml)
 
 payment      / payment.provider         / available_currency_ids (many2many): NEW relation: res.currency, hasdefault: compute
-# NOTHING TO DO: handel by ORM
+# NOTHING TO DO: handled by ORM
 
 payment      / payment.provider         / display_as (char)             : DEL
 payment      / payment.provider         / fees_active (boolean)         : DEL
@@ -37,29 +43,28 @@ payment      / payment.provider         / fees_dom_fixed (float)        : DEL
 payment      / payment.provider         / fees_dom_var (float)          : DEL
 payment      / payment.provider         / fees_int_fixed (float)        : DEL
 payment      / payment.provider         / fees_int_var (float)          : DEL
-payment      / payment.provider         / payment_icon_ids (many2many)  : DEL relation: payment.icon
-# NOTHING TO DO
+# NOTHING TO DO: fields / related function removed
 
-payment      / payment.provider         / payment_method_ids (many2many): NEW relation: payment.method
 payment      / payment.provider         / support_manual_capture (boolean): selection_keys is now '['full_only', 'partial']' ('False')
 payment      / payment.provider         / support_manual_capture (boolean): type is now 'selection' ('boolean')
-# NOTHING TO DO
+# NOTHING TO DO: computed non stored field
 
 payment      / payment.token            / payment_method_id (many2one)  : NEW relation: payment.method, required
-# DONE: fill in post-migration
+payment      / payment.transaction      / payment_method_id (many2one)  : NEW relation: payment.method, required
+# DONE: post-migration: filled with unknown payment_method by default if none can be found with existing data
 
 payment      / payment.token            / verified (boolean)            : DEL
 payment      / payment.transaction      / fees (float)                  : DEL
-# NOTHING TO DO
-
-payment      / payment.transaction      / payment_method_id (many2one)  : NEW relation: payment.method, required
-# DONE: fill in post-migration
+# NOTHING TO DO: fields / related function removed
 
 payment      / res.company              / payment_provider_onboarding_state (selection): DEL selection_keys: ['done', 'just_done', 'not_done']
-# NOTHING TO DO
+# NOTHING TO DO: if needed this should be done in account module
+
 ---XML records in module 'payment'---
-NEW ir.actions.act_window: payment.action_payment_method
 DEL ir.actions.act_window: payment.action_payment_icon
+NEW ir.actions.act_window: payment.action_payment_method
+# DONE: pre-migration: renamed XML-ids
+
 NEW ir.model.access: payment.payment_capture_wizard_user
 NEW ir.model.access: payment.payment_method_employee
 NEW ir.model.access: payment.payment_method_portal
@@ -73,11 +78,13 @@ DEL ir.model.access: payment.payment_token_all
 DEL ir.model.access: payment.payment_token_user
 DEL ir.model.access: payment.payment_transaction_all
 DEL ir.model.access: payment.payment_transaction_user [renamed to account_payment module]
+# NOTHING TO DO: access rules will be replaced by ORM
+
 NEW ir.rule: payment.payment_capture_wizard_rule (noupdate)
-# NOTHING TO DO
+# NOTHING TO DO: should be done in account_payment migration script
 
 DEL ir.rule: payment.payment_transaction_user_rule (noupdate)
-# DONE: safely delete in post-migration
+# DONE: post-migration: safe delete
 
 NEW ir.ui.view: payment.company_mismatch_warning
 NEW ir.ui.view: payment.form
@@ -93,7 +100,7 @@ NEW ir.ui.view: payment.portal_my_home_payment
 NEW ir.ui.view: payment.submit_button
 NEW ir.ui.view: payment.summary_item
 NEW ir.ui.view: payment.token_form
-# NOTHING TO DO
+# NOTHING TO DO: new views
 
 DEL ir.ui.view: payment.checkout
 DEL ir.ui.view: payment.footer
@@ -102,42 +109,71 @@ DEL ir.ui.view: payment.manage
 DEL ir.ui.view: payment.payment_icon_form
 DEL ir.ui.view: payment.payment_icon_tree
 DEL ir.ui.view: payment.verified_token_checkmark
+# NOTHING TO DO: removed views
+
 NEW onboarding.onboarding.step: payment.onboarding_onboarding_step_payment_provider (noupdate)
+# NOTHING TO DO: onboarding step added, to be taken into account in account module if needed
+
 DEL payment.icon: payment.payment_icon_airtel_money
 DEL payment.icon: payment.payment_icon_apple_pay
-DEL payment.icon: payment.payment_icon_barter_by_flutterwave
 DEL payment.icon: payment.payment_icon_bbva_bancomer
+DEL payment.icon: payment.payment_icon_cc_western_union
+DEL payment.icon: payment.payment_icon_cc_webmoney
+DEL payment.icon: payment.payment_icon_sadad
+DEL payment.icon: payment.payment_icon_citibanamex
+# NOTHING TO DO: payment methods removed with PR 120446 or 140907 without replacement
+
+DEL payment.icon: payment.payment_icon_barter_by_flutterwave
+NEW payment.method: payment.payment_method_ussd (noupdate)
 DEL payment.icon: payment.payment_icon_cc_american_express
+NEW payment.method: payment.payment_method_amex (noupdate)
 DEL payment.icon: payment.payment_icon_cc_bancontact
+NEW payment.method: payment.payment_method_bancontact (noupdate)
 DEL payment.icon: payment.payment_icon_cc_cirrus
+NEW payment.method: payment.payment_method_cirrus (noupdate)
 DEL payment.icon: payment.payment_icon_cc_codensa_easy_credit
+NEW payment.method: payment.payment_method_codensa (noupdate)
 DEL payment.icon: payment.payment_icon_cc_diners_club_intl
+NEW payment.method: payment.payment_method_diners (noupdate)
 DEL payment.icon: payment.payment_icon_cc_discover
+NEW payment.method: payment.payment_method_discover (noupdate)
 DEL payment.icon: payment.payment_icon_cc_eps
+NEW payment.method: payment.payment_method_eps (noupdate)
 DEL payment.icon: payment.payment_icon_cc_giropay
+NEW payment.method: payment.payment_method_giropay (noupdate)
 DEL payment.icon: payment.payment_icon_cc_ideal
+NEW payment.method: payment.payment_method_ideal (noupdate)
 DEL payment.icon: payment.payment_icon_cc_jcb
+NEW payment.method: payment.payment_method_jcb (noupdate)
 DEL payment.icon: payment.payment_icon_cc_maestro
+NEW payment.method: payment.payment_method_maestro (noupdate)
 DEL payment.icon: payment.payment_icon_cc_mastercard
+NEW payment.method: payment.payment_method_mastercard (noupdate)
 DEL payment.icon: payment.payment_icon_cc_p24
+NEW payment.method: payment.payment_method_p24 (noupdate)
 DEL payment.icon: payment.payment_icon_cc_rupay
+NEW payment.method: payment.payment_method_rupay (noupdate)
 DEL payment.icon: payment.payment_icon_cc_unionpay
+NEW payment.method: payment.payment_method_unionpay (noupdate)
 DEL payment.icon: payment.payment_icon_cc_visa
-DEL payment.icon: payment.payment_icon_cc_webmoney
-DEL payment.icon: payment.payment_icon_cc_western_union
-DEL payment.icon: payment.payment_icon_citibanamex
+NEW payment.method: payment.payment_method_visa (noupdate)
 DEL payment.icon: payment.payment_icon_kbc
+NEW payment.method: payment.payment_method_kbc_cbc (noupdate)
 DEL payment.icon: payment.payment_icon_mada
+NEW payment.method: payment.payment_method_mada (noupdate)
 DEL payment.icon: payment.payment_icon_mpesa
+NEW payment.method: payment.payment_method_mpesa (noupdate)
 DEL payment.icon: payment.payment_icon_mtn_mobile_money
+NEW payment.method: payment.payment_method_mobile_money (noupdate)
 DEL payment.icon: payment.payment_icon_paypal
-DEL payment.icon: payment.payment_icon_sadad
+NEW payment.method: payment.payment_method_paypal (noupdate)
 DEL payment.icon: payment.payment_icon_sepa
-# NOTHING TO DO
+NEW payment.method: payment.payment_method_sepa_direct_debit (noupdate)
+# DONE: pre-migration: rename payment methods and switch noupdate to True
+# DONE: post-migration: update missing data on payment methods (from noupdate_changes.xml)
 
 NEW payment.method: payment.payment_method_7eleven (noupdate)
 NEW payment.method: payment.payment_method_ach_direct_debit (noupdate)
-NEW payment.method: payment.payment_method_acss_debit (noupdate)
 NEW payment.method: payment.payment_method_affirm (noupdate)
 NEW payment.method: payment.payment_method_afterpay (noupdate)
 NEW payment.method: payment.payment_method_afterpay_riverty (noupdate)
@@ -146,7 +182,6 @@ NEW payment.method: payment.payment_method_alipay (noupdate)
 NEW payment.method: payment.payment_method_alipay_hk (noupdate)
 NEW payment.method: payment.payment_method_alma (noupdate)
 NEW payment.method: payment.payment_method_amazon_pay (noupdate)
-NEW payment.method: payment.payment_method_amex (noupdate)
 NEW payment.method: payment.payment_method_argencard (noupdate)
 NEW payment.method: payment.payment_method_atome (noupdate)
 NEW payment.method: payment.payment_method_axis (noupdate)
@@ -155,7 +190,6 @@ NEW payment.method: payment.payment_method_bancnet (noupdate)
 NEW payment.method: payment.payment_method_banco_de_bogota (noupdate)
 NEW payment.method: payment.payment_method_bancolombia (noupdate)
 NEW payment.method: payment.payment_method_bancomat_pay (noupdate)
-NEW payment.method: payment.payment_method_bancontact (noupdate)
 NEW payment.method: payment.payment_method_bangkok_bank (noupdate)
 NEW payment.method: payment.payment_method_bank_account (noupdate)
 NEW payment.method: payment.payment_method_bank_bca (noupdate)
@@ -188,10 +222,8 @@ NEW payment.method: payment.payment_method_cashalo (noupdate)
 NEW payment.method: payment.payment_method_cebuana (noupdate)
 NEW payment.method: payment.payment_method_cencosud (noupdate)
 NEW payment.method: payment.payment_method_cimb_niaga (noupdate)
-NEW payment.method: payment.payment_method_cirrus (noupdate)
 NEW payment.method: payment.payment_method_clearpay (noupdate)
 NEW payment.method: payment.payment_method_cmr (noupdate)
-NEW payment.method: payment.payment_method_codensa (noupdate)
 NEW payment.method: payment.payment_method_cofidis (noupdate)
 NEW payment.method: payment.payment_method_cordial (noupdate)
 NEW payment.method: payment.payment_method_cordobesa (noupdate)
@@ -199,20 +231,16 @@ NEW payment.method: payment.payment_method_credit (noupdate)
 NEW payment.method: payment.payment_method_dana (noupdate)
 NEW payment.method: payment.payment_method_dankort (noupdate)
 NEW payment.method: payment.payment_method_davivienda (noupdate)
-NEW payment.method: payment.payment_method_diners (noupdate)
-NEW payment.method: payment.payment_method_discover (noupdate)
 NEW payment.method: payment.payment_method_dolfin (noupdate)
 NEW payment.method: payment.payment_method_duitnow (noupdate)
 NEW payment.method: payment.payment_method_elo (noupdate)
 NEW payment.method: payment.payment_method_emi (noupdate)
 NEW payment.method: payment.payment_method_enets (noupdate)
-NEW payment.method: payment.payment_method_eps (noupdate)
 NEW payment.method: payment.payment_method_floa_bank (noupdate)
 NEW payment.method: payment.payment_method_fps (noupdate)
 NEW payment.method: payment.payment_method_fpx (noupdate)
 NEW payment.method: payment.payment_method_frafinance (noupdate)
 NEW payment.method: payment.payment_method_gcash (noupdate)
-NEW payment.method: payment.payment_method_giropay (noupdate)
 NEW payment.method: payment.payment_method_gopay (noupdate)
 NEW payment.method: payment.payment_method_grabpay (noupdate)
 NEW payment.method: payment.payment_method_gsb (noupdate)
@@ -220,14 +248,11 @@ NEW payment.method: payment.payment_method_hd (noupdate)
 NEW payment.method: payment.payment_method_hipercard (noupdate)
 NEW payment.method: payment.payment_method_hoolah (noupdate)
 NEW payment.method: payment.payment_method_humm (noupdate)
-NEW payment.method: payment.payment_method_ideal (noupdate)
 NEW payment.method: payment.payment_method_in3 (noupdate)
-NEW payment.method: payment.payment_method_jcb (noupdate)
 NEW payment.method: payment.payment_method_jeniuspay (noupdate)
 NEW payment.method: payment.payment_method_jkopay (noupdate)
 NEW payment.method: payment.payment_method_kakaopay (noupdate)
 NEW payment.method: payment.payment_method_kasikorn_bank (noupdate)
-NEW payment.method: payment.payment_method_kbc_cbc (noupdate)
 NEW payment.method: payment.payment_method_klarna (noupdate)
 NEW payment.method: payment.payment_method_klarna_pay_over_time (noupdate)
 NEW payment.method: payment.payment_method_klarna_paynow (noupdate)
@@ -239,20 +264,15 @@ NEW payment.method: payment.payment_method_linepay (noupdate)
 NEW payment.method: payment.payment_method_linkaja (noupdate)
 NEW payment.method: payment.payment_method_lydia (noupdate)
 NEW payment.method: payment.payment_method_lyfpay (noupdate)
-NEW payment.method: payment.payment_method_mada (noupdate)
-NEW payment.method: payment.payment_method_maestro (noupdate)
 NEW payment.method: payment.payment_method_magna (noupdate)
 NEW payment.method: payment.payment_method_mandiri (noupdate)
-NEW payment.method: payment.payment_method_mastercard (noupdate)
 NEW payment.method: payment.payment_method_maya (noupdate)
 NEW payment.method: payment.payment_method_maybank (noupdate)
 NEW payment.method: payment.payment_method_mbway (noupdate)
 NEW payment.method: payment.payment_method_meeza (noupdate)
 NEW payment.method: payment.payment_method_mercado_livre (noupdate)
-NEW payment.method: payment.payment_method_mobile_money (noupdate)
 NEW payment.method: payment.payment_method_mobile_pay (noupdate)
 NEW payment.method: payment.payment_method_momo (noupdate)
-NEW payment.method: payment.payment_method_mpesa (noupdate)
 NEW payment.method: payment.payment_method_multibanco (noupdate)
 NEW payment.method: payment.payment_method_mybank (noupdate)
 NEW payment.method: payment.payment_method_napas_card (noupdate)
@@ -270,7 +290,6 @@ NEW payment.method: payment.payment_method_online_banking_slovakia (noupdate)
 NEW payment.method: payment.payment_method_online_banking_thailand (noupdate)
 NEW payment.method: payment.payment_method_open_banking (noupdate)
 NEW payment.method: payment.payment_method_ovo (noupdate)
-NEW payment.method: payment.payment_method_p24 (noupdate)
 NEW payment.method: payment.payment_method_pace (noupdate)
 NEW payment.method: payment.payment_method_pay_easy (noupdate)
 NEW payment.method: payment.payment_method_pay_id (noupdate)
@@ -295,10 +314,8 @@ NEW payment.method: payment.payment_method_qris (noupdate)
 NEW payment.method: payment.payment_method_rabbit_line_pay (noupdate)
 NEW payment.method: payment.payment_method_ratepay (noupdate)
 NEW payment.method: payment.payment_method_revolut_pay (noupdate)
-NEW payment.method: payment.payment_method_rupay (noupdate)
 NEW payment.method: payment.payment_method_samsung_pay (noupdate)
 NEW payment.method: payment.payment_method_scb (noupdate)
-NEW payment.method: payment.payment_method_sepa_direct_debit (noupdate)
 NEW payment.method: payment.payment_method_shopback (noupdate)
 NEW payment.method: payment.payment_method_shopeepay (noupdate)
 NEW payment.method: payment.payment_method_shopping (noupdate)
@@ -318,15 +335,12 @@ NEW payment.method: payment.payment_method_trustly (noupdate)
 NEW payment.method: payment.payment_method_ttb (noupdate)
 NEW payment.method: payment.payment_method_twint (noupdate)
 NEW payment.method: payment.payment_method_uatp (noupdate)
-NEW payment.method: payment.payment_method_unionpay (noupdate)
 NEW payment.method: payment.payment_method_unknown (noupdate)
 NEW payment.method: payment.payment_method_uob (noupdate)
 NEW payment.method: payment.payment_method_upi (noupdate)
-NEW payment.method: payment.payment_method_ussd (noupdate)
 NEW payment.method: payment.payment_method_venmo (noupdate)
 NEW payment.method: payment.payment_method_vietcom (noupdate)
 NEW payment.method: payment.payment_method_vipps (noupdate)
-NEW payment.method: payment.payment_method_visa (noupdate)
 NEW payment.method: payment.payment_method_vpay (noupdate)
 NEW payment.method: payment.payment_method_wallets_india (noupdate)
 NEW payment.method: payment.payment_method_walley (noupdate)
@@ -335,4 +349,4 @@ NEW payment.method: payment.payment_method_welend (noupdate)
 NEW payment.method: payment.payment_method_zalopay (noupdate)
 NEW payment.method: payment.payment_method_zip (noupdate)
 NEW payment.provider: payment.payment_provider_xendit (noupdate)
-# NOTHING TO DO
+# NOTHING TO DO: new payment methods / provider
