From ae07372611f2551414c0c7fa24becf89b3d10184 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 3 Nov 2023 15:28:41 +0100 Subject: [PATCH] [ADD] account_statement_import_online_gocardless This module provides online bank statements from GoCardless Bank Account Data, which provides a free API for connecting and getting transactions for bank accounts. TT45760 Co-Authored-By: Christopher Ormaza Co-Authored-By: Jordi Ballester --- .../README.rst | 145 +++++ .../__init__.py | 4 + .../__manifest__.py | 30 ++ .../controllers/__init__.py | 1 + .../controllers/main.py | 35 ++ .../models/__init__.py | 3 + .../models/online_bank_statement_provider.py | 353 ++++++++++++ .../readme/CONFIGURE.rst | 42 ++ .../readme/CONTRIBUTORS.rst | 7 + .../readme/DESCRIPTION.rst | 3 + .../readme/USAGE.rst | 10 + .../static/description/icon.png | Bin 0 -> 9207 bytes .../static/description/index.html | 508 ++++++++++++++++++ .../static/img/gocardless_bank_selection.png | Bin 0 -> 39213 bytes .../static/img/gocardless_configuration.png | Bin 0 -> 11950 bytes .../static/src/js/select_bank_widget.js | 121 +++++ .../gocardless-ui/fonts/HKGrotesk-Bold.ttf | Bin 0 -> 84980 bytes .../fonts/HKGrotesk-SemiBold.ttf | Bin 0 -> 87404 bytes .../static/src/lib/gocardless-ui/selector.css | 209 +++++++ .../static/src/xml/select_bank_widget.xml | 58 ++ .../tests/__init__.py | 3 + ...ount_statement_import_online_gocardless.py | 103 ++++ .../view/online_bank_statement_provider.xml | 48 ++ ...account_statement_import_online_gocardless | 1 + .../setup.py | 6 + 25 files changed, 1690 insertions(+) create mode 100644 account_statement_import_online_gocardless/README.rst create mode 100644 account_statement_import_online_gocardless/__init__.py create mode 100644 account_statement_import_online_gocardless/__manifest__.py create mode 100644 account_statement_import_online_gocardless/controllers/__init__.py create mode 100644 account_statement_import_online_gocardless/controllers/main.py create mode 100644 account_statement_import_online_gocardless/models/__init__.py create mode 100644 account_statement_import_online_gocardless/models/online_bank_statement_provider.py create mode 100644 account_statement_import_online_gocardless/readme/CONFIGURE.rst create mode 100644 account_statement_import_online_gocardless/readme/CONTRIBUTORS.rst create mode 100644 account_statement_import_online_gocardless/readme/DESCRIPTION.rst create mode 100644 account_statement_import_online_gocardless/readme/USAGE.rst create mode 100644 account_statement_import_online_gocardless/static/description/icon.png create mode 100644 account_statement_import_online_gocardless/static/description/index.html create mode 100644 account_statement_import_online_gocardless/static/img/gocardless_bank_selection.png create mode 100644 account_statement_import_online_gocardless/static/img/gocardless_configuration.png create mode 100644 account_statement_import_online_gocardless/static/src/js/select_bank_widget.js create mode 100644 account_statement_import_online_gocardless/static/src/lib/gocardless-ui/fonts/HKGrotesk-Bold.ttf create mode 100644 account_statement_import_online_gocardless/static/src/lib/gocardless-ui/fonts/HKGrotesk-SemiBold.ttf create mode 100644 account_statement_import_online_gocardless/static/src/lib/gocardless-ui/selector.css create mode 100644 account_statement_import_online_gocardless/static/src/xml/select_bank_widget.xml create mode 100644 account_statement_import_online_gocardless/tests/__init__.py create mode 100644 account_statement_import_online_gocardless/tests/test_account_statement_import_online_gocardless.py create mode 100644 account_statement_import_online_gocardless/view/online_bank_statement_provider.xml create mode 120000 setup/account_statement_import_online_gocardless/odoo/addons/account_statement_import_online_gocardless create mode 100644 setup/account_statement_import_online_gocardless/setup.py diff --git a/account_statement_import_online_gocardless/README.rst b/account_statement_import_online_gocardless/README.rst new file mode 100644 index 000000000..5f46cb227 --- /dev/null +++ b/account_statement_import_online_gocardless/README.rst @@ -0,0 +1,145 @@ +================================== +Online Bank Statements: GoCardless +================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5523e4b06eaa38f0f74b6181f2043b93037f673d8a5038474c13dc323f1492ac + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/15.0/account_statement_import_online_gocardless + :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-15-0/bank-statement-import-15-0-account_statement_import_online_gocardless + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides online bank statements from GoCardless Bank Account Data, +which provides a free API for connecting and getting transactions for bank +accounts. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +On the GoCardless website +~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Go to https://bankaccountdata.gocardless.com, and create or login into your + "GoCardLess Bank Account Data" account. +#. Go to Developers > User secrets option on the left. +#. Click on the "+ Create new" button on the bottom part. +#. Put a name to the user secret (eg. Odoo), and optionally limit it to certain + IPs using CIDR subnet notation. +#. Copy or download the secret ID and key for later use. The second one won't be + available anymore, so make sure you don't forget this step. + +On Odoo +~~~~~~~ + +To configure online bank statements provider: + +#. Add your user to the "Full Accounting Settings" group. +#. Go to *Invoicing > Configuration > Accounting > Journals*. +#. Select the journal representing your bank account (or create it). +#. The bank account number should be properly introduced. +#. Set *Bank Feeds* to *Online (OCA)*. +#. Select *GoCardless* as online bank statements provider in + *Online Bank Statements (OCA)* section. +#. Save the journal +#. Click on the created provider. +#. Put your secret ID and secret key on the existing fields. +#. Click on the button "Select Bank Account Identifier". + + .. image:: https://raw.githubusercontent.com/OCA/bank-statement-import/15.0/account_statement_import_online_gocardless/static/img/gocardless_configuration.gif + +#. A new window will appear for selecting the bank entity. + + .. image:: https://raw.githubusercontent.com/OCA/bank-statement-import/15.0/account_statement_import_online_gocardless/static/img/gocardless_bank_selection.gif + +#. Select it, and you will be redirected to the selected entity for introducing + your bank credentials to allow the connection. +#. If the process is completed, and the bank account linked to the journal is + accessible, you'll be again redirected to the online provider form, and + everything will be linked and ready to start the transaction pulling. A + message is logged about it on the chatter. +#. If not, an error message will be logged either in the chatter. + +Usage +===== + +To pull historical bank statements: + +#. Go to *Invoicing > Configuration > Accounting > Journals*. +#. Select the journal representing your bank account. +#. Launch *Actions > Online Bank Statements Pull Wizard* +#. Configure date interval and click on *Pull*. + +If historical data is not needed, then just simply wait for the scheduled +activity "Pull Online Bank Statements" to be executed for getting new +transactions. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `ForgeFlow `__: + + * Christopher Ormaza + * Jordi Ballester +* `Tecnativa `__: + + * Pedro M. Baeza + +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_online_gocardless/__init__.py b/account_statement_import_online_gocardless/__init__.py new file mode 100644 index 000000000..f4a659efb --- /dev/null +++ b/account_statement_import_online_gocardless/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models +from . import controllers diff --git a/account_statement_import_online_gocardless/__manifest__.py b/account_statement_import_online_gocardless/__manifest__.py new file mode 100644 index 000000000..b2885f0e6 --- /dev/null +++ b/account_statement_import_online_gocardless/__manifest__.py @@ -0,0 +1,30 @@ +# Copyright 2022 ForgeFlow S.L. +# Copyright 2023 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Online Bank Statements: GoCardless", + "version": "15.0.1.0.0", + "category": "Account", + "website": "https://github.com/OCA/bank-statement-import", + "author": "ForgeFlow, Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": [ + "account_statement_import_online", + ], + "data": ["view/online_bank_statement_provider.xml"], + "assets": { + "web.assets_backend": [ + "account_statement_import_online_gocardless/static/src/" + "lib/gocardless-ui/selector.css", + "account_statement_import_online_gocardless/static/src/" + "lib/gocardless-ui/selector.js", + "account_statement_import_online_gocardless/static/src/" + "js/select_bank_widget.js", + ], + "web.assets_qweb": [ + "account_statement_import_online_gocardless/static/src/xml" + "/select_bank_widget.xml" + ], + }, +} diff --git a/account_statement_import_online_gocardless/controllers/__init__.py b/account_statement_import_online_gocardless/controllers/__init__.py new file mode 100644 index 000000000..12a7e529b --- /dev/null +++ b/account_statement_import_online_gocardless/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/account_statement_import_online_gocardless/controllers/main.py b/account_statement_import_online_gocardless/controllers/main.py new file mode 100644 index 000000000..833357961 --- /dev/null +++ b/account_statement_import_online_gocardless/controllers/main.py @@ -0,0 +1,35 @@ +# Copyright 2022 ForgeFlow S.L. +# Copyright 2023 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import werkzeug +from werkzeug.urls import url_encode + +from odoo import http +from odoo.http import request + + +class GocardlessController(http.Controller): + @http.route("/gocardless/response", type="http", auth="public", csrf=False) + def gocardless_response(self, **post): + Provider = request.env["online.bank.statement.provider"].sudo() + current_provider = Provider.search( + [("gocardless_requisition_ref", "=", post["ref"])] + ) + params = { + "action": request.env.ref( + "account_statement_import_online.online_bank_statement_provider_action" + ).id, + "model": "online.bank.statement.provider", + } + if current_provider: + current_provider._gocardless_finish_requisition() + params.update( + { + "view_type": "form", + "id": current_provider.id, + } + ) + else: + params["view_type"] = "list" + return werkzeug.utils.redirect("/web#" + url_encode(params), 303) diff --git a/account_statement_import_online_gocardless/models/__init__.py b/account_statement_import_online_gocardless/models/__init__.py new file mode 100644 index 000000000..03e38c999 --- /dev/null +++ b/account_statement_import_online_gocardless/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import online_bank_statement_provider diff --git a/account_statement_import_online_gocardless/models/online_bank_statement_provider.py b/account_statement_import_online_gocardless/models/online_bank_statement_provider.py new file mode 100644 index 000000000..c33addf77 --- /dev/null +++ b/account_statement_import_online_gocardless/models/online_bank_statement_provider.py @@ -0,0 +1,353 @@ +# Copyright 2022 ForgeFlow S.L. +# Copyright 2023 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import json +from datetime import datetime +from uuid import uuid4 + +import requests +from dateutil.relativedelta import relativedelta +from werkzeug.urls import url_join + +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF + +GOCARDLESS_ENDPOINT = "https://bankaccountdata.gocardless.com/api/v2" + + +class OnlineBankStatementProvider(models.Model): + _inherit = "online.bank.statement.provider" + + gocardless_token = fields.Char(readonly=True) + gocardless_token_expiration = fields.Datetime(readonly=True) + gocardless_refresh_token = fields.Char(readonly=True) + gocardless_refresh_expiration = fields.Datetime(readonly=True) + gocardless_requisition_ref = fields.Char(readonly=True) + gocardless_requisition_id = fields.Char(readonly=True) + gocardless_requisition_expiration = fields.Datetime(readonly=True) + gocardless_institution_id = fields.Char() + gocardless_account_id = fields.Char() + + def gocardless_reset_requisition(self): + self.write( + { + "gocardless_requisition_id": False, + "gocardless_requisition_ref": False, + "gocardless_requisition_expiration": False, + } + ) + + @api.model + def _get_available_services(self): + """Include the new service GoCardless in the online providers.""" + return super()._get_available_services() + [ + ("gocardless", "GoCardless"), + ] + + def _gocardless_get_token(self): + """Resolve and return the corresponding GoCardless token for doing the requests. + If there's still no token, it's requested. If it exists, but it's expired and + the refresh token isn't, a refresh is requested. + """ + self.ensure_one() + now = fields.Datetime.now() + if not self.gocardless_token or now > self.gocardless_token_expiration: + # Refresh token + if ( + self.gocardless_refresh_token + and now > self.gocardless_refresh_expiration + ): + url = f"{GOCARDLESS_ENDPOINT}/token/refresh/" + else: + url = f"{GOCARDLESS_ENDPOINT}/token/new/" + response = requests.post( + url, + data=json.dumps( + {"secret_id": self.username, "secret_key": self.password} + ), + headers=self._gocardless_get_headers(basic=True), + ) + data = {} + if response.status_code == 200: + data = json.loads(response.text) + expiration_date = now + relativedelta(seconds=data.get("access_expires", 0)) + vals = { + "gocardless_token": data.get("access", False), + "gocardless_token_expiration": expiration_date, + } + if data.get("refresh"): + vals["gocardless_refresh_token"] = data["refresh"] + vals["gocardless_refresh_expiration"] = now + relativedelta( + seconds=data["refresh_expires"] + ) + self.sudo().write(vals) + return self.gocardless_token + + def _gocardless_get_headers(self, basic=False): + """Generic method for providing the needed request headers.""" + self.ensure_one() + headers = { + "accept": "application/json", + "Content-Type": "application/json", + } + if not basic: + headers["Authorization"] = f"Bearer {self._gocardless_get_token()}" + return headers + + def action_select_gocardless_bank(self): + if not self.journal_id.bank_account_id: + raise UserError( + _("To continue configure bank account on journal %s") + % (self.journal_id.display_name) + ) + country = self.journal_id.bank_account_id.company_id.country_id + response = requests.get( + f"{GOCARDLESS_ENDPOINT}/institutions/", + params={"country": country.code}, + headers=self._gocardless_get_headers(), + ) + if response.status_code == 400: + raise UserError(_("Incorrect country code or country not supported.")) + institutions = json.loads(response.text) + # Prepare data for being showed in the JS widget + ctx = self.env.context.copy() + ctx.update( + { + "dialog_size": "medium", + "country": country.code, + "country_name": country.name, + "provider_id": self.id, + "institutions": institutions, + "country_names": [{"code": country.code, "name": country.name}], + } + ) + return { + "type": "ir.actions.client", + "tag": "online_sync_institution_selector_gocardless", + "name": _("Select Bank of your Account"), + "params": {}, + "target": "new", + "context": ctx, + } + + def action_check_gocardless_agreement(self): + self.ensure_one() + self.gocardless_requisition_ref = str(uuid4()) + base_url = self.env["ir.config_parameter"].sudo().get_param("web.base.url") + redirect_url = url_join(base_url, "gocardless/response") + response = requests.post( + f"{GOCARDLESS_ENDPOINT}/requisitions/", + data=json.dumps( + { + "redirect": redirect_url, + "institution_id": self.gocardless_institution_id, + "reference": self.gocardless_requisition_ref, + } + ), + headers=self._gocardless_get_headers(), + ) + if response.status_code == 201: + requisition_data = json.loads(response.text) + self.gocardless_requisition_id = requisition_data["id"] + # JS code expects here to return a plain link or nothing + return requisition_data["link"] + + def _gocardless_finish_requisition(self): + """Once the requisiton to the bank institution has been made, and this is called + from the controller assigned to the redirect URL, we check that the IBAN account + of the linked journal is included in the accessible bank accounts, and if so, + we set the rest of the needed data. + + A message in the chatter is logged both for sucessful or failed operation. + """ + self.ensure_one() + requisition_response = requests.get( + f"{GOCARDLESS_ENDPOINT}/requisitions/{self.gocardless_requisition_id}/", + headers=self._gocardless_get_headers(), + ) + requisition_data = json.loads(requisition_response.text) + accounts = requisition_data.get("accounts", []) + found_account = False + accounts_iban = [] + for account_id in accounts: + account_response = requests.get( + f"{GOCARDLESS_ENDPOINT}/accounts/{account_id}/", + headers=self._gocardless_get_headers(), + ) + if account_response.status_code == 200: + account_data = json.loads(account_response.text) + accounts_iban.append(account_data["iban"]) + if ( + self.journal_id.bank_account_id.sanitized_acc_number + == account_data["iban"] + ): + found_account = True + self.gocardless_account_id = account_data["id"] + break + if found_account: + agreement_response = requests.get( + f"{GOCARDLESS_ENDPOINT}/agreements/enduser/" + f"{requisition_data['agreement']}/", + headers=self._gocardless_get_headers(), + ) + agreement_data = json.loads(agreement_response.text) + self.gocardless_requisition_expiration = datetime.strptime( + agreement_data["accepted"], "%Y-%m-%dT%H:%M:%S.%fZ" + ) + relativedelta(days=agreement_data["access_valid_for_days"]) + self.sudo().message_post( + body=_("Your account number %(iban_number)s is successfully attached.") + % {"iban_number": self.journal_id.bank_account_id.display_name} + ) + else: + self.sudo().write( + { + "gocardless_requisition_expiration": False, + "gocardless_requisition_id": False, + "gocardless_requisition_ref": False, + } + ) + self.sudo().message_post( + body=_( + "Your account number %(iban_number)s it's not in the IBAN " + "account numbers found %(accounts_iban)s, please check" + ) + % { + "iban_number": self.journal_id.bank_account_id.display_name, + "accounts_iban": " / ".join(accounts_iban), + } + ) + + def _obtain_statement_data(self, date_since, date_until): + """Generic online cron overrided for acting when the sync is for GoCardless.""" + self.ensure_one() + if self.service == "gocardless": + return self._gocardless_obtain_statement_data(date_since, date_until) + return super()._obtain_statement_data(date_since, date_until) + + def _gocardless_request_transactions(self, date_since, date_until): + """Method for requesting GoCardless transactions. + Isolated for being mocked in tests. + """ + # We can't query dates in the future in GoCardless + now = fields.Datetime.now() + if now > date_since and now < date_until: + date_until = now + transaction_response = requests.get( + f"{GOCARDLESS_ENDPOINT}/accounts/" + f"{self.gocardless_account_id}/transactions/", + params={ + "date_from": date_since.strftime(DF), + "date_to": date_until.strftime(DF), + }, + headers=self._gocardless_get_headers(), + ) + if transaction_response.status_code == 200: + return json.loads(transaction_response.text) + return {} + + def _gocardless_obtain_statement_data(self, date_since, date_until): + """Called from the cron or the manual pull wizard to obtain transactions for + the given period. + """ + self.ensure_one() + if not self.gocardless_account_id: + return + currency_model = self.env["res.currency"] + if self.gocardless_requisition_expiration <= fields.Datetime.now(): + self.sudo().message_post( + body=_( + "You should renew the authorization process with your bank " + "institution for GoCardless." + ) + ) + return [], {} + own_acc_number = self.journal_id.bank_account_id.sanitized_acc_number + transactions = self._gocardless_request_transactions(date_since, date_until) + res = [] + sequence = 0 + currencies_cache = {} + for tr in transactions.get("transactions", {}).get("booked", []): + # Reference: https://developer.gocardless.com/bank-account-data/transactions + string_date = tr.get("bookingDate") or tr.get("valueDate") + # CHECK ME: if there's not date string, is transaction still valid? + if not string_date: + continue + current_date = fields.Date.from_string(string_date) + sequence += 1 + amount = float(tr.get("transactionAmount", {}).get("amount", 0.0)) + currency_code = tr.get("transactionAmount", {}).get( + "currency", self.journal_id.currency_id.name + ) + currency = currencies_cache.get(currency_code) + if not currency: + currency = currency_model.search([("name", "=", currency_code)]) + currencies_cache[currency_code] = currency + amount_currency = amount + if ( + currency + and self.journal_id.currency_id + and currency != self.journal_id.currency_id + ): + amount_currency = currency._convert( + amount, + self.journal_id.currency_id, + self.journal_id.company_id, + current_date, + ) + if amount_currency >= 0: + partner_name = tr.get("debtorName", False) + else: + partner_name = tr.get("creditorName", False) + account_number = tr.get("debtorAccount", {}).get("iban") or tr.get( + "creditorAccount", {} + ).get("iban", False) + if account_number == own_acc_number: + account_number = False # Discard own bank account number + res.append( + { + "sequence": sequence, + "date": current_date, + "ref": partner_name or "/", + "payment_ref": tr.get( + "remittanceInformationUnstructured", partner_name + ), + "unique_import_id": tr.get("entryReference", False) + or tr.get("transactionId", False), + "amount": amount_currency, + "account_number": account_number, + "partner_name": partner_name, + "transaction_type": tr.get("bankTransactionCode", ""), + "narration": self._gocardless_get_note(tr), + } + ) + return res, {} + + def _gocardless_get_note(self, tr): + """Override to get different notes.""" + note_elements = [ + "additionalInformation", + "balanceAfterTransaction", + "bankTransactionCode", + "bookingDate", + "checkId", + "creditorAccount", + "creditorAgent", + "creditorId", + "creditorName", + "currencyExchange", + "debtorAccount", + "debtorAgent", + "debtorName", + "entryReference", + "mandateId", + "proprietaryBank", + "remittanceInformation Unstructured", + "transactionAmount", + "transactionId", + "ultimateCreditor", + "ultimateDebtor", + "valueDate", + ] + notes = [str(tr[element]) for element in note_elements if tr.get(element)] + return "\n".join(notes) diff --git a/account_statement_import_online_gocardless/readme/CONFIGURE.rst b/account_statement_import_online_gocardless/readme/CONFIGURE.rst new file mode 100644 index 000000000..174499fcb --- /dev/null +++ b/account_statement_import_online_gocardless/readme/CONFIGURE.rst @@ -0,0 +1,42 @@ +On the GoCardless website +~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Go to https://bankaccountdata.gocardless.com, and create or login into your + "GoCardLess Bank Account Data" account. +#. Go to Developers > User secrets option on the left. +#. Click on the "+ Create new" button on the bottom part. +#. Put a name to the user secret (eg. Odoo), and optionally limit it to certain + IPs using CIDR subnet notation. +#. Copy or download the secret ID and key for later use. The second one won't be + available anymore, so make sure you don't forget this step. + +On Odoo +~~~~~~~ + +To configure online bank statements provider: + +#. Add your user to the "Full Accounting Settings" group. +#. Go to *Invoicing > Configuration > Accounting > Journals*. +#. Select the journal representing your bank account (or create it). +#. The bank account number should be properly introduced. +#. Set *Bank Feeds* to *Online (OCA)*. +#. Select *GoCardless* as online bank statements provider in + *Online Bank Statements (OCA)* section. +#. Save the journal +#. Click on the created provider. +#. Put your secret ID and secret key on the existing fields. +#. Click on the button "Select Bank Account Identifier". + + .. image:: ../static/img/gocardless_configuration.gif + +#. A new window will appear for selecting the bank entity. + + .. image:: ../static/img/gocardless_bank_selection.gif + +#. Select it, and you will be redirected to the selected entity for introducing + your bank credentials to allow the connection. +#. If the process is completed, and the bank account linked to the journal is + accessible, you'll be again redirected to the online provider form, and + everything will be linked and ready to start the transaction pulling. A + message is logged about it on the chatter. +#. If not, an error message will be logged either in the chatter. diff --git a/account_statement_import_online_gocardless/readme/CONTRIBUTORS.rst b/account_statement_import_online_gocardless/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..4165b6279 --- /dev/null +++ b/account_statement_import_online_gocardless/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* `ForgeFlow `__: + + * Christopher Ormaza + * Jordi Ballester +* `Tecnativa `__: + + * Pedro M. Baeza diff --git a/account_statement_import_online_gocardless/readme/DESCRIPTION.rst b/account_statement_import_online_gocardless/readme/DESCRIPTION.rst new file mode 100644 index 000000000..2572d99a2 --- /dev/null +++ b/account_statement_import_online_gocardless/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module provides online bank statements from GoCardless Bank Account Data, +which provides a free API for connecting and getting transactions for bank +accounts. diff --git a/account_statement_import_online_gocardless/readme/USAGE.rst b/account_statement_import_online_gocardless/readme/USAGE.rst new file mode 100644 index 000000000..485621b01 --- /dev/null +++ b/account_statement_import_online_gocardless/readme/USAGE.rst @@ -0,0 +1,10 @@ +To pull historical bank statements: + +#. Go to *Invoicing > Configuration > Accounting > Journals*. +#. Select the journal representing your bank account. +#. Launch *Actions > Online Bank Statements Pull Wizard* +#. Configure date interval and click on *Pull*. + +If historical data is not needed, then just simply wait for the scheduled +activity "Pull Online Bank Statements" to be executed for getting new +transactions. diff --git a/account_statement_import_online_gocardless/static/description/icon.png b/account_statement_import_online_gocardless/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2efb75c0d4b4352eb43221ed3119a3bba30c769e GIT binary patch literal 9207 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 TW3@y$00OA1Xe*b$u#EUW*dgM3 literal 0 HcmV?d00001 diff --git a/account_statement_import_online_gocardless/static/description/index.html b/account_statement_import_online_gocardless/static/description/index.html new file mode 100644 index 000000000..c48a3dac3 --- /dev/null +++ b/account_statement_import_online_gocardless/static/description/index.html @@ -0,0 +1,508 @@ + + + + + + +Online Bank Statements: GoCardless + + + +
+

