diff --git a/account_statement_import_paypal/README.rst b/account_statement_import_paypal/README.rst new file mode 100644 index 00000000..4cfb163b --- /dev/null +++ b/account_statement_import_paypal/README.rst @@ -0,0 +1,125 @@ +======================================== +PayPal CSV Format Bank Statements Import +======================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/14.0/account_statement_import_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-14-0/bank-statement-import-14-0-account_statement_import_paypal + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/174/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to import the PayPal CSV files in Odoo as bank +statements. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To adjust PayPal report columns mapping: + +#. Open *Invoicing > Configuration > Accounting > PayPal Report Mappings* +#. Modify mapping(s) according to your CSV reports format. + +Usage +===== + +To import statements from PayPal via Statement report: + +#. Go to `PayPal `__ +#. Open *Statements* and select *Monthly* or *Custom* +#. Select date range of interest and click *Request* under *CSV* column +#. Wait for statement report to be generated +#. Download it and save to a file +#. Go to Odoo and and import saved statement file, selecting corresponding format + +To import statements from PayPal via Activity report: + +#. Go to `PayPal `__ +#. Open *Activity download* +#. Set *Transaction type* to *Balance affecting* +#. Set *Format* to *CSV* +#. Select date range of interest and click *Create report* +#. Wait for activity report to be generated +#. Download it and save to a file +#. Go to Odoo and and import saved statement file, selecting corresponding format + +Changelog +========= + +12.0.2.0.0 +~~~~~~~~~~ + +* [BREAKING] New mapping, please review mappings after upgrade. +* [BREAKING] Different bank accounts have to be used per each currency. +* [ADD] Support for both Statement and Activity reports. +* [ADD] Separate fee and currency exchange parsing. + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion +* CorporateHub + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre +* Sebastien BEAU +* Tecnativa (https://www.tecnativa.com) + + * Vicent Cubells + * Victor M.M. Torres + * Carlos Roca + +* Alexey Pelykh (`CorporateHub `__) + +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. + +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_paypal/__init__.py b/account_statement_import_paypal/__init__.py new file mode 100644 index 00000000..adc6207f --- /dev/null +++ b/account_statement_import_paypal/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models +from . import wizards diff --git a/account_statement_import_paypal/__manifest__.py b/account_statement_import_paypal/__manifest__.py new file mode 100644 index 00000000..005d7e87 --- /dev/null +++ b/account_statement_import_paypal/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright 2014-2017 Akretion (http://www.akretion.com). +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019-2020 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "PayPal CSV Format Bank Statements Import", + "summary": "Import PayPal CSV files as Bank Statements in Odoo", + "version": "15.0.1.0.0", + "category": "Accounting", + "website": "https://github.com/OCA/bank-statement-import", + "author": "Akretion, CorporateHub, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": [ + "account_statement_import", + "multi_step_wizard", + "web_widget_dropdown_dynamic", + ], + "data": [ + "security/ir.model.access.csv", + "data/maps.xml", + "views/account_statement_import_paypal_mapping.xml", + "views/account_statement_import.xml", + "wizards/account_statement_import_paypal_mapping_wizard.xml", + ], +} diff --git a/account_statement_import_paypal/data/maps.xml b/account_statement_import_paypal/data/maps.xml new file mode 100644 index 00000000..ea53c03b --- /dev/null +++ b/account_statement_import_paypal/data/maps.xml @@ -0,0 +1,149 @@ + + + + + PayPal Statement (EN) + comma + dot + %m/%d/%Y + %H:%M:%S + Date + Time + Time Zone + Name + Currency + Gross + Fee + Balance + Transaction ID + Description + From Email Address + Invoice ID + Bank Name + Bank Account + + + PayPal Activity (EN) + comma + dot + %d/%m/%Y + %H:%M:%S + Date + Time + TimeZone + Name + Currency + Gross + Fee + Balance + Transaction ID + Type + From Email Address + To Email Address + Invoice ID + Subject + Note + + + PayPal Statement (ES) + dot + comma + %d/%m/%Y + %H:%M:%S + Fecha + Hora + Zona horaria + Nombre + Divisa + Bruto + Comisión + Saldo + Id. de transacción + Descripción + Correo electrónico del remitente + Id. de factura + Nombre del banco + Cuenta bancaria + + + PayPal Activity (ES) + dot + comma + %d/%m/%Y + %H:%M:%S + Fecha + Hora + Zona horaria + Nombre + Divisa + Bruto + Tarifa + Saldo + Id. de transacción + Tipo + Correo electrónico del remitente + Correo electrónico del destinatario + Número de factura + Asunto + Nota + + + PayPal Statement (DE) + dot + comma + %d.%m.%Y + %H:%M:%S + Datum + Uhrzeit + Zeitzone + Name + Währung + Brutto + Gebühr + Guthaben + Transaktionscode + Beschreibung + Absender E-Mail-Adresse + Rechnungsnummer + Name der Bank + Bankkonto + + + PayPal Activity (DE) + dot + comma + %d.%m.%Y + %H:%M:%S + Datum + Uhrzeit + Zeitzone + Name + Währung + Brutto + Gebühr + Guthaben + Transaktionscode + Typ + Absender E-Mail-Adresse + Empfänger E-Mail-Adresse + Rechnungsnummer + Betreff + Hinweis + + diff --git a/account_statement_import_paypal/i18n/account_statement_import_paypal.pot b/account_statement_import_paypal/i18n/account_statement_import_paypal.pot new file mode 100644 index 00000000..9730b327 --- /dev/null +++ b/account_statement_import_paypal/i18n/account_statement_import_paypal.pot @@ -0,0 +1,347 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__balance_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__balance_column +msgid "\"Balance\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_account_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_account_column +msgid "\"Bank Account\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_name_column +msgid "\"Bank Name\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__currency_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__currency_column +msgid "\"Currency\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__date_column +msgid "\"Date\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__description_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__description_column +msgid "\"Description\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__fee_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__fee_column +msgid "\"Fee\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__from_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__from_email_address_column +msgid "\"From Email Address\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__gross_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__gross_column +msgid "\"Gross\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__invoice_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__invoice_id_column +msgid "\"Invoice ID\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__name_column +msgid "\"Name\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__note_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__note_column +msgid "\"Note\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__subject_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__subject_column +msgid "\"Subject\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__time_column +msgid "\"Time\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__tz_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__tz_column +msgid "\"Timezone\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__to_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__to_email_address_column +msgid "\"To Email Address\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__transaction_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__transaction_id_column +msgid "\"Transaction ID\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__type_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__type_column +msgid "\"Type\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "%s: %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping +msgid "Account Statement Import PayPal Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping_wizard +msgid "Account Statement Import PayPal Mapping Wizard" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_parser +msgid "Account Statement Import PayPal Parser" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__allow_back +msgid "Allow Back" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Choose a file to import..." +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_tree +msgid "Columns" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_uid +msgid "Created by" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_date +msgid "Created on" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_format +msgid "Date Format" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_decimal_sep +msgid "Decimals Separator" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Fee for %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__filename +msgid "Filename" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__header +msgid "Header" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Import" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_account_statement_import_paypal_mapping_wizard +msgid "Import Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Imported Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Invoice %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Mapping from %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name +msgid "Name" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__data_file +msgid "PayPal Report File" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_statement_import_paypal_report_mappings +#: model:ir.ui.menu,name:account_statement_import_paypal.menu_statement_import_paypal_mapping +msgid "PayPal Report Mappings" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_form +msgid "PayPal Report mapping:" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__paypal_mapping_id +msgid "PayPal mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Select a PayPal report file to import mapping." +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__state +msgid "State" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_thousands_sep +msgid "Thousands Separator" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_format +msgid "Time Format" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__comma +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__comma +msgid "comma (,)" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__dot +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__dot +msgid "dot (.)" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__none +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__none +msgid "none" +msgstr "" diff --git a/account_statement_import_paypal/i18n/es.po b/account_statement_import_paypal/i18n/es.po new file mode 100644 index 00000000..29d99ac4 --- /dev/null +++ b/account_statement_import_paypal/i18n/es.po @@ -0,0 +1,356 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-07-13 07:52+0000\n" +"PO-Revision-Date: 2021-07-13 09:53+0200\n" +"Last-Translator: Carlos \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 2.0.6\n" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__balance_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__balance_column +msgid "\"Balance\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_account_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_account_column +msgid "\"Bank Account\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_name_column +msgid "\"Bank Name\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__currency_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__currency_column +msgid "\"Currency\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__date_column +msgid "\"Date\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__description_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__description_column +msgid "\"Description\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__fee_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__fee_column +msgid "\"Fee\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__from_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__from_email_address_column +msgid "\"From Email Address\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__gross_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__gross_column +msgid "\"Gross\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__invoice_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__invoice_id_column +msgid "\"Invoice ID\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__name_column +msgid "\"Name\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__note_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__note_column +msgid "\"Note\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__subject_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__subject_column +msgid "\"Subject\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__time_column +msgid "\"Time\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__tz_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__tz_column +msgid "\"Timezone\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__to_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__to_email_address_column +msgid "\"To Email Address\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__transaction_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__transaction_id_column +msgid "\"Transaction ID\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__type_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__type_column +msgid "\"Type\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "%s: %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping +msgid "Account Statement Import PayPal Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping_wizard +msgid "Account Statement Import PayPal Mapping Wizard" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_parser +msgid "Account Statement Import PayPal Parser" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__allow_back +msgid "Allow Back" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Choose a file to import..." +msgstr "Escoja un archivo a importar..." + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_tree +msgid "Columns" +msgstr "Columnas" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_uid +msgid "Created by" +msgstr "Creado el" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_date +msgid "Created on" +msgstr "Creado por" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_format +msgid "Date Format" +msgstr "Formato de fecha" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_decimal_sep +msgid "Decimals Separator" +msgstr "Separador de decimales" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Fee for %s" +msgstr "Tasa para %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__filename +msgid "Filename" +msgstr "Nombre de archivo" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__header +msgid "Header" +msgstr "Cabecera" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__id +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Import" +msgstr "Importar" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import +#, fuzzy +#| msgid "Import Bank Statement" +msgid "Import Bank Statement Files" +msgstr "Importar Extracto Bancario" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_account_statement_import_paypal_mapping_wizard +msgid "Import Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Imported Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Invoice %s" +msgstr "Factura %s" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_journal +msgid "Journal" +msgstr "Diario" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Mapping from %s" +msgstr "Mapeo para %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name +msgid "Name" +msgstr "Nombre" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__data_file +msgid "PayPal Report File" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_statement_import_paypal_report_mappings +#: model:ir.ui.menu,name:account_statement_import_paypal.menu_statement_import_paypal_mapping +msgid "PayPal Report Mappings" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_form +msgid "PayPal Report mapping:" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__paypal_mapping_id +msgid "PayPal mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Select a PayPal report file to import mapping." +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__state +msgid "State" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_thousands_sep +msgid "Thousands Separator" +msgstr "Separador de millares" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_format +msgid "Time Format" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "Tasa de transacción para %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__comma +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__comma +msgid "comma (,)" +msgstr "coma (,)" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__dot +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__dot +msgid "dot (.)" +msgstr "punto (.)" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__none +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__none +msgid "none" +msgstr "nada" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" diff --git a/account_statement_import_paypal/i18n/es_AR.po b/account_statement_import_paypal/i18n/es_AR.po new file mode 100644 index 00000000..8a3444f8 --- /dev/null +++ b/account_statement_import_paypal/i18n/es_AR.po @@ -0,0 +1,350 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-01-09 05:40+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.3.2\n" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__balance_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__balance_column +msgid "\"Balance\" column" +msgstr "Columna \"Saldo\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_account_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_account_column +msgid "\"Bank Account\" column" +msgstr "Columna \"Cuenta Bancaria\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_name_column +msgid "\"Bank Name\" column" +msgstr "Columna \"Nombre del Banco\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__currency_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__currency_column +msgid "\"Currency\" column" +msgstr "Columna \"Moneda\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__date_column +msgid "\"Date\" column" +msgstr "Columna \"Fecha\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__description_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__description_column +msgid "\"Description\" column" +msgstr "Columna \"Descripción\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__fee_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__fee_column +msgid "\"Fee\" column" +msgstr "Columna \"Tarifa\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__from_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__from_email_address_column +msgid "\"From Email Address\" column" +msgstr "Columna \"De la Dirección de Email\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__gross_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__gross_column +msgid "\"Gross\" column" +msgstr "Columna \"Bruto\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__invoice_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__invoice_id_column +msgid "\"Invoice ID\" column" +msgstr "Columna \"ID de Factura\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__name_column +msgid "\"Name\" column" +msgstr "Columna \"Nombre\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__note_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__note_column +msgid "\"Note\" column" +msgstr "Columna \"Nota\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__subject_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__subject_column +msgid "\"Subject\" column" +msgstr "Columna \"Asunto\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__time_column +msgid "\"Time\" column" +msgstr "Columna \"Tiempo\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__tz_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__tz_column +msgid "\"Timezone\" column" +msgstr "Columna \"Zona Horaria\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__to_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__to_email_address_column +msgid "\"To Email Address\" column" +msgstr "Columna \"A la dirección de Email\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__transaction_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__transaction_id_column +msgid "\"Transaction ID\" column" +msgstr "Columna \"ID de la Transacción\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__type_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__type_column +msgid "\"Type\" column" +msgstr "Columna \"Tipo\"" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping +msgid "Account Statement Import PayPal Mapping" +msgstr "Importación del estado de cuenta Mapeo de PayPal" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping_wizard +msgid "Account Statement Import PayPal Mapping Wizard" +msgstr "Asistente para la Importación de estado de cuenta Mapeo de PayPal" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_parser +msgid "Account Statement Import PayPal Parser" +msgstr "Analizador de Importación de estado de cuenta de PayPal" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__allow_back +msgid "Allow Back" +msgstr "Permitir Volver" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Choose a file to import..." +msgstr "Elija un archivo para importar..." + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_tree +msgid "Columns" +msgstr "Columnas" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_format +msgid "Date Format" +msgstr "Formato de Fecha" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_decimal_sep +msgid "Decimals Separator" +msgstr "Separador de Decimales" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Fee for %s" +msgstr "Tarifa para %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__filename +msgid "Filename" +msgstr "Nombre de Archivo" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__header +msgid "Header" +msgstr "Cabecera" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__id +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Import" +msgstr "Importar" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "Importar Archivos de Extractos Bancarios" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_account_statement_import_paypal_mapping_wizard +msgid "Import Mapping" +msgstr "Importar Mapeo" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Imported Mapping" +msgstr "Mapeo Importado" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Invoice %s" +msgstr "Factura %s" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_journal +msgid "Journal" +msgstr "Diario" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Mapping from %s" +msgstr "Mapeo desde %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name +msgid "Name" +msgstr "Nombre" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__data_file +msgid "PayPal Report File" +msgstr "Archivo de Reporte de PayPal" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_statement_import_paypal_report_mappings +#: model:ir.ui.menu,name:account_statement_import_paypal.menu_statement_import_paypal_mapping +msgid "PayPal Report Mappings" +msgstr "Reporte de Mapeos de PayPal" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_form +msgid "PayPal Report mapping:" +msgstr "Reporte de mapeo de PayPal:" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__paypal_mapping_id +msgid "PayPal mapping" +msgstr "Mapeo de PayPal" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Select a PayPal report file to import mapping." +msgstr "Seleccione un archio de reporte de PayPal para importar un mapeo." + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__state +msgid "State" +msgstr "Estado" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_thousands_sep +msgid "Thousands Separator" +msgstr "Separador de miles" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_format +msgid "Time Format" +msgstr "Formato de Tiempo" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "Tarifa de transacción para %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__comma +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__comma +msgid "comma (,)" +msgstr "coma (,)" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__dot +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__dot +msgid "dot (.)" +msgstr "punto (.)" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__none +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__none +msgid "none" +msgstr "ninguno" diff --git a/account_statement_import_paypal/i18n/it.po b/account_statement_import_paypal/i18n/it.po new file mode 100644 index 00000000..07c930d8 --- /dev/null +++ b/account_statement_import_paypal/i18n/it.po @@ -0,0 +1,350 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_paypal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-01-02 11:48+0000\n" +"Last-Translator: Francesco Foresti \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" +"X-Generator: Weblate 4.14.1\n" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__balance_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__balance_column +msgid "\"Balance\" column" +msgstr "Colonna \"Saldo\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_account_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_account_column +msgid "\"Bank Account\" column" +msgstr "Colonna \"Conto banca\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__bank_name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__bank_name_column +msgid "\"Bank Name\" column" +msgstr "Colonna \"Nome banca\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__currency_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__currency_column +msgid "\"Currency\" column" +msgstr "Colonna \"Valuta\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__date_column +msgid "\"Date\" column" +msgstr "Colonna \"Data\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__description_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__description_column +msgid "\"Description\" column" +msgstr "Colonna \"Descrizione\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__fee_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__fee_column +msgid "\"Fee\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__from_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__from_email_address_column +msgid "\"From Email Address\" column" +msgstr "Colonna \"Da indirizzo e-mail\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__gross_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__gross_column +msgid "\"Gross\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__invoice_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__invoice_id_column +msgid "\"Invoice ID\" column" +msgstr "Colonna \"ID fattura\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__name_column +msgid "\"Name\" column" +msgstr "Colonna \"Nome\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__note_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__note_column +msgid "\"Note\" column" +msgstr "Colonna \"Note\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__subject_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__subject_column +msgid "\"Subject\" column" +msgstr "Colonna \"Oggetto\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__time_column +msgid "\"Time\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__tz_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__tz_column +msgid "\"Timezone\" column" +msgstr "Colonna \"Fuso orario\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__to_email_address_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__to_email_address_column +msgid "\"To Email Address\" column" +msgstr "Colonna \"A indirizzo e-mail\"" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__transaction_id_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__transaction_id_column +msgid "\"Transaction ID\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__type_column +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__type_column +msgid "\"Type\" column" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping +msgid "Account Statement Import PayPal Mapping" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_mapping_wizard +msgid "Account Statement Import PayPal Mapping Wizard" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import_paypal_parser +msgid "Account Statement Import PayPal Parser" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__allow_back +msgid "Allow Back" +msgstr "Consenti indietro" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Choose a file to import..." +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_tree +msgid "Columns" +msgstr "Colonne" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_uid +msgid "Created by" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__create_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__date_format +msgid "Date Format" +msgstr "Formato data" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_decimal_sep +msgid "Decimals Separator" +msgstr "Separatore decimali" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__display_name +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Fee for %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__filename +msgid "Filename" +msgstr "Nome file" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__header +msgid "Header" +msgstr "Intestazione" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__id +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__id +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Import" +msgstr "Importa" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "Importazione file estratto conto bancario" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_account_statement_import_paypal_mapping_wizard +msgid "Import Mapping" +msgstr "Importa mappatura" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Imported Mapping" +msgstr "Mappatura importata" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Invoice %s" +msgstr "Fattura %s" + +#. module: account_statement_import_paypal +#: model:ir.model,name:account_statement_import_paypal.model_account_journal +msgid "Journal" +msgstr "Registro" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard____last_update +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_uid +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__write_date +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_parser__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py:0 +#, python-format +msgid "Mapping from %s" +msgstr "Mappatura da %s" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__name +msgid "Name" +msgstr "Nome" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__data_file +msgid "PayPal Report File" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.actions.act_window,name:account_statement_import_paypal.action_statement_import_paypal_report_mappings +#: model:ir.ui.menu,name:account_statement_import_paypal.menu_statement_import_paypal_mapping +msgid "PayPal Report Mappings" +msgstr "" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_form +msgid "PayPal Report mapping:" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import__paypal_mapping_id +msgid "PayPal mapping" +msgstr "Mappatura PayPal" + +#. module: account_statement_import_paypal +#: model_terms:ir.ui.view,arch_db:account_statement_import_paypal.account_statement_import_paypal_mapping_wizard_form +msgid "Select a PayPal report file to import mapping." +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping_wizard__state +msgid "State" +msgstr "Stato" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__float_thousands_sep +msgid "Thousands Separator" +msgstr "Separatore migliaia" + +#. module: account_statement_import_paypal +#: model:ir.model.fields,field_description:account_statement_import_paypal.field_account_statement_import_paypal_mapping__time_format +msgid "Time Format" +msgstr "" + +#. module: account_statement_import_paypal +#: code:addons/account_statement_import_paypal/models/account_statement_import_paypal_parser.py:0 +#, python-format +msgid "Transaction fee for %s" +msgstr "" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__comma +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__comma +msgid "comma (,)" +msgstr "virgola (,)" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__dot +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__dot +msgid "dot (.)" +msgstr "punto (.)" + +#. module: account_statement_import_paypal +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_decimal_sep__none +#: model:ir.model.fields.selection,name:account_statement_import_paypal.selection__account_statement_import_paypal_mapping__float_thousands_sep__none +msgid "none" +msgstr "nessuno" diff --git a/account_statement_import_paypal/migrations/14.0.1.0.0/pre-migrate.py b/account_statement_import_paypal/migrations/14.0.1.0.0/pre-migrate.py new file mode 100644 index 00000000..baf76a8b --- /dev/null +++ b/account_statement_import_paypal/migrations/14.0.1.0.0/pre-migrate.py @@ -0,0 +1,40 @@ +# Copyright 2021 Tecnativa - Carlos Roca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + +_model_renames = [ + ( + "account.bank.statement.import.paypal.mapping", + "account.statement.import.paypal.mapping", + ), + ( + "account.bank.statement.import.paypal.parser", + "account.statement.import.paypal.parser", + ), + ( + "account.bank.statement.import.paypal.mapping.wizard", + "account.statement.import.paypal.mapping.wizard", + ), +] + +_table_renames = [ + ( + "account_bank_statement_import_paypal_mapping", + "account_statement_import_paypal_mapping", + ), + ( + "account_bank_statement_import_paypal_parser", + "account_statement_import_paypal_parser", + ), + ( + "account_bank_statement_import_paypal_mapping_wizard", + "account_statement_import_paypal_mapping_wizard", + ), +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.rename_models(env.cr, _model_renames) + openupgrade.rename_tables(env.cr, _table_renames) diff --git a/account_statement_import_paypal/models/__init__.py b/account_statement_import_paypal/models/__init__.py new file mode 100644 index 00000000..2243fca6 --- /dev/null +++ b/account_statement_import_paypal/models/__init__.py @@ -0,0 +1,6 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import account_statement_import_paypal_mapping +from . import account_statement_import_paypal_parser +from . import account_statement_import +from . import account_journal diff --git a/account_statement_import_paypal/models/account_journal.py b/account_statement_import_paypal/models/account_journal.py new file mode 100644 index 00000000..14a519f2 --- /dev/null +++ b/account_statement_import_paypal/models/account_journal.py @@ -0,0 +1,15 @@ +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class AccountJournal(models.Model): + _inherit = "account.journal" + + def _get_bank_statements_available_import_formats(self): + res = super()._get_bank_statements_available_import_formats() + res.append("PayPal Reports") + return res diff --git a/account_statement_import_paypal/models/account_statement_import.py b/account_statement_import_paypal/models/account_statement_import.py new file mode 100644 index 00000000..fe676825 --- /dev/null +++ b/account_statement_import_paypal/models/account_statement_import.py @@ -0,0 +1,36 @@ +# Copyright 2014-2017 Akretion (http://www.akretion.com). +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import logging + +from odoo import fields, models + +_logger = logging.getLogger(__name__) + + +class AccountStatementImport(models.TransientModel): + _inherit = "account.statement.import" + + paypal_mapping_id = fields.Many2one( + string="PayPal mapping", + comodel_name="account.statement.import.paypal.mapping", + ) + + def _parse_file(self, data_file): + self.ensure_one() + try: + Parser = self.env["account.statement.import.paypal.parser"] + logging.warning( + Parser.parse(self.paypal_mapping_id, data_file, self.statement_filename) + ) + return Parser.parse( + self.paypal_mapping_id, data_file, self.statement_filename + ) + except Exception: + if self.env.context.get("account_statement_import_paypal_test"): + raise + _logger.warning("PayPal parser error", exc_info=True) + return super()._parse_file(data_file) diff --git a/account_statement_import_paypal/models/account_statement_import_paypal_mapping.py b/account_statement_import_paypal/models/account_statement_import_paypal_mapping.py new file mode 100644 index 00000000..77a73428 --- /dev/null +++ b/account_statement_import_paypal/models/account_statement_import_paypal_mapping.py @@ -0,0 +1,122 @@ +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountBankStatementImportPayPalMapping(models.Model): + _name = "account.statement.import.paypal.mapping" + _description = "Account Statement Import PayPal Mapping" + + name = fields.Char( + required=True, + ) + float_thousands_sep = fields.Selection( + string="Thousands Separator", + selection=[("dot", "dot (.)"), ("comma", "comma (,)"), ("none", "none")], + default="dot", + required=True, + ) + float_decimal_sep = fields.Selection( + string="Decimals Separator", + selection=[("dot", "dot (.)"), ("comma", "comma (,)"), ("none", "none")], + default="comma", + required=True, + ) + date_format = fields.Char( + required=True, + ) + time_format = fields.Char( + required=True, + ) + date_column = fields.Char( + string='"Date" column', + required=True, + ) + time_column = fields.Char( + string='"Time" column', + required=True, + ) + tz_column = fields.Char( + string='"Timezone" column', + required=True, + ) + name_column = fields.Char( + string='"Name" column', + required=True, + ) + currency_column = fields.Char( + string='"Currency" column', + required=True, + ) + gross_column = fields.Char( + string='"Gross" column', + required=True, + ) + fee_column = fields.Char( + string='"Fee" column', + required=True, + ) + balance_column = fields.Char( + string='"Balance" column', + required=True, + ) + transaction_id_column = fields.Char( + string='"Transaction ID" column', + required=True, + ) + description_column = fields.Char( + string='"Description" column', + ) + type_column = fields.Char( + string='"Type" column', + ) + from_email_address_column = fields.Char( + string='"From Email Address" column', + ) + to_email_address_column = fields.Char( + string='"To Email Address" column', + ) + invoice_id_column = fields.Char( + string='"Invoice ID" column', + ) + subject_column = fields.Char( + string='"Subject" column', + ) + note_column = fields.Char( + string='"Note" column', + ) + bank_name_column = fields.Char( + string='"Bank Name" column', + ) + bank_account_column = fields.Char( + string='"Bank Account" column', + ) + + @api.onchange("float_thousands_sep") + def onchange_thousands_separator(self): + if "dot" == self.float_thousands_sep == self.float_decimal_sep: + self.float_decimal_sep = "comma" + elif "comma" == self.float_thousands_sep == self.float_decimal_sep: + self.float_decimal_sep = "dot" + + @api.onchange("float_decimal_sep") + def onchange_decimal_separator(self): + if "dot" == self.float_thousands_sep == self.float_decimal_sep: + self.float_thousands_sep = "comma" + elif "comma" == self.float_thousands_sep == self.float_decimal_sep: + self.float_thousands_sep = "dot" + + def _get_float_separators(self): + self.ensure_one() + separators = { + "dot": ".", + "comma": ",", + "none": "", + } + return ( + separators[self.float_thousands_sep], + separators[self.float_decimal_sep], + ) diff --git a/account_statement_import_paypal/models/account_statement_import_paypal_parser.py b/account_statement_import_paypal/models/account_statement_import_paypal_parser.py new file mode 100644 index 00000000..f930d277 --- /dev/null +++ b/account_statement_import_paypal/models/account_statement_import_paypal_parser.py @@ -0,0 +1,250 @@ +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import itertools +import logging +from datetime import datetime +from decimal import Decimal +from io import StringIO +from os import path + +from pytz import timezone, utc + +from odoo import _, api, models + +_logger = logging.getLogger(__name__) + +try: + from csv import reader +except (ImportError, IOError) as err: + _logger.error(err) + + +class AccountBankStatementImportPayPalParser(models.TransientModel): + _name = "account.statement.import.paypal.parser" + _description = "Account Statement Import PayPal Parser" + + @api.model + def parse_header(self, data_file): + data = StringIO(data_file.decode("utf-8-sig")) + csv_data = reader(data) + return list(next(csv_data)) + + @api.model + def parse(self, mapping, data_file, filename): + journal = self.env["account.journal"].browse(self.env.context.get("journal_id")) + currency_code = (journal.currency_id or journal.company_id.currency_id).name + account_number = journal.bank_account_id.acc_number + + name = _("%(code)s: %(path)s") % { + "code": journal.code, + "path": path.basename(filename), + } + lines = self._parse_lines(mapping, data_file, currency_code) + if not lines: + return currency_code, account_number, [{"name": name, "transactions": []}] + + lines = list(sorted(lines, key=lambda line: line["timestamp"])) + first_line = lines[0] + balance_start = first_line["balance_amount"] + balance_start -= first_line["gross_amount"] + balance_start -= first_line["fee_amount"] + last_line = lines[-1] + balance_end = last_line["balance_amount"] + + transactions = list( + itertools.chain.from_iterable( + map(lambda line: self._convert_line_to_transactions(line), lines) + ) + ) + + return ( + currency_code, + account_number, + [ + { + "name": name, + "date": first_line["timestamp"].date(), + "balance_start": float(balance_start), + "balance_end_real": float(balance_end), + "transactions": transactions, + } + ], + ) + + def _data_dict_constructor(self, mapping, header): + required_list = [ + "date_column", + "time_column", + "tz_column", + "name_column", + "currency_column", + "gross_column", + "fee_column", + "balance_column", + "transaction_id_column", + ] + optional_list = [ + "description_column", + "type_column", + "from_email_address_column", + "to_email_address_column", + "invoice_id_column", + "subject_column", + "note_column", + "bank_name_column", + "bank_account_column", + ] + data_dict = {} + for key in required_list: + data_dict[key] = header.index(getattr(mapping, key)) + for key in optional_list: + try: + data_dict[key] = header.index(getattr(mapping, key)) + except ValueError: + data_dict[key] = None + return data_dict + + def _parse_lines(self, mapping, data_file, currency_code): + data = StringIO(data_file.decode("utf-8-sig")) + csv_data = reader(data) + + header = list(next(csv_data)) + data_dict = self._data_dict_constructor(mapping, header) + + return self._calculate_lines(csv_data, data_dict, mapping, currency_code) + + def _calculate_lines(self, csv_data, data_dict, mapping, currency_code): + lines = [] + for row in csv_data: + row = list(row) + dict_values = {} + for key in data_dict: + dict_values[key] = ( + row[data_dict.get(key)] if data_dict.get(key) is not None else None + ) + if dict_values.get("currency_column") != currency_code: + continue + + date = datetime.strptime( + dict_values.get("date_column"), mapping.date_format + ).date() + time = datetime.strptime( + dict_values.get("time_column"), mapping.time_format + ).time() + timestamp = datetime.combine(date, time) + tz_value = self._normalize_tz(dict_values.get("tz_column")) + tz = timezone(tz_value) + timestamp = timestamp.replace(tzinfo=tz) + timestamp = timestamp.astimezone(utc).replace(tzinfo=None) + gross_amount = self._parse_decimal(dict_values.get("gross_column"), mapping) + fee_amount = self._parse_decimal(dict_values.get("fee_column"), mapping) + balance_amount = self._parse_decimal( + dict_values.get("balance_column"), mapping + ) + bank = ( + "{} - {}".format( + dict_values.get("bank_name_column"), + dict_values.get("bank_account_column"), + ) + if dict_values.get("bank_name_column") + and dict_values.get("bank_account_column") + else None + ) + if data_dict.get("to_email_address_column") is None: + payer_email = dict_values.get("from_email_address_column") + else: + payer_email = ( + dict_values.get("to_email_address_column") + if gross_amount < 0.0 + else dict_values.get("from_email_address_column") + ) + + lines.append( + { + "transaction_id": dict_values.get("transaction_id_column"), + "invoice": dict_values.get("invoice_id_column"), + "description": dict_values.get("description_column") + or dict_values.get("type_column"), + "details": dict_values.get("subject_column") + or dict_values.get("note_column") + or bank, + "timestamp": timestamp, + "gross_amount": gross_amount, + "fee_amount": fee_amount, + "balance_amount": balance_amount, + "payer_name": dict_values.get("name_column"), + "payer_email": payer_email, + "partner_bank_name": dict_values.get("bank_name_column"), + "partner_bank_account": dict_values.get("bank_account_column"), + } + ) + return lines + + @api.model + def _convert_line_to_transactions(self, line): + transactions = [] + + transaction_id = line["transaction_id"] + invoice = line["invoice"] + description = line["description"] + details = line["details"] + timestamp = line["timestamp"] + gross_amount = line["gross_amount"] + fee_amount = line["fee_amount"] + payer_name = line["payer_name"] + payer_email = line["payer_email"] + partner_bank_account = line["partner_bank_account"] + + if invoice: + invoice = _("Invoice %s") % invoice + note = "{} {}".format(description, transaction_id) + if details: + note += ": %s" % details + if payer_email: + note += " (%s)" % payer_email + + unique_import_id = "{}-{}".format(transaction_id, int(timestamp.timestamp())) + name = (invoice or details or description or "",) + transaction = { + "name": invoice or details or description or "", + "amount": str(gross_amount), + "date": timestamp, + "payment_ref": note, + "unique_import_id": unique_import_id, + } + if payer_name: + line.update({"partner_name": payer_name}) + if partner_bank_account: + line.update({"account_number": partner_bank_account}) + transactions.append(transaction) + + if fee_amount: + transactions.append( + { + "name": _("Fee for %s") % (name or transaction_id), + "amount": str(fee_amount), + "date": timestamp, + "partner_name": "PayPal", + "unique_import_id": "%s-FEE" % unique_import_id, + "payment_ref": _("Transaction fee for %s") % note, + } + ) + return transactions + + @api.model + def _parse_decimal(self, value, mapping): + thousands, decimal = mapping._get_float_separators() + value = value.replace(thousands, "") + value = value.replace(decimal, ".") + return Decimal(value) + + @api.model + def _normalize_tz(self, value): + if value in ["PDT", "PST"]: + return "America/Los_Angeles" + elif value in ["CET", "CEST"]: + return "Europe/Paris" + return value diff --git a/account_statement_import_paypal/readme/CONFIGURE.rst b/account_statement_import_paypal/readme/CONFIGURE.rst new file mode 100644 index 00000000..f8dc1215 --- /dev/null +++ b/account_statement_import_paypal/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +To adjust PayPal report columns mapping: + +#. Open *Invoicing > Configuration > Accounting > PayPal Report Mappings* +#. Modify mapping(s) according to your CSV reports format. diff --git a/account_statement_import_paypal/readme/CONTRIBUTORS.rst b/account_statement_import_paypal/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..772d5859 --- /dev/null +++ b/account_statement_import_paypal/readme/CONTRIBUTORS.rst @@ -0,0 +1,10 @@ +* Alexis de Lattre +* Sebastien BEAU +* Tecnativa (https://www.tecnativa.com) + + * Vicent Cubells + * Victor M.M. Torres + * Carlos Roca + +* Alexey Pelykh (`CorporateHub `__) +* Manuel Regidor diff --git a/account_statement_import_paypal/readme/DESCRIPTION.rst b/account_statement_import_paypal/readme/DESCRIPTION.rst new file mode 100644 index 00000000..2c29a68f --- /dev/null +++ b/account_statement_import_paypal/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows you to import the PayPal CSV files in Odoo as bank +statements. diff --git a/account_statement_import_paypal/readme/HISTORY.rst b/account_statement_import_paypal/readme/HISTORY.rst new file mode 100644 index 00000000..fe7b1add --- /dev/null +++ b/account_statement_import_paypal/readme/HISTORY.rst @@ -0,0 +1,7 @@ +12.0.2.0.0 +~~~~~~~~~~ + +* [BREAKING] New mapping, please review mappings after upgrade. +* [BREAKING] Different bank accounts have to be used per each currency. +* [ADD] Support for both Statement and Activity reports. +* [ADD] Separate fee and currency exchange parsing. diff --git a/account_statement_import_paypal/readme/USAGE.rst b/account_statement_import_paypal/readme/USAGE.rst new file mode 100644 index 00000000..e33079a6 --- /dev/null +++ b/account_statement_import_paypal/readme/USAGE.rst @@ -0,0 +1,19 @@ +To import statements from PayPal via Statement report: + +#. Go to `PayPal `__ +#. Open *Statements* and select *Monthly* or *Custom* +#. Select date range of interest and click *Request* under *CSV* column +#. Wait for statement report to be generated +#. Download it and save to a file +#. Go to Odoo and and import saved statement file, selecting corresponding format + +To import statements from PayPal via Activity report: + +#. Go to `PayPal `__ +#. Open *Activity download* +#. Set *Transaction type* to *Balance affecting* +#. Set *Format* to *CSV* +#. Select date range of interest and click *Create report* +#. Wait for activity report to be generated +#. Download it and save to a file +#. Go to Odoo and and import saved statement file, selecting corresponding format diff --git a/account_statement_import_paypal/security/ir.model.access.csv b/account_statement_import_paypal/security/ir.model.access.csv new file mode 100644 index 00000000..c3ae9c75 --- /dev/null +++ b/account_statement_import_paypal/security/ir.model.access.csv @@ -0,0 +1,5 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_account_statement_import_paypal_mapping_manager","account.statement.import.paypal.mapping:account.group_account_manager","model_account_statement_import_paypal_mapping","account.group_account_manager","1","1","1","1" +"access_account_statement_import_paypal_mapping_user","account.statement.import.paypal.mapping:account.group_account_user","model_account_statement_import_paypal_mapping","account.group_account_user","1","0","0","0" +"access_account_statement_import_paypal_parser","account.statement.import.paypal.parser:account.group_account_user","model_account_statement_import_paypal_parser","account.group_account_user","1","1","1","1" +"access_account_statement_import_paypal_mapping_wizard","Full access on account.statement.import.paypal.mapping.wizard","model_account_statement_import_paypal_mapping_wizard","account.group_account_user","1","1","1","1" diff --git a/account_statement_import_paypal/static/description/icon.png b/account_statement_import_paypal/static/description/icon.png new file mode 100644 index 00000000..5a237c23 Binary files /dev/null and b/account_statement_import_paypal/static/description/icon.png differ diff --git a/account_statement_import_paypal/static/description/index.html b/account_statement_import_paypal/static/description/index.html new file mode 100644 index 00000000..e5ee7756 --- /dev/null +++ b/account_statement_import_paypal/static/description/index.html @@ -0,0 +1,478 @@ + + + + + + +PayPal CSV Format Bank Statements Import + + + +
+

