From 22428eeec0302b3e10b6b382bef9dd76a2cb5317 Mon Sep 17 00:00:00 2001
From: Holger Brunn
Date: Tue, 4 Aug 2015 17:50:21 +0200
Subject: [PATCH 01/13] [ADD] account_reconcile_payment_order
---
account_reconcile_payment_order/README.rst | 51 ++++++++++++
account_reconcile_payment_order/__init__.py | 20 +++++
.../__openerp__.py | 33 ++++++++
.../models/__init__.py | 20 +++++
.../models/account_bank_statement_line.py | 73 ++++++++++++++++++
.../static/description/icon.png | Bin 0 -> 9455 bytes
6 files changed, 197 insertions(+)
create mode 100644 account_reconcile_payment_order/README.rst
create mode 100644 account_reconcile_payment_order/__init__.py
create mode 100644 account_reconcile_payment_order/__openerp__.py
create mode 100644 account_reconcile_payment_order/models/__init__.py
create mode 100644 account_reconcile_payment_order/models/account_bank_statement_line.py
create mode 100644 account_reconcile_payment_order/static/description/icon.png
diff --git a/account_reconcile_payment_order/README.rst b/account_reconcile_payment_order/README.rst
new file mode 100644
index 00000000..9ce5ae5f
--- /dev/null
+++ b/account_reconcile_payment_order/README.rst
@@ -0,0 +1,51 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+ :alt: License: AGPL-3
+Reconcile payment orders
+========================
+
+Payment orders that show up as as one big transaction can be difficult for the accounting to handle if a transfer acount is used. In this case, we need to reconcile this transaction with possibly hunderds of move lines, which can be a bit tiresome. This module tries to recognize transactions deriving from payment orders and propose the unreconciled move lines from this payment order.
+
+Usage
+=====
+
+It should just work. What the module does is to search for a payment order in state 'sent' that has the same amount as the statement line, and the same bank account than the statement.
+
+For further information, please visit:
+
+* https://www.odoo.com/forum/help-1
+
+Known issues / Roadmap
+======================
+
+* it would be good to check references too, but at least the bank in use here changes some characters, so this doesn't seem to be a general solution.
+
+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
+`here `_.
+
+Credits
+=======
+
+Contributors
+------------
+
+* Holger Brunn
+
+Maintainer
+----------
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+This module is maintained by the OCA.
+
+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.
+
+To contribute to this module, please visit http://odoo-community.org.
diff --git a/account_reconcile_payment_order/__init__.py b/account_reconcile_payment_order/__init__.py
new file mode 100644
index 00000000..cdb7d736
--- /dev/null
+++ b/account_reconcile_payment_order/__init__.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# This module copyright (C) 2015 Therp BV .
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from . import models
diff --git a/account_reconcile_payment_order/__openerp__.py b/account_reconcile_payment_order/__openerp__.py
new file mode 100644
index 00000000..3b45c14e
--- /dev/null
+++ b/account_reconcile_payment_order/__openerp__.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# This module copyright (C) 2015 Therp BV .
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+{
+ "name": "Reconcile payment orders",
+ "version": "1.0",
+ "author": "Therp BV,Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "category": "Accounting & Finance",
+ "summary": "Automatically reconcile all lines from sent payment orders",
+ "depends": [
+ 'account_banking_payment_transfer',
+ ],
+ "auto_install": False,
+ "installable": True,
+ "application": False,
+}
diff --git a/account_reconcile_payment_order/models/__init__.py b/account_reconcile_payment_order/models/__init__.py
new file mode 100644
index 00000000..33afdc17
--- /dev/null
+++ b/account_reconcile_payment_order/models/__init__.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# This module copyright (C) 2015 Therp BV .
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from . import account_bank_statement_line
diff --git a/account_reconcile_payment_order/models/account_bank_statement_line.py b/account_reconcile_payment_order/models/account_bank_statement_line.py
new file mode 100644
index 00000000..759f3aee
--- /dev/null
+++ b/account_reconcile_payment_order/models/account_bank_statement_line.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# This module copyright (C) 2015 Therp BV ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from decimal import Decimal
+from openerp import models, api
+from openerp.tools.float_utils import float_repr
+
+
+class AccountBankStatementLine(models.Model):
+ _inherit = 'account.bank.statement.line'
+
+ @api.model
+ def get_possible_payment_orders_for_statement_line(self, this):
+ """find orders that might be candidates for matching a statement
+ line"""
+ digits = self.env['decimal.precision'].precision_get('Account')
+ self.env.cr.execute(
+ '''with order_sums as (
+ select order_id, sum(amount_currency) as amount
+ from payment_line
+ join payment_order o on o.id=order_id
+ where o.state = 'sent'
+ group by order_id)
+ select order_id from order_sums where amount = %s''',
+ (Decimal(float_repr(abs(this.amount), digits)),))
+ order_ids = [i for i, in self.env.cr.fetchall()]
+ # verify that this ids are accessible to the user and from the
+ # right bank account if applicable
+ domain = [
+ ('id', 'in', order_ids),
+ ]
+ if this.bank_account_id.acc_number:
+ domain.append(
+ ('mode.bank_id.acc_number', '=',
+ this.bank_account_id.acc_number))
+ return self.env['payment.order'].search(domain)
+
+ @api.model
+ def get_reconcile_lines_from_order(self, this, orders, excluded_ids=None):
+ """return lines to reconcile our statement line with"""
+ order = orders[0]
+ return self.env['account.move.line']\
+ .prepare_move_lines_for_reconciliation_widget(
+ list(set(order._get_transfer_move_lines())))
+
+ @api.model
+ def get_reconciliation_proposition(self, this, excluded_ids=None):
+ """See if we find a set payment order that matches our line. If yes,
+ return all unreconciled lines from there"""
+ orders = self.get_possible_payment_orders_for_statement_line(this)
+ if orders:
+ reconcile_lines = self.get_reconcile_lines_from_order(
+ this, orders, excluded_ids=None)
+ if reconcile_lines:
+ return reconcile_lines
+ return super(AccountBankStatementLine, self)\
+ .get_reconciliation_proposition(this, excluded_ids=excluded_ids)
diff --git a/account_reconcile_payment_order/static/description/icon.png b/account_reconcile_payment_order/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
From 673d8b0de613d9905706fb13f8fcfe7ff68b2817 Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Wed, 19 Aug 2015 02:26:12 +0200
Subject: [PATCH 02/13] [FIX+IMP] account_reconcile_payment_order: Take into
account payment orders "non transferred" + Improvements in README+manifest
---
account_reconcile_payment_order/README.rst | 33 +++++++++++++++----
.../__openerp__.py | 8 +++--
.../i18n/account_reconcile_payment_order.pot | 20 +++++++++++
account_reconcile_payment_order/i18n/de.po | 24 ++++++++++++++
account_reconcile_payment_order/i18n/fr.po | 24 ++++++++++++++
account_reconcile_payment_order/i18n/it.po | 24 ++++++++++++++
account_reconcile_payment_order/i18n/nl_NL.po | 24 ++++++++++++++
account_reconcile_payment_order/i18n/sl.po | 25 ++++++++++++++
.../models/account_bank_statement_line.py | 11 +++++--
9 files changed, 180 insertions(+), 13 deletions(-)
create mode 100644 account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
create mode 100644 account_reconcile_payment_order/i18n/de.po
create mode 100644 account_reconcile_payment_order/i18n/fr.po
create mode 100644 account_reconcile_payment_order/i18n/it.po
create mode 100644 account_reconcile_payment_order/i18n/nl_NL.po
create mode 100644 account_reconcile_payment_order/i18n/sl.po
diff --git a/account_reconcile_payment_order/README.rst b/account_reconcile_payment_order/README.rst
index 9ce5ae5f..d16c8eae 100644
--- a/account_reconcile_payment_order/README.rst
+++ b/account_reconcile_payment_order/README.rst
@@ -1,23 +1,41 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
- :alt: License: AGPL-3
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+
+========================
Reconcile payment orders
========================
-Payment orders that show up as as one big transaction can be difficult for the accounting to handle if a transfer acount is used. In this case, we need to reconcile this transaction with possibly hunderds of move lines, which can be a bit tiresome. This module tries to recognize transactions deriving from payment orders and propose the unreconciled move lines from this payment order.
+Payment orders that show up as one big transaction can be difficult for the
+accounting to handle if a transfer account is used. In this case, we need to
+reconcile this transaction with possibly hundreds of move lines, which can be a
+bit tiresome. This module tries to recognize transactions deriving from payment
+orders and propose the unreconciled move lines from this payment order.
+
+Installation
+============
+
+This module requires the module **account_banking_payment_transfer**, available
+in https://github.com/OCA/bank-payment.
Usage
=====
-It should just work. What the module does is to search for a payment order in state 'sent' that has the same amount as the statement line, and the same bank account than the statement.
+It should just work. What the module does is to search for a payment order in
+state 'sent' (for orders transferred to an intermediate account) or done (for
+orders non transferred) that has the same amount as the statement line, and the
+same bank account than the statement. If any, all move lines are automatically
+proposed for the reconcile.
-For further information, please visit:
-
-* https://www.odoo.com/forum/help-1
+.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
+ :alt: Try me on Runbot
+ :target: https://runbot.odoo-community.org/runbot/98/8.0
Known issues / Roadmap
======================
-* it would be good to check references too, but at least the bank in use here changes some characters, so this doesn't seem to be a general solution.
+* it would be good to check references too, but at least the bank in use here
+ changes some characters, so this doesn't seem to be a general solution.
Bug Tracker
===========
@@ -34,6 +52,7 @@ Contributors
------------
* Holger Brunn
+* Pedro M. Baeza
Maintainer
----------
diff --git a/account_reconcile_payment_order/__openerp__.py b/account_reconcile_payment_order/__openerp__.py
index 3b45c14e..84e2a80d 100644
--- a/account_reconcile_payment_order/__openerp__.py
+++ b/account_reconcile_payment_order/__openerp__.py
@@ -19,11 +19,13 @@
##############################################################################
{
"name": "Reconcile payment orders",
- "version": "1.0",
- "author": "Therp BV,Odoo Community Association (OCA)",
+ "version": "8.0.1.0.0",
+ "author": "Therp BV,"
+ "Serv. Tecnol. Avanzados - Pedro M. Baeza,"
+ "Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Accounting & Finance",
- "summary": "Automatically reconcile all lines from sent payment orders",
+ "summary": "Automatically reconcile all lines from payment orders",
"depends": [
'account_banking_payment_transfer',
],
diff --git a/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot b/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
new file mode 100644
index 00000000..1eb8ac1c
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
@@ -0,0 +1,20 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.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_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr ""
+
diff --git a/account_reconcile_payment_order/i18n/de.po b/account_reconcile_payment_order/i18n/de.po
new file mode 100644
index 00000000..525c694d
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/de.po
@@ -0,0 +1,24 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-statement-reconcile (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-10-14 09:25+0000\n"
+"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: German (http://www.transifex.com/oca/OCA-bank-statement-"
+"reconcile-8-0/language/de/)\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: account_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Kontoauszugzeile"
diff --git a/account_reconcile_payment_order/i18n/fr.po b/account_reconcile_payment_order/i18n/fr.po
new file mode 100644
index 00000000..a0f73c7c
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/fr.po
@@ -0,0 +1,24 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-statement-reconcile (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-20 02:39+0000\n"
+"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: French (http://www.transifex.com/oca/OCA-bank-statement-"
+"reconcile-8-0/language/fr/)\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: account_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Ligne de relevé bancaire"
diff --git a/account_reconcile_payment_order/i18n/it.po b/account_reconcile_payment_order/i18n/it.po
new file mode 100644
index 00000000..b34c2286
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/it.po
@@ -0,0 +1,24 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-statement-reconcile (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-10-14 09:25+0000\n"
+"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Italian (http://www.transifex.com/oca/OCA-bank-statement-"
+"reconcile-8-0/language/it/)\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: account_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Linea estratto conto"
diff --git a/account_reconcile_payment_order/i18n/nl_NL.po b/account_reconcile_payment_order/i18n/nl_NL.po
new file mode 100644
index 00000000..1485a844
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/nl_NL.po
@@ -0,0 +1,24 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-statement-reconcile (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-24 00:30+0000\n"
+"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Dutch (Netherlands) (http://www.transifex.com/oca/OCA-bank-"
+"statement-reconcile-8-0/language/nl_NL/)\n"
+"Language: nl_NL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: account_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Bankafschriftregel"
diff --git a/account_reconcile_payment_order/i18n/sl.po b/account_reconcile_payment_order/i18n/sl.po
new file mode 100644
index 00000000..86e86e8b
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/sl.po
@@ -0,0 +1,25 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-statement-reconcile (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-08-19 00:32+0000\n"
+"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-statement-"
+"reconcile-8-0/language/sl/)\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+"%100==4 ? 2 : 3);\n"
+
+#. module: account_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Postavka bančnega izpiska"
diff --git a/account_reconcile_payment_order/models/account_bank_statement_line.py b/account_reconcile_payment_order/models/account_bank_statement_line.py
index 759f3aee..ece9f634 100644
--- a/account_reconcile_payment_order/models/account_bank_statement_line.py
+++ b/account_reconcile_payment_order/models/account_bank_statement_line.py
@@ -35,7 +35,7 @@ class AccountBankStatementLine(models.Model):
select order_id, sum(amount_currency) as amount
from payment_line
join payment_order o on o.id=order_id
- where o.state = 'sent'
+ where o.state in ('sent', 'done')
group by order_id)
select order_id from order_sums where amount = %s''',
(Decimal(float_repr(abs(this.amount), digits)),))
@@ -55,9 +55,14 @@ class AccountBankStatementLine(models.Model):
def get_reconcile_lines_from_order(self, this, orders, excluded_ids=None):
"""return lines to reconcile our statement line with"""
order = orders[0]
+ if order.state == 'sent':
+ move_lines_list = list(set(order._get_transfer_move_lines()))
+ else:
+ move_lines = order.line_ids.mapped('move_line_id').filtered(
+ lambda x: not x.reconcile_id)
+ move_lines_list = [x for x in move_lines]
return self.env['account.move.line']\
- .prepare_move_lines_for_reconciliation_widget(
- list(set(order._get_transfer_move_lines())))
+ .prepare_move_lines_for_reconciliation_widget(move_lines_list)
@api.model
def get_reconciliation_proposition(self, this, excluded_ids=None):
From 7efa591b7241f9cc5f9617ba03c5b7e10e6ca01d Mon Sep 17 00:00:00 2001
From: Holger Brunn
Date: Wed, 3 Feb 2016 18:10:38 +0100
Subject: [PATCH 03/13] [FIX] the line's bank account is the other party's
bank account, not ours
---
.../models/account_bank_statement_line.py | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/account_reconcile_payment_order/models/account_bank_statement_line.py b/account_reconcile_payment_order/models/account_bank_statement_line.py
index ece9f634..5bc3cadc 100644
--- a/account_reconcile_payment_order/models/account_bank_statement_line.py
+++ b/account_reconcile_payment_order/models/account_bank_statement_line.py
@@ -40,15 +40,10 @@ class AccountBankStatementLine(models.Model):
select order_id from order_sums where amount = %s''',
(Decimal(float_repr(abs(this.amount), digits)),))
order_ids = [i for i, in self.env.cr.fetchall()]
- # verify that this ids are accessible to the user and from the
- # right bank account if applicable
+ # verify that this ids are accessible to the user
domain = [
('id', 'in', order_ids),
]
- if this.bank_account_id.acc_number:
- domain.append(
- ('mode.bank_id.acc_number', '=',
- this.bank_account_id.acc_number))
return self.env['payment.order'].search(domain)
@api.model
From a1ffc009ac38ad21f7008de0911ea7e66d7abf2b Mon Sep 17 00:00:00 2001
From: eLBati
Date: Mon, 10 Oct 2016 18:11:11 +0200
Subject: [PATCH 04/13] FIX move lines preparation for bank statement
reconciliation Without this, in multi currency environment, the amount shown
in reconciliation widget would be incoherent: base currency and foreign
currency would be mixed
---
account_reconcile_payment_order/__openerp__.py | 2 +-
.../models/account_bank_statement_line.py | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/account_reconcile_payment_order/__openerp__.py b/account_reconcile_payment_order/__openerp__.py
index 84e2a80d..a9e3046d 100644
--- a/account_reconcile_payment_order/__openerp__.py
+++ b/account_reconcile_payment_order/__openerp__.py
@@ -19,7 +19,7 @@
##############################################################################
{
"name": "Reconcile payment orders",
- "version": "8.0.1.0.0",
+ "version": "8.0.1.0.1",
"author": "Therp BV,"
"Serv. Tecnol. Avanzados - Pedro M. Baeza,"
"Odoo Community Association (OCA)",
diff --git a/account_reconcile_payment_order/models/account_bank_statement_line.py b/account_reconcile_payment_order/models/account_bank_statement_line.py
index 5bc3cadc..1b2c7271 100644
--- a/account_reconcile_payment_order/models/account_bank_statement_line.py
+++ b/account_reconcile_payment_order/models/account_bank_statement_line.py
@@ -50,6 +50,9 @@ class AccountBankStatementLine(models.Model):
def get_reconcile_lines_from_order(self, this, orders, excluded_ids=None):
"""return lines to reconcile our statement line with"""
order = orders[0]
+ target_currency = (
+ this.currency_id or this.journal_id.currency or
+ this.journal_id.company_id.currency_id)
if order.state == 'sent':
move_lines_list = list(set(order._get_transfer_move_lines()))
else:
@@ -57,7 +60,9 @@ class AccountBankStatementLine(models.Model):
lambda x: not x.reconcile_id)
move_lines_list = [x for x in move_lines]
return self.env['account.move.line']\
- .prepare_move_lines_for_reconciliation_widget(move_lines_list)
+ .prepare_move_lines_for_reconciliation_widget(
+ move_lines_list, target_currency=target_currency,
+ target_date=this.date)
@api.model
def get_reconciliation_proposition(self, this, excluded_ids=None):
From f493b2723af6ef6f3e4353684b3338fd93100a3f Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Thu, 22 Aug 2019 17:00:47 +0200
Subject: [PATCH 05/13] [MIG] account_reconcile_payment_order: Migration to
12.0
* Standard procedure.
* README by fragments.
* Adapt logic to new reconciliation widget model.
* Add tests.
---
account_reconcile_payment_order/README.rst | 108 +++-
account_reconcile_payment_order/__init__.py | 21 +-
.../__manifest__.py | 20 +
.../__openerp__.py | 35 --
.../i18n/account_reconcile_payment_order.pot | 6 +-
account_reconcile_payment_order/i18n/de.po | 9 +-
account_reconcile_payment_order/i18n/fr.po | 9 +-
account_reconcile_payment_order/i18n/it.po | 9 +-
account_reconcile_payment_order/i18n/nl_NL.po | 9 +-
account_reconcile_payment_order/i18n/sl.po | 9 +-
.../models/__init__.py | 23 +-
.../models/account_bank_statement_line.py | 78 ---
.../models/account_reconciliation_widget.py | 67 +++
.../readme/CONFIGURE.rst | 2 +
.../readme/CONTRIBUTORS.rst | 4 +
.../readme/DESCRIPTION.rst | 5 +
.../readme/INSTALL.rst | 2 +
.../readme/ROADMAP.rst | 9 +
.../readme/USAGE.rst | 6 +
.../static/description/index.html | 471 ++++++++++++++++++
.../tests/__init__.py | 3 +
.../test_account_reconcile_payment_order.py | 104 ++++
22 files changed, 812 insertions(+), 197 deletions(-)
create mode 100644 account_reconcile_payment_order/__manifest__.py
delete mode 100644 account_reconcile_payment_order/__openerp__.py
delete mode 100644 account_reconcile_payment_order/models/account_bank_statement_line.py
create mode 100644 account_reconcile_payment_order/models/account_reconciliation_widget.py
create mode 100644 account_reconcile_payment_order/readme/CONFIGURE.rst
create mode 100644 account_reconcile_payment_order/readme/CONTRIBUTORS.rst
create mode 100644 account_reconcile_payment_order/readme/DESCRIPTION.rst
create mode 100644 account_reconcile_payment_order/readme/INSTALL.rst
create mode 100644 account_reconcile_payment_order/readme/ROADMAP.rst
create mode 100644 account_reconcile_payment_order/readme/USAGE.rst
create mode 100644 account_reconcile_payment_order/static/description/index.html
create mode 100644 account_reconcile_payment_order/tests/__init__.py
create mode 100644 account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
diff --git a/account_reconcile_payment_order/README.rst b/account_reconcile_payment_order/README.rst
index d16c8eae..b1c621de 100644
--- a/account_reconcile_payment_order/README.rst
+++ b/account_reconcile_payment_order/README.rst
@@ -1,70 +1,124 @@
-.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
- :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
- :alt: License: AGPL-3
-
========================
Reconcile payment orders
========================
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! 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%2Faccount--reconcile-lightgray.png?logo=github
+ :target: https://github.com/OCA/account-reconcile/tree/12.0/account_reconcile_payment_order
+ :alt: OCA/account-reconcile
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/account-reconcile-12-0/account-reconcile-12-0-account_reconcile_payment_order
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/98/12.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
Payment orders that show up as one big transaction can be difficult for the
accounting to handle if a transfer account is used. In this case, we need to
reconcile this transaction with possibly hundreds of move lines, which can be a
bit tiresome. This module tries to recognize transactions deriving from payment
orders and propose the unreconciled move lines from this payment order.
+**Table of contents**
+
+.. contents::
+ :local:
+
Installation
============
-This module requires the module **account_banking_payment_transfer**, available
+This module requires the module **account_payment_order**, available
in https://github.com/OCA/bank-payment.
+Configuration
+=============
+
+#. Go to *Settings > Users & Companies > Users*.
+#. Give to your user the permission "Show Full Accounting Features".
+
Usage
=====
-It should just work. What the module does is to search for a payment order in
-state 'sent' (for orders transferred to an intermediate account) or done (for
-orders non transferred) that has the same amount as the statement line, and the
-same bank account than the statement. If any, all move lines are automatically
-proposed for the reconcile.
-
-.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
- :alt: Try me on Runbot
- :target: https://runbot.odoo-community.org/runbot/98/8.0
+#. Go to *Invoicing > Overview*.
+#. Locate the bank kanban card and import or create a new statement on it.
+#. When reconciling, it should just work. What the module does is to search for
+ a finished payment order that has the same amount as the statement line. If
+ any, generated move lines (bank or AR/AP ones) are automatically proposed
+ for the reconciliation.
Known issues / Roadmap
======================
-* it would be good to check references too, but at least the bank in use here
- changes some characters, so this doesn't seem to be a general solution.
+* It would be good to check references too, but bank usually change some
+ characters, so this doesn't seem to be a general solution.
+* Take into account different currencies (in payment order or in bank
+ statement).
+* Try to match payment orders resulting entries grouped by due date, instead of
+ a whole, but this will affect performance for sure.
+* When the reconcile models end with more inheritable code, implement this
+ as a new type of reconciliation in this model.
+* Develop real UI tests, instead of mimicking the call to the involved method.
Bug Tracker
===========
-Bugs are tracked on `GitHub Issues `_.
+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
-`here `_.
+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
+~~~~~~~
+
+* Therp BV
+* Tecnativa
+
Contributors
-------------
+~~~~~~~~~~~~
-* Holger Brunn
-* Pedro M. Baeza
+* Holger Brunn
+* `Tecnativa `__:
-Maintainer
-----------
+ * 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
-This module is maintained by the OCA.
-
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.
-To contribute to this module, please visit http://odoo-community.org.
+.. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px
+ :target: https://github.com/pedrobaeza
+ :alt: pedrobaeza
+
+Current `maintainer `__:
+
+|maintainer-pedrobaeza|
+
+This module is part of the `OCA/account-reconcile `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/account_reconcile_payment_order/__init__.py b/account_reconcile_payment_order/__init__.py
index cdb7d736..e87e85c4 100644
--- a/account_reconcile_payment_order/__init__.py
+++ b/account_reconcile_payment_order/__init__.py
@@ -1,20 +1,3 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# This module copyright (C) 2015 Therp BV .
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
from . import models
diff --git a/account_reconcile_payment_order/__manifest__.py b/account_reconcile_payment_order/__manifest__.py
new file mode 100644
index 00000000..a423b783
--- /dev/null
+++ b/account_reconcile_payment_order/__manifest__.py
@@ -0,0 +1,20 @@
+# Copyright 2015 Therp BV ().
+# Copyright 2019 Tecnativa - Pedro M. Baeza
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
+{
+ "name": "Reconcile payment orders",
+ "version": "12.0.1.0.0",
+ "author": "Therp BV,"
+ "Tecnativa,"
+ "Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "website": "https://github.com/OCA/account-reconcile",
+ "category": "Invoicing Management",
+ "summary": "Automatically propose all lines generated from payment orders",
+ "depends": [
+ 'account_payment_order',
+ ],
+ "installable": True,
+ "maintainers": ['pedrobaeza'],
+}
diff --git a/account_reconcile_payment_order/__openerp__.py b/account_reconcile_payment_order/__openerp__.py
deleted file mode 100644
index a9e3046d..00000000
--- a/account_reconcile_payment_order/__openerp__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# This module copyright (C) 2015 Therp BV .
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-{
- "name": "Reconcile payment orders",
- "version": "8.0.1.0.1",
- "author": "Therp BV,"
- "Serv. Tecnol. Avanzados - Pedro M. Baeza,"
- "Odoo Community Association (OCA)",
- "license": "AGPL-3",
- "category": "Accounting & Finance",
- "summary": "Automatically reconcile all lines from payment orders",
- "depends": [
- 'account_banking_payment_transfer',
- ],
- "auto_install": False,
- "installable": True,
- "application": False,
-}
diff --git a/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot b/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
index 1eb8ac1c..69c2c350 100644
--- a/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
+++ b/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 8.0\n"
+"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
@@ -14,7 +14,7 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_reconcile_payment_order
-#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
-msgid "Bank Statement Line"
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
msgstr ""
diff --git a/account_reconcile_payment_order/i18n/de.po b/account_reconcile_payment_order/i18n/de.po
index 525c694d..9af0851e 100644
--- a/account_reconcile_payment_order/i18n/de.po
+++ b/account_reconcile_payment_order/i18n/de.po
@@ -19,6 +19,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_reconcile_payment_order
-#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr "Kontoauszugzeile"
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
+msgstr ""
+
+#~ msgid "Bank Statement Line"
+#~ msgstr "Kontoauszugzeile"
diff --git a/account_reconcile_payment_order/i18n/fr.po b/account_reconcile_payment_order/i18n/fr.po
index a0f73c7c..62d212ae 100644
--- a/account_reconcile_payment_order/i18n/fr.po
+++ b/account_reconcile_payment_order/i18n/fr.po
@@ -19,6 +19,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: account_reconcile_payment_order
-#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr "Ligne de relevé bancaire"
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
+msgstr ""
+
+#~ msgid "Bank Statement Line"
+#~ msgstr "Ligne de relevé bancaire"
diff --git a/account_reconcile_payment_order/i18n/it.po b/account_reconcile_payment_order/i18n/it.po
index b34c2286..5706243d 100644
--- a/account_reconcile_payment_order/i18n/it.po
+++ b/account_reconcile_payment_order/i18n/it.po
@@ -19,6 +19,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_reconcile_payment_order
-#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr "Linea estratto conto"
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
+msgstr ""
+
+#~ msgid "Bank Statement Line"
+#~ msgstr "Linea estratto conto"
diff --git a/account_reconcile_payment_order/i18n/nl_NL.po b/account_reconcile_payment_order/i18n/nl_NL.po
index 1485a844..ed1f3293 100644
--- a/account_reconcile_payment_order/i18n/nl_NL.po
+++ b/account_reconcile_payment_order/i18n/nl_NL.po
@@ -19,6 +19,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_reconcile_payment_order
-#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr "Bankafschriftregel"
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
+msgstr ""
+
+#~ msgid "Bank Statement Line"
+#~ msgstr "Bankafschriftregel"
diff --git a/account_reconcile_payment_order/i18n/sl.po b/account_reconcile_payment_order/i18n/sl.po
index 86e86e8b..cfe2776b 100644
--- a/account_reconcile_payment_order/i18n/sl.po
+++ b/account_reconcile_payment_order/i18n/sl.po
@@ -20,6 +20,9 @@ msgstr ""
"%100==4 ? 2 : 3);\n"
#. module: account_reconcile_payment_order
-#: model:ir.model,name:account_reconcile_payment_order.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr "Postavka bančnega izpiska"
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
+msgstr ""
+
+#~ msgid "Bank Statement Line"
+#~ msgstr "Postavka bančnega izpiska"
diff --git a/account_reconcile_payment_order/models/__init__.py b/account_reconcile_payment_order/models/__init__.py
index 33afdc17..7cf4dea8 100644
--- a/account_reconcile_payment_order/models/__init__.py
+++ b/account_reconcile_payment_order/models/__init__.py
@@ -1,20 +1,3 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# This module copyright (C) 2015 Therp BV .
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from . import account_bank_statement_line
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
+from . import account_reconciliation_widget
diff --git a/account_reconcile_payment_order/models/account_bank_statement_line.py b/account_reconcile_payment_order/models/account_bank_statement_line.py
deleted file mode 100644
index 1b2c7271..00000000
--- a/account_reconcile_payment_order/models/account_bank_statement_line.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# This module copyright (C) 2015 Therp BV ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from decimal import Decimal
-from openerp import models, api
-from openerp.tools.float_utils import float_repr
-
-
-class AccountBankStatementLine(models.Model):
- _inherit = 'account.bank.statement.line'
-
- @api.model
- def get_possible_payment_orders_for_statement_line(self, this):
- """find orders that might be candidates for matching a statement
- line"""
- digits = self.env['decimal.precision'].precision_get('Account')
- self.env.cr.execute(
- '''with order_sums as (
- select order_id, sum(amount_currency) as amount
- from payment_line
- join payment_order o on o.id=order_id
- where o.state in ('sent', 'done')
- group by order_id)
- select order_id from order_sums where amount = %s''',
- (Decimal(float_repr(abs(this.amount), digits)),))
- order_ids = [i for i, in self.env.cr.fetchall()]
- # verify that this ids are accessible to the user
- domain = [
- ('id', 'in', order_ids),
- ]
- return self.env['payment.order'].search(domain)
-
- @api.model
- def get_reconcile_lines_from_order(self, this, orders, excluded_ids=None):
- """return lines to reconcile our statement line with"""
- order = orders[0]
- target_currency = (
- this.currency_id or this.journal_id.currency or
- this.journal_id.company_id.currency_id)
- if order.state == 'sent':
- move_lines_list = list(set(order._get_transfer_move_lines()))
- else:
- move_lines = order.line_ids.mapped('move_line_id').filtered(
- lambda x: not x.reconcile_id)
- move_lines_list = [x for x in move_lines]
- return self.env['account.move.line']\
- .prepare_move_lines_for_reconciliation_widget(
- move_lines_list, target_currency=target_currency,
- target_date=this.date)
-
- @api.model
- def get_reconciliation_proposition(self, this, excluded_ids=None):
- """See if we find a set payment order that matches our line. If yes,
- return all unreconciled lines from there"""
- orders = self.get_possible_payment_orders_for_statement_line(this)
- if orders:
- reconcile_lines = self.get_reconcile_lines_from_order(
- this, orders, excluded_ids=None)
- if reconcile_lines:
- return reconcile_lines
- return super(AccountBankStatementLine, self)\
- .get_reconciliation_proposition(this, excluded_ids=excluded_ids)
diff --git a/account_reconcile_payment_order/models/account_reconciliation_widget.py b/account_reconcile_payment_order/models/account_reconciliation_widget.py
new file mode 100644
index 00000000..c3697694
--- /dev/null
+++ b/account_reconcile_payment_order/models/account_reconciliation_widget.py
@@ -0,0 +1,67 @@
+# Copyright 2019 Tecnativa - Pedro M. Baeza
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
+from odoo import models, api
+
+
+class AccountReconciliationWidget(models.AbstractModel):
+ _inherit = 'account.reconciliation.widget'
+
+ @api.model
+ def _get_possible_payment_orders_for_statement_line(self, st_line):
+ """Find orders that might be candidates for matching a statement
+ line.
+ """
+ return self.env['account.payment.order'].search([
+ ('total_company_currency', '=', st_line.amount),
+ ('state', 'in', ['done', 'uploaded']),
+ ])
+
+ @api.model
+ def _get_reconcile_lines_from_order(self, st_line, order,
+ excluded_ids=None):
+ """Return lines to reconcile our statement line with."""
+ aml_obj = self.env['account.move.line']
+ reconciled_lines = aml_obj.search([
+ ('bank_payment_line_id', 'in', order.bank_line_ids.ids)
+ ])
+ return (
+ reconciled_lines.mapped('move_id.line_ids') - reconciled_lines -
+ aml_obj.browse(excluded_ids)
+ ).filtered(lambda x: not x.reconciled)
+
+ def _prepare_proposition_from_orders(self, st_line, orders,
+ excluded_ids=None):
+ """Fill with the expected format the reconciliation proposition
+ for the given statement line and possible payment orders.
+ """
+ target_currency = (
+ st_line.currency_id or st_line.journal_id.currency_id or
+ st_line.journal_id.company_id.currency_id
+ )
+ for order in orders:
+ elegible_lines = self._get_reconcile_lines_from_order(
+ st_line, order, excluded_ids=excluded_ids,
+ )
+ if elegible_lines:
+ return self._prepare_move_lines(
+ elegible_lines, target_currency=target_currency,
+ target_date=st_line.date,
+ )
+ return []
+
+ def get_bank_statement_line_data(self, st_line_ids, excluded_ids=None):
+ res = super().get_bank_statement_line_data(
+ st_line_ids, excluded_ids=excluded_ids,
+ )
+ st_line_obj = self.env['account.bank.statement.line']
+ for line_vals in res.get('lines', []):
+ st_line = st_line_obj.browse(line_vals['st_line']['id'])
+ orders = self._get_possible_payment_orders_for_statement_line(
+ st_line)
+ proposition_vals = self._prepare_proposition_from_orders(
+ st_line, orders, excluded_ids=excluded_ids,
+ )
+ if proposition_vals:
+ line_vals['reconciliation_proposition'] = proposition_vals
+ return res
diff --git a/account_reconcile_payment_order/readme/CONFIGURE.rst b/account_reconcile_payment_order/readme/CONFIGURE.rst
new file mode 100644
index 00000000..1f9dff4f
--- /dev/null
+++ b/account_reconcile_payment_order/readme/CONFIGURE.rst
@@ -0,0 +1,2 @@
+#. Go to *Settings > Users & Companies > Users*.
+#. Give to your user the permission "Show Full Accounting Features".
diff --git a/account_reconcile_payment_order/readme/CONTRIBUTORS.rst b/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
new file mode 100644
index 00000000..dfa767e3
--- /dev/null
+++ b/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
@@ -0,0 +1,4 @@
+* Holger Brunn
+* `Tecnativa `__:
+
+ * Pedro M. Baeza
diff --git a/account_reconcile_payment_order/readme/DESCRIPTION.rst b/account_reconcile_payment_order/readme/DESCRIPTION.rst
new file mode 100644
index 00000000..03833623
--- /dev/null
+++ b/account_reconcile_payment_order/readme/DESCRIPTION.rst
@@ -0,0 +1,5 @@
+Payment orders that show up as one big transaction can be difficult for the
+accounting to handle if a transfer account is used. In this case, we need to
+reconcile this transaction with possibly hundreds of move lines, which can be a
+bit tiresome. This module tries to recognize transactions deriving from payment
+orders and propose the unreconciled move lines from this payment order.
diff --git a/account_reconcile_payment_order/readme/INSTALL.rst b/account_reconcile_payment_order/readme/INSTALL.rst
new file mode 100644
index 00000000..41a9bc34
--- /dev/null
+++ b/account_reconcile_payment_order/readme/INSTALL.rst
@@ -0,0 +1,2 @@
+This module requires the module **account_payment_order**, available
+in https://github.com/OCA/bank-payment.
diff --git a/account_reconcile_payment_order/readme/ROADMAP.rst b/account_reconcile_payment_order/readme/ROADMAP.rst
new file mode 100644
index 00000000..074f3d7a
--- /dev/null
+++ b/account_reconcile_payment_order/readme/ROADMAP.rst
@@ -0,0 +1,9 @@
+* It would be good to check references too, but bank usually change some
+ characters, so this doesn't seem to be a general solution.
+* Take into account different currencies (in payment order or in bank
+ statement).
+* Try to match payment orders resulting entries grouped by due date, instead of
+ a whole, but this will affect performance for sure.
+* When the reconcile models end with more inheritable code, implement this
+ as a new type of reconciliation in this model.
+* Develop real UI tests, instead of mimicking the call to the involved method.
diff --git a/account_reconcile_payment_order/readme/USAGE.rst b/account_reconcile_payment_order/readme/USAGE.rst
new file mode 100644
index 00000000..67a1eb95
--- /dev/null
+++ b/account_reconcile_payment_order/readme/USAGE.rst
@@ -0,0 +1,6 @@
+#. Go to *Invoicing > Overview*.
+#. Locate the bank kanban card and import or create a new statement on it.
+#. When reconciling, it should just work. What the module does is to search for
+ a finished payment order that has the same amount as the statement line. If
+ any, generated move lines (bank or AR/AP ones) are automatically proposed
+ for the reconciliation.
diff --git a/account_reconcile_payment_order/static/description/index.html b/account_reconcile_payment_order/static/description/index.html
new file mode 100644
index 00000000..7f514072
--- /dev/null
+++ b/account_reconcile_payment_order/static/description/index.html
@@ -0,0 +1,471 @@
+
+
+
+
+
+
+Reconcile payment orders
+
+
+
+
+
Reconcile payment orders
+
+
+

+
Payment orders that show up as one big transaction can be difficult for the
+accounting to handle if a transfer account is used. In this case, we need to
+reconcile this transaction with possibly hundreds of move lines, which can be a
+bit tiresome. This module tries to recognize transactions deriving from payment
+orders and propose the unreconciled move lines from this payment order.
+
Table of contents
+
+
+
+
+
+- Go to Settings > Users & Companies > Users.
+- Give to your user the permission “Show Full Accounting Features”.
+
+
+
+
+
+- Go to Invoicing > Overview.
+- Locate the bank kanban card and import or create a new statement on it.
+- When reconciling, it should just work. What the module does is to search for
+a finished payment order that has the same amount as the statement line. If
+any, generated move lines (bank or AR/AP ones) are automatically proposed
+for the reconciliation.
+
+
+
+
+
+- It would be good to check references too, but bank usually change some
+characters, so this doesn’t seem to be a general solution.
+- Take into account different currencies (in payment order or in bank
+statement).
+- Try to match payment orders resulting entries grouped by due date, instead of
+a whole, but this will affect performance for sure.
+- When the reconcile models end with more inheritable code, implement this
+as a new type of reconciliation in this model.
+- Develop real UI tests, instead of mimicking the call to the involved method.
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

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

+
This module is part of the OCA/account-reconcile project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/account_reconcile_payment_order/tests/__init__.py b/account_reconcile_payment_order/tests/__init__.py
new file mode 100644
index 00000000..90ea9363
--- /dev/null
+++ b/account_reconcile_payment_order/tests/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
+from . import test_account_reconcile_payment_order
diff --git a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
new file mode 100644
index 00000000..87591585
--- /dev/null
+++ b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
@@ -0,0 +1,104 @@
+# Copyright 2019 Tecnativa - Pedro M. Baeza
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
+from odoo.addons.account_payment_order.tests.test_payment_order_inbound \
+ import TestPaymentOrderInboundBase
+
+
+class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.widget_obj = cls.env['account.reconciliation.widget']
+ cls.bank_journal = cls.env['account.journal'].search(
+ [('type', '=', 'bank')], limit=1)
+ # Create second invoice for being sure it handles the payment order
+ cls.invoice2 = cls._create_customer_invoice(cls)
+ cls.partner2 = cls.env['res.partner'].create({
+ 'name': 'Test partner 2',
+ })
+ cls.invoice2.partner_id = cls.partner2.id
+ cls.invoice2.action_invoice_open()
+ # Add to payment order using the wizard
+ cls.env['account.invoice.payment.line.multi'].with_context(
+ active_model='account.invoice',
+ active_ids=cls.invoice2.ids,
+ ).create({}).run()
+ # Prepare statement
+ cls.statement = cls.env['account.bank.statement'].create({
+ 'name': 'Test statement',
+ 'date': '2019-01-01',
+ 'journal_id': cls.bank_journal.id,
+ 'line_ids': [
+ (0, 0, {
+ 'date': '2019-01-01',
+ 'name': 'Test line',
+ 'amount': 200,
+ }),
+ ],
+ })
+
+ def test_reconcile_payment_order_bank(self):
+ self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
+ self.inbound_mode.write({
+ 'offsetting_account': 'bank_account',
+ 'move_option': 'line',
+ })
+ # Prepare payment order
+ self.inbound_order.draft2open()
+ self.inbound_order.open2generated()
+ self.inbound_order.generated2uploaded()
+ # Check widget result
+ res = self.widget_obj.get_bank_statement_line_data(
+ self.statement.line_ids.ids,
+ )
+ self.assertEqual(len(res['lines'][0]['reconciliation_proposition']), 2)
+
+ def test_reconcile_payment_order_transfer_account(self):
+ self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
+ receivable_account = self.env['account.account'].create({
+ 'name': 'Extra receivable account',
+ 'code': 'TEST_ERA',
+ 'reconcile': True,
+ 'user_type_id': (
+ self.env.ref('account.data_account_type_receivable').id),
+ })
+ self.inbound_mode.write({
+ 'offsetting_account': 'transfer_account',
+ 'transfer_account_id': receivable_account.id,
+ 'transfer_journal_id': self.bank_journal.id,
+ 'move_option': 'line',
+ })
+ self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
+ # Prepare payment order
+ self.inbound_order.draft2open()
+ self.inbound_order.open2generated()
+ self.inbound_order.generated2uploaded()
+ # Check widget result
+ res = self.widget_obj.get_bank_statement_line_data(
+ self.statement.line_ids.ids,
+ )
+ proposition = res['lines'][0]['reconciliation_proposition']
+ self.assertEqual(len(proposition), 2)
+ # Reconcile that entries and check again
+ st_line_vals = res['lines'][0]['st_line']
+ self.widget_obj.process_move_lines(
+ data=[{
+ 'type': '',
+ 'mv_line_ids': [
+ proposition[0]['id'],
+ proposition[1]['id'],
+ ],
+ 'new_mv_line_dicts': [{
+ 'name': st_line_vals['name'],
+ 'credit': st_line_vals['amount'],
+ 'debit': 0,
+ 'account_id': st_line_vals['account_id'][0],
+ 'journal_id': st_line_vals['journal_id'],
+ }],
+ }],
+ )
+ res2 = self.widget_obj.get_bank_statement_line_data(
+ self.statement.line_ids.ids,
+ )
+ self.assertNotEqual(res, res2)
From 0011cde0315f09c97d63581b40dc9c9b42bdb9f3 Mon Sep 17 00:00:00 2001
From: Bole
Date: Thu, 5 Mar 2020 14:45:35 +0000
Subject: [PATCH 06/13] Added translation using Weblate (Croatian)
---
account_reconcile_payment_order/i18n/hr.po | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 account_reconcile_payment_order/i18n/hr.po
diff --git a/account_reconcile_payment_order/i18n/hr.po b/account_reconcile_payment_order/i18n/hr.po
new file mode 100644
index 00000000..33910409
--- /dev/null
+++ b/account_reconcile_payment_order/i18n/hr.po
@@ -0,0 +1,21 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_reconcile_payment_order
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#. module: account_reconcile_payment_order
+#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
+msgid "Account Reconciliation widget"
+msgstr ""
From 847ca11aa039e91c7d47c10c8df8b7fe9ea91065 Mon Sep 17 00:00:00 2001
From: Bole
Date: Thu, 5 Mar 2020 14:45:51 +0000
Subject: [PATCH 07/13] Translated using Weblate (Croatian)
Currently translated at 100.0% (1 of 1 strings)
Translation: account-reconcile-12.0/account-reconcile-12.0-account_reconcile_payment_order
Translate-URL: https://translation.odoo-community.org/projects/account-reconcile-12-0/account-reconcile-12-0-account_reconcile_payment_order/hr/
---
account_reconcile_payment_order/i18n/hr.po | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/account_reconcile_payment_order/i18n/hr.po b/account_reconcile_payment_order/i18n/hr.po
index 33910409..80df72c1 100644
--- a/account_reconcile_payment_order/i18n/hr.po
+++ b/account_reconcile_payment_order/i18n/hr.po
@@ -6,7 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2020-03-05 17:13+0000\n"
+"Last-Translator: Bole \n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
@@ -14,8 +15,9 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 3.10\n"
#. module: account_reconcile_payment_order
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
-msgstr ""
+msgstr "Widget zatvaranja"
From 0773635b5b3ebea4d5ebfdb6d55c4cf9e1de0907 Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Thu, 23 Apr 2020 18:44:45 +0200
Subject: [PATCH 08/13] [FIX] account_reconcile_payment_order: Adapt tests to
upstream changes
Due to OCA/bank-payment@7ffe049ad3095f61835e30fb369c975c24341413
---
.../tests/test_account_reconcile_payment_order.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
index 87591585..220190ff 100644
--- a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
+++ b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
@@ -11,9 +11,11 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
super().setUpClass()
cls.widget_obj = cls.env['account.reconciliation.widget']
cls.bank_journal = cls.env['account.journal'].search(
- [('type', '=', 'bank')], limit=1)
+ [('type', '=', 'bank'),
+ '|', ('company_id', '=', cls.env.user.company_id.id),
+ ('company_id', '=', False)], limit=1)
# Create second invoice for being sure it handles the payment order
- cls.invoice2 = cls._create_customer_invoice(cls)
+ cls.invoice2 = cls._create_customer_invoice()
cls.partner2 = cls.env['res.partner'].create({
'name': 'Test partner 2',
})
From 4022ef5734f5f8771c0e153592eacc976ea82238 Mon Sep 17 00:00:00 2001
From: Abraham Anes
Date: Wed, 11 Nov 2020 16:17:46 +0100
Subject: [PATCH 09/13] [IMP] account_reconcile_payment_order: black, isort,
prettier
---
.../__manifest__.py | 10 +-
.../models/account_reconciliation_widget.py | 52 +++----
.../test_account_reconcile_payment_order.py | 132 +++++++++---------
3 files changed, 97 insertions(+), 97 deletions(-)
diff --git a/account_reconcile_payment_order/__manifest__.py b/account_reconcile_payment_order/__manifest__.py
index a423b783..b7f539a8 100644
--- a/account_reconcile_payment_order/__manifest__.py
+++ b/account_reconcile_payment_order/__manifest__.py
@@ -5,16 +5,12 @@
{
"name": "Reconcile payment orders",
"version": "12.0.1.0.0",
- "author": "Therp BV,"
- "Tecnativa,"
- "Odoo Community Association (OCA)",
+ "author": "Therp BV," "Tecnativa," "Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-reconcile",
"category": "Invoicing Management",
"summary": "Automatically propose all lines generated from payment orders",
- "depends": [
- 'account_payment_order',
- ],
+ "depends": ["account_payment_order",],
"installable": True,
- "maintainers": ['pedrobaeza'],
+ "maintainers": ["pedrobaeza"],
}
diff --git a/account_reconcile_payment_order/models/account_reconciliation_widget.py b/account_reconcile_payment_order/models/account_reconciliation_widget.py
index c3697694..87ffb0cd 100644
--- a/account_reconcile_payment_order/models/account_reconciliation_widget.py
+++ b/account_reconcile_payment_order/models/account_reconciliation_widget.py
@@ -1,43 +1,45 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
-from odoo import models, api
+from odoo import api, models
class AccountReconciliationWidget(models.AbstractModel):
- _inherit = 'account.reconciliation.widget'
+ _inherit = "account.reconciliation.widget"
@api.model
def _get_possible_payment_orders_for_statement_line(self, st_line):
"""Find orders that might be candidates for matching a statement
line.
"""
- return self.env['account.payment.order'].search([
- ('total_company_currency', '=', st_line.amount),
- ('state', 'in', ['done', 'uploaded']),
- ])
+ return self.env["account.payment.order"].search(
+ [
+ ("total_company_currency", "=", st_line.amount),
+ ("state", "in", ["done", "uploaded"]),
+ ]
+ )
@api.model
- def _get_reconcile_lines_from_order(self, st_line, order,
- excluded_ids=None):
+ def _get_reconcile_lines_from_order(self, st_line, order, excluded_ids=None):
"""Return lines to reconcile our statement line with."""
- aml_obj = self.env['account.move.line']
- reconciled_lines = aml_obj.search([
- ('bank_payment_line_id', 'in', order.bank_line_ids.ids)
- ])
+ aml_obj = self.env["account.move.line"]
+ reconciled_lines = aml_obj.search(
+ [("bank_payment_line_id", "in", order.bank_line_ids.ids)]
+ )
return (
- reconciled_lines.mapped('move_id.line_ids') - reconciled_lines -
- aml_obj.browse(excluded_ids)
+ reconciled_lines.mapped("move_id.line_ids")
+ - reconciled_lines
+ - aml_obj.browse(excluded_ids)
).filtered(lambda x: not x.reconciled)
- def _prepare_proposition_from_orders(self, st_line, orders,
- excluded_ids=None):
+ def _prepare_proposition_from_orders(self, st_line, orders, excluded_ids=None):
"""Fill with the expected format the reconciliation proposition
for the given statement line and possible payment orders.
"""
target_currency = (
- st_line.currency_id or st_line.journal_id.currency_id or
- st_line.journal_id.company_id.currency_id
+ st_line.currency_id
+ or st_line.journal_id.currency_id
+ or st_line.journal_id.company_id.currency_id
)
for order in orders:
elegible_lines = self._get_reconcile_lines_from_order(
@@ -45,7 +47,8 @@ class AccountReconciliationWidget(models.AbstractModel):
)
if elegible_lines:
return self._prepare_move_lines(
- elegible_lines, target_currency=target_currency,
+ elegible_lines,
+ target_currency=target_currency,
target_date=st_line.date,
)
return []
@@ -54,14 +57,13 @@ class AccountReconciliationWidget(models.AbstractModel):
res = super().get_bank_statement_line_data(
st_line_ids, excluded_ids=excluded_ids,
)
- st_line_obj = self.env['account.bank.statement.line']
- for line_vals in res.get('lines', []):
- st_line = st_line_obj.browse(line_vals['st_line']['id'])
- orders = self._get_possible_payment_orders_for_statement_line(
- st_line)
+ st_line_obj = self.env["account.bank.statement.line"]
+ for line_vals in res.get("lines", []):
+ st_line = st_line_obj.browse(line_vals["st_line"]["id"])
+ orders = self._get_possible_payment_orders_for_statement_line(st_line)
proposition_vals = self._prepare_proposition_from_orders(
st_line, orders, excluded_ids=excluded_ids,
)
if proposition_vals:
- line_vals['reconciliation_proposition'] = proposition_vals
+ line_vals["reconciliation_proposition"] = proposition_vals
return res
diff --git a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
index 220190ff..6bf9a30b 100644
--- a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
+++ b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
@@ -1,104 +1,106 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
-from odoo.addons.account_payment_order.tests.test_payment_order_inbound \
- import TestPaymentOrderInboundBase
+from odoo.addons.account_payment_order.tests.test_payment_order_inbound import (
+ TestPaymentOrderInboundBase,
+)
class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
@classmethod
def setUpClass(cls):
super().setUpClass()
- cls.widget_obj = cls.env['account.reconciliation.widget']
- cls.bank_journal = cls.env['account.journal'].search(
- [('type', '=', 'bank'),
- '|', ('company_id', '=', cls.env.user.company_id.id),
- ('company_id', '=', False)], limit=1)
+ cls.widget_obj = cls.env["account.reconciliation.widget"]
+ cls.bank_journal = cls.env["account.journal"].search(
+ [
+ ("type", "=", "bank"),
+ "|",
+ ("company_id", "=", cls.env.user.company_id.id),
+ ("company_id", "=", False),
+ ],
+ limit=1,
+ )
# Create second invoice for being sure it handles the payment order
cls.invoice2 = cls._create_customer_invoice()
- cls.partner2 = cls.env['res.partner'].create({
- 'name': 'Test partner 2',
- })
+ cls.partner2 = cls.env["res.partner"].create({"name": "Test partner 2",})
cls.invoice2.partner_id = cls.partner2.id
cls.invoice2.action_invoice_open()
# Add to payment order using the wizard
- cls.env['account.invoice.payment.line.multi'].with_context(
- active_model='account.invoice',
- active_ids=cls.invoice2.ids,
+ cls.env["account.invoice.payment.line.multi"].with_context(
+ active_model="account.invoice", active_ids=cls.invoice2.ids,
).create({}).run()
# Prepare statement
- cls.statement = cls.env['account.bank.statement'].create({
- 'name': 'Test statement',
- 'date': '2019-01-01',
- 'journal_id': cls.bank_journal.id,
- 'line_ids': [
- (0, 0, {
- 'date': '2019-01-01',
- 'name': 'Test line',
- 'amount': 200,
- }),
- ],
- })
+ cls.statement = cls.env["account.bank.statement"].create(
+ {
+ "name": "Test statement",
+ "date": "2019-01-01",
+ "journal_id": cls.bank_journal.id,
+ "line_ids": [
+ (0, 0, {"date": "2019-01-01", "name": "Test line", "amount": 200,}),
+ ],
+ }
+ )
def test_reconcile_payment_order_bank(self):
self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
- self.inbound_mode.write({
- 'offsetting_account': 'bank_account',
- 'move_option': 'line',
- })
+ self.inbound_mode.write(
+ {"offsetting_account": "bank_account", "move_option": "line",}
+ )
# Prepare payment order
self.inbound_order.draft2open()
self.inbound_order.open2generated()
self.inbound_order.generated2uploaded()
# Check widget result
- res = self.widget_obj.get_bank_statement_line_data(
- self.statement.line_ids.ids,
- )
- self.assertEqual(len(res['lines'][0]['reconciliation_proposition']), 2)
+ res = self.widget_obj.get_bank_statement_line_data(self.statement.line_ids.ids,)
+ self.assertEqual(len(res["lines"][0]["reconciliation_proposition"]), 2)
def test_reconcile_payment_order_transfer_account(self):
self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
- receivable_account = self.env['account.account'].create({
- 'name': 'Extra receivable account',
- 'code': 'TEST_ERA',
- 'reconcile': True,
- 'user_type_id': (
- self.env.ref('account.data_account_type_receivable').id),
- })
- self.inbound_mode.write({
- 'offsetting_account': 'transfer_account',
- 'transfer_account_id': receivable_account.id,
- 'transfer_journal_id': self.bank_journal.id,
- 'move_option': 'line',
- })
+ receivable_account = self.env["account.account"].create(
+ {
+ "name": "Extra receivable account",
+ "code": "TEST_ERA",
+ "reconcile": True,
+ "user_type_id": (
+ self.env.ref("account.data_account_type_receivable").id
+ ),
+ }
+ )
+ self.inbound_mode.write(
+ {
+ "offsetting_account": "transfer_account",
+ "transfer_account_id": receivable_account.id,
+ "transfer_journal_id": self.bank_journal.id,
+ "move_option": "line",
+ }
+ )
self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
# Prepare payment order
self.inbound_order.draft2open()
self.inbound_order.open2generated()
self.inbound_order.generated2uploaded()
# Check widget result
- res = self.widget_obj.get_bank_statement_line_data(
- self.statement.line_ids.ids,
- )
- proposition = res['lines'][0]['reconciliation_proposition']
+ res = self.widget_obj.get_bank_statement_line_data(self.statement.line_ids.ids,)
+ proposition = res["lines"][0]["reconciliation_proposition"]
self.assertEqual(len(proposition), 2)
# Reconcile that entries and check again
- st_line_vals = res['lines'][0]['st_line']
+ st_line_vals = res["lines"][0]["st_line"]
self.widget_obj.process_move_lines(
- data=[{
- 'type': '',
- 'mv_line_ids': [
- proposition[0]['id'],
- proposition[1]['id'],
- ],
- 'new_mv_line_dicts': [{
- 'name': st_line_vals['name'],
- 'credit': st_line_vals['amount'],
- 'debit': 0,
- 'account_id': st_line_vals['account_id'][0],
- 'journal_id': st_line_vals['journal_id'],
- }],
- }],
+ data=[
+ {
+ "type": "",
+ "mv_line_ids": [proposition[0]["id"], proposition[1]["id"],],
+ "new_mv_line_dicts": [
+ {
+ "name": st_line_vals["name"],
+ "credit": st_line_vals["amount"],
+ "debit": 0,
+ "account_id": st_line_vals["account_id"][0],
+ "journal_id": st_line_vals["journal_id"],
+ }
+ ],
+ }
+ ],
)
res2 = self.widget_obj.get_bank_statement_line_data(
self.statement.line_ids.ids,
From 5077757a486f187949699f1caaffdf7bcd2806cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Marques?=
Date: Tue, 16 Feb 2021 07:26:08 +0000
Subject: [PATCH 10/13] [MIG] account_reconcile_payment_order: Migration to
13.0
Co-Authored-By: Abraham Anes
---
account_reconcile_payment_order/README.rst | 11 +++++----
.../__manifest__.py | 4 ++--
.../i18n/account_reconcile_payment_order.pot | 7 +++---
account_reconcile_payment_order/i18n/de.po | 8 +++----
account_reconcile_payment_order/i18n/fr.po | 8 +++----
account_reconcile_payment_order/i18n/hr.po | 6 ++---
account_reconcile_payment_order/i18n/it.po | 8 +++----
account_reconcile_payment_order/i18n/nl_NL.po | 8 +++----
account_reconcile_payment_order/i18n/sl.po | 8 +++----
.../readme/CONTRIBUTORS.rst | 1 +
.../static/description/index.html | 7 +++---
.../test_account_reconcile_payment_order.py | 23 +++++++++++--------
12 files changed, 48 insertions(+), 51 deletions(-)
diff --git a/account_reconcile_payment_order/README.rst b/account_reconcile_payment_order/README.rst
index b1c621de..efedfe50 100644
--- a/account_reconcile_payment_order/README.rst
+++ b/account_reconcile_payment_order/README.rst
@@ -14,13 +14,13 @@ Reconcile payment orders
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github
- :target: https://github.com/OCA/account-reconcile/tree/12.0/account_reconcile_payment_order
+ :target: https://github.com/OCA/account-reconcile/tree/13.0/account_reconcile_payment_order
:alt: OCA/account-reconcile
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/account-reconcile-12-0/account-reconcile-12-0-account_reconcile_payment_order
+ :target: https://translation.odoo-community.org/projects/account-reconcile-13-0/account-reconcile-13-0-account_reconcile_payment_order
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/98/12.0
+ :target: https://runbot.odoo-community.org/runbot/98/13.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -77,7 +77,7 @@ 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 `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -97,6 +97,7 @@ Contributors
* `Tecnativa `__:
* Pedro M. Baeza
+ * João Marques
Maintainers
~~~~~~~~~~~
@@ -119,6 +120,6 @@ Current `maintainer `__:
|maintainer-pedrobaeza|
-This module is part of the `OCA/account-reconcile `_ project on GitHub.
+This module is part of the `OCA/account-reconcile `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/account_reconcile_payment_order/__manifest__.py b/account_reconcile_payment_order/__manifest__.py
index b7f539a8..5ac2d647 100644
--- a/account_reconcile_payment_order/__manifest__.py
+++ b/account_reconcile_payment_order/__manifest__.py
@@ -4,13 +4,13 @@
{
"name": "Reconcile payment orders",
- "version": "12.0.1.0.0",
+ "version": "13.0.1.0.0",
"author": "Therp BV," "Tecnativa," "Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-reconcile",
"category": "Invoicing Management",
"summary": "Automatically propose all lines generated from payment orders",
- "depends": ["account_payment_order",],
+ "depends": ["account_payment_order"],
"installable": True,
"maintainers": ["pedrobaeza"],
}
diff --git a/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot b/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
index 69c2c350..7ed0bfaa 100644
--- a/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
+++ b/account_reconcile_payment_order/i18n/account_reconcile_payment_order.pot
@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * account_reconcile_payment_order
+# * account_reconcile_payment_order
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: <>\n"
+"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,4 +17,3 @@ msgstr ""
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
-
diff --git a/account_reconcile_payment_order/i18n/de.po b/account_reconcile_payment_order/i18n/de.po
index 9af0851e..5af52a94 100644
--- a/account_reconcile_payment_order/i18n/de.po
+++ b/account_reconcile_payment_order/i18n/de.po
@@ -8,20 +8,18 @@ msgstr ""
"Project-Id-Version: bank-statement-reconcile (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-14 09:25+0000\n"
-"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"PO-Revision-Date: 2021-02-16 07:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-bank-statement-"
"reconcile-8-0/language/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.2\n"
#. module: account_reconcile_payment_order
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
-
-#~ msgid "Bank Statement Line"
-#~ msgstr "Kontoauszugzeile"
diff --git a/account_reconcile_payment_order/i18n/fr.po b/account_reconcile_payment_order/i18n/fr.po
index 62d212ae..02f642b1 100644
--- a/account_reconcile_payment_order/i18n/fr.po
+++ b/account_reconcile_payment_order/i18n/fr.po
@@ -8,20 +8,18 @@ msgstr ""
"Project-Id-Version: bank-statement-reconcile (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-20 02:39+0000\n"
-"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"PO-Revision-Date: 2021-02-16 07:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-bank-statement-"
"reconcile-8-0/language/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 2.4.2\n"
#. module: account_reconcile_payment_order
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
-
-#~ msgid "Bank Statement Line"
-#~ msgstr "Ligne de relevé bancaire"
diff --git a/account_reconcile_payment_order/i18n/hr.po b/account_reconcile_payment_order/i18n/hr.po
index 80df72c1..6ffea32f 100644
--- a/account_reconcile_payment_order/i18n/hr.po
+++ b/account_reconcile_payment_order/i18n/hr.po
@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * account_reconcile_payment_order
+# * account_reconcile_payment_order
#
msgid ""
msgstr ""
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
-"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.10\n"
#. module: account_reconcile_payment_order
diff --git a/account_reconcile_payment_order/i18n/it.po b/account_reconcile_payment_order/i18n/it.po
index 5706243d..4fd73011 100644
--- a/account_reconcile_payment_order/i18n/it.po
+++ b/account_reconcile_payment_order/i18n/it.po
@@ -8,20 +8,18 @@ msgstr ""
"Project-Id-Version: bank-statement-reconcile (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-14 09:25+0000\n"
-"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"PO-Revision-Date: 2021-02-16 07:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: Italian (http://www.transifex.com/oca/OCA-bank-statement-"
"reconcile-8-0/language/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.2\n"
#. module: account_reconcile_payment_order
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
-
-#~ msgid "Bank Statement Line"
-#~ msgstr "Linea estratto conto"
diff --git a/account_reconcile_payment_order/i18n/nl_NL.po b/account_reconcile_payment_order/i18n/nl_NL.po
index ed1f3293..c58d0437 100644
--- a/account_reconcile_payment_order/i18n/nl_NL.po
+++ b/account_reconcile_payment_order/i18n/nl_NL.po
@@ -8,20 +8,18 @@ msgstr ""
"Project-Id-Version: bank-statement-reconcile (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-24 00:30+0000\n"
-"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"PO-Revision-Date: 2021-02-16 07:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/oca/OCA-bank-"
"statement-reconcile-8-0/language/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.2\n"
#. module: account_reconcile_payment_order
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
-
-#~ msgid "Bank Statement Line"
-#~ msgstr "Bankafschriftregel"
diff --git a/account_reconcile_payment_order/i18n/sl.po b/account_reconcile_payment_order/i18n/sl.po
index cfe2776b..3cef9c7e 100644
--- a/account_reconcile_payment_order/i18n/sl.po
+++ b/account_reconcile_payment_order/i18n/sl.po
@@ -8,21 +8,19 @@ msgstr ""
"Project-Id-Version: bank-statement-reconcile (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-19 00:32+0000\n"
-"PO-Revision-Date: 2015-08-19 00:32+0000\n"
+"PO-Revision-Date: 2021-02-16 07:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-statement-"
"reconcile-8-0/language/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
+"X-Generator: Poedit 2.4.2\n"
#. module: account_reconcile_payment_order
#: model:ir.model,name:account_reconcile_payment_order.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
-
-#~ msgid "Bank Statement Line"
-#~ msgstr "Postavka bančnega izpiska"
diff --git a/account_reconcile_payment_order/readme/CONTRIBUTORS.rst b/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
index dfa767e3..dab82860 100644
--- a/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
+++ b/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
@@ -2,3 +2,4 @@
* `Tecnativa `__:
* Pedro M. Baeza
+ * João Marques
diff --git a/account_reconcile_payment_order/static/description/index.html b/account_reconcile_payment_order/static/description/index.html
index 7f514072..4bb87d52 100644
--- a/account_reconcile_payment_order/static/description/index.html
+++ b/account_reconcile_payment_order/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Payment orders that show up as one big transaction can be difficult for the
accounting to handle if a transfer account is used. In this case, we need to
reconcile this transaction with possibly hundreds of move lines, which can be a
@@ -431,7 +431,7 @@ as a new type of reconciliation in this model.
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.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -449,6 +449,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
Holger Brunn
Tecnativa:
- Pedro M. Baeza
+- João Marques
@@ -462,7 +463,7 @@ mission is to support the collaborative development of Odoo features and
promote its widespread use.
Current maintainer:

-
This module is part of the OCA/account-reconcile project on GitHub.
+
This module is part of the OCA/account-reconcile project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
index 6bf9a30b..a4a8e4bc 100644
--- a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
+++ b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
@@ -1,4 +1,5 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
+# Copyright 2021 Tecnativa - João Marques
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from odoo.addons.account_payment_order.tests.test_payment_order_inbound import (
@@ -15,19 +16,23 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
[
("type", "=", "bank"),
"|",
- ("company_id", "=", cls.env.user.company_id.id),
+ ("company_id", "=", cls.env.company.id),
("company_id", "=", False),
],
limit=1,
)
# Create second invoice for being sure it handles the payment order
- cls.invoice2 = cls._create_customer_invoice()
- cls.partner2 = cls.env["res.partner"].create({"name": "Test partner 2",})
+ cls.invoice2 = cls._create_customer_invoice(cls)
+ cls.partner2 = cls.env["res.partner"].create({"name": "Test partner 2"})
+ # Set correct partner in invoice
cls.invoice2.partner_id = cls.partner2.id
- cls.invoice2.action_invoice_open()
+ for line in cls.invoice2.line_ids:
+ line.partner_id = cls.partner2.id
+ cls.invoice2.payment_mode_id = cls.inbound_mode
+ cls.invoice2.action_post()
# Add to payment order using the wizard
cls.env["account.invoice.payment.line.multi"].with_context(
- active_model="account.invoice", active_ids=cls.invoice2.ids,
+ active_model="account.move", active_ids=cls.invoice2.ids,
).create({}).run()
# Prepare statement
cls.statement = cls.env["account.bank.statement"].create(
@@ -36,7 +41,7 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
"date": "2019-01-01",
"journal_id": cls.bank_journal.id,
"line_ids": [
- (0, 0, {"date": "2019-01-01", "name": "Test line", "amount": 200,}),
+ (0, 0, {"date": "2019-01-01", "name": "Test line", "amount": 230}),
],
}
)
@@ -44,7 +49,7 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
def test_reconcile_payment_order_bank(self):
self.assertEqual(len(self.inbound_order.payment_line_ids), 2)
self.inbound_mode.write(
- {"offsetting_account": "bank_account", "move_option": "line",}
+ {"offsetting_account": "bank_account", "move_option": "line"}
)
# Prepare payment order
self.inbound_order.draft2open()
@@ -80,7 +85,7 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
self.inbound_order.open2generated()
self.inbound_order.generated2uploaded()
# Check widget result
- res = self.widget_obj.get_bank_statement_line_data(self.statement.line_ids.ids,)
+ res = self.widget_obj.get_bank_statement_line_data(self.statement.line_ids.ids)
proposition = res["lines"][0]["reconciliation_proposition"]
self.assertEqual(len(proposition), 2)
# Reconcile that entries and check again
@@ -89,7 +94,7 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
data=[
{
"type": "",
- "mv_line_ids": [proposition[0]["id"], proposition[1]["id"],],
+ "mv_line_ids": [proposition[0]["id"], proposition[1]["id"]],
"new_mv_line_dicts": [
{
"name": st_line_vals["name"],
From ed53232d213c6a67efc0266c7def180d586dd841 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Marques?=
Date: Tue, 30 Mar 2021 11:25:33 +0100
Subject: [PATCH 11/13] [FIX] account_reconcile_payment_order: Fix tests
Create journal instead of searching
Change hardcoded value for amount of payment statements, after we cleared the taxes of the invoice lines in https://github.com/OCA/bank-payment/pull/798
TT28962
---
.../__manifest__.py | 2 +-
.../test_account_reconcile_payment_order.py | 24 ++++++++++---------
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/account_reconcile_payment_order/__manifest__.py b/account_reconcile_payment_order/__manifest__.py
index 5ac2d647..274f3e63 100644
--- a/account_reconcile_payment_order/__manifest__.py
+++ b/account_reconcile_payment_order/__manifest__.py
@@ -4,7 +4,7 @@
{
"name": "Reconcile payment orders",
- "version": "13.0.1.0.0",
+ "version": "13.0.1.0.1",
"author": "Therp BV," "Tecnativa," "Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-reconcile",
diff --git a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
index a4a8e4bc..e335c3e7 100644
--- a/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
+++ b/account_reconcile_payment_order/tests/test_account_reconcile_payment_order.py
@@ -12,14 +12,8 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
def setUpClass(cls):
super().setUpClass()
cls.widget_obj = cls.env["account.reconciliation.widget"]
- cls.bank_journal = cls.env["account.journal"].search(
- [
- ("type", "=", "bank"),
- "|",
- ("company_id", "=", cls.env.company.id),
- ("company_id", "=", False),
- ],
- limit=1,
+ cls.bank_journal = cls.env["account.journal"].create(
+ {"name": "Test bank journal", "type": "bank"}
)
# Create second invoice for being sure it handles the payment order
cls.invoice2 = cls._create_customer_invoice(cls)
@@ -32,7 +26,7 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
cls.invoice2.action_post()
# Add to payment order using the wizard
cls.env["account.invoice.payment.line.multi"].with_context(
- active_model="account.move", active_ids=cls.invoice2.ids,
+ active_model="account.move", active_ids=cls.invoice2.ids
).create({}).run()
# Prepare statement
cls.statement = cls.env["account.bank.statement"].create(
@@ -41,7 +35,15 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
"date": "2019-01-01",
"journal_id": cls.bank_journal.id,
"line_ids": [
- (0, 0, {"date": "2019-01-01", "name": "Test line", "amount": 230}),
+ (
+ 0,
+ 0,
+ {
+ "date": "2019-01-01",
+ "name": "Test line",
+ "amount": 200, # 100 * 2
+ },
+ ),
],
}
)
@@ -56,7 +58,7 @@ class TestAccountReconcilePaymentOrder(TestPaymentOrderInboundBase):
self.inbound_order.open2generated()
self.inbound_order.generated2uploaded()
# Check widget result
- res = self.widget_obj.get_bank_statement_line_data(self.statement.line_ids.ids,)
+ res = self.widget_obj.get_bank_statement_line_data(self.statement.line_ids.ids)
self.assertEqual(len(res["lines"][0]["reconciliation_proposition"]), 2)
def test_reconcile_payment_order_transfer_account(self):
From 2b77e6078785a08890205fa94dd7682eec102466 Mon Sep 17 00:00:00 2001
From: CarlosRoca13
Date: Tue, 29 Mar 2022 10:47:26 +0200
Subject: [PATCH 12/13] [IMP] account_reconcile_payment_order: black, isort,
prettier
---
.../models/account_reconciliation_widget.py | 11 ++++++++---
.../odoo/addons/account_reconcile_payment_order | 1 +
setup/account_reconcile_payment_order/setup.py | 6 ++++++
3 files changed, 15 insertions(+), 3 deletions(-)
create mode 120000 setup/account_reconcile_payment_order/odoo/addons/account_reconcile_payment_order
create mode 100644 setup/account_reconcile_payment_order/setup.py
diff --git a/account_reconcile_payment_order/models/account_reconciliation_widget.py b/account_reconcile_payment_order/models/account_reconciliation_widget.py
index 87ffb0cd..57539d0e 100644
--- a/account_reconcile_payment_order/models/account_reconciliation_widget.py
+++ b/account_reconcile_payment_order/models/account_reconciliation_widget.py
@@ -43,7 +43,9 @@ class AccountReconciliationWidget(models.AbstractModel):
)
for order in orders:
elegible_lines = self._get_reconcile_lines_from_order(
- st_line, order, excluded_ids=excluded_ids,
+ st_line,
+ order,
+ excluded_ids=excluded_ids,
)
if elegible_lines:
return self._prepare_move_lines(
@@ -55,14 +57,17 @@ class AccountReconciliationWidget(models.AbstractModel):
def get_bank_statement_line_data(self, st_line_ids, excluded_ids=None):
res = super().get_bank_statement_line_data(
- st_line_ids, excluded_ids=excluded_ids,
+ st_line_ids,
+ excluded_ids=excluded_ids,
)
st_line_obj = self.env["account.bank.statement.line"]
for line_vals in res.get("lines", []):
st_line = st_line_obj.browse(line_vals["st_line"]["id"])
orders = self._get_possible_payment_orders_for_statement_line(st_line)
proposition_vals = self._prepare_proposition_from_orders(
- st_line, orders, excluded_ids=excluded_ids,
+ st_line,
+ orders,
+ excluded_ids=excluded_ids,
)
if proposition_vals:
line_vals["reconciliation_proposition"] = proposition_vals
diff --git a/setup/account_reconcile_payment_order/odoo/addons/account_reconcile_payment_order b/setup/account_reconcile_payment_order/odoo/addons/account_reconcile_payment_order
new file mode 120000
index 00000000..f6734f33
--- /dev/null
+++ b/setup/account_reconcile_payment_order/odoo/addons/account_reconcile_payment_order
@@ -0,0 +1 @@
+../../../../account_reconcile_payment_order
\ No newline at end of file
diff --git a/setup/account_reconcile_payment_order/setup.py b/setup/account_reconcile_payment_order/setup.py
new file mode 100644
index 00000000..28c57bb6
--- /dev/null
+++ b/setup/account_reconcile_payment_order/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+ setup_requires=['setuptools-odoo'],
+ odoo_addon=True,
+)
From 076e954a31a4f7e69ae2e8a6de01b1aa15d9bf1e Mon Sep 17 00:00:00 2001
From: CarlosRoca13
Date: Wed, 30 Mar 2022 14:36:16 +0200
Subject: [PATCH 13/13] [MIG] account_reconcile_payment_order: Migration to
14.0
---
account_reconcile_payment_order/README.rst | 1 +
.../__manifest__.py | 6 +++---
.../readme/CONTRIBUTORS.rst | 1 +
.../static/description/index.html | 3 ++-
.../test_account_reconcile_payment_order.py | 19 +++----------------
5 files changed, 10 insertions(+), 20 deletions(-)
diff --git a/account_reconcile_payment_order/README.rst b/account_reconcile_payment_order/README.rst
index efedfe50..0f71943d 100644
--- a/account_reconcile_payment_order/README.rst
+++ b/account_reconcile_payment_order/README.rst
@@ -98,6 +98,7 @@ Contributors
* Pedro M. Baeza
* João Marques
+ * Carlos Roca
Maintainers
~~~~~~~~~~~
diff --git a/account_reconcile_payment_order/__manifest__.py b/account_reconcile_payment_order/__manifest__.py
index 274f3e63..6aa4bbd3 100644
--- a/account_reconcile_payment_order/__manifest__.py
+++ b/account_reconcile_payment_order/__manifest__.py
@@ -4,13 +4,13 @@
{
"name": "Reconcile payment orders",
- "version": "13.0.1.0.1",
- "author": "Therp BV," "Tecnativa," "Odoo Community Association (OCA)",
+ "version": "14.0.1.0.0",
+ "author": "Therp BV, Tecnativa, Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-reconcile",
"category": "Invoicing Management",
"summary": "Automatically propose all lines generated from payment orders",
- "depends": ["account_payment_order"],
+ "depends": ["account_payment_order", "account_reconciliation_widget"],
"installable": True,
"maintainers": ["pedrobaeza"],
}
diff --git a/account_reconcile_payment_order/readme/CONTRIBUTORS.rst b/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
index dab82860..fd504b80 100644
--- a/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
+++ b/account_reconcile_payment_order/readme/CONTRIBUTORS.rst
@@ -3,3 +3,4 @@
* Pedro M. Baeza
* João Marques
+ * Carlos Roca
diff --git a/account_reconcile_payment_order/static/description/index.html b/account_reconcile_payment_order/static/description/index.html
index 4bb87d52..c51635aa 100644
--- a/account_reconcile_payment_order/static/description/index.html
+++ b/account_reconcile_payment_order/static/description/index.html
@@ -3,7 +3,7 @@
-
+
Reconcile payment orders