diff --git a/account_operation_rule/__init__.py b/account_operation_rule/__init__.py
deleted file mode 100644
index bad9dcddcb..0000000000
--- a/account_operation_rule/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from . import model
diff --git a/account_operation_rule/i18n/account_statement_operation_rule.pot b/account_operation_rule/i18n/account_statement_operation_rule.pot
deleted file mode 100644
index 65bd7c36d4..0000000000
--- a/account_operation_rule/i18n/account_statement_operation_rule.pot
+++ /dev/null
@@ -1,152 +0,0 @@
-# Translation of Odoo Server.
-# This file contains the translation of the following modules:
-# * account_operation_rule
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Odoo Server 8.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-16 14:46+0000\n"
-"PO-Revision-Date: 2015-03-16 14:46+0000\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_operation_rule
-#: model:ir.actions.act_window,help:account_operation_rule.action_account_operation_rule
-msgid "
\n"
-" Click to create a statement operation rule.\n"
-"
\n"
-" Those can be used to automatically create a move line when reconciling\n"
-" your bank statements.\n"
-"
\n"
-" "
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "And"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "And the currency is one of"
-msgstr ""
-
-#. module: account_operation_rule
-#: model:ir.model,name:account_operation_rule.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,create_uid:0
-msgid "Created by"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,create_date:0
-msgid "Created on"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,currencies:0
-#: selection:account.operation.rule,rule_type:0
-msgid "Currencies"
-msgstr ""
-
-#. module: account_operation_rule
-#: help:account.operation.rule,currencies:0
-msgid "For 'Currencies' rules, you can choose for which currencies the rule will be applicable."
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,id:0
-msgid "ID"
-msgstr ""
-
-#. module: account_operation_rule
-#: help:account.operation.rule,sequence:0
-msgid "If several rules match, the first one is used."
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,write_uid:0
-msgid "Last Updated by"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,write_date:0
-msgid "Last Updated on"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,amount_max:0
-msgid "Max. Amount"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,amount_min:0
-msgid "Min. Amount"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,name:0
-msgid "Name"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,operations:0
-msgid "Operations"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "Result"
-msgstr ""
-
-#. module: account_operation_rule
-#: selection:account.operation.rule,rule_type:0
-msgid "Roundings"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "Rule"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,sequence:0
-msgid "Sequence"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "Statement Operation Rule"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_search
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_tree
-#: model:ir.actions.act_window,name:account_operation_rule.action_account_operation_rule
-#: model:ir.ui.menu,name:account_operation_rule.menu_action_account_operation_rule
-msgid "Statement Operation Rules"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "Then the following operations will be applied:"
-msgstr ""
-
-#. module: account_operation_rule
-#: field:account.operation.rule,rule_type:0
-msgid "Type"
-msgstr ""
-
-#. module: account_operation_rule
-#: view:account.operation.rule:account_operation_rule.view_account_operation_rule_form
-msgid "When the balance is between"
-msgstr ""
-
diff --git a/account_operation_rule/i18n/en.po b/account_operation_rule/i18n/en.po
deleted file mode 100644
index a0c5836d85..0000000000
--- a/account_operation_rule/i18n/en.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# Translation of Odoo Server.
-# This file contains the translation of the following modules:
-# * account_operation_rule
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Odoo Server 9.0c\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-06-30 02:44+0000\n"
-"PO-Revision-Date: 2016-06-30 02:44+0000\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_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "And"
-msgstr "And"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "And the currency is one of"
-msgstr "And the currency is one of"
-
-#. module: account_operation_rule
-#: model:ir.model,name:account_operation_rule.model_account_bank_statement_line
-msgid "Bank Statement Line"
-msgstr "Bank Statement Line"
-
-#. module: account_operation_rule
-#: model:ir.actions.act_window,help:account_operation_rule.action_account_operation_rule
-msgid "Click to create a reconciliation rule."
-msgstr "Click to create a reconciliation rule."
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_create_uid
-msgid "Created by"
-msgstr "Created by"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_create_date
-msgid "Created on"
-msgstr "Created on"
-
-#. module: account_operation_rule
-#: selection:account.operation.rule,rule_type:0
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_currencies
-msgid "Currencies"
-msgstr "Currencies"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_display_name
-msgid "Display Name"
-msgstr "Display Name"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,help:account_operation_rule.field_account_operation_rule_currencies
-msgid ""
-"For 'Currencies' rules, you can choose for which currencies the rule will be"
-" applicable."
-msgstr ""
-"For 'Currencies' rules, you can choose for which currencies the rule will be"
-" applicable."
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_id
-msgid "ID"
-msgstr "ID"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,help:account_operation_rule.field_account_operation_rule_sequence
-msgid "If several rules match, the first one is used."
-msgstr "If several rules match, the first one is used."
-
-#. module: account_operation_rule
-#: model:ir.model,name:account_operation_rule.model_account_journal
-msgid "Journal"
-msgstr "Journal"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule___last_update
-msgid "Last Modified on"
-msgstr "Last Modified on"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_write_uid
-msgid "Last Updated by"
-msgstr "Last Updated by"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_write_date
-msgid "Last Updated on"
-msgstr "Last Updated on"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_amount_max
-msgid "Max. Amount"
-msgstr "Max. Amount"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_amount_min
-msgid "Min. Amount"
-msgstr "Min. Amount"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_name
-msgid "Name"
-msgstr "Name"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_operations
-msgid "Operations"
-msgstr "Operations"
-
-#. module: account_operation_rule
-#: model:ir.actions.act_window,name:account_operation_rule.action_account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.account_journal_dashboard_kanban_view
-msgid "Reconciliation Rules"
-msgstr "Reconciliation Rules"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "Result"
-msgstr "Result"
-
-#. module: account_operation_rule
-#: selection:account.operation.rule,rule_type:0
-msgid "Roundings"
-msgstr "Roundings"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "Rule"
-msgstr "Rule"
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_sequence
-msgid "Sequence"
-msgstr "Sequence"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "Statement Operation Rule"
-msgstr "Statement Operation Rule"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_search
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_tree
-msgid "Statement Operation Rules"
-msgstr "Statement Operation Rules"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "Then the following operations will be applied:"
-msgstr "Then the following operations will be applied:"
-
-#. module: account_operation_rule
-#: model:ir.actions.act_window,help:account_operation_rule.action_account_operation_rule
-msgid ""
-"Those can be used to automatically create a move line when reconciling\n"
-" your bank statements."
-msgstr ""
-"Those can be used to automatically create a move line when reconciling\n"
-" your bank statements."
-
-#. module: account_operation_rule
-#: model:ir.model.fields,field_description:account_operation_rule.field_account_operation_rule_rule_type
-msgid "Type"
-msgstr "Type"
-
-#. module: account_operation_rule
-#: model:ir.ui.view,arch_db:account_operation_rule.view_account_operation_rule_form
-msgid "When the balance is between"
-msgstr "When the balance is between"
-
-#. module: account_operation_rule
-#: model:ir.model,name:account_operation_rule.model_account_operation_rule
-msgid "account.operation.rule"
-msgstr "account.operation.rule"
diff --git a/account_operation_rule/security/ir.model.access.csv b/account_operation_rule/security/ir.model.access.csv
deleted file mode 100644
index a551798ba7..0000000000
--- a/account_operation_rule/security/ir.model.access.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_account_operation_rule,account.statement.operation.rule,model_account_operation_rule,account.group_account_user,1,1,1,1
diff --git a/account_operation_rule/static/src/js/account_widgets.js b/account_operation_rule/static/src/js/account_widgets.js
deleted file mode 100644
index 8d7a34a781..0000000000
--- a/account_operation_rule/static/src/js/account_widgets.js
+++ /dev/null
@@ -1,62 +0,0 @@
-odoo.define('account_operation_rule', function (require) {
- "use strict";
-
- var core = require('web.core');
- var Model = require('web.Model');
-
- var reconciliation = require('account.reconciliation');
-
- reconciliation.bankStatementReconciliationLine.include({
- init: function(parent, context) {
- this._super(parent, context);
- this.preset_auto_clicked = false;
- },
-
- operation_rules: function () {
- var self = this;
- var model_operation_rule = new Model("account.operation.rule");
- model_operation_rule.call("operations_for_reconciliation",
- [self.st_line.id, _.pluck(self.get("mv_lines_selected"), 'id')]
- ).then(function (operations) {
- _.each(operations, function (operation_id) {
- var preset_btn = self.$("button.preset[data-presetid='" + operation_id + "']");
- preset_btn.trigger('click');
-
- // Cannot click on add_line link for user here
- // even with a when().done()
- // because preset_btn click handler makes a rpc call
- // via formCreateInputChanged method
- // and we have to wait for response
- self.preset_auto_clicked = true;
- });
- });
- },
-
- /**
- * Click on add_line link if preset button have been clicked
- * automatically.
- */
- formCreateInputChanged: function(elt, val) {
- var self = this;
- var deferred = this._super(elt, val);
- deferred.done(function() {
- if (self.preset_auto_clicked) {
- self.addLineBeingEdited();
- }
- });
- },
-
- render: function () {
- var deferred = this._super();
- if (deferred) {
- deferred.done(this.operation_rules());
- }
- return deferred;
- },
- restart: function () {
- var deferred = this._super();
- deferred.done(this.operation_rules());
- return deferred;
- }
- });
-});
diff --git a/account_operation_rule/view/account_operation_rule.xml b/account_operation_rule/view/account_operation_rule.xml
deleted file mode 100644
index f31ede732c..0000000000
--- a/account_operation_rule/view/account_operation_rule.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/account_operation_rule/README.rst b/account_reconcile_rule/README.rst
similarity index 73%
rename from account_operation_rule/README.rst
rename to account_reconcile_rule/README.rst
index 0f1a5247e5..f5167b5702 100644
--- a/account_operation_rule/README.rst
+++ b/account_reconcile_rule/README.rst
@@ -1,14 +1,16 @@
-.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
- :alt: License
+.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
+ :target: https://www.gnu.org/licenses/agpl
+ :alt: License: AGPL-3
-Bank Statement Operation Rules
-==============================
+=======================
+Account Reconcile Rules
+=======================
This module complements the Reconciliation of the bank statements. When
the bank statement matches one or more journal entry for a line and
there is a remaining balance, Odoo proposes you to click on buttons that
-will generate write-off entries according to pre-configured *Statement
-Operation Templates*. The aim of this module is to automatically click
+will generate write-off entries according to pre-configured *Reconciliation
+Models*. The aim of this module is to automatically click
for you on these buttons (i.e. create the write-off journal entries)
when some rules are respected, rules that you can configure.
@@ -29,7 +31,7 @@ Configuration
-------------
As this module aims to automatize the ``Reconciliation Models``,
-you first want to ensure that you have at least one operation configured.
+you first want to ensure that you have at least one model configured.
You can find them in ``Invoicing > Dashboard > Bank card > More
> Reconciliation Models``. An example of a common operation is:
@@ -74,29 +76,42 @@ configured.
.. 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/9.0
+ :target: https://runbot.odoo-community.org/runbot/98/11.0
+
+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 smash it by providing detailed and welcomed feedback.
Credits
=======
+Images
+------
+
+* Odoo Community Association: `Icon `_.
+
Contributors
------------
* Guewen Baconnier
* Cyril Gaudin
+* Akim Juillerat
Maintainer
----------
-.. image:: http://odoo-community.org/logo.png
+.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
- :target: http://odoo-community.org
+ :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.
+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.
+To contribute to this module, please visit https://odoo-community.org.
diff --git a/account_reconcile_rule/__init__.py b/account_reconcile_rule/__init__.py
new file mode 100644
index 0000000000..0650744f6b
--- /dev/null
+++ b/account_reconcile_rule/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/account_operation_rule/__manifest__.py b/account_reconcile_rule/__manifest__.py
similarity index 54%
rename from account_operation_rule/__manifest__.py
rename to account_reconcile_rule/__manifest__.py
index 7a2acdff3e..3e537ccfd7 100644
--- a/account_operation_rule/__manifest__.py
+++ b/account_reconcile_rule/__manifest__.py
@@ -1,11 +1,10 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-{'name': 'Bank Statement Operation Rules',
- 'version': '9.0.1.0.0',
+{'name': 'Account Reconcile Rules',
+ 'version': '11.0.1.0.0',
'author': 'Camptocamp, Odoo Community Association (OCA)',
'maintainer': 'Odoo Community Association (OCA)',
'license': 'AGPL-3',
@@ -13,12 +12,10 @@
'depends': [
'account',
],
- 'website': 'http://www.camptocamp.com',
+ 'website': 'https://github.com/OCA/account-reconcile',
'data': [
- 'view/account_operation_rule.xml',
- 'view/account_operation_rule_view.xml',
+ 'views/account_reconcile_rule.xml',
+ 'views/account_reconcile_rule_view.xml',
'security/ir.model.access.csv',
],
- 'installable': False,
- 'auto_install': False,
}
diff --git a/account_operation_rule/i18n/am.po b/account_reconcile_rule/i18n/am.po
similarity index 100%
rename from account_operation_rule/i18n/am.po
rename to account_reconcile_rule/i18n/am.po
diff --git a/account_operation_rule/i18n/ca.po b/account_reconcile_rule/i18n/ca.po
similarity index 100%
rename from account_operation_rule/i18n/ca.po
rename to account_reconcile_rule/i18n/ca.po
diff --git a/account_operation_rule/i18n/de.po b/account_reconcile_rule/i18n/de.po
similarity index 100%
rename from account_operation_rule/i18n/de.po
rename to account_reconcile_rule/i18n/de.po
diff --git a/account_operation_rule/i18n/el_GR.po b/account_reconcile_rule/i18n/el_GR.po
similarity index 100%
rename from account_operation_rule/i18n/el_GR.po
rename to account_reconcile_rule/i18n/el_GR.po
diff --git a/account_operation_rule/i18n/es.po b/account_reconcile_rule/i18n/es.po
similarity index 100%
rename from account_operation_rule/i18n/es.po
rename to account_reconcile_rule/i18n/es.po
diff --git a/account_operation_rule/i18n/es_ES.po b/account_reconcile_rule/i18n/es_ES.po
similarity index 100%
rename from account_operation_rule/i18n/es_ES.po
rename to account_reconcile_rule/i18n/es_ES.po
diff --git a/account_operation_rule/i18n/fi.po b/account_reconcile_rule/i18n/fi.po
similarity index 100%
rename from account_operation_rule/i18n/fi.po
rename to account_reconcile_rule/i18n/fi.po
diff --git a/account_operation_rule/i18n/fr.po b/account_reconcile_rule/i18n/fr.po
similarity index 100%
rename from account_operation_rule/i18n/fr.po
rename to account_reconcile_rule/i18n/fr.po
diff --git a/account_operation_rule/i18n/gl.po b/account_reconcile_rule/i18n/gl.po
similarity index 100%
rename from account_operation_rule/i18n/gl.po
rename to account_reconcile_rule/i18n/gl.po
diff --git a/account_operation_rule/i18n/hr_HR.po b/account_reconcile_rule/i18n/hr_HR.po
similarity index 100%
rename from account_operation_rule/i18n/hr_HR.po
rename to account_reconcile_rule/i18n/hr_HR.po
diff --git a/account_operation_rule/i18n/it.po b/account_reconcile_rule/i18n/it.po
similarity index 100%
rename from account_operation_rule/i18n/it.po
rename to account_reconcile_rule/i18n/it.po
diff --git a/account_operation_rule/i18n/pt.po b/account_reconcile_rule/i18n/pt.po
similarity index 100%
rename from account_operation_rule/i18n/pt.po
rename to account_reconcile_rule/i18n/pt.po
diff --git a/account_operation_rule/i18n/pt_BR.po b/account_reconcile_rule/i18n/pt_BR.po
similarity index 100%
rename from account_operation_rule/i18n/pt_BR.po
rename to account_reconcile_rule/i18n/pt_BR.po
diff --git a/account_operation_rule/i18n/pt_PT.po b/account_reconcile_rule/i18n/pt_PT.po
similarity index 100%
rename from account_operation_rule/i18n/pt_PT.po
rename to account_reconcile_rule/i18n/pt_PT.po
diff --git a/account_operation_rule/i18n/sl.po b/account_reconcile_rule/i18n/sl.po
similarity index 100%
rename from account_operation_rule/i18n/sl.po
rename to account_reconcile_rule/i18n/sl.po
diff --git a/account_operation_rule/i18n/tr.po b/account_reconcile_rule/i18n/tr.po
similarity index 100%
rename from account_operation_rule/i18n/tr.po
rename to account_reconcile_rule/i18n/tr.po
diff --git a/account_operation_rule/model/__init__.py b/account_reconcile_rule/models/__init__.py
similarity index 51%
rename from account_operation_rule/model/__init__.py
rename to account_reconcile_rule/models/__init__.py
index 01f3b18d9d..ff45280931 100644
--- a/account_operation_rule/model/__init__.py
+++ b/account_reconcile_rule/models/__init__.py
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-
from . import account_journal
-from . import account_operation_rule
+from . import account_reconcile_rule
from . import account_statement_line
diff --git a/account_operation_rule/model/account_journal.py b/account_reconcile_rule/models/account_journal.py
similarity index 60%
rename from account_operation_rule/model/account_journal.py
rename to account_reconcile_rule/models/account_journal.py
index 65529b9005..f2cd8350ad 100644
--- a/account_operation_rule/model/account_journal.py
+++ b/account_reconcile_rule/models/account_journal.py
@@ -1,8 +1,7 @@
-# -*- coding: utf-8 -*-
-# © 2016 Cyril Gaudin (Camptocamp)
+# Copyright 2016 Cyril Gaudin (Camptocamp)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp import api, models
+from odoo import api, models
class AccountJournal(models.Model):
@@ -11,6 +10,6 @@ class AccountJournal(models.Model):
@api.multi
def open_reconciliation_rules(self):
return self.env['ir.actions.act_window'].for_xml_id(
- "account_operation_rule",
- "action_account_operation_rule"
+ "account_reconcile_rule",
+ "action_account_reconcile_rule"
)
diff --git a/account_operation_rule/model/account_operation_rule.py b/account_reconcile_rule/models/account_reconcile_rule.py
similarity index 81%
rename from account_operation_rule/model/account_operation_rule.py
rename to account_reconcile_rule/models/account_reconcile_rule.py
index 4f80deff0a..78d45a5ecd 100644
--- a/account_operation_rule/model/account_operation_rule.py
+++ b/account_reconcile_rule/models/account_reconcile_rule.py
@@ -1,14 +1,13 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp import models, fields, api
-from openerp.addons import decimal_precision as dp
+from odoo import models, fields, api
+from odoo.addons import decimal_precision as dp
-class AccountOperationRule(models.Model):
- _name = 'account.operation.rule'
+class AccountReconcileRule(models.Model):
+ _name = 'account.reconcile.rule'
_order = 'sequence ASC, id ASC'
@@ -20,8 +19,9 @@ class AccountOperationRule(models.Model):
default='rounding',
required=True,
)
- operations = fields.Many2many(
- comodel_name='account.operation.template',
+ reconcile_model_ids = fields.Many2many(
+ comodel_name='account.reconcile.model',
+ string='Reconciliation models',
)
amount_min = fields.Float(
string='Min. Amount',
@@ -31,7 +31,7 @@ class AccountOperationRule(models.Model):
string='Max. Amount',
digits=dp.get_precision('Account'),
)
- currencies = fields.Many2many(
+ currency_ids = fields.Many2many(
comodel_name='res.currency',
string='Currencies',
help="For 'Currencies' rules, you can choose for which currencies "
@@ -44,7 +44,7 @@ class AccountOperationRule(models.Model):
@staticmethod
def _between_with_bounds(low, value, high, currency):
- """ Equivalent to a three way comparison: ``min <= value <= high``
+ """Equivalent to a three way comparison: ``min <= value <= high``
The comparisons are done with the currency to use the correct
precision.
@@ -57,10 +57,8 @@ def _between_with_bounds(low, value, high, currency):
@api.multi
def _balance_in_range(self, balance, currency):
- amount_min = self.amount_min
- amount_max = self.amount_max
- return self._between_with_bounds(amount_min, balance,
- amount_max, currency)
+ return self._between_with_bounds(self.amount_min, balance,
+ self.amount_max, currency)
@api.model
def _is_multicurrency(self, statement_line):
@@ -77,7 +75,7 @@ def _is_valid_balance(self, statement_line, balance):
@api.multi
def _is_valid_multicurrency(self, statement_line, move_lines, balance):
- """ Check if the multi-currency rule can be applied
+ """Check if the multi-currency rule can be applied.
The rule is applied if and only if:
* The currency is not company's one
@@ -88,7 +86,7 @@ def _is_valid_multicurrency(self, statement_line, move_lines, balance):
if not self._is_multicurrency(statement_line):
return False
currency = statement_line.currency_for_rules()
- if currency not in self.currencies:
+ if currency not in self.currency_ids:
return False
amount_currency = statement_line.amount_currency
for move_line in move_lines:
@@ -105,8 +103,7 @@ def _is_valid_multicurrency(self, statement_line, move_lines, balance):
@api.multi
def is_valid(self, statement_line, move_lines, balance):
- """ Returns True if a rule applies to a group of statement_line +
- move lines.
+ """Check if a rule applies to a group of statement_line + move lines.
This is the public method where the rule is evaluated whatever
its type is. When a rule returns True, it means that it is a
@@ -130,8 +127,7 @@ def is_valid(self, statement_line, move_lines, balance):
@api.model
def find_first_rule(self, statement_line, move_lines):
- """ Find the rules that apply to a statement line and
- a selection of move lines.
+ """Find rules to apply to given statement line and move lines.
:param statement_line: the line to reconcile
:param move_lines: the selected move lines for reconciliation
@@ -152,17 +148,18 @@ def find_first_rule(self, statement_line, move_lines):
return self.browse()
@api.model
- @api.returns('account.operation.template')
- def operations_for_reconciliation(self, statement_line_id, move_line_ids):
- """ Find the rule for the current reconciliation and returns the
- ``account.operation.template`` of the found rule.
+ @api.returns('account.reconcile.model')
+ def models_for_reconciliation(self, statement_line_id, move_line_ids):
+ """Find the reconcile models for the for given statement and move lines.
- Called from the javascript reconciliation view.
+ Look for the first reconciliation rule to apply and return its
+ reconciliation models.
+ Called from the javascript reconciliation view.
"""
line_obj = self.env['account.bank.statement.line']
move_line_obj = self.env['account.move.line']
statement_line = line_obj.browse(statement_line_id)
move_lines = move_line_obj.browse(move_line_ids)
rules = self.find_first_rule(statement_line, move_lines)
- return rules.operations
+ return rules.reconcile_model_ids
diff --git a/account_operation_rule/model/account_statement_line.py b/account_reconcile_rule/models/account_statement_line.py
similarity index 78%
rename from account_operation_rule/model/account_statement_line.py
rename to account_reconcile_rule/models/account_statement_line.py
index 4b15caa816..56d1dada58 100644
--- a/account_operation_rule/model/account_statement_line.py
+++ b/account_reconcile_rule/models/account_statement_line.py
@@ -1,10 +1,9 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp import models, api
+from odoo import models, api
class AccountBankStatementLine(models.Model):
diff --git a/account_reconcile_rule/security/ir.model.access.csv b/account_reconcile_rule/security/ir.model.access.csv
new file mode 100644
index 0000000000..007b87bb33
--- /dev/null
+++ b/account_reconcile_rule/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_account_reconcile_rule,account.statement.reconcile.rule,model_account_reconcile_rule,account.group_account_user,1,1,1,1
diff --git a/account_reconcile_rule/static/src/js/account_widgets.js b/account_reconcile_rule/static/src/js/account_widgets.js
new file mode 100644
index 0000000000..cd0282f490
--- /dev/null
+++ b/account_reconcile_rule/static/src/js/account_widgets.js
@@ -0,0 +1,50 @@
+odoo.define('account_reconcile_rule', function (require) {
+ "use strict";
+
+ var core = require('web.core');
+ var reconciliation_renderer = require('account.ReconciliationRenderer');
+
+ /**
+ * Automatically apply reconciliation models according to the
+ * reconciliation rules matching the current statement line and move
+ * lines being reconciled.
+ */
+ reconciliation_renderer.LineRenderer.include({
+ /**
+ * Get the reconciliation models to apply through RPC call and
+ * create the write off entries.
+ */
+ reconciliation_rule_models: function() {
+ var self = this;
+ // Get the statement line
+ var line = this.model.getLine(this.handle)
+ // Call the models_for_reconciliation through RPC
+ this._rpc({
+ model: 'account.reconcile.rule',
+ method: 'models_for_reconciliation',
+ args: [
+ line.st_line.id,
+ _.pluck(line.reconciliation_proposition, 'id')
+ ],
+ }).done(function(rule_models) {
+ // Loop on each models and create the corresponding write off
+ // entries
+ _.each(rule_models, function (rule_model_id) {
+ self.trigger_up('quick_create_proposition',
+ {'data': rule_model_id});
+ })
+ })
+ },
+ /*
+ * Add the write off entries after the the line renderer is ready
+ */
+ start: function () {
+ var self = this;
+ var deferred = this._super();
+ if (deferred) {
+ deferred.done(this.reconciliation_rule_models());
+ }
+ return deferred;
+ },
+ });
+});
diff --git a/account_operation_rule/tests/__init__.py b/account_reconcile_rule/tests/__init__.py
similarity index 78%
rename from account_operation_rule/tests/__init__.py
rename to account_reconcile_rule/tests/__init__.py
index 65ba9f171e..996cc068a3 100644
--- a/account_operation_rule/tests/__init__.py
+++ b/account_reconcile_rule/tests/__init__.py
@@ -1,6 +1,5 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_journal
diff --git a/account_operation_rule/tests/common.py b/account_reconcile_rule/tests/common.py
similarity index 77%
rename from account_operation_rule/tests/common.py
rename to account_reconcile_rule/tests/common.py
index 8cbe1022dd..2e852a9ce6 100644
--- a/account_operation_rule/tests/common.py
+++ b/account_reconcile_rule/tests/common.py
@@ -1,45 +1,45 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp.tests.common import TransactionCase
+from odoo.tests.common import SavepointCase
-class AccountOperationTestCase(TransactionCase):
+class AccountReconciliationModelTestCase(SavepointCase):
- def setUp(self):
- super(AccountOperationTestCase, self).setUp()
- self.cash_journal = self.env['account.journal'].create({
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.reconcile_model_obj = cls.env['account.reconcile.model']
+ cls.rule_obj = cls.env['account.reconcile.rule']
+ cls.journal_obj = cls.env['account.journal']
+ cls.account_type_obj = cls.env['account.account.type']
+ cls.account_obj = cls.env['account.account']
+ cls.cash_journal = cls.journal_obj.create({
'name': 'Unittest Cash journal',
'code': 'CASH',
'type': 'cash',
})
-
- self.sale_journal = self.env['account.journal'].create({
+ cls.sale_journal = cls.journal_obj.create({
'name': 'Unittest Customer Invoices',
'code': 'INV',
'type': 'sale',
})
-
- receivable_type = self.env['account.account.type'].create({
+ receivable_type = cls.account_type_obj.create({
'name': 'Receivable',
'type': 'receivable'
})
-
- self.account_receivable = self.env['account.account'].create({
+ cls.account_receivable = cls.account_obj.create({
'name': 'Unittest Account Receivable',
'user_type_id': receivable_type.id,
'code': 'TEST101200',
'reconcile': True,
})
-
- income_type = self.env['account.account.type'].create({
+ income_type = cls.account_type_obj.create({
'name': 'Unittest Income',
'type': 'other'
})
-
- self.account_sale = self.env['account.account'].create({
+ cls.account_sale = cls.account_obj.create({
'name': 'Unittest Account Sale',
'user_type_id': income_type.id,
'code': 'TEST200000',
diff --git a/account_operation_rule/tests/test_journal.py b/account_reconcile_rule/tests/test_journal.py
similarity index 66%
rename from account_operation_rule/tests/test_journal.py
rename to account_reconcile_rule/tests/test_journal.py
index b4d93da075..75b506c55f 100644
--- a/account_operation_rule/tests/test_journal.py
+++ b/account_reconcile_rule/tests/test_journal.py
@@ -1,8 +1,7 @@
-# -*- coding: utf-8 -*-
-# © 2016 Cyril Gaudin (Camptocamp)
+# Copyright 2016 Cyril Gaudin (Camptocamp)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp.tests.common import TransactionCase
+from odoo.tests.common import TransactionCase
class TestJournal(TransactionCase):
@@ -11,5 +10,5 @@ def test_open_reconciliation_rules(self):
# Just test that method returned the good view
result = self.env['account.journal'].open_reconciliation_rules()
- self.assertEqual('account.operation.rule', result['res_model'])
+ self.assertEqual('account.reconcile.rule', result['res_model'])
self.assertEqual('form', result['view_type'])
diff --git a/account_operation_rule/tests/test_rule_currency.py b/account_reconcile_rule/tests/test_rule_currency.py
similarity index 65%
rename from account_operation_rule/tests/test_rule_currency.py
rename to account_reconcile_rule/tests/test_rule_currency.py
index 7f3226ae29..bb82165c47 100644
--- a/account_operation_rule/tests/test_rule_currency.py
+++ b/account_reconcile_rule/tests/test_rule_currency.py
@@ -1,76 +1,78 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from .common import AccountOperationTestCase
+from .common import AccountReconciliationModelTestCase
-class TestRuleCurrency(AccountOperationTestCase):
+class TestRuleCurrency(AccountReconciliationModelTestCase):
- def setUp(self):
- super(TestRuleCurrency, self).setUp()
- self.operation_obj = self.env['account.operation.template']
- self.rule_obj = self.env['account.operation.rule']
- self.aed = self.browse_ref('base.AED')
- self.aed.active = True
- self.afn = self.browse_ref('base.AFN')
- self.afn.active = True
- self.all = self.browse_ref('base.ALL')
- self.all.active = True
- self.amd = self.browse_ref('base.AMD')
- self.amd.active = True
- self.aoa = self.browse_ref('base.AOA')
- self.aoa.active = True
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
- self.operation_currency_1 = self.operation_obj.create({
+ cls.aed = cls.env.ref('base.AED')
+ cls.aed.active = True
+ cls.afn = cls.env.ref('base.AFN')
+ cls.afn.active = True
+ cls.all = cls.env.ref('base.ALL')
+ cls.all.active = True
+ cls.amd = cls.env.ref('base.AMD')
+ cls.amd.active = True
+ cls.aoa = cls.env.ref('base.AOA')
+ cls.aoa.active = True
+
+ cls.reconcile_model_currency_1 = cls.reconcile_model_obj.create({
'name': 'Currency AED, AFR, ALL -1.0 to 0.0',
'label': 'Currency',
- 'account_id': self.account_receivable.id,
+ 'account_id': cls.account_receivable.id,
'amount_type': 'percentage',
'amount': 100.0,
})
- self.rule_currency_1 = self.rule_obj.create({
+ cls.rule_currency_1 = cls.rule_obj.create({
'name': 'Currency AED, AFR, ALL -1.0 to 0.0',
'rule_type': 'currency',
- 'operations': [(6, 0, (self.operation_currency_1.id, ))],
+ 'reconcile_model_ids': [
+ (6, 0, (cls.reconcile_model_currency_1.id,))],
'amount_min': -1.0,
'amount_max': 0,
'sequence': 1,
- 'currencies': [(6, 0, [self.aed.id, self.afn.id, self.all.id])],
+ 'currency_ids': [(6, 0, [cls.aed.id, cls.afn.id, cls.all.id])],
})
- self.operation_currency_2 = self.operation_obj.create({
+ cls.reconcile_model_currency_2 = cls.reconcile_model_obj.create({
'name': 'Currency AED, AFR, ALL -2.0 to -1.0',
'label': 'Currency',
'amount_type': 'percentage',
'amount': 100.0,
})
- self.rule_currency_2 = self.rule_obj.create({
+ cls.rule_currency_2 = cls.rule_obj.create({
'name': 'Currency AED, AFR, ALL -2.0 to 1.0',
'rule_type': 'currency',
- 'operations': [(6, 0, (self.operation_currency_2.id, ))],
+ 'reconcile_model_ids': [
+ (6, 0, (cls.reconcile_model_currency_2.id, ))],
'amount_min': -2.0,
'amount_max': -1.0,
'sequence': 2,
- 'currencies': [(6, 0, [self.aed.id, self.afn.id, self.all.id])],
+ 'currency_ids': [(6, 0, [cls.aed.id, cls.afn.id, cls.all.id])],
})
- self.operation_currency_3 = self.operation_obj.create({
+ cls.reconcile_model_currency_3 = cls.reconcile_model_obj.create({
'name': 'Currency AMD, AOA -2.0 to 0.0',
'label': 'Currency',
'amount_type': 'percentage',
'amount': 100.0,
})
- self.rule_currency_3 = self.rule_obj.create({
+ cls.rule_currency_3 = cls.rule_obj.create({
'name': 'Currency AMD, AOA -2.0 to 0.0',
'rule_type': 'currency',
- 'operations': [(6, 0, (self.operation_currency_3.id, ))],
+ 'reconcile_model_ids': [
+ (6, 0, (cls.reconcile_model_currency_3.id, ))],
'amount_min': -2,
'amount_max': 0,
'sequence': 2,
- 'currencies': [(6, 0, [self.amd.id, self.aoa.id])],
+ 'currency_ids': [(6, 0, [cls.amd.id, cls.aoa.id])],
})
def test_no_currency_match(self):
@@ -80,15 +82,15 @@ def test_no_currency_match(self):
-0.5,
statement_line_currency=sek,
move_line_currency=sek)
- ops = self.rule_obj.operations_for_reconciliation(statement_line.id,
- move_line.ids)
+ ops = self.rule_obj.models_for_reconciliation(statement_line.id,
+ move_line.ids)
self.assertFalse(ops)
def test_rounding_lines(self):
"""No Currencies rules on lines with company currency"""
statement_line, move_line = self.prepare_statement(-0.5)
- ops = self.rule_obj.operations_for_reconciliation(statement_line.id,
- move_line.ids)
+ ops = self.rule_obj.models_for_reconciliation(statement_line.id,
+ move_line.ids)
self.assertFalse(ops)
def test_currency_rule_1(self):
@@ -99,7 +101,7 @@ def test_currency_rule_1(self):
move_line_currency=self.aed,
amount_currency_difference=0)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_currency_1)
+ self.assertEqual(rule, self.rule_currency_1)
def test_currency_rule_2(self):
"""Rule 2 is found with -2 AED"""
@@ -109,7 +111,7 @@ def test_currency_rule_2(self):
move_line_currency=self.aed,
amount_currency_difference=0)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_currency_2)
+ self.assertEqual(rule, self.rule_currency_2)
def test_currency_rule_3(self):
"""Rule 3 is found with -2 AOA"""
@@ -119,7 +121,7 @@ def test_currency_rule_3(self):
move_line_currency=self.aoa,
amount_currency_difference=0)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_currency_3)
+ self.assertEqual(rule, self.rule_currency_3)
def test_currency_rule_not_in_bounds(self):
"""No rule is found with -3 AOA"""
@@ -149,4 +151,4 @@ def test_rule_amount_currency_difference_near_zero(self):
move_line_currency=self.aed,
amount_currency_difference=-0.001)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_currency_1)
+ self.assertEqual(rule, self.rule_currency_1)
diff --git a/account_operation_rule/tests/test_rule_rounding.py b/account_reconcile_rule/tests/test_rule_rounding.py
similarity index 70%
rename from account_operation_rule/tests/test_rule_rounding.py
rename to account_reconcile_rule/tests/test_rule_rounding.py
index 20290eaa75..b8d44942ef 100644
--- a/account_operation_rule/tests/test_rule_rounding.py
+++ b/account_reconcile_rule/tests/test_rule_rounding.py
@@ -1,59 +1,60 @@
-# -*- coding: utf-8 -*-
# Author: Guewen Baconnier
-# © 2014-2016 Camptocamp SA
+# Copyright 2014-2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from .common import AccountOperationTestCase
+from .common import AccountReconciliationModelTestCase
-class TestRuleRounding(AccountOperationTestCase):
+class TestRuleRounding(AccountReconciliationModelTestCase):
- def setUp(self):
- super(TestRuleRounding, self).setUp()
- self.operation_obj = self.env['account.operation.template']
- self.rule_obj = self.env['account.operation.rule']
- self.operation_round_1 = self.operation_obj.create({
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.reconcile_model_round_1 = cls.reconcile_model_obj.create({
'name': 'Rounding -1.0 to 0.0',
'label': 'Rounding',
'amount_type': 'percentage',
'amount': 100.0,
})
- self.rule_round_1 = self.rule_obj.create({
+ cls.rule_round_1 = cls.rule_obj.create({
'name': 'Rounding -1.0 to 0.0',
'rule_type': 'rounding',
- 'operations': [(6, 0, (self.operation_round_1.id, ))],
+ 'reconcile_model_ids': [
+ (6, 0, (cls.reconcile_model_round_1.id, ))],
'amount_min': -1.0,
'amount_max': 0,
'sequence': 1,
})
- self.operation_round_2 = self.operation_obj.create({
+ cls.reconcile_model_round_2 = cls.reconcile_model_obj.create({
'name': 'Rounding -2.0 to -1.0',
'label': 'Rounding',
'amount_type': 'percentage',
'amount': 100.0,
})
- self.rule_round_2 = self.rule_obj.create({
+ cls.rule_round_2 = cls.rule_obj.create({
'name': 'Rounding -1.0 to 0.0',
'rule_type': 'rounding',
- 'operations': [(6, 0, (self.operation_round_2.id, ))],
+ 'reconcile_model_ids': [
+ (6, 0, (cls.reconcile_model_round_2.id, ))],
'amount_min': -2.0,
'amount_max': -1.0,
'sequence': 2,
})
- self.operation_round_3 = self.operation_obj.create({
+ cls.reconcile_model_round_3 = cls.reconcile_model_obj.create({
'name': 'Rounding 0.0 to 2.0',
'label': 'Rounding',
'amount_type': 'percentage',
'amount': 100.0,
})
- self.rule_round_3 = self.rule_obj.create({
+ cls.rule_round_3 = cls.rule_obj.create({
'name': 'Rounding 0.0 to 2.0',
'rule_type': 'rounding',
- 'operations': [(6, 0, (self.operation_round_3.id, ))],
+ 'reconcile_model_ids': [
+ (6, 0, (cls.reconcile_model_round_3.id, ))],
'amount_min': 0,
'amount_max': 2,
'sequence': 2,
@@ -63,43 +64,43 @@ def test_rule_round_1(self):
"""-0.5 => rule round 1"""
statement_line, move_line = self.prepare_statement(-0.5)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_1)
+ self.assertEqual(rule, self.rule_round_1)
def test_rule_round_1_limit(self):
"""-1 => rule round 1"""
statement_line, move_line = self.prepare_statement(-1)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_1)
+ self.assertEqual(rule, self.rule_round_1)
def test_rule_round_1_near_limit(self):
"""-1.0001 => rule round 1"""
statement_line, move_line = self.prepare_statement(-1.0001)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_1)
+ self.assertEqual(rule, self.rule_round_1)
def test_rule_round_2(self):
"""-1.01 => rule round 2"""
statement_line, move_line = self.prepare_statement(-1.01)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_2)
+ self.assertEqual(rule, self.rule_round_2)
def test_rule_round_2_limit(self):
"""-2 => rule round 2"""
statement_line, move_line = self.prepare_statement(-2)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_2)
+ self.assertEqual(rule, self.rule_round_2)
def test_rule_round_3(self):
"""+1.5 => rule round 3"""
statement_line, move_line = self.prepare_statement(1.5)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_3)
+ self.assertEqual(rule, self.rule_round_3)
def test_rule_round_3_limit(self):
"""+2 => rule round 3"""
statement_line, move_line = self.prepare_statement(2)
rule = self.rule_obj.find_first_rule(statement_line, [move_line])
- self.assertEquals(rule, self.rule_round_3)
+ self.assertEqual(rule, self.rule_round_3)
def test_rule_no_round_below(self):
"""-3 => no rule"""
@@ -126,20 +127,20 @@ def test_rule_no_round_near_zero(self):
self.assertFalse(rule)
def test_operations(self):
- """test operations_for_reconciliation()"""
+ """test models_for_reconciliation()"""
statement_line, move_line = self.prepare_statement(-0.5)
- ops = self.rule_obj.operations_for_reconciliation(statement_line.id,
- move_line.ids)
- self.assertEquals(ops, self.operation_round_1)
+ ops = self.rule_obj.models_for_reconciliation(statement_line.id,
+ move_line.ids)
+ self.assertEqual(ops, self.reconcile_model_round_1)
def test_multicurrency_lines(self):
"""No rounding rules on multi-currency lines"""
- currency = self.browse_ref('base.AED')
+ currency = self.env.ref('base.AED')
statement_line, move_line = self.prepare_statement(
-0.5,
statement_line_currency=currency,
move_line_currency=currency
)
- ops = self.rule_obj.operations_for_reconciliation(statement_line.id,
- move_line.ids)
+ ops = self.rule_obj.models_for_reconciliation(statement_line.id,
+ move_line.ids)
self.assertFalse(ops)
diff --git a/account_reconcile_rule/views/account_reconcile_rule.xml b/account_reconcile_rule/views/account_reconcile_rule.xml
new file mode 100644
index 0000000000..7873ff9efe
--- /dev/null
+++ b/account_reconcile_rule/views/account_reconcile_rule.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/account_operation_rule/view/account_operation_rule_view.xml b/account_reconcile_rule/views/account_reconcile_rule_view.xml
similarity index 67%
rename from account_operation_rule/view/account_operation_rule_view.xml
rename to account_reconcile_rule/views/account_reconcile_rule_view.xml
index f749ce96da..2f51f4100c 100644
--- a/account_operation_rule/view/account_operation_rule_view.xml
+++ b/account_reconcile_rule/views/account_reconcile_rule_view.xml
@@ -1,9 +1,9 @@
-
- account.operation.rule.form
- account.operation.rule
+
+ account.reconcile.rule.form
+ account.reconcile.rule
@@ -39,9 +39,9 @@
-
- account.operation.rule.tree
- account.operation.rule
+
+ account.reconcile.rule.tree
+ account.reconcile.rule
@@ -49,33 +49,33 @@
-
+
-
- account.operation.rule.search
- account.operation.rule
+
+ account.reconcile.rule.search
+ account.reconcile.rule
-
+
-
+
Reconciliation Rules
- account.operation.rule
+ account.reconcile.rule
form
tree,form
-
+
Click to create a reconciliation rule.
@@ -92,7 +92,7 @@
account.journal
-
+