PayPal CSV Format Bank Statements Import

+ + +

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

+

This module allows you to import the PayPal CSV files in Odoo as bank +statements.

+

Table of contents

+ +
+

Configuration

+

To adjust PayPal report columns mapping:

+
    +
  1. Open Invoicing > Configuration > Accounting > PayPal Report Mappings
  2. +
  3. Modify mapping(s) according to your CSV reports format.
  4. +
+
+
+

Usage

+

To import statements from PayPal via Statement report:

+
    +
  1. Go to PayPal
  2. +
  3. Open Statements and select Monthly or Custom
  4. +
  5. Select date range of interest and click Request under CSV column
  6. +
  7. Wait for statement report to be generated
  8. +
  9. Download it and save to a file
  10. +
  11. Go to Odoo and and import saved statement file, selecting corresponding format
  12. +
+

To import statements from PayPal via Activity report:

+
    +
  1. Go to PayPal
  2. +
  3. Open Activity download
  4. +
  5. Set Transaction type to Balance affecting
  6. +
  7. Set Format to CSV
  8. +
  9. Select date range of interest and click Create report
  10. +
  11. Wait for activity report to be generated
  12. +
  13. Download it and save to a file
  14. +
  15. Go to Odoo and and import saved statement file, selecting corresponding format
  16. +
