diff --git a/account_statement_import_online_paypal/README.rst b/account_statement_import_online_paypal/README.rst new file mode 100644 index 000000000..e10c452e5 --- /dev/null +++ b/account_statement_import_online_paypal/README.rst @@ -0,0 +1,174 @@ +================================== +Online Bank Statements: PayPal.com +================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:521adb8885c2e05ded338567e46308d7cae6e63faa15f8e989124b5390b7d7a4 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github + :target: https://github.com/OCA/bank-statement-import/tree/17.0/account_statement_import_online_paypal + :alt: OCA/bank-statement-import +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/bank-statement-import-17-0/bank-statement-import-17-0-account_statement_import_online_paypal + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides online bank statements from +`PayPal.com `__. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +You will need a *Client ID* and *Secret* from PayPal to communicate with +the PayPal API. To obtain your PayPal API *Client ID* and *Secret*: + +1. Open `PayPal Developer `__. +2. Login with your *PayPal for Business* account (upgrade your personal + account to a Business Account, if required). +3. Go to *Apps & Credentials* and switch to *Live*. +4. Under *REST API apps*, click *Create App* to begin creating a new + application. +5. Enter a descriptive name for your app (e.g. *Odoo-Statements*) and + click *Create App*. +6. Copy the *Client ID* and *Secret* to use during provider + configuration (instructions below). +7. Under *Features*, uncheck all optional features except *Transaction + Search*. +8. Click *Save Changes*. + +To configure PayPal as an online bank statement provider, you will need +to create a Bank Account & Journal that corresponds to your *PayPal for +Business* account, and then configure the *PayPal.com* provider with the +*Client ID* and *Secret* obtained above: + +1. Go to *Invoicing > Configuration > Banks > Add a Bank Account*. +2. In the *Account Number* field, enter some descriptive text for the + account, such as the email address or *PayPal Merchant ID* of your + *PayPal for Business* account. NOTE: This *Account Number* is not + used in the authentication with PayPal's API, and is only used to + distinguish this PayPal Bank Account/Journal from others you may + have configured. +3. Fill in the other fields for the Bank Account if desired, and then + click *Create*. +4. Go to *Invoicing > Configuration > Accounting > Journals*. +5. Open and *Edit* the Journal corresponding to the PayPal bank account + (this Journal was created automatically when you created the Bank + Account above. +6. Set *Bank Feeds* to *Online (OCA)*. +7. Select *PayPal.com* as the provider in the *Online Bank Statements + (OCA)* section. +8. *Save* the Journal. +9. To configure provider-specific settings, click on the provider to + open it and click *Edit*. +10. Fill in your desired *Configuration* and *Scheduled Pull* settings. +11. Leave the *API base* field empty, and fill in the *Client ID* and + *Secret* from your PayPal Developer account. +12. Click *Save*. + +NOTE: For development and testing purposes, you can create Sandbox +credentials associated with your *PayPal for Business* account. When +configuring the provider-specific settings, enter the following in the +*API base* field: https://api.sandbox.paypal.com + +Usage +===== + +To pull historical bank statements: + +1. Go to *Invoicing > Configuration > Accounting > Journals*. +2. Open the Journal corresponding to the PayPal bank account. +3. Click the *Pull Online Bank Statement* button. +4. Configure a date interval and click *Pull*. + +Known issues / Roadmap +====================== + +- Only transactions for the previous three years are retrieved, + historical data can be imported manually, see + ``account_bank_statement_import_paypal``. See `PayPal Help Center + article `__ + for details. +- `PayPal Transaction + Info `__ + defines extra fields like ``tip_amount``, ``shipping_amount``, etc. + that could be useful to be decomposed from a single transaction. +- There's a known issue with PayPal API that on every Monday for couple + of hours after UTC midnight it returns ``INVALID_REQUEST`` + incorrectly: their servers have not inflated the data yet. PayPal + tech support confirmed this behaviour in case #06650320 (private). + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* CorporateHub + +Contributors +------------ + +- `CorporateHub `__ + + - Alexey Pelykh + +- Omar Castiñeira +- isufi kapasi +- `Ondergetekende BV `__ + + - Koert van der Veer + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-alexey-pelykh| image:: https://github.com/alexey-pelykh.png?size=40px + :target: https://github.com/alexey-pelykh + :alt: alexey-pelykh + +Current `maintainer `__: + +|maintainer-alexey-pelykh| + +This module is part of the `OCA/bank-statement-import `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_online_paypal/__init__.py b/account_statement_import_online_paypal/__init__.py new file mode 100644 index 000000000..31660d6a9 --- /dev/null +++ b/account_statement_import_online_paypal/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/account_statement_import_online_paypal/__manifest__.py b/account_statement_import_online_paypal/__manifest__.py new file mode 100644 index 000000000..f84970010 --- /dev/null +++ b/account_statement_import_online_paypal/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020-2021 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Online Bank Statements: PayPal.com", + "version": "17.0.1.0.1", + "author": "CorporateHub, Odoo Community Association (OCA)", + "maintainers": ["alexey-pelykh"], + "website": "https://github.com/OCA/bank-statement-import", + "license": "AGPL-3", + "category": "Accounting", + "summary": "Online bank statements for PayPal.com", + "depends": ["account_statement_import_online"], + "data": ["views/online_bank_statement_provider.xml"], + "installable": True, +} diff --git a/account_statement_import_online_paypal/i18n/account_statement_import_online_paypal.pot b/account_statement_import_online_paypal/i18n/account_statement_import_online_paypal.pot new file mode 100644 index 000000000..7ba8a4684 --- /dev/null +++ b/account_statement_import_online_paypal/i18n/account_statement_import_online_paypal.pot @@ -0,0 +1,1133 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_online_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "ACH funding for funds recovery from account balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "API base" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "ATM withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account hold for ACH deposit" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account hold for open authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account receivable for shipping" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Auto-sweep from account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "AutoSweep" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "BML credit, transfer from BML" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "BML withdrawal, transfer to BML" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Balance manager account bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Bill pay transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Blocked payments" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Bonus for first ACH use" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Buyer credit payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Buyer credit payment withdrawal, transfer to BML" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Cancellation of hold for dispute resolution" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Charge-off adjustment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback cancellation" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback processing fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback re-presentment rejection" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Check withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "Client ID" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Coupon redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card cash back bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card deposit for negative PayPal account balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card security charge refund" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Currency conversion required to cover negative balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Debit card cash back bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Deferred disbursement, funds collected for disbursement" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Delayed disbursement, funds disbursed" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Direct payment API" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Display only transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Donation payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Electronic funds transfer (EFT)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Failed to acquire token using Client ID and Secret!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Failed to resolve transaction %(first_transaction_id)s " +"(%(first_transaction_date)s)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Failed to resolve transaction %(last_transaction_id)s " +"(%(last_transaction_date)s)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee for %s" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee refund" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Foreign bank withdrawal fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds available" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds not yet available" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds payable: PayPal-provided funds that must be paid back" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds receivable: PayPal-provided funds that are being paid back" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General PayPal debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General PayPal-to-PayPal payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General account adjustment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General adjustment without business-related event" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General buyer credit payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General credit card deposit" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General credit card withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General currency conversion" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General dividend" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General funding of PayPal account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General hold release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General incentive or certificate redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General intra-account transfer" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General non-payment fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General temporary hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General withdrawal from PayPal account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General withdrawal to non-bank institution" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument-funded payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet reversals (buyer side)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet reversals (seller side)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate expiration fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate payment, purchase of gift certificate" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate purchase" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Hidden virtual PayPal debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Hold for dispute investigation" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Incentive adjustment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Instant payment review (IPR) reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "International credit card withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Invalid token type!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Invoice %s" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MAM reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Mass payment batch fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay refund transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay reversal transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Merchant referral account bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Mobile payment, made through a mobile phone" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "No authentication specified!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Non-reference credit payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Offers used as funding source" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model:ir.model,name:account_statement_import_online_paypal.model_online_bank_statement_provider +msgid "Online Bank Statement Provider" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Other" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Partner fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal App features are configured incorrectly!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal Checkout APIs" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal Here payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"PayPal allows retrieving transactions only up to 3 years in the past. Please" +" import older transactions manually. See " +"https://www.paypal.com/us/smarthelp/article/why-can't-i-access-transaction-" +"history-greater-than-3-years-ts2241" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal balance manager funding of PayPal account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal buyer credit payment funding" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal buyer warranty bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit card cash advance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit card withdrawal to ATM" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"PayPal protection bonus, payout for PayPal buyer protection, payout for full" +" protection with PayPal buyer credit." +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment hold release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment refund, initiated by merchant" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment reversal, initiated by PayPal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment review hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment review release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Points incentive redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Postage payment to carrier" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Pre-approved payment (BillUser API)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reauthorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Rebate or cash back reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Rebate payments" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Receivables financing - Applicable only in Brazil" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reimbursement of chargeback" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reserve hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reserve release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of ACH deposit" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of ACH withdrawal transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of general account hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of points usage" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "Secret" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Settlement consolidation" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Store-to-store transfers" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Subscription payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Tax hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Tax withholding to IRS" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Temporary hold on available balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party auction payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party payout" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party recoupment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer of funds from payable" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer to and from a credit-card-funded restricted balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer to external GL entity" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Unknown authentication specified!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Unknown error" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "User-initiated currency conversion" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Virtual PayPal debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Virtual terminal payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Void of authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Warranty fee for warranty purchase" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Website payments standard payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Website payments. Pro account monthly fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Withdrawal to Hyperwallet" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Withdrawals initiated by user manually. Not related to automated scheduled " +"withdrawals" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "WorldLink check withdrawal fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "WorldLink withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "eBay auction payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "eBay loyalty incentive" +msgstr "" diff --git a/account_statement_import_online_paypal/i18n/es.po b/account_statement_import_online_paypal/i18n/es.po new file mode 100644 index 000000000..751e50e5a --- /dev/null +++ b/account_statement_import_online_paypal/i18n/es.po @@ -0,0 +1,1151 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_online_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-28 11:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "ACH funding for funds recovery from account balance" +msgstr "Financiación ACH para la recuperación de fondos del saldo de la cuenta" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "API base" +msgstr "Base API" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "ATM withdrawal" +msgstr "Retirada en cajero automático" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account hold for ACH deposit" +msgstr "Cuenta retenida para ingreso ACH" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account hold for open authorization" +msgstr "Cuenta retenida para autorización abierta" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account receivable for shipping" +msgstr "Cuentas a cobrar por envíos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Auto-sweep from account" +msgstr "Barrido automático de la cuenta" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "AutoSweep" +msgstr "Barrido automático" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "BML credit, transfer from BML" +msgstr "Crédito BML, transferencia desde BML" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "BML withdrawal, transfer to BML" +msgstr "Retirada de BML, transferencia a BML" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Balance manager account bonus" +msgstr "Bono de cuenta de administrador de saldo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Bill pay transaction" +msgstr "Transacción de pago de facturas" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Blocked payments" +msgstr "Pagos bloqueados" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Bonus for first ACH use" +msgstr "Bonificación por el primer uso de ACH" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Buyer credit payment" +msgstr "Pago a crédito del comprador" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Buyer credit payment withdrawal, transfer to BML" +msgstr "Retirada del pago a crédito del comprador, transferencia a BML" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Cancellation of hold for dispute resolution" +msgstr "Cancelación de suspensión para resolución de disputas" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Charge-off adjustment" +msgstr "Ajuste de la liquidación" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback" +msgstr "Contracargo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback cancellation" +msgstr "Cancelación de contracargo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback processing fee" +msgstr "Tasa de tramitación de devoluciones" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback re-presentment rejection" +msgstr "Rechazo de devolución de cargo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback reversal" +msgstr "Anulación de devoluciones de cargo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Check withdrawal" +msgstr "Retirada de cheques" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "Client ID" +msgstr "ID del cliente" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Coupon redemption" +msgstr "Canjeo de cupones" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card cash back bonus" +msgstr "Bonificación por devolución de efectivo con tarjeta de crédito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card deposit for negative PayPal account balance" +msgstr "Depósito con tarjeta de crédito para saldo negativo de cuenta PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card security charge refund" +msgstr "Devolución de los gastos de seguridad de la tarjeta de crédito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Currency conversion required to cover negative balance" +msgstr "Conversión de divisas necesaria para cubrir el saldo negativo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Debit card cash back bonus" +msgstr "Bonificación por devolución en efectivo con tarjeta de débito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Deferred disbursement, funds collected for disbursement" +msgstr "Desembolso diferido, fondos recaudados para desembolso" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Delayed disbursement, funds disbursed" +msgstr "Retraso en el desembolso, fondos desembolsados" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Direct payment API" +msgstr "API de pago directo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Display only transaction" +msgstr "Visualizar sólo transacción" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Donation payment" +msgstr "Pago de la donación" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Electronic funds transfer (EFT)" +msgstr "Transferencia electrónica de fondos (TEF)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Failed to acquire token using Client ID and Secret!" +msgstr "" +"¡No se ha podido adquirir el autentificador con el ID de cliente y el " +"secreto!" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Failed to resolve transaction %(first_transaction_id)s " +"(%(first_transaction_date)s)" +msgstr "" +"Error al resolver la transacción %(first_transaction_id)s " +"(%(first_transaction_date)s)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Failed to resolve transaction %(last_transaction_id)s " +"(%(last_transaction_date)s)" +msgstr "" +"No se ha podido resolver la transacción %(last_transaction_id)s " +"(%(last_transaction_date)s)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee for %s" +msgstr "Tasa para %s" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee refund" +msgstr "Reembolso de la tasa" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee reversal" +msgstr "Anulación de la tasa" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Foreign bank withdrawal fee" +msgstr "Comisión por retirada de fondos en bancos extranjeros" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds available" +msgstr "Fondos disponibles" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds not yet available" +msgstr "Fondos aún no disponibles" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds payable: PayPal-provided funds that must be paid back" +msgstr "Fondos a pagar: Fondos proporcionados por PayPal que deben devolverse" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds receivable: PayPal-provided funds that are being paid back" +msgstr "" +"Fondos a cobrar: Fondos proporcionados por PayPal que se están devolviendo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General PayPal debit card transaction" +msgstr "Transacción general con tarjeta de débito de PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General PayPal-to-PayPal payment" +msgstr "Pago general de PayPal a PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General account adjustment" +msgstr "Ajuste general de cuenta" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General adjustment without business-related event" +msgstr "Ajuste general sin evento empresarial relacionado" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General authorization" +msgstr "Autorización general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General bonus" +msgstr "Bonificación general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General buyer credit payment" +msgstr "Pago del crédito comprador general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General credit card deposit" +msgstr "Depósito general con tarjeta de crédito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General credit card withdrawal" +msgstr "Retirada general de tarjetas de crédito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General currency conversion" +msgstr "Conversión general de divisas" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General dividend" +msgstr "Dividendo general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General funding of PayPal account" +msgstr "Financiamiento general de la cuenta PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General hold" +msgstr "Retención general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General hold release" +msgstr "Liberación general de la retención" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General incentive or certificate redemption" +msgstr "Incentivo general o canje de certificados" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General intra-account transfer" +msgstr "Transferencia general intracuenta" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General non-payment fee" +msgstr "Comisión general por impago" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General reversal" +msgstr "Reversión general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General temporary hold" +msgstr "Retención temporal general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General withdrawal from PayPal account" +msgstr "Retirada general de la cuenta PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General withdrawal to non-bank institution" +msgstr "Retirada general a institución no bancaria" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument-funded payment" +msgstr "Pago financiado con instrumentos genéricos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet reversals (buyer side)" +msgstr "Instrumento genérico/Inversiones de cartera abierta (lado comprador)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet reversals (seller side)" +msgstr "Instrumento genérico/Inversiones de cartera abierta (lado vendedor)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet transaction" +msgstr "Instrumento genérico/transacción de Cartera Abierta" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate expiration fee" +msgstr "Tasa de caducidad del cheque regalo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate payment, purchase of gift certificate" +msgstr "Pago del cheque regalo, compra del cheque regalo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate purchase" +msgstr "Compra de cheques regalo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate redemption" +msgstr "Canjeo de vales regalo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Hidden virtual PayPal debit card transaction" +msgstr "Transacción virtual oculta con tarjeta de débito PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Hold for dispute investigation" +msgstr "Retención para investigación de disputas" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Incentive adjustment" +msgstr "Ajuste de incentivos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Instant payment review (IPR) reversal" +msgstr "Anulación de la revisión instantánea del pago (IPR)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "International credit card withdrawal" +msgstr "Retirada internacional de tarjetas de crédito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Invalid token type!" +msgstr "¡Tipo de símbolo no válido!" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Invoice %s" +msgstr "Factura %s" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MAM reversal" +msgstr "reversión de MAM" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Mass payment batch fee" +msgstr "Tarifa por lotes de pago masivo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay payment" +msgstr "Pago masivo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay refund transaction" +msgstr "Transacción de reembolso MassPay" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay reversal transaction" +msgstr "Transacción de reembolso MassPay" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Merchant referral account bonus" +msgstr "Bonificación por cuenta de referencia del comerciante" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Mobile payment, made through a mobile phone" +msgstr "Pago por móvil, realizado a través de un teléfono móvil" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "No authentication specified!" +msgstr "¡No se ha especificado la autenticación!" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Non-reference credit payment" +msgstr "Pago de créditos no referenciados" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Offers used as funding source" +msgstr "Ofertas utilizadas como fuente de financiación" + +#. module: account_statement_import_online_paypal +#: model:ir.model,name:account_statement_import_online_paypal.model_online_bank_statement_provider +msgid "Online Bank Statement Provider" +msgstr "Proveedor de Extractos Bancarios en Línea" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Other" +msgstr "Otro" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Partner fee" +msgstr "Cuota de socio" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal App features are configured incorrectly!" +msgstr "" +"¡Las funciones de la aplicación de PayPal están configuradas incorrectamente!" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal Checkout APIs" +msgstr "API de pago de PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal Here payment" +msgstr "PayPal Pago aquí" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"PayPal allows retrieving transactions only up to 3 years in the past. Please " +"import older transactions manually. See https://www.paypal.com/us/smarthelp/" +"article/why-can't-i-access-transaction-history-greater-than-3-years-ts2241" +msgstr "" +"PayPal permite recuperar transacciones sólo hasta hace 3 años. Importe " +"transacciones anteriores manualmente. Consulte https://www.paypal.com/us/" +"smarthelp/article/why-can't-i-access-transaction-history-greater-than-3-" +"years-ts2241" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal balance manager funding of PayPal account" +msgstr "Administrador de saldo de PayPal financiación de la cuenta PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal buyer credit payment funding" +msgstr "Financiación del pago con crédito de comprador de PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal buyer warranty bonus" +msgstr "Bonificación de la garantía de comprador de PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit authorization" +msgstr "Autorización de débito de PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit card cash advance" +msgstr "Anticipo de efectivo con tarjeta de débito PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit card withdrawal to ATM" +msgstr "Retirada de tarjeta de débito de PayPal en cajero automático" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"PayPal protection bonus, payout for PayPal buyer protection, payout for full " +"protection with PayPal buyer credit." +msgstr "" +"Bonificación por protección de PayPal, pago por protección de comprador de " +"PayPal, pago por protección total con crédito de comprador de PayPal." + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment fee" +msgstr "Comisión de pago" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment hold" +msgstr "Retención del pago" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment hold release" +msgstr "Liberación de la retención del pago" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment refund, initiated by merchant" +msgstr "Devolución del pago, iniciada por el comerciante" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment reversal, initiated by PayPal" +msgstr "Anulación de pago, iniciada por PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment review hold" +msgstr "Retención de revisión de pagos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment review release" +msgstr "Lanzamiento de revisión de pago" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Points incentive redemption" +msgstr "Canjeo de incentivos por puntos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Postage payment to carrier" +msgstr "Pago de porte al transportista" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Pre-approved payment (BillUser API)" +msgstr "Pago preaprobado (BillUser API)" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reauthorization" +msgstr "Reautorización" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Rebate or cash back reversal" +msgstr "Anulación de reembolsos o devoluciones" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Rebate payments" +msgstr "Pagos de reembolsos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Receivables financing - Applicable only in Brazil" +msgstr "Financiación de créditos - Aplicable sólo en Brasil" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reimbursement of chargeback" +msgstr "Reembolso de contracargo" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reserve hold" +msgstr "Mantenimiento de reservas" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reserve release" +msgstr "Liberación de la reserva" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of ACH deposit" +msgstr "Anulación de depósito ACH" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of ACH withdrawal transaction" +msgstr "Anulación de una transacción de retirada ACH" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of debit card transaction" +msgstr "Anulación de transacción con tarjeta de débito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of general account hold" +msgstr "Anulación de la retención de la cuenta general" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of points usage" +msgstr "Anulación de la utilización de puntos" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "Secret" +msgstr "Secreto" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Settlement consolidation" +msgstr "Consolidación de la liquidación" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Store-to-store transfers" +msgstr "Transferencias de tienda a tienda" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Subscription payment" +msgstr "Pago de la suscripción" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Tax hold" +msgstr "Retención de Impuestos" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Tax withholding to IRS" +msgstr "Retención de Impuestos a Hacienda" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Temporary hold on available balance" +msgstr "Retención temporal del saldo disponible" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party auction payment" +msgstr "Pago de subastas por terceros" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party payout" +msgstr "Pago a terceros" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party recoupment" +msgstr "Recuperación por terceros" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "Tasa de transaccion para %s" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer of funds from payable" +msgstr "Transferencia de fondos de cuentas por pagar" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer to and from a credit-card-funded restricted balance" +msgstr "" +"Transferencia hacia y desde un saldo restringido financiado con tarjeta de " +"crédito" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer to external GL entity" +msgstr "Transferencia a entidad GL externa" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Unknown authentication specified!" +msgstr "¡Autenticación desconocida especificada!" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Unknown error" +msgstr "Error desconocido" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "User-initiated currency conversion" +msgstr "Conversión de divisas iniciada por el usuario" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Virtual PayPal debit card transaction" +msgstr "Transacción virtual con tarjeta de débito PayPal" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Virtual terminal payment" +msgstr "Pago mediante terminal virtual" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Void of authorization" +msgstr "Nulidad de la autorización" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Warranty fee for warranty purchase" +msgstr "Tasa de garantía por la compra de la garantía" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Website payments standard payment" +msgstr "Pago estándar de pagos del sitio web" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Website payments. Pro account monthly fee" +msgstr "Pagos del sitio web. Cuota mensual de la cuenta Pro" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Withdrawal to Hyperwallet" +msgstr "Retirada de fondos a Hyperwallet" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Withdrawals initiated by user manually. Not related to automated scheduled " +"withdrawals" +msgstr "" +"Retiradas iniciadas manualmente por el usuario. No relacionado con retiradas " +"programadas automatizadas" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "WorldLink check withdrawal fee" +msgstr "Comisión por retirada de cheques de WorldLink" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "WorldLink withdrawal" +msgstr "Retirada de WorldLink" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "eBay auction payment" +msgstr "Pago de subastas en eBay" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "eBay loyalty incentive" +msgstr "Incentivo a la fidelidad en eBay" diff --git a/account_statement_import_online_paypal/i18n/it.po b/account_statement_import_online_paypal/i18n/it.po new file mode 100644 index 000000000..1e3abb4d5 --- /dev/null +++ b/account_statement_import_online_paypal/i18n/it.po @@ -0,0 +1,1134 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_online_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "ACH funding for funds recovery from account balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "API base" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "ATM withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account hold for ACH deposit" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account hold for open authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Account receivable for shipping" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Auto-sweep from account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "AutoSweep" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "BML credit, transfer from BML" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "BML withdrawal, transfer to BML" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Balance manager account bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Bill pay transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Blocked payments" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Bonus for first ACH use" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Buyer credit payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Buyer credit payment withdrawal, transfer to BML" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Cancellation of hold for dispute resolution" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Charge-off adjustment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback cancellation" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback processing fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback re-presentment rejection" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Chargeback reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Check withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "Client ID" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Coupon redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card cash back bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card deposit for negative PayPal account balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Credit card security charge refund" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Currency conversion required to cover negative balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Debit card cash back bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Deferred disbursement, funds collected for disbursement" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Delayed disbursement, funds disbursed" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Direct payment API" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Display only transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Donation payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Electronic funds transfer (EFT)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Failed to acquire token using Client ID and Secret!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Failed to resolve transaction %(first_transaction_id)s " +"(%(first_transaction_date)s)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Failed to resolve transaction %(last_transaction_id)s " +"(%(last_transaction_date)s)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee for %s" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee refund" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Fee reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Foreign bank withdrawal fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds available" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds not yet available" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds payable: PayPal-provided funds that must be paid back" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Funds receivable: PayPal-provided funds that are being paid back" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General PayPal debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General PayPal-to-PayPal payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General account adjustment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General adjustment without business-related event" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General buyer credit payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General credit card deposit" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General credit card withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General currency conversion" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General dividend" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General funding of PayPal account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General hold release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General incentive or certificate redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General intra-account transfer" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General non-payment fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General temporary hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General withdrawal from PayPal account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "General withdrawal to non-bank institution" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument-funded payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet reversals (buyer side)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet reversals (seller side)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Generic instrument/Open Wallet transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate expiration fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate payment, purchase of gift certificate" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate purchase" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Gift certificate redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Hidden virtual PayPal debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Hold for dispute investigation" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Incentive adjustment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Instant payment review (IPR) reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "International credit card withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Invalid token type!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Invoice %s" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MAM reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Mass payment batch fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay refund transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "MassPay reversal transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Merchant referral account bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Mobile payment, made through a mobile phone" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "No authentication specified!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Non-reference credit payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Offers used as funding source" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model:ir.model,name:account_statement_import_online_paypal.model_online_bank_statement_provider +msgid "Online Bank Statement Provider" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Other" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Partner fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal App features are configured incorrectly!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal Checkout APIs" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal Here payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"PayPal allows retrieving transactions only up to 3 years in the past. Please" +" import older transactions manually. See " +"https://www.paypal.com/us/smarthelp/article/why-can't-i-access-transaction-" +"history-greater-than-3-years-ts2241" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal balance manager funding of PayPal account" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal buyer credit payment funding" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal buyer warranty bonus" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit card cash advance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "PayPal debit card withdrawal to ATM" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"PayPal protection bonus, payout for PayPal buyer protection, payout for full" +" protection with PayPal buyer credit." +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment hold release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment refund, initiated by merchant" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment reversal, initiated by PayPal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment review hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Payment review release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Points incentive redemption" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Postage payment to carrier" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Pre-approved payment (BillUser API)" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reauthorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Rebate or cash back reversal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Rebate payments" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Receivables financing - Applicable only in Brazil" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reimbursement of chargeback" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reserve hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reserve release" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of ACH deposit" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of ACH withdrawal transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of general account hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Reversal of points usage" +msgstr "" + +#. module: account_statement_import_online_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_online_paypal.online_bank_statement_provider_form +msgid "Secret" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Settlement consolidation" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Store-to-store transfers" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Subscription payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Tax hold" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Tax withholding to IRS" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Temporary hold on available balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party auction payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party payout" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Third-party recoupment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer of funds from payable" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer to and from a credit-card-funded restricted balance" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Transfer to external GL entity" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Unknown authentication specified!" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Unknown error" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "User-initiated currency conversion" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Virtual PayPal debit card transaction" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Virtual terminal payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Void of authorization" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Warranty fee for warranty purchase" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Website payments standard payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Website payments. Pro account monthly fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "Withdrawal to Hyperwallet" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "" +"Withdrawals initiated by user manually. Not related to automated scheduled " +"withdrawals" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "WorldLink check withdrawal fee" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "WorldLink withdrawal" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "eBay auction payment" +msgstr "" + +#. module: account_statement_import_online_paypal +#. odoo-python +#: code:addons/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py:0 +#, python-format +msgid "eBay loyalty incentive" +msgstr "" diff --git a/account_statement_import_online_paypal/models/__init__.py b/account_statement_import_online_paypal/models/__init__.py new file mode 100644 index 000000000..10e8660ac --- /dev/null +++ b/account_statement_import_online_paypal/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import online_bank_statement_provider_paypal diff --git a/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py b/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py new file mode 100644 index 000000000..c2638e74f --- /dev/null +++ b/account_statement_import_online_paypal/models/online_bank_statement_provider_paypal.py @@ -0,0 +1,531 @@ +# Copyright 2019-2020 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2021 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import itertools +import json +import urllib.request +from base64 import b64encode +from datetime import datetime +from decimal import Decimal +from urllib.error import HTTPError +from urllib.parse import urlencode + +import dateutil.parser +import pytz +from dateutil.relativedelta import relativedelta + +from odoo import _, api, models +from odoo.exceptions import UserError + +PAYPAL_API_BASE = "https://api.paypal.com" +TRANSACTIONS_SCOPE = "https://uri.paypal.com/services/reporting/search/read" +EVENT_DESCRIPTIONS = { + "T0000": _("General PayPal-to-PayPal payment"), + "T0001": _("MassPay payment"), + "T0002": _("Subscription payment"), + "T0003": _("Pre-approved payment (BillUser API)"), + "T0004": _("eBay auction payment"), + "T0005": _("Direct payment API"), + "T0006": _("PayPal Checkout APIs"), + "T0007": _("Website payments standard payment"), + "T0008": _("Postage payment to carrier"), + "T0009": _("Gift certificate payment, purchase of gift certificate"), + "T0010": _("Third-party auction payment"), + "T0011": _("Mobile payment, made through a mobile phone"), + "T0012": _("Virtual terminal payment"), + "T0013": _("Donation payment"), + "T0014": _("Rebate payments"), + "T0015": _("Third-party payout"), + "T0016": _("Third-party recoupment"), + "T0017": _("Store-to-store transfers"), + "T0018": _("PayPal Here payment"), + "T0019": _("Generic instrument-funded payment"), + "T0100": _("General non-payment fee"), + "T0101": _("Website payments. Pro account monthly fee"), + "T0102": _("Foreign bank withdrawal fee"), + "T0103": _("WorldLink check withdrawal fee"), + "T0104": _("Mass payment batch fee"), + "T0105": _("Check withdrawal"), + "T0106": _("Chargeback processing fee"), + "T0107": _("Payment fee"), + "T0108": _("ATM withdrawal"), + "T0109": _("Auto-sweep from account"), + "T0110": _("International credit card withdrawal"), + "T0111": _("Warranty fee for warranty purchase"), + "T0112": _("Gift certificate expiration fee"), + "T0113": _("Partner fee"), + "T0200": _("General currency conversion"), + "T0201": _("User-initiated currency conversion"), + "T0202": _("Currency conversion required to cover negative balance"), + "T0300": _("General funding of PayPal account"), + "T0301": _("PayPal balance manager funding of PayPal account"), + "T0302": _("ACH funding for funds recovery from account balance"), + "T0303": _("Electronic funds transfer (EFT)"), + "T0400": _("General withdrawal from PayPal account"), + "T0401": _("AutoSweep"), + "T0402": _("Withdrawal to Hyperwallet"), + "T0403": _( + "Withdrawals initiated by user manually. " + "Not related to automated scheduled withdrawals" + ), + "T0500": _("General PayPal debit card transaction"), + "T0501": _("Virtual PayPal debit card transaction"), + "T0502": _("PayPal debit card withdrawal to ATM"), + "T0503": _("Hidden virtual PayPal debit card transaction"), + "T0504": _("PayPal debit card cash advance"), + "T0505": _("PayPal debit authorization"), + "T0600": _("General credit card withdrawal"), + "T0700": _("General credit card deposit"), + "T0701": _("Credit card deposit for negative PayPal account balance"), + "T0800": _("General bonus"), + "T0801": _("Debit card cash back bonus"), + "T0802": _("Merchant referral account bonus"), + "T0803": _("Balance manager account bonus"), + "T0804": _("PayPal buyer warranty bonus"), + "T0805": _( + "PayPal protection bonus, payout for PayPal buyer protection, payout " + "for full protection with PayPal buyer credit." + ), + "T0806": _("Bonus for first ACH use"), + "T0807": _("Credit card security charge refund"), + "T0808": _("Credit card cash back bonus"), + "T0900": _("General incentive or certificate redemption"), + "T0901": _("Gift certificate redemption"), + "T0902": _("Points incentive redemption"), + "T0903": _("Coupon redemption"), + "T0904": _("eBay loyalty incentive"), + "T0905": _("Offers used as funding source"), + "T1000": _("Bill pay transaction"), + "T1100": _("General reversal"), + "T1101": _("Reversal of ACH withdrawal transaction"), + "T1102": _("Reversal of debit card transaction"), + "T1103": _("Reversal of points usage"), + "T1104": _("Reversal of ACH deposit"), + "T1105": _("Reversal of general account hold"), + "T1106": _("Payment reversal, initiated by PayPal"), + "T1107": _("Payment refund, initiated by merchant"), + "T1108": _("Fee reversal"), + "T1109": _("Fee refund"), + "T1110": _("Hold for dispute investigation"), + "T1111": _("Cancellation of hold for dispute resolution"), + "T1112": _("MAM reversal"), + "T1113": _("Non-reference credit payment"), + "T1114": _("MassPay reversal transaction"), + "T1115": _("MassPay refund transaction"), + "T1116": _("Instant payment review (IPR) reversal"), + "T1117": _("Rebate or cash back reversal"), + "T1118": _("Generic instrument/Open Wallet reversals (seller side)"), + "T1119": _("Generic instrument/Open Wallet reversals (buyer side)"), + "T1200": _("General account adjustment"), + "T1201": _("Chargeback"), + "T1202": _("Chargeback reversal"), + "T1203": _("Charge-off adjustment"), + "T1204": _("Incentive adjustment"), + "T1205": _("Reimbursement of chargeback"), + "T1207": _("Chargeback re-presentment rejection"), + "T1208": _("Chargeback cancellation"), + "T1300": _("General authorization"), + "T1301": _("Reauthorization"), + "T1302": _("Void of authorization"), + "T1400": _("General dividend"), + "T1500": _("General temporary hold"), + "T1501": _("Account hold for open authorization"), + "T1502": _("Account hold for ACH deposit"), + "T1503": _("Temporary hold on available balance"), + "T1600": _("PayPal buyer credit payment funding"), + "T1601": _("BML credit, transfer from BML"), + "T1602": _("Buyer credit payment"), + "T1603": _("Buyer credit payment withdrawal, transfer to BML"), + "T1700": _("General withdrawal to non-bank institution"), + "T1701": _("WorldLink withdrawal"), + "T1800": _("General buyer credit payment"), + "T1801": _("BML withdrawal, transfer to BML"), + "T1900": _("General adjustment without business-related event"), + "T2000": _("General intra-account transfer"), + "T2001": _("Settlement consolidation"), + "T2002": _("Transfer of funds from payable"), + "T2003": _("Transfer to external GL entity"), + "T2004": _("Receivables financing - Applicable only in Brazil"), + "T2101": _("General hold"), + "T2102": _("General hold release"), + "T2103": _("Reserve hold"), + "T2104": _("Reserve release"), + "T2105": _("Payment review hold"), + "T2106": _("Payment review release"), + "T2107": _("Payment hold"), + "T2108": _("Payment hold release"), + "T2109": _("Gift certificate purchase"), + "T2110": _("Gift certificate redemption"), + "T2111": _("Funds not yet available"), + "T2112": _("Funds available"), + "T2113": _("Blocked payments"), + "T2114": _("Tax hold"), + "T2201": _("Transfer to and from a credit-card-funded restricted balance"), + "T2301": _("Tax withholding to IRS"), + "T3000": _("Generic instrument/Open Wallet transaction"), + "T5000": _("Deferred disbursement, funds collected for disbursement"), + "T5001": _("Delayed disbursement, funds disbursed"), + "T9700": _("Account receivable for shipping"), + "T9701": _("Funds payable: PayPal-provided funds that must be paid back"), + "T9702": _("Funds receivable: PayPal-provided funds that are being paid back"), + "T9800": _("Display only transaction"), + "T9900": _("Other"), +} +NO_DATA_FOR_DATE_AVAIL_MSG = "Data for the given start date is not available." + + +class OnlineBankStatementProviderPayPal(models.Model): + _inherit = "online.bank.statement.provider" + + @api.model + def _get_available_services(self): + return super()._get_available_services() + [ + ("paypal", "PayPal.com"), + ] + + def _obtain_statement_data(self, date_since, date_until): + self.ensure_one() + if self.service != "paypal": + return super()._obtain_statement_data( + date_since, + date_until, + ) # pragma: no cover + + currency = (self.currency_id or self.company_id.currency_id).name + + if date_since.tzinfo: + date_since = date_since.astimezone(pytz.utc).replace(tzinfo=None) + if date_until.tzinfo: + date_until = date_until.astimezone(pytz.utc).replace(tzinfo=None) + + if date_since < datetime.utcnow() - relativedelta(years=3): + raise UserError( + _( + "PayPal allows retrieving transactions only up to 3 years in " + "the past. Please import older transactions manually. See " + "https://www.paypal.com/us/smarthelp/article/why-can't-i" + "-access-transaction-history-greater-than-3-years-ts2241" + ) + ) + + token = self._paypal_get_token() + transactions = self._paypal_get_transactions( + token, currency, date_since, date_until + ) + if not transactions: + balance = self._paypal_get_balance(token, currency, date_since) + return [], {"balance_start": balance, "balance_end_real": balance} + + # Normalize transactions, sort by date, and get lines + transactions = list( + sorted( + transactions, + key=lambda transaction: self._paypal_get_transaction_date(transaction), + ) + ) + lines = list( + itertools.chain.from_iterable( + map(lambda x: self._paypal_transaction_to_lines(x), transactions) + ) + ) + + first_transaction = transactions[0] + first_transaction_id = first_transaction["transaction_info"]["transaction_id"] + first_transaction_date = self._paypal_get_transaction_date(first_transaction) + first_transaction = self._paypal_get_transaction( + token, first_transaction_id, first_transaction_date + ) + if not first_transaction: + raise UserError( + _( + "Failed to resolve transaction %(first_transaction_id)s " + "(%(first_transaction_date)s)", + first_transaction_id=first_transaction_id, + first_transaction_date=first_transaction_date, + ) + ) + balance_start = self._paypal_get_transaction_ending_balance(first_transaction) + balance_start -= self._paypal_get_transaction_total_amount(first_transaction) + balance_start -= self._paypal_get_transaction_fee_amount(first_transaction) + + last_transaction = transactions[-1] + last_transaction_id = last_transaction["transaction_info"]["transaction_id"] + last_transaction_date = self._paypal_get_transaction_date(last_transaction) + last_transaction = self._paypal_get_transaction( + token, last_transaction_id, last_transaction_date + ) + if not last_transaction: + raise UserError( + _( + "Failed to resolve transaction %(last_transaction_id)s " + "(%(last_transaction_date)s)", + last_transaction_id=last_transaction_id, + last_transaction_date=last_transaction_date, + ) + ) + balance_end = self._paypal_get_transaction_ending_balance(last_transaction) + + return lines, {"balance_start": balance_start, "balance_end_real": balance_end} + + @api.model + def _paypal_preparse_transaction(self, transaction): + date = ( + dateutil.parser.parse(self._paypal_get_transaction_date(transaction)) + .astimezone(pytz.utc) + .replace(tzinfo=None) + ) + transaction["transaction_info"]["transaction_updated_date"] = date + return transaction + + @api.model + def _paypal_transaction_to_lines(self, data): + transaction = data["transaction_info"] + payer = data["payer_info"] + transaction_id = transaction["transaction_id"] + event_code = transaction["transaction_event_code"] + date = self._paypal_get_transaction_date(data) + total_amount = self._paypal_get_transaction_total_amount(data) + fee_amount = self._paypal_get_transaction_fee_amount(data) + transaction_subject = transaction.get("transaction_subject") + transaction_note = transaction.get("transaction_note") + invoice = transaction.get("invoice_id") + payer_name = payer.get("payer_name", {}) + payer_email = payer_name.get("email_address") or payer.get("email_address") + payer_full_name = payer_name.get("full_name") or payer_name.get( + "alternate_full_name" + ) + if invoice: + invoice = _("Invoice %s") % invoice + note = transaction_id + if transaction_subject or transaction_note: + note = f"{note}: {transaction_subject or transaction_note}" + if payer_email or payer_full_name: + note += f" ({payer_email or payer_full_name})" + unique_import_id = f"{transaction_id}-{int(date.timestamp())}" + name = ( + invoice + or transaction_subject + or transaction_note + or EVENT_DESCRIPTIONS.get(event_code) + or "" + ) + line = { + "ref": name, + "amount": str(total_amount), + "date": date, + "payment_ref": note, + "unique_import_id": unique_import_id, + "raw_data": transaction, + } + if payer_full_name: + line.update({"partner_name": payer_full_name}) + lines = [line] + if fee_amount: + lines += [ + { + "ref": _("Fee for %s") % (name or transaction_id), + "amount": str(fee_amount), + "date": date, + "partner_name": "PayPal", + "unique_import_id": "%s-FEE" % unique_import_id, + "payment_ref": _("Transaction fee for %s") % note, + } + ] + return lines + + def _paypal_get_token(self): + self.ensure_one() + data = self._paypal_retrieve( + (self.api_base or PAYPAL_API_BASE) + "/v1/oauth2/token", + (self.username, self.password), + data=urlencode({"grant_type": "client_credentials"}).encode("utf-8"), + ) + if "scope" not in data or TRANSACTIONS_SCOPE not in data["scope"]: + raise UserError(_("PayPal App features are configured incorrectly!")) + if "token_type" not in data or data["token_type"] != "Bearer": + raise UserError(_("Invalid token type!")) + if "access_token" not in data: + raise UserError(_("Failed to acquire token using Client ID and Secret!")) + return data["access_token"] + + def _paypal_get_balance(self, token, currency, as_of_timestamp): + self.ensure_one() + url = ( + self.api_base or PAYPAL_API_BASE + ) + "/v1/reporting/balances?currency_code={}&as_of_time={}".format( + currency, + as_of_timestamp.isoformat() + "Z", + ) + data = self._paypal_retrieve(url, token) + available_balance = data["balances"][0].get("available_balance") + if not available_balance: + return Decimal() + return Decimal(available_balance["value"]) + + def _paypal_get_transaction(self, token, transaction_id, timestamp): + self.ensure_one() + transaction_date = timestamp.isoformat() + "Z" + url = ( + (self.api_base or PAYPAL_API_BASE) + + "/v1/reporting/transactions" + + f"?start_date={transaction_date}" + + f"&end_date={transaction_date}" + "&fields=all" + ) + data = self._paypal_retrieve(url, token) + transactions = data["transaction_details"] + for transaction in transactions: + if transaction["transaction_info"]["transaction_id"] != transaction_id: + continue + return transaction + return None + + def _paypal_get_transactions(self, token, currency, since, until): + self.ensure_one() + # NOTE: Not more than 31 days in a row + # NOTE: start_date <= date <= end_date, thus check every transaction + interval_step = relativedelta(days=31) + interval_start = since + transactions = [] + while interval_start < until: + interval_end = min(interval_start + interval_step, until) + page = 1 + total_pages = None + while total_pages is None or page <= total_pages: + url = ( + (self.api_base or PAYPAL_API_BASE) + + "/v1/reporting/transactions" + + ( + "?transaction_currency=%s" + "&start_date=%s" + "&end_date=%s" + "&fields=all" + "&balance_affecting_records_only=Y" + "&page_size=500" + "&page=%d" + % ( + currency, + interval_start.isoformat() + "Z", + interval_end.isoformat() + "Z", + page, + ) + ) + ) + + # NOTE: Workaround for INVALID_REQUEST (see ROADMAP.rst) + invalid_data_workaround = self.env.context.get( + "test_account_statement_import_online_paypal_monday", + interval_start.weekday() == 0 + and (datetime.utcnow() - interval_start).total_seconds() < 28800, + ) + data = self.with_context( + invalid_data_workaround=invalid_data_workaround, + )._paypal_retrieve(url, token) + interval_transactions = map( + lambda transaction: self._paypal_preparse_transaction(transaction), + data["transaction_details"], + ) + transactions += list( + filter( + lambda transaction: interval_start + <= self._paypal_get_transaction_date(transaction) + < interval_end, + interval_transactions, + ) + ) + total_pages = data["total_pages"] + page += 1 + interval_start += interval_step + return transactions + + @api.model + def _paypal_get_transaction_date(self, transaction): + # NOTE: CSV reports from PayPal use this date, search as well + return transaction["transaction_info"]["transaction_updated_date"] + + @api.model + def _paypal_get_transaction_total_amount(self, transaction): + transaction_amount = transaction["transaction_info"].get("transaction_amount") + if not transaction_amount: + return Decimal() + return Decimal(transaction_amount["value"]) + + @api.model + def _paypal_get_transaction_fee_amount(self, transaction): + fee_amount = transaction["transaction_info"].get("fee_amount") + if not fee_amount: + return Decimal() + return Decimal(fee_amount["value"]) + + @api.model + def _paypal_get_transaction_ending_balance(self, transaction): + # NOTE: 'available_balance' instead of 'ending_balance' as per CSV file + transaction_amount = transaction["transaction_info"].get("available_balance") + if not transaction_amount: + return Decimal() + return Decimal(transaction_amount["value"]) + + @api.model + def _paypal_decode_error(self, content): + if "name" in content: + return UserError( + "{}: {}".format( + content["name"], + content.get("message", _("Unknown error")), + ) + ) + + if "error" in content: + return UserError( + "{}: {}".format( + content["error"], + content.get("error_description", _("Unknown error")), + ) + ) + + return None + + @api.model + def _paypal_retrieve(self, url, auth, data=None): + try: + with self._paypal_urlopen(url, auth, data) as response: + content = response.read().decode("utf-8") + except HTTPError as e: + content = json.loads(e.read().decode("utf-8")) + + # NOTE: Workaround for INVALID_REQUEST (see ROADMAP.rst) + if ( + self.env.context.get("invalid_data_workaround") + and content.get("name") == "INVALID_REQUEST" + and content.get("message") == NO_DATA_FOR_DATE_AVAIL_MSG + ): + return { + "transaction_details": [], + "page": 1, + "total_items": 0, + "total_pages": 0, + } + + raise self._paypal_decode_error(content) or e from None + return json.loads(content) + + @api.model + def _paypal_urlopen(self, url, auth, data=None): + if not auth: + raise UserError(_("No authentication specified!")) + request = urllib.request.Request(url, data=data) + if isinstance(auth, tuple): + request.add_header( + "Authorization", + "Basic %s" + % str( + b64encode((f"{auth[0]}:{auth[1]}").encode()), + "utf-8", + ), + ) + elif isinstance(auth, str): + request.add_header("Authorization", "Bearer %s" % auth) + else: + raise UserError(_("Unknown authentication specified!")) + return urllib.request.urlopen(request) diff --git a/account_statement_import_online_paypal/pyproject.toml b/account_statement_import_online_paypal/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/account_statement_import_online_paypal/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/account_statement_import_online_paypal/readme/CONFIGURE.md b/account_statement_import_online_paypal/readme/CONFIGURE.md new file mode 100644 index 000000000..390fd23a5 --- /dev/null +++ b/account_statement_import_online_paypal/readme/CONFIGURE.md @@ -0,0 +1,50 @@ +You will need a *Client ID* and *Secret* from PayPal to communicate with +the PayPal API. To obtain your PayPal API *Client ID* and *Secret*: + +1. Open [PayPal Developer](https://developer.paypal.com/dashboard/). +2. Login with your *PayPal for Business* account (upgrade your personal + account to a Business Account, if required). +3. Go to *Apps & Credentials* and switch to *Live*. +4. Under *REST API apps*, click *Create App* to begin creating a new + application. +5. Enter a descriptive name for your app (e.g. *Odoo-Statements*) and + click *Create App*. +6. Copy the *Client ID* and *Secret* to use during provider + configuration (instructions below). +7. Under *Features*, uncheck all optional features except *Transaction + Search*. +8. Click *Save Changes*. + +To configure PayPal as an online bank statement provider, you will need +to create a Bank Account & Journal that corresponds to your *PayPal for +Business* account, and then configure the *PayPal.com* provider with the +*Client ID* and *Secret* obtained above: + +1. Go to *Invoicing \> Configuration \> Banks \> Add a Bank Account*. +2. In the *Account Number* field, enter some descriptive text for the + account, such as the email address or *PayPal Merchant ID* of your + *PayPal for Business* account. NOTE: This *Account Number* is not + used in the authentication with PayPal's API, and is only used to + distinguish this PayPal Bank Account/Journal from others you may + have configured. +3. Fill in the other fields for the Bank Account if desired, and then + click *Create*. +4. Go to *Invoicing \> Configuration \> Accounting \> Journals*. +5. Open and *Edit* the Journal corresponding to the PayPal bank account + (this Journal was created automatically when you created the Bank + Account above. +6. Set *Bank Feeds* to *Online (OCA)*. +7. Select *PayPal.com* as the provider in the *Online Bank Statements + (OCA)* section. +8. *Save* the Journal. +9. To configure provider-specific settings, click on the provider to + open it and click *Edit*. +10. Fill in your desired *Configuration* and *Scheduled Pull* settings. +11. Leave the *API base* field empty, and fill in the *Client ID* and + *Secret* from your PayPal Developer account. +12. Click *Save*. + +NOTE: For development and testing purposes, you can create Sandbox +credentials associated with your *PayPal for Business* account. When +configuring the provider-specific settings, enter the following in the +*API base* field: diff --git a/account_statement_import_online_paypal/readme/CONTRIBUTORS.md b/account_statement_import_online_paypal/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..14e9e238d --- /dev/null +++ b/account_statement_import_online_paypal/readme/CONTRIBUTORS.md @@ -0,0 +1,6 @@ +- [CorporateHub](https://corporatehub.eu/) + - Alexey Pelykh \<\> +- Omar Castiñeira \<\> +- isufi kapasi \<\> +- [Ondergetekende BV](https://ondergetekende.nl) + - Koert van der Veer \<\> \ No newline at end of file diff --git a/account_statement_import_online_paypal/readme/DESCRIPTION.md b/account_statement_import_online_paypal/readme/DESCRIPTION.md new file mode 100644 index 000000000..f4d182abc --- /dev/null +++ b/account_statement_import_online_paypal/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module provides online bank statements from +[PayPal.com](https://paypal.com/). diff --git a/account_statement_import_online_paypal/readme/ROADMAP.md b/account_statement_import_online_paypal/readme/ROADMAP.md new file mode 100644 index 000000000..840d92725 --- /dev/null +++ b/account_statement_import_online_paypal/readme/ROADMAP.md @@ -0,0 +1,13 @@ +- Only transactions for the previous three years are retrieved, + historical data can be imported manually, see + `account_bank_statement_import_paypal`. See [PayPal Help Center + article](https://www.paypal.com/us/smarthelp/article/why-can't-i-access-transaction-history-greater-than-3-years-ts2241) + for details. +- [PayPal Transaction + Info](https://developer.paypal.com/docs/api/transaction-search/v1/#definition-transaction_info) + defines extra fields like `tip_amount`, `shipping_amount`, etc. that + could be useful to be decomposed from a single transaction. +- There's a known issue with PayPal API that on every Monday for couple + of hours after UTC midnight it returns `INVALID_REQUEST` incorrectly: + their servers have not inflated the data yet. PayPal tech support + confirmed this behaviour in case \#06650320 (private). diff --git a/account_statement_import_online_paypal/readme/USAGE.md b/account_statement_import_online_paypal/readme/USAGE.md new file mode 100644 index 000000000..20f97e07c --- /dev/null +++ b/account_statement_import_online_paypal/readme/USAGE.md @@ -0,0 +1,6 @@ +To pull historical bank statements: + +1. Go to *Invoicing \> Configuration \> Accounting \> Journals*. +2. Open the Journal corresponding to the PayPal bank account. +3. Click the *Pull Online Bank Statement* button. +4. Configure a date interval and click *Pull*. diff --git a/account_statement_import_online_paypal/static/description/icon.png b/account_statement_import_online_paypal/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/account_statement_import_online_paypal/static/description/icon.png differ diff --git a/account_statement_import_online_paypal/static/description/index.html b/account_statement_import_online_paypal/static/description/index.html new file mode 100644 index 000000000..bc8d681e0 --- /dev/null +++ b/account_statement_import_online_paypal/static/description/index.html @@ -0,0 +1,519 @@ + + + + + +Online Bank Statements: PayPal.com + + + +
+