Online Bank Statements: GoCardless

+ + +

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

+

This module provides online bank statements from GoCardless Bank Account Data, +which provides a free API for connecting and getting transactions for bank +accounts.

+

Table of contents

+ +
+

Configuration

+
+

On the GoCardless website

+
    +
  1. Go to https://bankaccountdata.gocardless.com, and create or login into your +“GoCardLess Bank Account Data” account.
  2. +
  3. Go to Developers > User secrets option on the left.
  4. +
  5. Click on the “+ Create new” button on the bottom part.
  6. +
  7. Put a name to the user secret (eg. Odoo), and optionally limit it to certain +IPs using CIDR subnet notation.
  8. +
  9. Copy or download the secret ID and key for later use. The second one won’t be +available anymore, so make sure you don’t forget this step.
  10. +
+
+
+

On Odoo

+

To configure online bank statements provider:

+
    +
  1. Add your user to the “Full Accounting Settings” group.

    +
  2. +
  3. Go to Invoicing > Configuration > Accounting > Journals.

    +
  4. +
  5. Select the journal representing your bank account (or create it).

    +
  6. +
  7. The bank account number should be properly introduced.

    +
  8. +
  9. Set Bank Feeds to Online (OCA).

    +
  10. +
  11. Select GoCardless as online bank statements provider in +Online Bank Statements (OCA) section.

    +
  12. +
  13. Save the journal

    +
  14. +
  15. Click on the created provider.

    +
  16. +
  17. Put your secret ID and secret key on the existing fields.

    +
  18. +
  19. Click on the button “Select Bank Account Identifier”.

    +https://raw.githubusercontent.com/OCA/bank-statement-import/15.0/account_statement_import_online_gocardless/static/img/gocardless_configuration.gif +
  20. +
  21. A new window will appear for selecting the bank entity.

    +https://raw.githubusercontent.com/OCA/bank-statement-import/15.0/account_statement_import_online_gocardless/static/img/gocardless_bank_selection.gif +
  22. +
  23. Select it, and you will be redirected to the selected entity for introducing +your bank credentials to allow the connection.

    +
  24. +
  25. If the process is completed, and the bank account linked to the journal is +accessible, you’ll be again redirected to the online provider form, and +everything will be linked and ready to start the transaction pulling. A +message is logged about it on the chatter.

    +
  26. +
  27. If not, an error message will be logged either in the chatter.

    +
  28. +
+
+
+
+

Usage

+

To pull historical bank statements:

+
    +
  1. Go to Invoicing > Configuration > Accounting > Journals.
  2. +
  3. Select the journal representing your bank account.
  4. +
  5. Launch Actions > Online Bank Statements Pull Wizard
  6. +
  7. Configure date interval and click on Pull.
  8. +
+

If historical data is not needed, then just simply wait for the scheduled +activity “Pull Online Bank Statements” to be executed for getting new +transactions.

+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
  • Tecnativa
  • +
+
+
+

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_online_gocardless/static/img/gocardless_bank_selection.png b/account_statement_import_online_gocardless/static/img/gocardless_bank_selection.png new file mode 100644 index 0000000000000000000000000000000000000000..a25b4ca4c4bdc0aa2198c055ad51ff47868f58f9 GIT binary patch literal 39213 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

vm@`WWZK7W?$AS<*22#g0V}U$jmbm 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 N#)cN4lKal@{{=HHikSca literal 0 HcmV?d00001 diff --git a/account_statement_import_online_gocardless/static/img/gocardless_configuration.png b/account_statement_import_online_gocardless/static/img/gocardless_configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..5cea7391333d6826628666d54623b7549b61d235 GIT binary patch literal 11950 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 T1$}wvUsL3ym8HrhOuqgPd<*CF literal 0 HcmV?d00001 diff --git a/account_statement_import_online_gocardless/static/src/js/select_bank_widget.js b/account_statement_import_online_gocardless/static/src/js/select_bank_widget.js new file mode 100644 index 000000000..f257ce4f9 --- /dev/null +++ b/account_statement_import_online_gocardless/static/src/js/select_bank_widget.js @@ -0,0 +1,121 @@ +odoo.define( + "account_bank_statement_import_online_gocardless.acc_config_widget_gocardless", + function (require) { + "use strict"; + + require("web.dom_ready"); + var core = require("web.core"); + var AbstractAction = require("web.AbstractAction"); + var QWeb = core.qweb; + var framework = require("web.framework"); + + var OnlineSyncAccountInstitutionSelector = AbstractAction.extend({ + template: "OnlineSyncSearchBankGoCardless", + init: function (parent, action, options) { + this._super(parent, action, options); + this.context = action.context; + this.results = action.context.institutions; + this.country_names = action.context.country_names; + this.country_selected = action.context.country; + }, + + start: function () { + const self = this; + const $selectCountries = this.$el.find(".country_select"); + const $countryOptions = $( + QWeb.render("OnlineSyncSearchBankGoCardlessCountries", { + country_names: this.country_names, + }) + ); + $countryOptions.appendTo($selectCountries); + if ( + $selectCountries.find("option[value=" + this.country_selected + "]") + .length !== 0 + ) { + $selectCountries.val(this.country_selected); + $selectCountries.change(); + } + $selectCountries.change(function () { + self.country_selected = this.selectedOptions[0].value; + return self.renderSearchResult(); + }); + this.displayState(); + self.$el.find("#bank_search_input").on("keyup", function () { + const input = $(".institution-search-input"); + const filter = input[0].value.toUpperCase(); + const institutionList = $(".list-institution"); + + for (let i = 0; i < institutionList.length; i++) { + const txtValue = institutionList[i].textContent; + if (txtValue.toUpperCase().indexOf(filter) > -1) { + institutionList[i].style.display = ""; + } else { + institutionList[i].style.display = "none"; + } + } + }); + }, + + displayState: function () { + if (this.results.length > 0) { + this.renderSearchResult(); + } + }, + + renderElement: function () { + this._super.apply(this, arguments); + }, + + renderSearchResult: function () { + var self = this; + this.$(".institution-container").html(""); + const filteredInstitutions = this.results.filter(function ( + institution + ) { + return institution.countries.includes(self.country_selected); + }); + var $searchResults = $( + QWeb.render("OnlineSyncSearchBankGoCardlessList", { + institutions: filteredInstitutions, + }) + ); + $searchResults.find("a").click(function () { + framework.blockUI(); + const id = this.getAttribute("data-institution"); + if (id) { + return self + ._rpc({ + model: "online.bank.statement.provider", + method: "write", + args: [ + [self.context.provider_id], + {gocardless_institution_id: id}, + ], + }) + .then(function () { + return self + ._rpc({ + model: "online.bank.statement.provider", + method: "action_check_gocardless_agreement", + args: [[self.context.active_id]], + }) + .then(function (redirect_url) { + if (redirect_url !== undefined) { + window.location.replace(redirect_url); + } + }); + }); + } + }); + $searchResults.appendTo(self.$(".institution-container")); + }, + }); + core.action_registry.add( + "online_sync_institution_selector_gocardless", + OnlineSyncAccountInstitutionSelector + ); + return { + OnlineSyncAccountInstitutionSelector: OnlineSyncAccountInstitutionSelector, + }; + } +); diff --git a/account_statement_import_online_gocardless/static/src/lib/gocardless-ui/fonts/HKGrotesk-Bold.ttf b/account_statement_import_online_gocardless/static/src/lib/gocardless-ui/fonts/HKGrotesk-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8645d73442525f5cb69d4d326b54ce61185d58be GIT binary patch literal 84980 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 literal 0 HcmV?d00001 diff --git a/account_statement_import_online_gocardless/static/src/lib/gocardless-ui/fonts/HKGrotesk-SemiBold.ttf b/account_statement_import_online_gocardless/static/src/lib/gocardless-ui/fonts/HKGrotesk-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d6a0bf4a4f0c7b94a16afb5f58890f15f9563d37 GIT binary patch literal 87404 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 a { + line-height: 2.8rem; + text-decoration: none; + color: #808080; +} + +.institution-modal-footer > a:hover { + text-decoration: underline; +} + +.institution-modal-close { + color: #8D9090; + font-size: 2.6rem; + font-weight: bold; + cursor: pointer; + position: relative; + top: -20px; +} + +.institution-search-container { + position: relative; + bottom: 2.2rem; +} + +.institution-search-container input { + text-indent: 2.8rem; +} + +.institution-search-icon { + position: relative; + padding: 1rem; + height: 3.8rem; + top: 3.8rem; +} + +.institution-search-input { + width: 100%; + padding: 1rem; + border-radius: 9px; + color: #8C8E8F; + border: 1px solid #8c8e8f; + font-size: 1.6rem; + font-weight: 400; + outline-color: #70b1f7; +} + + +.institution-container { + display: flex; + flex-direction: column; +} + +.list-institution { + padding: 14px 0; + border-bottom: 1px solid #D7D8D8; +} + +.list-institution:last-child { + border: none; +} + +.list-institution a { + padding-right: 2.5rem; + display: flex; + flex-direction: row; + align-items: center; + text-decoration: none; +} + + +.list-institution span { + margin-left: 1.5rem; + font-size: 1.5rem; + font-weight: 600; + color: #1B2021; +} + +.list-institution:hover { + background-color: #F1F1F1; +} + +img.institution-logo { + width: 100%; + max-width: 3.5rem; + height: 3.5rem; + border-radius: 6px; +} + +.institution-company-logo { + max-width: 13rem; + height: 10rem; + margin: 2.5rem 0 7rem; +} + +@media screen and (max-width: 640px) { + + html { + font-size: 8px; + } + + #institution-modal-content { + height: 100%; + max-width: 100%; + border-radius: 0; + } + + #institution-modal-content, + .institution-company-logo { + margin: 0; + } + + .institution-company-logo { + position: absolute; + bottom: 0; + padding: 2.5rem; + } + + .institution-modal-close { + display: none; + } + + + .institution-modal-header { + margin-top: 3rem; + } + + .institution-modal-header h2 { + font-size: 3rem; + } + + .list-institution span { + font-size: 1.9rem; + } +} + +@media screen and (device-height: 568px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) { + + html { + font-size: 7px; + } + +} diff --git a/account_statement_import_online_gocardless/static/src/xml/select_bank_widget.xml b/account_statement_import_online_gocardless/static/src/xml/select_bank_widget.xml new file mode 100644 index 000000000..d2b4b978c --- /dev/null +++ b/account_statement_import_online_gocardless/static/src/xml/select_bank_widget.xml @@ -0,0 +1,58 @@ + + + +

+
+
+
+ +
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + diff --git a/account_statement_import_online_gocardless/tests/__init__.py b/account_statement_import_online_gocardless/tests/__init__.py new file mode 100644 index 000000000..bf7367ab4 --- /dev/null +++ b/account_statement_import_online_gocardless/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_account_statement_import_online_gocardless diff --git a/account_statement_import_online_gocardless/tests/test_account_statement_import_online_gocardless.py b/account_statement_import_online_gocardless/tests/test_account_statement_import_online_gocardless.py new file mode 100644 index 000000000..9c0712c21 --- /dev/null +++ b/account_statement_import_online_gocardless/tests/test_account_statement_import_online_gocardless.py @@ -0,0 +1,103 @@ +# Copyright 2023 Tecnativa - Pedro M.Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from unittest import mock + +from dateutil.relativedelta import relativedelta + +from odoo import fields +from odoo.tests import common + +_module_ns = "odoo.addons.account_statement_import_online_gocardless" +_provider_class = ( + _module_ns + ".models.online_bank_statement_provider.OnlineBankStatementProvider" +) + + +class TestAccountBankAccountStatementImportOnlineGocardless(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.now = fields.Datetime.now() + cls.currency_eur = cls.env.ref("base.EUR") + cls.currency_eur.write({"active": True}) + cls.journal = cls.env["account.journal"].create( + { + "name": "GoCardless Bank Test", + "type": "bank", + "code": "GCB", + "currency_id": cls.currency_eur.id, + "bank_statements_source": "online", + "online_bank_statement_provider": "gocardless", + } + ) + cls.provider = cls.journal.online_bank_statement_provider_id + cls.provider.write( + { + "statement_creation_mode": "monthly", + "gocardless_account_id": "SANDBOXFINANCE_SFIN0000", + "gocardless_requisition_expiration": cls.now + relativedelta(days=30), + } + ) + cls.return_value = { # GoCardless sample return + "transactions": { + "booked": [ + { + "transactionId": "2020103000624289-1", + "debtorName": "MON MOTHMA", + "debtorAccount": {"iban": "GL53SAFI055151515"}, + "transactionAmount": {"currency": "EUR", "amount": "45.00"}, + "bookingDate": "2020-10-30", + "valueDate": "2020-10-30", + "remittanceInformationUnstructured": ( + "For the support of Restoration of the Republic foundation" + ), + }, + { + "transactionId": "2020111101899195-1", + "transactionAmount": {"currency": "EUR", "amount": "-15.00"}, + "bankTransactionCode": "PMNT", + "bookingDate": "2020-11-11", + "valueDate": "2020-11-11", + "remittanceInformationUnstructured": "PAYMENT Alderaan Coffe", + }, + ], + "pending": [ + { + "transactionAmount": {"currency": "EUR", "amount": "-10.00"}, + "valueDate": "2020-11-03", + "remittanceInformationUnstructured": ( + "Reserved PAYMENT Emperor's Burgers" + ), + } + ], + } + } + cls.mock_transaction = lambda cls: mock.patch( + _provider_class + "._gocardless_request_transactions", + return_value=cls.return_value, + ) + + def test_mocked_gocardless(self): + vals = { + "provider_ids": self.provider.ids, + "date_since": "2020-10-30", + "date_until": "2020-11-11", + } + wizard = ( + self.env["online.bank.statement.pull.wizard"] + .with_context( + active_model="account.journal", + active_id=self.journal.id, + ) + .create(vals) + ) + with self.mock_transaction(): + wizard.action_pull() + statements = self.env["account.bank.statement"].search( + [("journal_id", "=", self.journal.id)] + ) + self.assertEqual(len(statements), 2) + lines = statements.line_ids.sorted(lambda x: x.date) + self.assertEqual(len(lines), 2) + self.assertEqual(lines.mapped("amount"), [45.0, -15.0]) diff --git a/account_statement_import_online_gocardless/view/online_bank_statement_provider.xml b/account_statement_import_online_gocardless/view/online_bank_statement_provider.xml new file mode 100644 index 000000000..2fe66c79d --- /dev/null +++ b/account_statement_import_online_gocardless/view/online_bank_statement_provider.xml @@ -0,0 +1,48 @@ + + + + online.bank.statement.provider.form + online.bank.statement.provider + + + + + + + + + + +