-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #296 from akretion/16-account_move_import_adyen
16 account move import adyen
- Loading branch information
Showing
15 changed files
with
743 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
========================== | ||
Journal Entry Adyen import | ||
========================== | ||
|
||
.. | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! source digest: sha256:c51de8a7e48679e6304737fa5c987223979f7dc57d5b53b4fd6ce6e0136ae2dd | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
.. |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-akretion%2Fak--odoo--incubator-lightgray.png?logo=github | ||
:target: https://github.com/akretion/ak-odoo-incubator/tree/16.0/account_move_adyen_import | ||
:alt: akretion/ak-odoo-incubator | ||
|
||
|badge1| |badge2| |badge3| | ||
|
||
This module extends the functionality of | ||
account_move_base_import, in order to handle the file format used for | ||
Adyen card remitance | ||
|
||
**Table of contents** | ||
|
||
.. contents:: | ||
:local: | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues <https://github.com/akretion/ak-odoo-incubator/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 <https://github.com/akretion/ak-odoo-incubator/issues/new?body=module:%20account_move_adyen_import%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
Credits | ||
======= | ||
|
||
Authors | ||
~~~~~~~ | ||
|
||
* Akretion | ||
|
||
Maintainers | ||
~~~~~~~~~~~ | ||
|
||
This module is part of the `akretion/ak-odoo-incubator <https://github.com/akretion/ak-odoo-incubator/tree/16.0/account_move_adyen_import>`_ project on GitHub. | ||
|
||
You are welcome to contribute. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) | ||
from . import parser | ||
from . import models |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) | ||
{ | ||
"name": "Journal Entry Adyen import", | ||
"version": "16.0.1.0.0", | ||
"author": "Akretion,Odoo Community Association (OCA)", | ||
"maintainer": "Odoo Community Association (OCA)", | ||
"category": "Finance", | ||
"complexity": "normal", | ||
"depends": [ | ||
"account_move_base_import", | ||
], | ||
"website": "https://github.com/akretion/ak-odoo-incubator", | ||
"installable": True, | ||
"auto_install": False, | ||
"license": "AGPL-3", | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# © 2011-2016 Akretion | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) | ||
from . import account_journal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) | ||
from odoo import fields, models | ||
|
||
|
||
class AccountJournal(models.Model): | ||
_inherit = "account.journal" | ||
|
||
import_type = fields.Selection( | ||
selection_add=[ | ||
("adyen_cb_csvparser", "Adyen Credit Card .csv"), | ||
("adyen_multi_move_csvparser", "Adyen Multiple Entries .csv"), | ||
] | ||
) | ||
|
||
def _get_global_commission_amount(self, parser): | ||
global_commission_amount = super()._get_global_commission_amount(parser) | ||
if hasattr(parser, "extra_commission"): | ||
extra_commission = ( | ||
parser.commission_sign == "+" | ||
and -parser.extra_commission | ||
or parser.extra_commission | ||
) | ||
global_commission_amount += extra_commission | ||
return global_commission_amount |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) | ||
from . import adyen_file_parser |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) | ||
|
||
from csv import QUOTE_MINIMAL, Dialect, register_dialect | ||
|
||
from odoo.addons.account_move_base_import.parser.file_parser import ( | ||
FileParser, | ||
float_or_zero, | ||
) | ||
|
||
|
||
class AdyenDialect(Dialect): | ||
delimiter = "," | ||
quotechar = '"' | ||
doublequote = False | ||
skipinitialspace = False | ||
lineterminator = "\n" | ||
quoting = QUOTE_MINIMAL | ||
|
||
|
||
register_dialect("adyen_dialect", AdyenDialect) | ||
|
||
|
||
class AdyenFileParser(FileParser): | ||
def __init__(self, journal, ftype="csv", **kwargs): | ||
conversion_dict = { | ||
"Payment Method": str, | ||
"Type": str, | ||
"Gross Debit (GC)": float_or_zero, | ||
"Gross Credit (GC)": float_or_zero, | ||
"Net Debit (NC)": float_or_zero, | ||
"Commission (NC)": float_or_zero, | ||
"Markup (NC)": float_or_zero, | ||
"Scheme Fees (NC)": float_or_zero, | ||
"Interchange (NC)": float_or_zero, | ||
"Merchant Reference": str, | ||
} | ||
super().__init__( | ||
journal, | ||
ftype=ftype, | ||
extra_fields=conversion_dict, | ||
dialect=AdyenDialect, | ||
**kwargs | ||
) | ||
self.commission_field = "Commission (NC)" | ||
|
||
@classmethod | ||
def parser_for(cls, parser_name): | ||
""" | ||
Used by the new_bank_statement_parser class factory. Return true if | ||
the providen name is generic_csvxls_so | ||
""" | ||
return parser_name == "adyen_cb_csvparser" | ||
|
||
def get_move_line_vals(self, line, *args, **kwargs): | ||
amount = line["Gross Credit (GC)"] or -line["Gross Debit (GC)"] | ||
res = { | ||
"name": line.get("Merchant Reference", ""), | ||
"credit": amount > 0.0 and amount or 0.0, | ||
"debit": amount < 0.0 and -amount or 0.0, | ||
} | ||
return res | ||
|
||
def _post(self, *args, **kwargs): | ||
res = super()._post(*args, **kwargs) | ||
# there are some fee line... not linked to a payment, we have to take it into | ||
# account | ||
self.extra_commission = 0.0 | ||
final_rows = [] | ||
for row in self.result_row_list: | ||
# account_move_import_base manage only once commission field when | ||
# adyen may have Commission (NC) with total commission or 3 fields with | ||
# detailed commission. => We fill the Commission (NC) in that case to have | ||
# a unique commission field | ||
if not row.get("Commission (NC)") and ( | ||
row.get("Markup (NC)") | ||
or row.get("Scheme Fees (NC)") | ||
or row.get("Interchange (NC)") | ||
): | ||
row["Commission (NC)"] = ( | ||
row["Markup (NC)"] | ||
+ row["Scheme Fees (NC)"] | ||
+ row["Interchange (NC)"] | ||
) | ||
if row.get("Type") in ( | ||
"Settled", | ||
"Refunded", | ||
"SentForSettle", | ||
"SentForRefund", | ||
): | ||
final_rows.append(row) | ||
elif row["Type"] == "Fee": | ||
self.extra_commission += row["Net Debit (NC)"] | ||
create_date = row["Creation Date"].split(" ")[0] | ||
if not self.move_date or create_date > self.move_date: | ||
self.move_date = create_date | ||
self.result_row_list = final_rows | ||
return res | ||
|
||
|
||
class AdyenPaypalParser(AdyenFileParser): | ||
def __init__(self, journal, ftype="csv", **kwargs): | ||
super().__init__(journal, ftype=ftype, **kwargs) | ||
self.support_multi_moves = True | ||
|
||
@classmethod | ||
def parser_for(cls, parser_name): | ||
""" | ||
Used by the new_bank_statement_parser class factory. Return true if | ||
the providen name is generic_csvxls_so | ||
""" | ||
return parser_name == "adyen_multi_move_csvparser" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Florian da Costa <[email protected]> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
This module extends the functionality of | ||
account_move_base_import, in order to handle the file format used for | ||
Adyen card remitance |
Oops, something went wrong.