Online Bank Statements: PayPal.com

+ + +

Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runboat

+

This module provides online bank statements from +PayPal.com.

+

Table of contents

+ +
+

Configuration

+

You will need a Client ID and Secret from PayPal to communicate with +the PayPal API. To obtain your PayPal API Client ID and Secret:

+
    +
  1. Open PayPal Developer.
  2. +
  3. Login with your PayPal for Business account (upgrade your personal +account to a Business Account, if required).
  4. +
  5. Go to Apps & Credentials and switch to Live.
  6. +
  7. Under REST API apps, click Create App to begin creating a new +application.
  8. +
  9. Enter a descriptive name for your app (e.g. Odoo-Statements) and +click Create App.
  10. +
  11. Copy the Client ID and Secret to use during provider +configuration (instructions below).
  12. +
  13. Under Features, uncheck all optional features except Transaction +Search.
  14. +
  15. Click Save Changes.
  16. +
+

To configure PayPal as an online bank statement provider, you will need +to create a Bank Account & Journal that corresponds to your PayPal for +Business account, and then configure the PayPal.com provider with the +Client ID and Secret obtained above:

+
    +
  1. Go to Invoicing > Configuration > Banks > Add a Bank Account.
  2. +
  3. In the Account Number field, enter some descriptive text for the +account, such as the email address or PayPal Merchant ID of your +PayPal for Business account. NOTE: This Account Number is not +used in the authentication with PayPal’s API, and is only used to +distinguish this PayPal Bank Account/Journal from others you may +have configured.
  4. +
  5. Fill in the other fields for the Bank Account if desired, and then +click Create.
  6. +
  7. Go to Invoicing > Configuration > Accounting > Journals.
  8. +
  9. Open and Edit the Journal corresponding to the PayPal bank account +(this Journal was created automatically when you created the Bank +Account above.
  10. +
  11. Set Bank Feeds to Online (OCA).
  12. +
  13. Select PayPal.com as the provider in the Online Bank Statements +(OCA) section.
  14. +
  15. Save the Journal.
  16. +
  17. To configure provider-specific settings, click on the provider to +open it and click Edit.
  18. +
  19. Fill in your desired Configuration and Scheduled Pull settings.
  20. +
  21. Leave the API base field empty, and fill in the Client ID and +Secret from your PayPal Developer account.
  22. +
  23. Click Save.
  24. +
+

NOTE: For development and testing purposes, you can create Sandbox +credentials associated with your PayPal for Business account. When +configuring the provider-specific settings, enter the following in the +API base field: https://api.sandbox.paypal.com

+
+
+

Usage

+

To pull historical bank statements:

+
    +
  1. Go to Invoicing > Configuration > Accounting > Journals.
  2. +
  3. Open the Journal corresponding to the PayPal bank account.
  4. +
  5. Click the Pull Online Bank Statement button.
  6. +
  7. Configure a date interval and click Pull.
  8. +
+
+
+

Known issues / Roadmap

+
    +
  • Only transactions for the previous three years are retrieved, +historical data can be imported manually, see +account_bank_statement_import_paypal. See PayPal Help Center +article +for details.
  • +
  • PayPal Transaction +Info +defines extra fields like tip_amount, shipping_amount, etc. +that could be useful to be decomposed from a single transaction.
  • +
  • There’s a known issue with PayPal API that on every Monday for couple +of hours after UTC midnight it returns INVALID_REQUEST +incorrectly: their servers have not inflated the data yet. PayPal +tech support confirmed this behaviour in case #06650320 (private).
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • CorporateHub
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

alexey-pelykh

+

This module is part of the OCA/bank-statement-import project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/account_statement_import_online_paypal/tests/__init__.py b/account_statement_import_online_paypal/tests/__init__.py new file mode 100644 index 000000000..89a0922ee --- /dev/null +++ b/account_statement_import_online_paypal/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_account_statement_import_online_paypal diff --git a/account_statement_import_online_paypal/tests/test_account_statement_import_online_paypal.py b/account_statement_import_online_paypal/tests/test_account_statement_import_online_paypal.py new file mode 100644 index 000000000..53151e616 --- /dev/null +++ b/account_statement_import_online_paypal/tests/test_account_statement_import_online_paypal.py @@ -0,0 +1,842 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2021-2022 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import json +from datetime import datetime +from decimal import Decimal +from unittest import mock +from urllib.error import HTTPError + +from dateutil.relativedelta import relativedelta + +from odoo import fields +from odoo.exceptions import UserError +from odoo.tests import common + +_module_ns = "odoo.addons.account_statement_import_online_paypal" +_provider_class = ( + _module_ns + + ".models.online_bank_statement_provider_paypal" + + ".OnlineBankStatementProviderPayPal" +) + + +class FakeHTTPError(HTTPError): + def __init__(self, content): + self.content = content + + # pylint: disable=method-required-super + def read(self): + return self.content.encode("utf-8") + + +class UrlopenRetValMock: + def __init__(self, content, throw=False): + self.content = content + self.throw = throw + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + # pylint: disable=method-required-super + def read(self): + if self.throw: + raise FakeHTTPError(self.content) + return self.content.encode("utf-8") + + +class TestAccountBankAccountStatementImportOnlinePayPal(common.TransactionCase): + def setUp(self): + super().setUp() + + self.now = fields.Datetime.now() + self.now_isoformat = self.now.isoformat() + "+0000" + self.today = datetime(self.now.year, self.now.month, self.now.day) + self.today_isoformat = self.today.isoformat() + "+0000" + self.today_timestamp = str(int(self.today.timestamp())) + self.yesterday = self.today - relativedelta(days=1) + self.yesterday_isoformat = self.yesterday.isoformat() + "+0000" + self.yesterday_timestamp = str(int(self.yesterday.timestamp())) + self.currency_eur = self.env.ref("base.EUR") + self.currency_usd = self.env.ref("base.USD") + self.AccountJournal = self.env["account.journal"] + self.OnlineBankStatementProvider = self.env["online.bank.statement.provider"] + self.AccountBankStatement = self.env["account.bank.statement"] + self.AccountBankStatementLine = self.env["account.bank.statement.line"] + + Provider = self.OnlineBankStatementProvider + self.paypal_parse_transaction = lambda payload: ( + Provider._paypal_transaction_to_lines( + Provider._paypal_preparse_transaction( + json.loads( + payload, + parse_float=Decimal, + ) + ) + ) + ) + self.mock_token = lambda: mock.patch( + _provider_class + "._paypal_get_token", + return_value="--TOKEN--", + ) + + def test_good_token(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = json.loads( + """{ + "scope": "https://uri.paypal.com/services/reporting/search/read", + "access_token": "---TOKEN---", + "token_type": "Bearer", + "app_id": "APP-1234567890", + "expires_in": 32400, + "nonce": "---NONCE---" +}""", + parse_float=Decimal, + ) + token = None + with mock.patch( + _provider_class + "._paypal_retrieve", + return_value=mocked_response, + ): + token = provider._paypal_get_token() + self.assertEqual(token, "---TOKEN---") + + def test_bad_token_scope(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = json.loads( + """{ + "scope": "openid https://uri.paypal.com/services/applications/webhooks", + "access_token": "---TOKEN---", + "token_type": "Bearer", + "app_id": "APP-1234567890", + "expires_in": 32400, + "nonce": "---NONCE---" +}""", + parse_float=Decimal, + ) + with mock.patch( + _provider_class + "._paypal_retrieve", + return_value=mocked_response, + ): + with self.assertRaisesRegex( + UserError, "PayPal App features are configured incorrectly!" + ): + provider._paypal_get_token() + + def test_bad_token_type(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = json.loads( + """{ + "scope": "https://uri.paypal.com/services/reporting/search/read", + "access_token": "---TOKEN---", + "token_type": "NotBearer", + "app_id": "APP-1234567890", + "expires_in": 32400, + "nonce": "---NONCE---" +}""", + parse_float=Decimal, + ) + with mock.patch( + _provider_class + "._paypal_retrieve", + return_value=mocked_response, + ): + with self.assertRaisesRegex(UserError, "Invalid token type!"): + provider._paypal_get_token() + + def test_no_token(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = json.loads( + """{ + "scope": "https://uri.paypal.com/services/reporting/search/read", + "token_type": "Bearer", + "app_id": "APP-1234567890", + "expires_in": 32400, + "nonce": "---NONCE---" + }""", + parse_float=Decimal, + ) + with mock.patch( + _provider_class + "._paypal_retrieve", + return_value=mocked_response, + ): + with self.assertRaisesRegex( + UserError, "Failed to acquire token using Client ID and Secret!" + ): + provider._paypal_get_token() + + def test_no_data_on_monday(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response_1 = UrlopenRetValMock( + """{ + "debug_id": "eec890ebd5798", + "details": "xxxxxx", + "links": "xxxxxx", + "message": "Data for the given start date is not available.", + "name": "INVALID_REQUEST" +}""", + throw=True, + ) + mocked_response_2 = UrlopenRetValMock( + f"""{{ + "balances": [ + {{ + "currency": "EUR", + "primary": true, + "total_balance": {{ + "currency_code": "EUR", + "value": "0.75" + }}, + "available_balance": {{ + "currency_code": "EUR", + "value": "0.75" + }}, + "withheld_balance": {{ + "currency_code": "EUR", + "value": "0.00" + }} + }} + ], + "account_id": "1234567890", + "as_of_time": "{self.now_isoformat}", + "last_refresh_time": "{self.now_isoformat}" +}}""" + ) + with mock.patch( + _provider_class + "._paypal_urlopen", + side_effect=[mocked_response_1, mocked_response_2], + ), self.mock_token(): + data = provider.with_context( + test_account_statement_import_online_paypal_monday=True, + )._obtain_statement_data( + self.now - relativedelta(hours=1), + self.now, + ) + + self.assertEqual(data, ([], {"balance_start": 0.75, "balance_end_real": 0.75})) + + def test_error_handling_1(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = UrlopenRetValMock( + """{ + "message": "MESSAGE", + "name": "ERROR" +}""", + throw=True, + ) + with mock.patch( + _provider_class + "._paypal_urlopen", + return_value=mocked_response, + ): + with self.assertRaises(UserError): + provider._paypal_retrieve("https://url", "") + + def test_error_handling_2(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = UrlopenRetValMock( + """{ + "error_description": "ERROR DESCRIPTION", + "error": "ERROR" +}""", + throw=True, + ) + with mock.patch( + _provider_class + "._paypal_urlopen", + return_value=mocked_response, + ): + with self.assertRaises(UserError): + provider._paypal_retrieve("https://url", "") + + def test_create_empty_paypal_statements(self): + """Test creating empty PayPal statements + ('Allow empty statements' field is checked). + """ + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response_1 = json.loads( + f"""{{ + "transaction_details": [], + "account_number": "1234567890", + "start_date": "{self.now_isoformat}", + "end_date": "{self.now_isoformat}", + "last_refreshed_datetime": "{self.now_isoformat}", + "page": 1, + "total_items": 0, + "total_pages": 0 +}}""", + parse_float=Decimal, + ) + mocked_response_2 = json.loads( + f"""{{ + "balances": [ + {{ + "currency": "EUR", + "primary": true, + "total_balance": {{ + "currency_code": "EUR", + "value": "0.75" + }}, + "available_balance": {{ + "currency_code": "EUR", + "value": "0.75" + }}, + "withheld_balance": {{ + "currency_code": "EUR", + "value": "0.00" + }} + }} + ], + "account_id": "1234567890", + "as_of_time": "{self.now_isoformat}", + "last_refresh_time": "{self.now_isoformat}" +}}""", + parse_float=Decimal, + ) + with mock.patch( + _provider_class + "._paypal_retrieve", + side_effect=[mocked_response_1, mocked_response_2], + ), self.mock_token(): + data = provider._obtain_statement_data( + self.now - relativedelta(hours=1), + self.now, + ) + + self.assertEqual(data, ([], {"balance_start": 0.75, "balance_end_real": 0.75})) + + def test_ancient_pull(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = json.loads( + f"""{{ + "transaction_details": [], + "account_number": "1234567890", + "start_date": "{self.now_isoformat}", + "end_date": "{self.now_isoformat}", + "last_refreshed_datetime": "{self.now_isoformat}", + "page": 1, + "total_items": 0, + "total_pages": 0 +}}""", + parse_float=Decimal, + ) + with mock.patch( + _provider_class + "._paypal_retrieve", + return_value=mocked_response, + ), self.mock_token(): + with self.assertRaisesRegex( + UserError, + "PayPal allows retrieving transactions only up to 3 years in " + "the past. Please import older transactions manually.", + ): + provider._obtain_statement_data( + self.now - relativedelta(years=5), + self.now, + ) + + def test_pull(self): + journal = self.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "currency_id": self.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "paypal", + } + ) + + provider = journal.online_bank_statement_provider_id + mocked_response = json.loads( + f"""{{ + "transaction_details": [{{ + "transaction_info": {{ + "paypal_account_id": "1234567890", + "transaction_id": "1234567890", + "transaction_event_code": "T1234", + "transaction_initiation_date": "{self.yesterday_isoformat}", + "transaction_updated_date": "{self.yesterday_isoformat}", + "transaction_amount": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "fee_amount": {{ + "currency_code": "USD", + "value": "-100.00" + }}, + "transaction_status": "S", + "transaction_subject": "Payment for Invoice(s) 1", + "ending_balance": {{ + "currency_code": "USD", + "value": "900.00" + }}, + "available_balance": {{ + "currency_code": "USD", + "value": "900.00" + }}, + "invoice_id": "1" + }}, + "payer_info": {{ + "account_id": "1234567890", + "email_address": "partner@example.com", + "address_status": "Y", + "payer_status": "N", + "payer_name": {{ + "alternate_full_name": "Acme, Inc." + }}, + "country_code": "US" + }}, + "shipping_info": {{}}, + "cart_info": {{}}, + "store_info": {{}}, + "auction_info": {{}}, + "incentive_info": {{}} + }}, {{ + "transaction_info": {{ + "paypal_account_id": "1234567890", + "transaction_id": "1234567891", + "transaction_event_code": "T1234", + "transaction_initiation_date": "{self.today_isoformat}", + "transaction_updated_date": "{self.today_isoformat}", + "transaction_amount": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "fee_amount": {{ + "currency_code": "USD", + "value": "-100.00" + }}, + "transaction_status": "S", + "transaction_subject": "Payment for Invoice(s) 1", + "ending_balance": {{ + "currency_code": "USD", + "value": "900.00" + }}, + "available_balance": {{ + "currency_code": "USD", + "value": "900.00" + }}, + "invoice_id": "1" + }}, + "payer_info": {{ + "account_id": "1234567890", + "email_address": "partner@example.com", + "address_status": "Y", + "payer_status": "N", + "payer_name": {{ + "alternate_full_name": "Acme, Inc." + }}, + "country_code": "US" + }}, + "shipping_info": {{}}, + "cart_info": {{}}, + "store_info": {{}}, + "auction_info": {{}}, + "incentive_info": {{}} + }}], + "account_number": "1234567890", + "start_date": "{self.yesterday_isoformat}", + "end_date": "{self.today_isoformat}", + "last_refreshed_datetime": "{self.now_isoformat}", + "page": 1, + "total_items": 1, + "total_pages": 1 +}}""", + parse_float=Decimal, + ) + with mock.patch( + _provider_class + "._paypal_retrieve", + return_value=mocked_response, + ), self.mock_token(): + data = provider._obtain_statement_data( + self.yesterday, + self.today, + ) + + self.assertEqual(len(data[0]), 2) + del data[0][0]["raw_data"] + self.assertEqual( + data[0][0], + { + "date": self.yesterday, + "amount": "1000.00", + "ref": "Invoice 1", + "payment_ref": ( + "1234567890: Payment for Invoice(s) 1 (partner@example.com)" + ), + "partner_name": "Acme, Inc.", + "unique_import_id": f"1234567890-{self.yesterday_timestamp}", + }, + ) + self.assertEqual( + data[0][1], + { + "date": self.yesterday, + "amount": "-100.00", + "ref": "Fee for Invoice 1", + "payment_ref": ( + "Transaction fee for 1234567890: Payment for Invoice(s) 1 " + "(partner@example.com)" + ), + "partner_name": "PayPal", + "unique_import_id": f"1234567890-{self.yesterday_timestamp}-FEE", + }, + ) + self.assertEqual(data[1], {"balance_start": 0.0, "balance_end_real": 900.0}) + + def test_transaction_parse_1(self): + lines = self.paypal_parse_transaction( + f"""{{ + "transaction_info": {{ + "paypal_account_id": "1234567890", + "transaction_id": "1234567890", + "transaction_event_code": "T1234", + "transaction_initiation_date": "{self.today_isoformat}", + "transaction_updated_date": "{self.today_isoformat}", + "transaction_amount": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "fee_amount": {{ + "currency_code": "USD", + "value": "0.00" + }}, + "transaction_status": "S", + "transaction_subject": "Payment for Invoice(s) 1", + "ending_balance": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "available_balance": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "invoice_id": "1" + }}, + "payer_info": {{ + "account_id": "1234567890", + "email_address": "partner@example.com", + "address_status": "Y", + "payer_status": "N", + "payer_name": {{ + "alternate_full_name": "Acme, Inc." + }}, + "country_code": "US" + }}, + "shipping_info": {{}}, + "cart_info": {{}}, + "store_info": {{}}, + "auction_info": {{}}, + "incentive_info": {{}} +}}""" + ) + self.assertEqual(len(lines), 1) + del lines[0]["raw_data"] + self.assertEqual( + lines[0], + { + "date": self.today, + "amount": "1000.00", + "ref": "Invoice 1", + "payment_ref": ( + "1234567890: Payment for Invoice(s) 1 (partner@example.com)" + ), + "partner_name": "Acme, Inc.", + "unique_import_id": f"1234567890-{self.today_timestamp}", + }, + ) + + def test_transaction_parse_2(self): + lines = self.paypal_parse_transaction( + f"""{{ + "transaction_info": {{ + "paypal_account_id": "1234567890", + "transaction_id": "1234567890", + "transaction_event_code": "T1234", + "transaction_initiation_date": "{self.today_isoformat}", + "transaction_updated_date": "{self.today_isoformat}", + "transaction_amount": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "fee_amount": {{ + "currency_code": "USD", + "value": "0.00" + }}, + "transaction_status": "S", + "transaction_subject": "Payment for Invoice(s) 1", + "ending_balance": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "available_balance": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "invoice_id": "1" + }}, + "payer_info": {{ + "account_id": "1234567890", + "email_address": "partner@example.com", + "address_status": "Y", + "payer_status": "N", + "payer_name": {{ + "alternate_full_name": "Acme, Inc." + }}, + "country_code": "US" + }}, + "shipping_info": {{}}, + "cart_info": {{}}, + "store_info": {{}}, + "auction_info": {{}}, + "incentive_info": {{}} +}}""" + ) + self.assertEqual(len(lines), 1) + del lines[0]["raw_data"] + self.assertEqual( + lines[0], + { + "date": self.today, + "amount": "1000.00", + "ref": "Invoice 1", + "payment_ref": ( + "1234567890: Payment for Invoice(s) 1 (partner@example.com)" + ), + "partner_name": "Acme, Inc.", + "unique_import_id": f"1234567890-{self.today_timestamp}", + }, + ) + + def test_transaction_parse_3(self): + lines = self.paypal_parse_transaction( + f"""{{ + "transaction_info": {{ + "paypal_account_id": "1234567890", + "transaction_id": "1234567890", + "transaction_event_code": "T1234", + "transaction_initiation_date": "{self.today_isoformat}", + "transaction_updated_date": "{self.today_isoformat}", + "transaction_amount": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "fee_amount": {{ + "currency_code": "USD", + "value": "-100.00" + }}, + "transaction_status": "S", + "transaction_subject": "Payment for Invoice(s) 1", + "ending_balance": {{ + "currency_code": "USD", + "value": "900.00" + }}, + "available_balance": {{ + "currency_code": "USD", + "value": "900.00" + }}, + "invoice_id": "1" + }}, + "payer_info": {{ + "account_id": "1234567890", + "email_address": "partner@example.com", + "address_status": "Y", + "payer_status": "N", + "payer_name": {{ + "alternate_full_name": "Acme, Inc." + }}, + "country_code": "US" + }}, + "shipping_info": {{}}, + "cart_info": {{}}, + "store_info": {{}}, + "auction_info": {{}}, + "incentive_info": {{}} +}}""" + ) + self.assertEqual(len(lines), 2) + del lines[0]["raw_data"] + self.assertEqual( + lines[0], + { + "date": self.today, + "amount": "1000.00", + "ref": "Invoice 1", + "payment_ref": ( + "1234567890: Payment for Invoice(s) 1 (partner@example.com)" + ), + "partner_name": "Acme, Inc.", + "unique_import_id": f"1234567890-{self.today_timestamp}", + }, + ) + self.assertEqual( + lines[1], + { + "date": self.today, + "amount": "-100.00", + "ref": "Fee for Invoice 1", + "payment_ref": ( + "Transaction fee for 1234567890: Payment for Invoice(s) 1 " + "(partner@example.com)" + ), + "partner_name": "PayPal", + "unique_import_id": f"1234567890-{self.today_timestamp}-FEE", + }, + ) + + def test_transaction_parse_4(self): + lines = self.paypal_parse_transaction( + f"""{{ + "transaction_info": {{ + "paypal_account_id": "1234567890", + "transaction_id": "1234567890", + "transaction_event_code": "T1234", + "transaction_initiation_date": "{self.today_isoformat}", + "transaction_updated_date": "{self.today_isoformat}", + "transaction_amount": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "transaction_status": "S", + "transaction_subject": "Payment for Invoice(s) 1", + "ending_balance": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "available_balance": {{ + "currency_code": "USD", + "value": "1000.00" + }}, + "invoice_id": "1" + }}, + "payer_info": {{ + "account_id": "1234567890", + "email_address": "partner@example.com", + "address_status": "Y", + "payer_status": "N", + "payer_name": {{ + "alternate_full_name": "Acme, Inc." + }}, + "country_code": "US" + }}, + "shipping_info": {{}}, + "cart_info": {{}}, + "store_info": {{}}, + "auction_info": {{}}, + "incentive_info": {{}} +}}""" + ) + self.assertEqual(len(lines), 1) + del lines[0]["raw_data"] + self.assertEqual( + lines[0], + { + "date": self.today, + "amount": "1000.00", + "ref": "Invoice 1", + "payment_ref": ( + "1234567890: Payment for Invoice(s) 1 (partner@example.com)" + ), + "partner_name": "Acme, Inc.", + "unique_import_id": f"1234567890-{self.today_timestamp}", + }, + ) diff --git a/account_statement_import_online_paypal/views/online_bank_statement_provider.xml b/account_statement_import_online_paypal/views/online_bank_statement_provider.xml new file mode 100644 index 000000000..f0f5c0f6f --- /dev/null +++ b/account_statement_import_online_paypal/views/online_bank_statement_provider.xml @@ -0,0 +1,40 @@ + + + + + online.bank.statement.provider.form + online.bank.statement.provider + + + + + + + + + + + + + +