+
+
+

Changelog

+
+

12.0.2.0.0

+
    +
  • [BREAKING] New mapping, please review mappings after upgrade.
  • +
  • [BREAKING] Different bank accounts have to be used per each currency.
  • +
  • [ADD] Support for both Statement and Activity reports.
  • +
  • [ADD] Separate fee and currency exchange parsing.
  • +
+
+
+
+

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 smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
  • 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.

+

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_paypal/tests/__init__.py b/account_statement_import_paypal/tests/__init__.py new file mode 100644 index 00000000..f3cab4c7 --- /dev/null +++ b/account_statement_import_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_paypal diff --git a/account_statement_import_paypal/tests/fixtures/activity_en.csv b/account_statement_import_paypal/tests/fixtures/activity_en.csv new file mode 100644 index 00000000..258dedd5 --- /dev/null +++ b/account_statement_import_paypal/tests/fixtures/activity_en.csv @@ -0,0 +1,77 @@ +"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Address Status","Sales Tax","Reference Txn ID","Invoice Number","Receipt ID","Balance","Contact Phone Number","Subject","Note" +"29/12/2015","07:45:51","PST","PARTNER1","General Payment","Completed","USD","84.00","-4.25","79.75","paypal@partner1.com","paypal@my-company.com","TID1","Non-Confirmed","","","","","79.75","","","" +"12/02/2016","13:30:31","PST","","User Initiated Currency Conversion","Completed","USD","-50.00","0.00","-50.00","paypal@my-company.com","","TID2","","","TID3","","","29.75","","","" +"12/02/2016","13:30:31","PST","","User Initiated Currency Conversion","Completed","EUR","43.34","0.00","43.34","","paypal@my-company.com","TID3","","","TID2","","","43.34","","","" +"09/06/2016","07:19:50","PDT","PARTNER2","Website Payment","Completed","USD","1,653.75","-73.07","1,580.68","paypal@partner2.com","paypal@my-company.com","TID4","Confirmed","","RTID1","31","RID1","1,610.43","","Payment to My Company for invoice 31","" +"22/06/2016","02:43:36","PDT","","General Currency Conversion","Completed","USD","-78.02","0.00","-78.02","paypal@my-company.com","","TID5","","0.00","TID7","PARTNER3-INV1","","1,532.41","","Shopping Cart","" +"22/06/2016","02:43:36","PDT","","General Currency Conversion","Completed","AUD","100.00","0.00","100.00","","paypal@my-company.com","TID6","","0.00","TID7","PARTNER3-INV1","","100.00","","Shopping Cart","" +"22/06/2016","02:43:36","PDT","PARTNER3","Website Payment","Completed","AUD","-100.00","0.00","-100.00","paypal@my-company.com","paypal@partner3.com","TID7","Non-Confirmed","0.00","","PARTNER3-INV1","","0.00","","Shopping Cart","" +"01/07/2016","12:23:59","PDT","PARTNER2","Website Payment","Completed","USD","2,602.50","-114.81","2,487.69","paypal@partner2.com","paypal@my-company.com","TID8","Confirmed","","RTID2","33","RID2","4,020.10","","Payment to My Company for invoice 33","" +"06/07/2016","08:17:57","PDT","PARTNER2","Website Payment","Completed","USD","4,466.50","-196.83","4,269.67","paypal@partner2.com","paypal@my-company.com","TID9","Confirmed","","RTID3","34","RID3","8,289.77","","Payment to My Company for invoice 34","" +"22/07/2016","12:15:13","PDT","PARTNER2","Website Payment","Completed","USD","6,245.50","-275.10","5,970.40","paypal@partner2.com","paypal@my-company.com","TID10","Confirmed","","RTID4","35","RID4","14,260.17","","Payment to My Company for invoice 35","" +"25/07/2016","01:47:56","PDT","","General Withdrawal","Pending","EUR","-12,431.37","0.00","-12,431.37","paypal@my-company.com","","TID11","","","","","","-12,388.03","","","" +"25/07/2016","01:47:56","PDT","","General Currency Conversion","Completed","USD","-14,000.00","0.00","-14,000.00","paypal@my-company.com","","TID12","","","TID11","","","260.17","","","" +"25/07/2016","01:47:56","PDT","","General Currency Conversion","Completed","EUR","12,431.37","0.00","12,431.37","","paypal@my-company.com","TID13","","","TID11","","","43.34","","","" +"26/07/2016","04:31:12","PDT","PARTNER4","Website Payment","Completed","USD","-195.00","0.00","-195.00","paypal@my-company.com","paypal@partner4.com","TID14","Non-Confirmed","0.00","","PARTNER4-INV1","","65.17","","Shopping Cart","" +"01/08/2016","15:11:56","PDT","PARTNER5","Website Payment","Completed","USD","2,616.25","-115.42","2,500.83","paypal@partner5.com","paypal@my-company.com","TID15","Confirmed","","RTID5","36","","2,566.00","","Payment to My Company for invoice 36","" +"15/08/2016","14:34:48","PDT","PARTNER2","Website Payment","Completed","USD","2,249.00","-99.26","2,149.74","paypal@partner2.com","paypal@my-company.com","TID16","Confirmed","","RTID6","37","RID5","4,715.74","","Payment to My Company for invoice 37","" +"24/08/2016","21:17:40","PDT","PARTNER5","Website Payment","Completed","USD","2,683.75","-118.39","2,565.36","paypal@partner5.com","paypal@my-company.com","TID17","Confirmed","","RTID7","38","","7,281.10","","Payment to My Company for invoice 38","" +"28/08/2016","23:18:09","PDT","","General Withdrawal","Pending","EUR","-6,248.60","0.00","-6,248.60","paypal@my-company.com","","TID18","","","","","","-6,205.26","","","" +"28/08/2016","23:18:09","PDT","","General Currency Conversion","Completed","USD","-7,200.00","0.00","-7,200.00","paypal@my-company.com","","TID19","","","TID18","","","81.10","","","" +"28/08/2016","23:18:09","PDT","","General Currency Conversion","Completed","EUR","6,248.60","0.00","6,248.60","","paypal@my-company.com","TID20","","","TID18","","","43.34","","","" +"29/08/2016","09:37:37","PDT","PARTNER2","Website Payment","Completed","USD","1,428.75","-63.17","1,365.58","paypal@partner2.com","paypal@my-company.com","TID21","Confirmed","","RTID8","40","RID6","1,446.68","","Payment to My Company for invoice 40","" +"29/08/2016","11:44:29","PDT","","General Withdrawal","Pending","EUR","-1,219.77","0.00","-1,219.77","paypal@my-company.com","","TID22","","","","","","-1,176.43","","","" +"29/08/2016","11:44:29","PDT","","General Currency Conversion","Completed","USD","-1,400.00","0.00","-1,400.00","paypal@my-company.com","","TID23","","","TID22","","","46.68","","","" +"29/08/2016","11:44:29","PDT","","General Currency Conversion","Completed","EUR","1,219.77","0.00","1,219.77","","paypal@my-company.com","TID24","","","TID22","","","43.34","","","" +"06/09/2016","20:33:20","PDT","PARTNER5","Website Payment","Completed","USD","4,439.05","-195.62","4,243.43","paypal@partner5.com","paypal@my-company.com","TID25","Confirmed","","RTID9","41","","4,290.11","","Payment to My Company for invoice 41","" +"06/09/2016","22:02:21","PDT","","General Withdrawal","Pending","EUR","-3,640.49","0.00","-3,640.49","paypal@my-company.com","","TID26","","","","","","-3,597.15","","","" +"06/09/2016","22:02:21","PDT","","General Currency Conversion","Completed","USD","-4,200.00","0.00","-4,200.00","paypal@my-company.com","","TID27","","","TID26","","","90.11","","","" +"06/09/2016","22:02:21","PDT","","General Currency Conversion","Completed","EUR","3,640.49","0.00","3,640.49","","paypal@my-company.com","TID28","","","TID26","","","43.34","","","" +"13/09/2016","20:01:45","PDT","PARTNER5","Website Payment","Completed","USD","2,967.50","-130.87","2,836.63","paypal@partner5.com","paypal@my-company.com","TID29","Confirmed","","RTID10","43","","2,926.74","","Payment to My Company for invoice 43","" +"14/09/2016","06:58:24","PDT","","General Withdrawal","Pending","EUR","-2,516.43","0.00","-2,516.43","paypal@my-company.com","","TID30","","","","","","-2,473.09","","","" +"14/09/2016","06:58:24","PDT","","General Currency Conversion","Completed","USD","-2,900.00","0.00","-2,900.00","paypal@my-company.com","","TID31","","","TID30","","","26.74","","","" +"14/09/2016","06:58:24","PDT","","General Currency Conversion","Completed","EUR","2,516.43","0.00","2,516.43","","paypal@my-company.com","TID32","","","TID30","","","43.34","","","" +"14/09/2016","16:53:38","PDT","PARTNER6","Website Payment","Completed","USD","603.75","-26.87","576.88","paypal@partner6.com","paypal@my-company.com","TID33","Confirmed","","RTID11","45","","603.62","","Payment to My Company for invoice 45","" +"15/09/2016","13:11:39","PDT","PARTNER2","Website Payment","Completed","USD","779.00","-34.58","744.42","paypal@partner2.com","paypal@my-company.com","TID34","Confirmed","","RTID12","44","RID7","1,348.04","","Payment to My Company for invoice 44","" +"24/09/2016","08:40:33","PDT","PARTNER6","Website Payment","Completed","USD","983.50","-43.57","939.93","paypal@partner6.com","paypal@my-company.com","TID35","Confirmed","","RTID13","50","","2,287.97","","Payment to My Company for invoice 50","" +"25/09/2016","13:34:51","PDT","PARTNER7","Website Payment","Completed","USD","3,920.00","-172.78","3,747.22","paypal@partner7.com","paypal@my-company.com","TID36","Non-Confirmed","","RTID14","47","","6,035.19","","Payment to My Company for invoice 47","" +"25/09/2016","13:34:51","PDT","","Payment Hold","Completed","USD","-3,747.22","0.00","-3,747.22","paypal@my-company.com","","TID37","","","TID36","47","","2,287.97","","","" +"26/09/2016","00:57:57","PDT","","General Withdrawal","Pending","EUR","-1,952.53","0.00","-1,952.53","paypal@my-company.com","","TID38","","","","","","-1,909.19","","","" +"26/09/2016","00:57:57","PDT","","General Currency Conversion","Completed","USD","-2,250.00","0.00","-2,250.00","paypal@my-company.com","","TID39","","","TID38","","","37.97","","","" +"26/09/2016","00:57:57","PDT","","General Currency Conversion","Completed","EUR","1,952.53","0.00","1,952.53","","paypal@my-company.com","TID40","","","TID38","","","43.34","","","" +"26/09/2016","21:36:04","PDT","PARTNER5","Website Payment","Completed","USD","3,623.75","-159.75","3,464.00","paypal@partner5.com","paypal@my-company.com","TID41","Confirmed","","RTID15","48","","3,501.97","","Payment to My Company for invoice 48","" +"26/09/2016","22:11:37","PDT","","General Withdrawal","Pending","EUR","-3,026.35","0.00","-3,026.35","paypal@my-company.com","","TID42","","","","","","-2,983.01","","","" +"26/09/2016","22:11:37","PDT","","General Currency Conversion","Completed","USD","-3,500.00","0.00","-3,500.00","paypal@my-company.com","","TID43","","","TID42","","","1.97","","","" +"26/09/2016","22:11:37","PDT","","General Currency Conversion","Completed","EUR","3,026.35","0.00","3,026.35","","paypal@my-company.com","TID44","","","TID42","","","43.34","","","" +"27/09/2016","15:58:17","PDT","PARTNER2","Website Payment","Completed","USD","1,985.25","-87.65","1,897.60","paypal@partner2.com","paypal@my-company.com","TID45","Confirmed","","RTID16","49","RID8","1,899.57","","Payment to My Company for invoice 49","" +"28/09/2016","13:38:43","PDT","","Payment Release","Completed","USD","3,747.22","0.00","3,747.22","","paypal@my-company.com","TID46","","","TID36","47","","5,646.79","","","" +"28/09/2016","15:39:16","PDT","","General Withdrawal","Pending","EUR","-4,904.75","0.00","-4,904.75","paypal@my-company.com","","TID47","","","","","","-4,861.41","","","" +"28/09/2016","15:39:16","PDT","","General Currency Conversion","Completed","USD","-5,640.00","0.00","-5,640.00","paypal@my-company.com","","TID48","","","TID47","","","6.79","","","" +"28/09/2016","15:39:16","PDT","","General Currency Conversion","Completed","EUR","4,904.75","0.00","4,904.75","","paypal@my-company.com","TID49","","","TID47","","","43.34","","","" +"11/10/2016","10:21:06","PDT","PARTNER2","Website Payment","Completed","USD","1,406.75","-52.35","1,354.40","paypal@partner2.com","paypal@my-company.com","TID50","Confirmed","","RTID17","53","RID9","1,361.19","","Payment to My Company for invoice 53","" +"17/10/2016","08:39:03","PDT","PARTNER8","Website Payment","Completed","USD","1,505.00","-55.99","1,449.01","paypal@partner8.com","paypal@my-company.com","TID51","Non-Confirmed","","RTID18","54","RID10","2,810.20","","Payment to My Company for invoice 54","" +"18/10/2016","21:40:10","PDT","PARTNER5","Website Payment","Completed","USD","5,973.40","-221.32","5,752.08","paypal@partner5.com","paypal@my-company.com","TID52","Confirmed","","RTID19","52","","8,562.28","","Payment to My Company for invoice 52","" +"24/10/2016","05:52:21","PDT","PARTNER6","Website Payment","Completed","USD","2,129.75","-79.10","2,050.65","paypal@partner6.com","paypal@my-company.com","TID53","Confirmed","","RTID20","55","","10,612.93","","Payment to My Company for invoice 55","" +"24/10/2016","06:32:13","PDT","","General Withdrawal","Pending","EUR","-9,484.13","0.00","-9,484.13","paypal@my-company.com","","TID54","","","","","","-9,440.79","","","" +"24/10/2016","06:32:13","PDT","","General Currency Conversion","Completed","USD","-10,600.00","0.00","-10,600.00","paypal@my-company.com","","TID55","","","TID54","","","12.93","","","" +"24/10/2016","06:32:13","PDT","","General Currency Conversion","Completed","EUR","9,484.13","0.00","9,484.13","","paypal@my-company.com","TID56","","","TID54","","","43.34","","","" +"25/10/2016","06:51:49","PDT","PARTNER7","Website Payment","Completed","USD","4,725.00","-175.13","4,549.87","paypal@partner7.com","paypal@my-company.com","TID57","Non-Confirmed","","RTID21","59","","4,562.80","","Payment to My Company for invoice 59","" +"27/10/2016","03:00:00","PDT","","General Withdrawal","Pending","EUR","-4,061.92","0.00","-4,061.92","paypal@my-company.com","","TID58","","","","","","-4,018.58","","","" +"27/10/2016","03:00:00","PDT","","General Currency Conversion","Completed","USD","-4,550.00","0.00","-4,550.00","paypal@my-company.com","","TID59","","","TID58","","","12.80","","","" +"27/10/2016","03:00:00","PDT","","General Currency Conversion","Completed","EUR","4,061.92","0.00","4,061.92","","paypal@my-company.com","TID60","","","TID58","","","43.34","","","" +"28/10/2016","09:28:14","PDT","PARTNER2","Website Payment","Completed","USD","3,140.75","-116.51","3,024.24","paypal@partner2.com","paypal@my-company.com","TID61","Confirmed","","RTID22","58","RID11","3,037.04","","Payment to My Company for invoice 58","" +"29/10/2016","04:07:58","PDT","","General Withdrawal","Pending","EUR","-2,668.56","0.00","-2,668.56","paypal@my-company.com","","TID62","","","","","","-2,625.22","","","" +"29/10/2016","04:07:58","PDT","","General Currency Conversion","Completed","USD","-3,000.00","0.00","-3,000.00","paypal@my-company.com","","TID63","","","TID62","","","37.04","","","" +"29/10/2016","04:07:58","PDT","","General Currency Conversion","Completed","EUR","2,668.56","0.00","2,668.56","","paypal@my-company.com","TID64","","","TID62","","","43.34","","","" +"31/10/2016","10:57:29","PDT","PARTNER9","Website Payment","Completed","USD","2,616.25","-97.10","2,519.15","paypal@partner9.com","paypal@my-company.com","TID65","Confirmed","","RTID23","62","","2,556.19","","Payment to My Company for invoice 62","" +"31/10/2016","11:05:15","PDT","","General Withdrawal","Pending","EUR","-2,267.68","0.00","-2,267.68","paypal@my-company.com","","TID66","","","","","","-2,224.34","","","" +"31/10/2016","11:05:15","PDT","","General Currency Conversion","Completed","USD","-2,550.00","0.00","-2,550.00","paypal@my-company.com","","TID67","","","TID66","","","6.19","","","" +"31/10/2016","11:05:15","PDT","","General Currency Conversion","Completed","EUR","2,267.68","0.00","2,267.68","","paypal@my-company.com","TID68","","","TID66","","","43.34","","","" +"01/11/2016","09:41:29","PDT","PARTNER6","Website Payment","Completed","USD","1,246.00","-46.40","1,199.60","paypal@partner6.com","paypal@my-company.com","TID69","Confirmed","","RTID24","61","","1,205.79","","Payment to My Company for invoice 61","" +"01/11/2016","09:50:01","PDT","","General Withdrawal","Pending","EUR","-1,063.52","0.00","-1,063.52","paypal@my-company.com","","TID70","","","","","","-1,020.18","","","" +"01/11/2016","09:50:01","PDT","","General Currency Conversion","Completed","USD","-1,200.00","0.00","-1,200.00","paypal@my-company.com","","TID71","","","TID70","","","5.79","","","" +"01/11/2016","09:50:01","PDT","","General Currency Conversion","Completed","EUR","1,063.52","0.00","1,063.52","","paypal@my-company.com","TID72","","","TID70","","","43.34","","","" +"01/11/2016","15:40:16","PDT","PARTNER5","Website Payment","Completed","USD","4,586.10","-169.99","4,416.11","paypal@partner5.com","paypal@my-company.com","TID73","Confirmed","","RTID25","57","","4,421.90","","Payment to My Company for invoice 57","" +"01/11/2016","18:39:27","PDT","","General Withdrawal","Pending","EUR","-3,897.58","0.00","-3,897.58","paypal@my-company.com","","TID74","","","","","","-3,854.24","","","" +"01/11/2016","18:39:27","PDT","","General Currency Conversion","Completed","USD","-4,420.00","0.00","-4,420.00","paypal@my-company.com","","TID75","","","TID74","","","1.90","","","" +"01/11/2016","18:39:27","PDT","","General Currency Conversion","Completed","EUR","3,897.58","0.00","3,897.58","","paypal@my-company.com","TID76","","","TID74","","","43.34","","","" diff --git a/account_statement_import_paypal/tests/fixtures/empty_activity.csv b/account_statement_import_paypal/tests/fixtures/empty_activity.csv new file mode 100644 index 00000000..1729ed77 --- /dev/null +++ b/account_statement_import_paypal/tests/fixtures/empty_activity.csv @@ -0,0 +1 @@ +"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Address Status","Sales Tax","Reference Txn ID","Invoice Number","Receipt ID","Balance","Contact Phone Number","Subject","Note" diff --git a/account_statement_import_paypal/tests/fixtures/statement_en.csv b/account_statement_import_paypal/tests/fixtures/statement_en.csv new file mode 100644 index 00000000..11fea15f --- /dev/null +++ b/account_statement_import_paypal/tests/fixtures/statement_en.csv @@ -0,0 +1,20 @@ +"Date","Time","Time Zone","Description","Currency","Gross","Fee","Net","Balance","Transaction ID","From Email Address","Name","Bank Name","Bank Account","Shipping and Handling Amount","Sales Tax","Invoice ID","Reference Txn ID" +"9/4/2018","21:15:11","America/Los_Angeles","General Withdrawal - Bank Account","EUR","-1,058.09","0.00","-1,058.09","-1,057.34","TID1","","","Bank A","6491","0.00","0.00","","" +"9/4/2018","21:15:11","America/Los_Angeles","General Currency Conversion","EUR","1,058.09","0.00","1,058.09","0.75","TID2","","","","","0.00","0.00","","TID1" +"9/11/2018","00:01:50","America/Los_Angeles","General Withdrawal - Bank Account","EUR","-3,105.58","0.00","-3,105.58","-3,104.83","TID3","","","Bank B","9169","0.00","0.00","","" +"9/11/2018","00:01:50","America/Los_Angeles","General Currency Conversion","EUR","3,105.58","0.00","3,105.58","0.75","TID4","","","","","0.00","0.00","","TID3" +"9/25/2018","04:22:39","America/Los_Angeles","General Withdrawal - Bank Account","EUR","-3,534.51","0.00","-3,534.51","-3,533.76","TID5","","","Bank B","9169","0.00","0.00","","" +"9/25/2018","04:22:39","America/Los_Angeles","General Currency Conversion","EUR","3,534.51","0.00","3,534.51","0.75","TID6","","","","","0.00","0.00","","TID5" +"9/27/2018","21:33:27","America/Los_Angeles","General Withdrawal - Bank Account","EUR","-9,648.13","0.00","-9,648.13","-9,647.38","TID7","","","Bank B","9169","0.00","0.00","","" +"9/27/2018","21:33:27","America/Los_Angeles","General Currency Conversion","EUR","9,648.13","0.00","9,648.13","0.75","TID8","","","","","0.00","0.00","","TID7" +"9/4/2018","20:44:10","America/Los_Angeles","Express Checkout Payment","USD","1,309.80","-48.76","1,261.04","1,261.93","TID9","paypal@partner1.com","Partner 1","","","0.00","0.00","361","" +"9/4/2018","21:15:11","America/Los_Angeles","General Currency Conversion","USD","-1,261.00","0.00","-1,261.00","0.93","TID10","","","","","0.00","0.00","","TID1" +"9/10/2018","17:48:19","America/Los_Angeles","Express Checkout Payment","USD","3,840.60","-142.40","3,698.20","3,699.13","TID11","paypal@partner2.com","Partner 2","","","0.00","0.00","362","" +"9/11/2018","00:01:50","America/Los_Angeles","General Currency Conversion","USD","-3,699.00","0.00","-3,699.00","0.13","TID12","","","","","0.00","0.00","","TID3" +"9/24/2018","16:41:01","America/Los_Angeles","Express Checkout Payment","USD","4,447.40","-164.85","4,282.55","4,282.68","TID13","paypal@partner2.com","Partner 2","","","0.00","0.00","363","" +"9/25/2018","04:22:39","America/Los_Angeles","General Currency Conversion","USD","-4,282.00","0.00","-4,282.00","0.68","TID14","","","","","0.00","0.00","","TID5" +"9/27/2018","18:15:34","America/Los_Angeles","Express Checkout Payment","USD","5,600.00","-207.50","5,392.50","5,393.18","TID15","paypal@partner3.com","Partner 3","","","0.00","0.00","366","" +"9/27/2018","18:16:12","CET","Express Checkout Payment","USD","920.70","-34.37","886.33","6,279.51","TID16","paypal@partner3.com","Partner 3","","","0.00","0.00","367","" +"9/27/2018","18:17:59","America/Los_Angeles","Express Checkout Payment","USD","5,600.00","-207.50","5,392.50","11,672.01","TID17","paypal@partner3.com","Partner 3","","","0.00","0.00","371","" +"9/27/2018","21:33:27","America/Los_Angeles","General Currency Conversion","USD","-11,672.00","0.00","-11,672.00","0.01","TID18","","","","","0.00","0.00","","TID7" +"9/30/2018","21:22:33","America/Los_Angeles","Express Checkout Payment","USD","292.30","-11.12","281.18","281.19","TID19","paypal@partner1.com","Partner 1","","","0.00","0.00","380","" diff --git a/account_statement_import_paypal/tests/fixtures/statement_es.csv b/account_statement_import_paypal/tests/fixtures/statement_es.csv new file mode 100644 index 00000000..5f01b116 --- /dev/null +++ b/account_statement_import_paypal/tests/fixtures/statement_es.csv @@ -0,0 +1,5 @@ +"Fecha","Hora","Zona horaria","Descripción","Divisa","Bruto","Comisión","Neto","Saldo","Id. de transacción","Correo electrónico del remitente","Nombre","Nombre del banco","Cuenta bancaria","Importe de envío y manipulación","Impuesto de ventas","Id. de factura","Id. de referencia de trans.",,,,,, +"2/1/2020","11:05:56","Europe/Berlin","Pago estándar","EUR","49,37","-1,78","47,59","4.626,81","TID1","paypal@partner1.com","Partner 1","","","0,00","0,00","","" +"2/1/2020","13:06:07","Europe/Berlin","Pago estándar","EUR","28,82","-1,19","27,63","4.654,44","TID2","paypal@partner2.com","Partner 2","","","0,00","0,00","","" +"2/1/2020","19:20:05","Europe/Berlin","Pago estándar","EUR","35,78","-1,39","34,39","4.688,83","TID3","paypal@partner3.com","Partner 3","","","0,00","0,00","","" +"3/1/2020","09:44:24","Europe/Berlin","Pago estándar","EUR","22,47","-1,00","21,47","4.710,30","TID4","paypal@partner4.com","Partner 4","","","0,00","0,00","","" diff --git a/account_statement_import_paypal/tests/test_account_statement_import_paypal.py b/account_statement_import_paypal/tests/test_account_statement_import_paypal.py new file mode 100644 index 00000000..fdf31c30 --- /dev/null +++ b/account_statement_import_paypal/tests/test_account_statement_import_paypal.py @@ -0,0 +1,193 @@ +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from base64 import b64encode +from os import path + +from odoo import fields +from odoo.exceptions import UserError +from odoo.tests import common + + +class TestAccountBankStatementImportPayPal(common.TransactionCase): + def setUp(self): + super().setUp() + + self.now = fields.Datetime.now() + self.currency_eur = self.env.ref("base.EUR") + self.currency_usd = self.env.ref("base.USD") + self.paypal_statement_map_en = self.env.ref( + "account_statement_import_paypal.paypal_statement_map_en" + ) + self.paypal_statement_map_es = self.env.ref( + "account_statement_import_paypal.paypal_statement_map_es" + ) + self.paypal_activity_map_en = self.env.ref( + "account_statement_import_paypal.paypal_activity_map_en" + ) + self.AccountJournal = self.env["account.journal"] + self.AccountBankStatement = self.env["account.bank.statement"] + self.AccountStatementImport = self.env["account.statement.import"] + self.AccountStatementImportPayPalMapping = self.env[ + "account.statement.import.paypal.mapping" + ] + self.AccountStatementImportPayPalMappingWizard = self.env[ + "account.statement.import.paypal.mapping.wizard" + ] + self.env.ref("base.EUR").write({"active": True}) + + def _data_file(self, filename): + with open(path.join(path.dirname(__file__), filename)) as file: + return b64encode(file.read().encode("utf-8")) + + def test_import_statement_en_usd(self): + journal = self.AccountJournal.create( + { + "name": "PayPal", + "type": "bank", + "code": "PP", + "currency_id": self.currency_usd.id, + } + ) + wizard = self.AccountStatementImport.with_context(journal_id=journal.id).create( + { + "statement_filename": "fixtures/statement_en.csv", + "statement_file": self._data_file("fixtures/statement_en.csv"), + "paypal_mapping_id": self.paypal_statement_map_en.id, + } + ) + wizard.with_context( + journal_id=journal.id, + account_statement_import_paypal_test=True, + ).import_file_button() + statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)]) + self.assertEqual(len(statement), 1) + self.assertEqual(len(statement.line_ids), 18) + + def test_import_statement_en_eur(self): + journal = self.AccountJournal.create( + { + "name": "PayPal", + "type": "bank", + "code": "PP", + "currency_id": self.currency_eur.id, + } + ) + wizard = self.AccountStatementImport.with_context(journal_id=journal.id).create( + { + "statement_filename": "fixtures/statement_en.csv", + "statement_file": self._data_file("fixtures/statement_en.csv"), + "paypal_mapping_id": self.paypal_statement_map_en.id, + } + ) + wizard.with_context( + journal_id=journal.id, + account_statement_import_paypal_test=True, + ).import_file_button() + statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)]) + self.assertEqual(len(statement), 1) + self.assertEqual(len(statement.line_ids), 8) + + def test_import_statement_es(self): + journal = self.AccountJournal.create( + { + "name": "PayPal", + "type": "bank", + "code": "PP", + "currency_id": self.currency_eur.id, + } + ) + wizard = self.AccountStatementImport.with_context(journal_id=journal.id).create( + { + "statement_filename": "fixtures/statement_es.csv", + "statement_file": self._data_file("fixtures/statement_es.csv"), + "paypal_mapping_id": self.paypal_statement_map_es.id, + } + ) + wizard.with_context( + journal_id=journal.id, + account_statement_import_paypal_test=True, + ).import_file_button() + statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)]) + self.assertEqual(len(statement), 1) + self.assertEqual(len(statement.line_ids), 8) + + def test_import_activity_en(self): + journal = self.AccountJournal.create( + { + "name": "PayPal", + "type": "bank", + "code": "PP", + "currency_id": self.currency_usd.id, + } + ) + wizard = self.AccountStatementImport.with_context(journal_id=journal.id).create( + { + "statement_filename": "fixtures/activity_en.csv", + "statement_file": self._data_file("fixtures/activity_en.csv"), + "paypal_mapping_id": self.paypal_activity_map_en.id, + } + ) + wizard.with_context( + journal_id=journal.id, + account_statement_import_paypal_test=True, + ).import_file_button() + statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)]) + self.assertEqual(len(statement), 1) + self.assertEqual(len(statement.line_ids), 71) + + def test_import_empty_activity(self): + journal = self.AccountJournal.create( + { + "name": "PayPal", + "type": "bank", + "code": "PP", + "currency_id": self.currency_usd.id, + } + ) + wizard = self.AccountStatementImport.with_context(journal_id=journal.id).create( + { + "statement_filename": "fixtures/empty_activity.csv", + "statement_file": self._data_file("fixtures/empty_activity.csv"), + "paypal_mapping_id": self.paypal_activity_map_en.id, + } + ) + with self.assertRaises(UserError): + wizard.with_context( + journal_id=journal.id, + account_statement_import_paypal_test=True, + ).import_file_button() + statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)]) + self.assertEqual(len(statement), 0) + + def test_import_activity_mapping_en(self): + with common.Form(self.AccountStatementImportPayPalMappingWizard) as form: + form.filename = "fixtures/activity_en.csv" + form.data_file = self._data_file("fixtures/activity_en.csv") + self.assertEqual( + len( + self.AccountStatementImportPayPalMappingWizard.with_context( + header=form.header, + ).statement_columns() + ), + 22, + ) + wizard = form.save() + wizard.import_mapping() + + def test_import_statement_mapping_en(self): + with common.Form(self.AccountStatementImportPayPalMappingWizard) as form: + form.filename = "fixtures/statement_en.csv" + form.data_file = self._data_file("fixtures/statement_en.csv") + self.assertEqual( + len( + self.AccountStatementImportPayPalMappingWizard.with_context( + header=form.header, + ).statement_columns() + ), + 18, + ) + wizard = form.save() + wizard.import_mapping() diff --git a/account_statement_import_paypal/views/account_statement_import.xml b/account_statement_import_paypal/views/account_statement_import.xml new file mode 100644 index 00000000..8486defb --- /dev/null +++ b/account_statement_import_paypal/views/account_statement_import.xml @@ -0,0 +1,28 @@ + + + + + account.statement.import + account.statement.import + + + +
  • + PayPal Report mapping: +
  • +
    +
    +
    +
    diff --git a/account_statement_import_paypal/views/account_statement_import_paypal_mapping.xml b/account_statement_import_paypal/views/account_statement_import_paypal_mapping.xml new file mode 100644 index 00000000..d17840ee --- /dev/null +++ b/account_statement_import_paypal/views/account_statement_import_paypal_mapping.xml @@ -0,0 +1,78 @@ + + + + + account.statement.import.paypal.mapping.form + account.statement.import.paypal.mapping + + + + + + + + account.statement.import.paypal.mapping.tree + account.statement.import.paypal.mapping + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + PayPal Report Mappings + account.statement.import.paypal.mapping + tree,form + + +
    diff --git a/account_statement_import_paypal/wizards/__init__.py b/account_statement_import_paypal/wizards/__init__.py new file mode 100644 index 00000000..ae574065 --- /dev/null +++ b/account_statement_import_paypal/wizards/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import account_statement_import_paypal_mapping_wizard diff --git a/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py b/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py new file mode 100644 index 00000000..e825d49f --- /dev/null +++ b/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.py @@ -0,0 +1,168 @@ +# Copyright 2019 Tecnativa - Vicent Cubells +# Copyright 2019-2020 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import json +from base64 import b64decode +from os import path + +from odoo import _, api, fields, models + + +class AccountBankStatementImportPayPalMappingWizard(models.TransientModel): + _name = "account.statement.import.paypal.mapping.wizard" + _description = "Account Statement Import PayPal Mapping Wizard" + _inherit = ["multi.step.wizard.mixin"] + + data_file = fields.Binary( + string="PayPal Report File", + required=True, + ) + filename = fields.Char() + header = fields.Char() + date_column = fields.Char( + string='"Date" column', + ) + time_column = fields.Char( + string='"Time" column', + ) + tz_column = fields.Char( + string='"Timezone" column', + ) + name_column = fields.Char( + string='"Name" column', + ) + currency_column = fields.Char( + string='"Currency" column', + ) + gross_column = fields.Char( + string='"Gross" column', + ) + fee_column = fields.Char( + string='"Fee" column', + ) + balance_column = fields.Char( + string='"Balance" column', + ) + transaction_id_column = fields.Char( + string='"Transaction ID" column', + ) + description_column = fields.Char( + string='"Description" column', + ) + type_column = fields.Char( + string='"Type" column', + ) + from_email_address_column = fields.Char( + string='"From Email Address" column', + ) + to_email_address_column = fields.Char( + string='"To Email Address" column', + ) + invoice_id_column = fields.Char( + string='"Invoice ID" column', + ) + subject_column = fields.Char( + string='"Subject" column', + ) + note_column = fields.Char( + string='"Note" column', + ) + bank_name_column = fields.Char( + string='"Bank Name" column', + ) + bank_account_column = fields.Char( + string='"Bank Account" column', + ) + + @api.onchange("data_file") + def _onchange_data_file(self): + Parser = self.env["account.statement.import.paypal.parser"] + if not self.data_file: + return + header = Parser.parse_header(b64decode(self.data_file)) + header = [column for column in header if column] + self.header = json.dumps(header) + if len(header) == 22: + self.date_column = header[0] + self.time_column = header[1] + self.tz_column = header[2] + self.name_column = header[3] + self.currency_column = header[6] + self.gross_column = header[7] + self.fee_column = header[8] + self.balance_column = header[18] + self.transaction_id_column = header[12] + self.type_column = header[4] + self.from_email_address_column = header[10] + self.to_email_address_column = header[11] + self.invoice_id_column = header[16] + self.subject_column = header[20] + self.note_column = header[21] + elif len(header) == 18: + self.date_column = header[0] + self.time_column = header[1] + self.tz_column = header[2] + self.name_column = header[11] + self.currency_column = header[4] + self.gross_column = header[5] + self.fee_column = header[6] + self.balance_column = header[8] + self.transaction_id_column = header[9] + self.description_column = header[3] + self.from_email_address_column = header[10] + self.invoice_id_column = header[16] + self.bank_name_column = header[12] + self.bank_account_column = header[13] + + @api.model + def statement_columns(self): + header = self.env.context.get("header") + if not header: + return [] + return [(x, x) for x in json.loads(header)] + + def _get_mapping_values(self): + """Hook for extension""" + self.ensure_one() + return { + "name": _("Mapping from %s") % path.basename(self.filename), + "float_thousands_sep": "comma", + "float_decimal_sep": "dot", + "date_format": "%d/%m/%Y", + "time_format": "%H:%M:%S", + "date_column": self.date_column, + "time_column": self.time_column, + "tz_column": self.tz_column, + "name_column": self.name_column, + "currency_column": self.currency_column, + "gross_column": self.gross_column, + "fee_column": self.fee_column, + "balance_column": self.balance_column, + "transaction_id_column": self.transaction_id_column, + "description_column": self.description_column, + "type_column": self.type_column, + "from_email_address_column": self.from_email_address_column, + "to_email_address_column": self.to_email_address_column, + "invoice_id_column": self.invoice_id_column, + "subject_column": self.subject_column, + "note_column": self.note_column, + "bank_name_column": self.bank_name_column, + "bank_account_column": self.bank_account_column, + } + + def import_mapping(self): + self.ensure_one() + mapping = self.env["account.statement.import.paypal.mapping"].create( + self._get_mapping_values() + ) + return { + "type": "ir.actions.act_window", + "name": _("Imported Mapping"), + "res_model": "account.statement.import.paypal.mapping", + "res_id": mapping.id, + "view_mode": "form", + "view_id": False, + "target": "current", + } diff --git a/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.xml b/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.xml new file mode 100644 index 00000000..91948195 --- /dev/null +++ b/account_statement_import_paypal/wizards/account_statement_import_paypal_mapping_wizard.xml @@ -0,0 +1,175 @@ + + + + + account.statement.import.paypal.mapping.wizard.form + account.statement.import.paypal.mapping.wizard + primary + + + +

    Select a PayPal report file to import mapping.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +