From faa336e075f6efae0ee5b37392a0066b97b7aed1 Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Thu, 18 Jul 2019 16:50:59 +0300 Subject: [PATCH 01/18] [12.0][ADD] create addon: account_reconcile_restrict_partner_mismatch --- .../README.rst | 0 .../__init__.py | 2 + .../__manifest__.py | 19 + .../models/__init__.py | 1 + .../models/account_move_line.py | 29 ++ .../readme/DESCRIPTION.rst | 10 + .../report/__init__.py | 1 + .../report/account_move_lines_report.xml | 61 +++ .../report/report_reconciled_lines.py | 65 +++ .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 419 ++++++++++++++++++ .../tests/__init__.py | 1 + .../tests/test_reconciliation.py | 104 +++++ 14 files changed, 714 insertions(+) create mode 100644 account_reconcile_restrict_partner_mismatch/README.rst create mode 100755 account_reconcile_restrict_partner_mismatch/__init__.py create mode 100644 account_reconcile_restrict_partner_mismatch/__manifest__.py create mode 100755 account_reconcile_restrict_partner_mismatch/models/__init__.py create mode 100644 account_reconcile_restrict_partner_mismatch/models/account_move_line.py create mode 100644 account_reconcile_restrict_partner_mismatch/readme/DESCRIPTION.rst create mode 100644 account_reconcile_restrict_partner_mismatch/report/__init__.py create mode 100644 account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml create mode 100644 account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py create mode 100644 account_reconcile_restrict_partner_mismatch/security/ir.model.access.csv create mode 100644 account_reconcile_restrict_partner_mismatch/static/description/icon.png create mode 100644 account_reconcile_restrict_partner_mismatch/static/description/index.html create mode 100644 account_reconcile_restrict_partner_mismatch/tests/__init__.py create mode 100644 account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py diff --git a/account_reconcile_restrict_partner_mismatch/README.rst b/account_reconcile_restrict_partner_mismatch/README.rst new file mode 100644 index 0000000000..e69de29bb2 diff --git a/account_reconcile_restrict_partner_mismatch/__init__.py b/account_reconcile_restrict_partner_mismatch/__init__.py new file mode 100755 index 0000000000..bf588bc8b8 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import report diff --git a/account_reconcile_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py new file mode 100644 index 0000000000..a9e05f0638 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + 'name': 'Reconcile restrict partner mismatch', + 'summary': 'Restrict reconciliation on receivable ' + 'and payable accounts to the same partner', + 'version': '12.0.1.0.0', + 'depends': ['account'], + 'author': 'Camptocamp, Odoo Community Association (OCA)', + 'website': 'http://www.github.com/OCA/account-reconcile', + 'category': 'Finance', + 'license': 'AGPL-3', + 'data': [ + 'report/account_move_lines_report.xml', + 'security/ir.model.access.csv', + ], + 'installable': True, +} diff --git a/account_reconcile_restrict_partner_mismatch/models/__init__.py b/account_reconcile_restrict_partner_mismatch/models/__init__.py new file mode 100755 index 0000000000..8795b3bea6 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/models/__init__.py @@ -0,0 +1 @@ +from . import account_move_line diff --git a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py new file mode 100644 index 0000000000..8ab5f13e85 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py @@ -0,0 +1,29 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import api, models, _ +from odoo.exceptions import UserError +from odoo.tools import config + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + @api.multi + def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): + if (config['test_enable'] + and not self.env.context.get('test_partner_mismatch')): + return super().reconcile(writeoff_acc_id, writeoff_journal_id) + + # to be consistent with parent method + if not self: + return True + partners = set() + for line in self: + if line.account_id.internal_type in ('receivable', 'payable'): + partners.add(line.partner_id.id) + if len(partners) > 1: + raise UserError(_('The partner has to be the same on all' + ' lines for receivable and payable accounts!')) + return super().reconcile( + writeoff_acc_id, writeoff_journal_id) diff --git a/account_reconcile_restrict_partner_mismatch/readme/DESCRIPTION.rst b/account_reconcile_restrict_partner_mismatch/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..a546b3fa4d --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/readme/DESCRIPTION.rst @@ -0,0 +1,10 @@ +This module restricts reconciliation between journal items when: + + - both items have different partners + - one item is with partner and the other without it + +This rule applies only for journal items using receivable and payable account type. + +As at the moment of installation some journal items could have been reconciled +using different partners, you can detect them in menu Accounting > Adviser > +Reconciled items with partner mismatch. diff --git a/account_reconcile_restrict_partner_mismatch/report/__init__.py b/account_reconcile_restrict_partner_mismatch/report/__init__.py new file mode 100644 index 0000000000..f32b29ee8d --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/report/__init__.py @@ -0,0 +1 @@ +from . import report_reconciled_lines diff --git a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml new file mode 100644 index 0000000000..14b7276f1b --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml @@ -0,0 +1,61 @@ + + + + Reconciled items with partner mismatch + account.reconcile.partner.mismatch.report + + + + + + + + + + + + + + + + + + + account.reconcile.partner.mismatch.report.form + account.reconcile.partner.mismatch.report + +
+ + + + + + + + + + + + + + + + + + +
+
+
+ + + Reconciled items with partner mismatch + account.reconcile.partner.mismatch.report + tree,form + + + +
diff --git a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py new file mode 100644 index 0000000000..ac2cfc576c --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py @@ -0,0 +1,65 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +from odoo import api, fields, models, tools + + +class AccountReconcilePartnerMismatchReport(models.Model): + _name = 'account.reconcile.partner.mismatch.report' + _auto = False + + partial_reconcile_id = fields.Many2one( + 'account.partial.reconcile', + string="Partial Reconcile" + ) + full_reconcile_id = fields.Many2one('account.full.reconcile') + account_id = fields.Many2one( + 'account.account', + string="Account" + ) + account_type_id = fields.Many2one( + 'account.account.type', + string="Account type", + ) + debit_move_id = fields.Many2one('account.move.line', string="Debit move") + debit_amount = fields.Float("Debit amount") + debit_partner_id = fields.Many2one('res.partner', string="Debit partner") + credit_move_id = fields.Many2one('account.move.line', string="Credit move") + credit_amount = fields.Float("Credit amount") + credit_partner_id = fields.Many2one('res.partner', string="Credit partner") + + @api.model_cr + def init(self): + """Select lines which violate defined rules""" + tools.drop_view_if_exists(self.env.cr, self._table) + self._cr.execute( + """CREATE OR REPLACE VIEW %s AS ( + SELECT pr.id id + , pr.id partial_reconcile_id + , pr.full_reconcile_id + , pr.debit_move_id + , daml.debit debit_amount + , aat.id account_type_id + , daml.partner_id debit_partner_id + , daml.account_id account_id + , pr.credit_move_id + , caml.credit credit_amount + , caml.partner_id credit_partner_id + FROM account_partial_reconcile pr + LEFT JOIN account_move_line daml + ON daml.id = pr.debit_move_id + LEFT JOIN account_move_line caml + ON caml.id = pr.credit_move_id + LEFT JOIN account_account_type aat + ON daml.user_type_id = aat.id + WHERE aat.type in ('receivable', 'payable') + AND (daml.partner_id <> caml.partner_id + OR (daml.partner_id IS NULL + AND caml.partner_id IS NOT NULL) + OR (caml.partner_id IS NULL + AND daml.partner_id IS NOT NULL)) + ) + """ + % self._table + ) diff --git a/account_reconcile_restrict_partner_mismatch/security/ir.model.access.csv b/account_reconcile_restrict_partner_mismatch/security/ir.model.access.csv new file mode 100644 index 0000000000..8dea174ac2 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/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_partner_mismatch_report,access_account_reconcile_partner_mismatch_report,model_account_reconcile_partner_mismatch_report,account.group_account_user,1,0,0,0 diff --git a/account_reconcile_restrict_partner_mismatch/static/description/icon.png b/account_reconcile_restrict_partner_mismatch/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 diff --git a/account_reconcile_restrict_partner_mismatch/static/description/index.html b/account_reconcile_restrict_partner_mismatch/static/description/index.html new file mode 100644 index 0000000000..876a1f6cb3 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/static/description/index.html @@ -0,0 +1,419 @@ + + + + + + +Account Set Reconcilable + + + +
+

Account Set Reconcilable

+ + +

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

+

Allows to set as reconcilable a non reconcilable account that already have journal items.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Eficent
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

This module is part of the OCA/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_restrict_partner_mismatch/tests/__init__.py b/account_reconcile_restrict_partner_mismatch/tests/__init__.py new file mode 100644 index 0000000000..5eaab0190a --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/tests/__init__.py @@ -0,0 +1 @@ +from . import test_reconciliation diff --git a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py new file mode 100644 index 0000000000..a21c6af9e5 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -0,0 +1,104 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.addons.account.tests.account_test_classes import AccountingTestCase +from odoo.exceptions import UserError + + +class TestReconciliation(AccountingTestCase): + + def setUp(self): + super().setUp() + self.env = self.env(context=dict( + self.env.context, tracking_disable=True, + test_partner_mismatch=True) + ) + + self.partner = self.env.ref("base.res_partner_2") + self.partner_id = self.partner.id + rec_type = self.env['account.account'].search([ + ('user_type_id', '=', + self.env.ref('account.data_account_type_receivable').id) + ], limit=1) + pay_type = self.env['account.account'].search([ + ('user_type_id', '=', + self.env.ref('account.data_account_type_payable').id) + ], limit=1) + self.account_rcv = (self.partner.property_account_receivable_id + or rec_type) + self.account_rsa = self.partner.property_account_payable_id or pay_type + + self.bank_journal = self.env['account.journal']. \ + create({'name': 'Bank', 'type': 'bank', 'code': 'BNK67'}) + self.aml = self.init_moves() + self.wizard = self.env['account.move.line.reconcile.writeoff']. \ + with_context(active_ids=[x.id for x in self.aml]).create({ + 'journal_id': self.bank_journal.id, + 'writeoff_acc_id': self.account_rsa.id + }) + + def create_move(self, name, amount): + debit_line_vals = { + 'name': name, + 'debit': amount > 0 and amount or 0.0, + 'credit': amount < 0 and -amount or 0.0, + 'account_id': self.account_rcv.id, + } + credit_line_vals = debit_line_vals.copy() + credit_line_vals['debit'] = debit_line_vals['credit'] + credit_line_vals['credit'] = debit_line_vals['debit'] + credit_line_vals['account_id'] = self.account_rsa.id + vals = { + 'journal_id': self.bank_journal.id, + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] + } + return self.env['account.move'].create(vals).id + + def init_moves(self): + move_list_vals = [ + ('1', -1.83), + ('2', 728.35), + ('3', -4.46), + ('4', 0.32), + ('5', 14.72), + ('6', -737.10), + ] + move_ids = [] + for name, amount in move_list_vals: + move_ids.append(self.create_move(name, amount)) + aml_recs = self.env['account.move.line'].search([ + ('move_id', 'in', move_ids), + ('account_id', '=', self.account_rcv.id) + ]) + return aml_recs + + def test_reconcile_no_partner(self): + self.wizard.trans_rec_reconcile() + self.assertTrue(all(self.aml.mapped('reconciled'))) + + def test_reconcile_partner_mismatch(self): + self.aml[0].partner_id = self.partner.id + with self.assertRaises(UserError): + self.wizard.trans_rec_reconcile() + # all lines with same partner allowed + self.aml.write({'partner_id': self.partner.id}) + self.wizard.trans_rec_reconcile() + self.assertTrue(all(self.aml.mapped('reconciled'))) + + def test_reconcile_accounts_excluded(self): + self.aml[0].partner_id = self.partner.id + with self.assertRaises(UserError): + self.wizard.trans_rec_reconcile() + # reconciliation forbiden only for certain types of accounts + account = self.env['account.account'].search([ + ('user_type_id.type', '=', 'other') + ], limit=1) + account.reconcile = True + self.aml[0].account_id = account.id + with self.assertRaises(UserError): + self.wizard.trans_rec_reconcile() + # reconciliation for different partners allowed + # for not forbidden types + self.aml.write({'account_id': account.id}) + self.wizard.trans_rec_reconcile() + self.assertTrue(all(self.aml.mapped('reconciled'))) From 068f60ab4e1b33d35685dcc01b9173144634c5ec Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Thu, 18 Jul 2019 18:10:43 +0300 Subject: [PATCH 02/18] [MIG][12.0] adapt tests to v12 --- .../README.rst | 77 +++++++++++++ ...nt_reconcile_restrict_partner_mismatch.pot | 104 ++++++++++++++++++ .../static/description/index.html | 39 ++++--- .../tests/test_reconciliation.py | 17 +-- 4 files changed, 208 insertions(+), 29 deletions(-) create mode 100644 account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot diff --git a/account_reconcile_restrict_partner_mismatch/README.rst b/account_reconcile_restrict_partner_mismatch/README.rst index e69de29bb2..8abb6497fc 100644 --- a/account_reconcile_restrict_partner_mismatch/README.rst +++ b/account_reconcile_restrict_partner_mismatch/README.rst @@ -0,0 +1,77 @@ +=================================== +Reconcile restrict partner mismatch +=================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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_restrict_partner_mismatch + :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_restrict_partner_mismatch + :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| + +This module restricts reconciliation between journal items when: + + - both items have different partners + - one item is with partner and the other without it + +This rule applies only for journal items using receivable and payable account type. + +As at the moment of installation some journal items could have been reconciled +using different partners, you can detect them in menu Accounting > Adviser > +Reconciled items with partner mismatch. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/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_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot new file mode 100644 index 0000000000..9a97f57378 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_reconcile_restrict_partner_mismatch +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_id +msgid "Account" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id +msgid "Account type" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_amount +msgid "Credit amount" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_move_id +msgid "Credit move" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_partner_id +msgid "Credit partner" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_amount +msgid "Debit amount" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_move_id +msgid "Debit move" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_partner_id +msgid "Debit partner" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__display_name +msgid "Display Name" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__full_reconcile_id +msgid "Full Reconcile" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__id +msgid "ID" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__partial_reconcile_id +msgid "Partial Reconcile" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.actions.act_window,name:account_reconcile_restrict_partner_mismatch.action_account_reconcile_partner_mismatch_report +#: model:ir.ui.menu,name:account_reconcile_restrict_partner_mismatch.menu_account_reconcile_partner_mismatch_report +#: model_terms:ir.ui.view,arch_db:account_reconcile_restrict_partner_mismatch.account_reconcile_partner_mismatch_report_view_form +#: model_terms:ir.ui.view,arch_db:account_reconcile_restrict_partner_mismatch.view_account_move_reconciled_report_tree +msgid "Reconciled items with partner mismatch" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: code:addons/account_reconcile_restrict_partner_mismatch/models/account_move_line.py:26 +#, python-format +msgid "The partner has to be the same on all lines for receivable and payable accounts!" +msgstr "" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_reconcile_partner_mismatch_report +msgid "account.reconcile.partner.mismatch.report" +msgstr "" + diff --git a/account_reconcile_restrict_partner_mismatch/static/description/index.html b/account_reconcile_restrict_partner_mismatch/static/description/index.html index 876a1f6cb3..aa278bcf27 100644 --- a/account_reconcile_restrict_partner_mismatch/static/description/index.html +++ b/account_reconcile_restrict_partner_mismatch/static/description/index.html @@ -3,8 +3,8 @@ - -Account Set Reconcilable + +Reconcile restrict partner mismatch -
-

Account Set Reconcilable

+
+

Reconcile restrict partner mismatch

-

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

-

Allows to set as reconcilable a non reconcilable account that already have journal items.

+

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

+

This module restricts reconciliation between journal items when:

+
+
    +
  • both items have different partners
  • +
  • one item is with partner and the other without it
  • +
+
+

This rule applies only for journal items using receivable and payable account type.

+

As at the moment of installation some journal items could have been reconciled +using different partners, you can detect them in menu Accounting > Adviser > +Reconciled items with partner mismatch.

Table of contents

@@ -386,7 +395,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.

@@ -394,23 +403,17 @@

Credits

Authors

    -
  • Eficent
  • -
-
-
-

Contributors

-
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association

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

-

This module is part of the OCA/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_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py index a21c6af9e5..13be44556d 100644 --- a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -31,11 +31,6 @@ def setUp(self): self.bank_journal = self.env['account.journal']. \ create({'name': 'Bank', 'type': 'bank', 'code': 'BNK67'}) self.aml = self.init_moves() - self.wizard = self.env['account.move.line.reconcile.writeoff']. \ - with_context(active_ids=[x.id for x in self.aml]).create({ - 'journal_id': self.bank_journal.id, - 'writeoff_acc_id': self.account_rsa.id - }) def create_move(self, name, amount): debit_line_vals = { @@ -73,22 +68,22 @@ def init_moves(self): return aml_recs def test_reconcile_no_partner(self): - self.wizard.trans_rec_reconcile() + self.aml.reconcile() self.assertTrue(all(self.aml.mapped('reconciled'))) def test_reconcile_partner_mismatch(self): self.aml[0].partner_id = self.partner.id with self.assertRaises(UserError): - self.wizard.trans_rec_reconcile() + self.aml.reconcile() # all lines with same partner allowed self.aml.write({'partner_id': self.partner.id}) - self.wizard.trans_rec_reconcile() + self.aml.reconcile() self.assertTrue(all(self.aml.mapped('reconciled'))) def test_reconcile_accounts_excluded(self): self.aml[0].partner_id = self.partner.id with self.assertRaises(UserError): - self.wizard.trans_rec_reconcile() + self.aml.reconcile() # reconciliation forbiden only for certain types of accounts account = self.env['account.account'].search([ ('user_type_id.type', '=', 'other') @@ -96,9 +91,9 @@ def test_reconcile_accounts_excluded(self): account.reconcile = True self.aml[0].account_id = account.id with self.assertRaises(UserError): - self.wizard.trans_rec_reconcile() + self.aml.reconcile() # reconciliation for different partners allowed # for not forbidden types self.aml.write({'account_id': account.id}) - self.wizard.trans_rec_reconcile() + self.aml.reconcile() self.assertTrue(all(self.aml.mapped('reconciled'))) From 53994e6799411c67a935ff1dec5a28fec73305e0 Mon Sep 17 00:00:00 2001 From: mreficent Date: Fri, 2 Aug 2019 14:46:42 +0200 Subject: [PATCH 03/18] [FIX] Add description to a model --- .../account_reconcile_restrict_partner_mismatch.pot | 10 +++++----- .../report/report_reconciled_lines.py | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot index 9a97f57378..8958863273 100644 --- a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot +++ b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot @@ -18,6 +18,11 @@ msgstr "" msgid "Account" msgstr "" +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_reconcile_partner_mismatch_report +msgid "Account Reconcile Partner Mismatch Report" +msgstr "" + #. module: account_reconcile_restrict_partner_mismatch #: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id msgid "Account type" @@ -97,8 +102,3 @@ msgstr "" msgid "The partner has to be the same on all lines for receivable and payable accounts!" msgstr "" -#. module: account_reconcile_restrict_partner_mismatch -#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_reconcile_partner_mismatch_report -msgid "account.reconcile.partner.mismatch.report" -msgstr "" - diff --git a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py index ac2cfc576c..994264ac10 100644 --- a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py +++ b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py @@ -7,6 +7,7 @@ class AccountReconcilePartnerMismatchReport(models.Model): _name = 'account.reconcile.partner.mismatch.report' + _description = 'Account Reconcile Partner Mismatch Report' _auto = False partial_reconcile_id = fields.Many2one( From f10db7f4b7f8602c2381998fbb255a4189648cdf Mon Sep 17 00:00:00 2001 From: ernestotejeda Date: Mon, 25 Nov 2019 15:07:08 -0500 Subject: [PATCH 04/18] [IMP] account_reconcile_restrict_partner_mismatch: black, isort --- .../__manifest__.py | 25 ++--- .../models/account_move_line.py | 18 ++-- .../report/account_move_lines_report.xml | 2 +- .../report/report_reconciled_lines.py | 27 ++--- .../tests/test_reconciliation.py | 102 ++++++++++-------- 5 files changed, 89 insertions(+), 85 deletions(-) diff --git a/account_reconcile_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py index a9e05f0638..92fb86196d 100644 --- a/account_reconcile_restrict_partner_mismatch/__manifest__.py +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -2,18 +2,15 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { - 'name': 'Reconcile restrict partner mismatch', - 'summary': 'Restrict reconciliation on receivable ' - 'and payable accounts to the same partner', - 'version': '12.0.1.0.0', - 'depends': ['account'], - 'author': 'Camptocamp, Odoo Community Association (OCA)', - 'website': 'http://www.github.com/OCA/account-reconcile', - 'category': 'Finance', - 'license': 'AGPL-3', - 'data': [ - 'report/account_move_lines_report.xml', - 'security/ir.model.access.csv', - ], - 'installable': True, + "name": "Reconcile restrict partner mismatch", + "summary": "Restrict reconciliation on receivable " + "and payable accounts to the same partner", + "version": "12.0.1.0.0", + "depends": ["account"], + "author": "Camptocamp, Odoo Community Association (OCA)", + "website": "http://www.github.com/OCA/account-reconcile", + "category": "Finance", + "license": "AGPL-3", + "data": ["report/account_move_lines_report.xml", "security/ir.model.access.csv"], + "installable": True, } diff --git a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py index 8ab5f13e85..9cd800fe4b 100644 --- a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py +++ b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py @@ -1,7 +1,7 @@ # Copyright 2019 Camptocamp SA # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import api, models, _ +from odoo import _, api, models from odoo.exceptions import UserError from odoo.tools import config @@ -11,8 +11,7 @@ class AccountMoveLine(models.Model): @api.multi def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): - if (config['test_enable'] - and not self.env.context.get('test_partner_mismatch')): + if config["test_enable"] and not self.env.context.get("test_partner_mismatch"): return super().reconcile(writeoff_acc_id, writeoff_journal_id) # to be consistent with parent method @@ -20,10 +19,13 @@ def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): return True partners = set() for line in self: - if line.account_id.internal_type in ('receivable', 'payable'): + if line.account_id.internal_type in ("receivable", "payable"): partners.add(line.partner_id.id) if len(partners) > 1: - raise UserError(_('The partner has to be the same on all' - ' lines for receivable and payable accounts!')) - return super().reconcile( - writeoff_acc_id, writeoff_journal_id) + raise UserError( + _( + "The partner has to be the same on all" + " lines for receivable and payable accounts!" + ) + ) + return super().reconcile(writeoff_acc_id, writeoff_journal_id) diff --git a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml index 14b7276f1b..91aef71409 100644 --- a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml +++ b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml @@ -5,7 +5,7 @@ account.reconcile.partner.mismatch.report - diff --git a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py index 994264ac10..06e0e86b49 100644 --- a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py +++ b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py @@ -6,29 +6,22 @@ class AccountReconcilePartnerMismatchReport(models.Model): - _name = 'account.reconcile.partner.mismatch.report' - _description = 'Account Reconcile Partner Mismatch Report' + _name = "account.reconcile.partner.mismatch.report" + _description = "Account Reconcile Partner Mismatch Report" _auto = False partial_reconcile_id = fields.Many2one( - 'account.partial.reconcile', - string="Partial Reconcile" + "account.partial.reconcile", string="Partial Reconcile" ) - full_reconcile_id = fields.Many2one('account.full.reconcile') - account_id = fields.Many2one( - 'account.account', - string="Account" - ) - account_type_id = fields.Many2one( - 'account.account.type', - string="Account type", - ) - debit_move_id = fields.Many2one('account.move.line', string="Debit move") + full_reconcile_id = fields.Many2one("account.full.reconcile") + account_id = fields.Many2one("account.account", string="Account") + account_type_id = fields.Many2one("account.account.type", string="Account type") + debit_move_id = fields.Many2one("account.move.line", string="Debit move") debit_amount = fields.Float("Debit amount") - debit_partner_id = fields.Many2one('res.partner', string="Debit partner") - credit_move_id = fields.Many2one('account.move.line', string="Credit move") + debit_partner_id = fields.Many2one("res.partner", string="Debit partner") + credit_move_id = fields.Many2one("account.move.line", string="Credit move") credit_amount = fields.Float("Credit amount") - credit_partner_id = fields.Many2one('res.partner', string="Credit partner") + credit_partner_id = fields.Many2one("res.partner", string="Credit partner") @api.model_cr def init(self): diff --git a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py index 13be44556d..5711a68783 100644 --- a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -1,99 +1,111 @@ # Copyright 2019 Camptocamp SA # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo.addons.account.tests.account_test_classes import AccountingTestCase from odoo.exceptions import UserError +from odoo.addons.account.tests.account_test_classes import AccountingTestCase -class TestReconciliation(AccountingTestCase): +class TestReconciliation(AccountingTestCase): def setUp(self): super().setUp() - self.env = self.env(context=dict( - self.env.context, tracking_disable=True, - test_partner_mismatch=True) + self.env = self.env( + context=dict( + self.env.context, tracking_disable=True, test_partner_mismatch=True + ) ) self.partner = self.env.ref("base.res_partner_2") self.partner_id = self.partner.id - rec_type = self.env['account.account'].search([ - ('user_type_id', '=', - self.env.ref('account.data_account_type_receivable').id) - ], limit=1) - pay_type = self.env['account.account'].search([ - ('user_type_id', '=', - self.env.ref('account.data_account_type_payable').id) - ], limit=1) - self.account_rcv = (self.partner.property_account_receivable_id - or rec_type) + rec_type = self.env["account.account"].search( + [ + ( + "user_type_id", + "=", + self.env.ref("account.data_account_type_receivable").id, + ) + ], + limit=1, + ) + pay_type = self.env["account.account"].search( + [ + ( + "user_type_id", + "=", + self.env.ref("account.data_account_type_payable").id, + ) + ], + limit=1, + ) + self.account_rcv = self.partner.property_account_receivable_id or rec_type self.account_rsa = self.partner.property_account_payable_id or pay_type - self.bank_journal = self.env['account.journal']. \ - create({'name': 'Bank', 'type': 'bank', 'code': 'BNK67'}) + self.bank_journal = self.env["account.journal"].create( + {"name": "Bank", "type": "bank", "code": "BNK67"} + ) self.aml = self.init_moves() def create_move(self, name, amount): debit_line_vals = { - 'name': name, - 'debit': amount > 0 and amount or 0.0, - 'credit': amount < 0 and -amount or 0.0, - 'account_id': self.account_rcv.id, + "name": name, + "debit": amount > 0 and amount or 0.0, + "credit": amount < 0 and -amount or 0.0, + "account_id": self.account_rcv.id, } credit_line_vals = debit_line_vals.copy() - credit_line_vals['debit'] = debit_line_vals['credit'] - credit_line_vals['credit'] = debit_line_vals['debit'] - credit_line_vals['account_id'] = self.account_rsa.id + credit_line_vals["debit"] = debit_line_vals["credit"] + credit_line_vals["credit"] = debit_line_vals["debit"] + credit_line_vals["account_id"] = self.account_rsa.id vals = { - 'journal_id': self.bank_journal.id, - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] + "journal_id": self.bank_journal.id, + "line_ids": [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], } - return self.env['account.move'].create(vals).id + return self.env["account.move"].create(vals).id def init_moves(self): move_list_vals = [ - ('1', -1.83), - ('2', 728.35), - ('3', -4.46), - ('4', 0.32), - ('5', 14.72), - ('6', -737.10), + ("1", -1.83), + ("2", 728.35), + ("3", -4.46), + ("4", 0.32), + ("5", 14.72), + ("6", -737.10), ] move_ids = [] for name, amount in move_list_vals: move_ids.append(self.create_move(name, amount)) - aml_recs = self.env['account.move.line'].search([ - ('move_id', 'in', move_ids), - ('account_id', '=', self.account_rcv.id) - ]) + aml_recs = self.env["account.move.line"].search( + [("move_id", "in", move_ids), ("account_id", "=", self.account_rcv.id)] + ) return aml_recs def test_reconcile_no_partner(self): self.aml.reconcile() - self.assertTrue(all(self.aml.mapped('reconciled'))) + self.assertTrue(all(self.aml.mapped("reconciled"))) def test_reconcile_partner_mismatch(self): self.aml[0].partner_id = self.partner.id with self.assertRaises(UserError): self.aml.reconcile() # all lines with same partner allowed - self.aml.write({'partner_id': self.partner.id}) + self.aml.write({"partner_id": self.partner.id}) self.aml.reconcile() - self.assertTrue(all(self.aml.mapped('reconciled'))) + self.assertTrue(all(self.aml.mapped("reconciled"))) def test_reconcile_accounts_excluded(self): self.aml[0].partner_id = self.partner.id with self.assertRaises(UserError): self.aml.reconcile() # reconciliation forbiden only for certain types of accounts - account = self.env['account.account'].search([ - ('user_type_id.type', '=', 'other') - ], limit=1) + account = self.env["account.account"].search( + [("user_type_id.type", "=", "other")], limit=1 + ) account.reconcile = True self.aml[0].account_id = account.id with self.assertRaises(UserError): self.aml.reconcile() # reconciliation for different partners allowed # for not forbidden types - self.aml.write({'account_id': account.id}) + self.aml.write({"account_id": account.id}) self.aml.reconcile() - self.assertTrue(all(self.aml.mapped('reconciled'))) + self.assertTrue(all(self.aml.mapped("reconciled"))) From 09307acabd05c09546e5f11db78c6d961730e0eb Mon Sep 17 00:00:00 2001 From: ernestotejeda Date: Tue, 26 Nov 2019 11:37:54 -0500 Subject: [PATCH 05/18] [MIG] account_reconcile_restrict_partner_mismatch: Migration to 13.0 --- .../README.rst | 17 ++- .../__init__.py | 0 .../__manifest__.py | 2 +- ...nt_reconcile_restrict_partner_mismatch.pot | 13 +- .../models/__init__.py | 0 .../models/account_move_line.py | 3 +- .../readme/CONTRIBUTORS.rst | 3 + .../report/account_move_lines_report.xml | 123 ++++++++++-------- .../report/report_reconciled_lines.py | 7 +- .../static/description/index.html | 20 ++- .../tests/test_reconciliation.py | 95 +++++++------- 11 files changed, 161 insertions(+), 122 deletions(-) mode change 100755 => 100644 account_reconcile_restrict_partner_mismatch/__init__.py mode change 100755 => 100644 account_reconcile_restrict_partner_mismatch/models/__init__.py create mode 100644 account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst diff --git a/account_reconcile_restrict_partner_mismatch/README.rst b/account_reconcile_restrict_partner_mismatch/README.rst index 8abb6497fc..145d112ac9 100644 --- a/account_reconcile_restrict_partner_mismatch/README.rst +++ b/account_reconcile_restrict_partner_mismatch/README.rst @@ -14,13 +14,13 @@ Reconcile restrict partner mismatch :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_restrict_partner_mismatch + :target: https://github.com/OCA/account-reconcile/tree/13.0/account_reconcile_restrict_partner_mismatch :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_restrict_partner_mismatch + :target: https://translation.odoo-community.org/projects/account-reconcile-13-0/account-reconcile-13-0-account_reconcile_restrict_partner_mismatch :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| @@ -47,7 +47,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. @@ -59,6 +59,13 @@ Authors * Camptocamp +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Ernesto Tejeda + Maintainers ~~~~~~~~~~~ @@ -72,6 +79,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/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_restrict_partner_mismatch/__init__.py b/account_reconcile_restrict_partner_mismatch/__init__.py old mode 100755 new mode 100644 diff --git a/account_reconcile_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py index 92fb86196d..694d288e96 100644 --- a/account_reconcile_restrict_partner_mismatch/__manifest__.py +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -5,7 +5,7 @@ "name": "Reconcile restrict partner mismatch", "summary": "Restrict reconciliation on receivable " "and payable accounts to the same partner", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "depends": ["account"], "author": "Camptocamp, Odoo Community Association (OCA)", "website": "http://www.github.com/OCA/account-reconcile", diff --git a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot index 8958863273..b3d9f2afea 100644 --- a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot +++ b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_reconcile_restrict_partner_mismatch +# * account_reconcile_restrict_partner_mismatch # 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" @@ -97,8 +97,9 @@ msgid "Reconciled items with partner mismatch" msgstr "" #. module: account_reconcile_restrict_partner_mismatch -#: code:addons/account_reconcile_restrict_partner_mismatch/models/account_move_line.py:26 +#: code:addons/account_reconcile_restrict_partner_mismatch/models/account_move_line.py:0 #, python-format -msgid "The partner has to be the same on all lines for receivable and payable accounts!" +msgid "" +"The partner has to be the same on all lines for receivable and payable " +"accounts!" msgstr "" - diff --git a/account_reconcile_restrict_partner_mismatch/models/__init__.py b/account_reconcile_restrict_partner_mismatch/models/__init__.py old mode 100755 new mode 100644 diff --git a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py index 9cd800fe4b..adafe6e47e 100644 --- a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py +++ b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py @@ -1,7 +1,7 @@ # Copyright 2019 Camptocamp SA # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import _, api, models +from odoo import _, models from odoo.exceptions import UserError from odoo.tools import config @@ -9,7 +9,6 @@ class AccountMoveLine(models.Model): _inherit = "account.move.line" - @api.multi def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): if config["test_enable"] and not self.env.context.get("test_partner_mismatch"): return super().reconcile(writeoff_acc_id, writeoff_journal_id) diff --git a/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst b/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..0b6bee443f --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_: + + * Ernesto Tejeda diff --git a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml index 91aef71409..ee82bcc824 100644 --- a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml +++ b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml @@ -1,61 +1,74 @@ - + - - Reconciled items with partner mismatch - account.reconcile.partner.mismatch.report - - + + Reconciled items with partner mismatch + account.reconcile.partner.mismatch.report + + - - - - - - - - - - - - - - - - account.reconcile.partner.mismatch.report.form - account.reconcile.partner.mismatch.report - -
- + + + + + + + + + + + + + + + account.reconcile.partner.mismatch.report.form + account.reconcile.partner.mismatch.report + + + + - - - - - - - - - - - - - - + + + + + + - - - - - - - Reconciled items with partner mismatch - account.reconcile.partner.mismatch.report - tree,form - - - + + + + + + + +
+ +
+
+ + Reconciled items with partner mismatch + account.reconcile.partner.mismatch.report + tree,form + +
diff --git a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py index 06e0e86b49..a1ceeab401 100644 --- a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py +++ b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import api, fields, models, tools +from odoo import fields, models, tools class AccountReconcilePartnerMismatchReport(models.Model): @@ -23,7 +23,6 @@ class AccountReconcilePartnerMismatchReport(models.Model): credit_amount = fields.Float("Credit amount") credit_partner_id = fields.Many2one("res.partner", string="Credit partner") - @api.model_cr def init(self): """Select lines which violate defined rules""" tools.drop_view_if_exists(self.env.cr, self._table) @@ -45,8 +44,10 @@ def init(self): ON daml.id = pr.debit_move_id LEFT JOIN account_move_line caml ON caml.id = pr.credit_move_id + LEFT JOIN account_account aa + ON daml.account_id = aa.id LEFT JOIN account_account_type aat - ON daml.user_type_id = aat.id + ON aa.user_type_id = aat.id WHERE aat.type in ('receivable', 'payable') AND (daml.partner_id <> caml.partner_id OR (daml.partner_id IS NULL diff --git a/account_reconcile_restrict_partner_mismatch/static/description/index.html b/account_reconcile_restrict_partner_mismatch/static/description/index.html index aa278bcf27..3ddd6fd3fa 100644 --- a/account_reconcile_restrict_partner_mismatch/static/description/index.html +++ b/account_reconcile_restrict_partner_mismatch/static/description/index.html @@ -367,7 +367,7 @@

Reconcile restrict partner mismatch

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

This module restricts reconciliation between journal items when:

@@ -395,7 +396,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.

@@ -406,14 +407,23 @@

Authors

  • Camptocamp
  • +
    +

    Contributors

    + +
    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association

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

    -

    This module is part of the OCA/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_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py index 5711a68783..6f1e61f175 100644 --- a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -2,67 +2,66 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo.exceptions import UserError +from odoo.tests.common import SavepointCase -from odoo.addons.account.tests.account_test_classes import AccountingTestCase - -class TestReconciliation(AccountingTestCase): - def setUp(self): - super().setUp() - self.env = self.env( +class TestReconciliation(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env( context=dict( - self.env.context, tracking_disable=True, test_partner_mismatch=True + cls.env.context, tracking_disable=True, test_partner_mismatch=True ) ) - - self.partner = self.env.ref("base.res_partner_2") - self.partner_id = self.partner.id - rec_type = self.env["account.account"].search( - [ - ( - "user_type_id", - "=", - self.env.ref("account.data_account_type_receivable").id, - ) - ], - limit=1, + cls.partner = cls.env.ref("base.res_partner_2") + cls.partner_id = cls.partner.id + cls.account_rcv = cls.env["account.account"].create( + { + "code": "RA1000", + "name": "Test Receivable Account", + "user_type_id": cls.env.ref("account.data_account_type_receivable").id, + "reconcile": True, + } ) - pay_type = self.env["account.account"].search( - [ - ( - "user_type_id", - "=", - self.env.ref("account.data_account_type_payable").id, - ) - ], - limit=1, + cls.account_rsa = cls.env["account.account"].create( + { + "code": "PA1000", + "name": "Test Payable Account", + "user_type_id": cls.env.ref("account.data_account_type_payable").id, + "reconcile": True, + } ) - self.account_rcv = self.partner.property_account_receivable_id or rec_type - self.account_rsa = self.partner.property_account_payable_id or pay_type - - self.bank_journal = self.env["account.journal"].create( + cls.bank_journal = cls.env["account.journal"].create( {"name": "Bank", "type": "bank", "code": "BNK67"} ) - self.aml = self.init_moves() + cls.aml = cls.init_moves() - def create_move(self, name, amount): + @classmethod + def create_move(cls, name, amount): debit_line_vals = { "name": name, "debit": amount > 0 and amount or 0.0, "credit": amount < 0 and -amount or 0.0, - "account_id": self.account_rcv.id, + "account_id": cls.account_rcv.id, } credit_line_vals = debit_line_vals.copy() credit_line_vals["debit"] = debit_line_vals["credit"] credit_line_vals["credit"] = debit_line_vals["debit"] - credit_line_vals["account_id"] = self.account_rsa.id + credit_line_vals["account_id"] = cls.account_rsa.id vals = { - "journal_id": self.bank_journal.id, + "journal_id": cls.bank_journal.id, "line_ids": [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], } - return self.env["account.move"].create(vals).id + return ( + cls.env["account.move"] + .with_context(default_journal_id=cls.bank_journal.id) + .create(vals) + .id + ) - def init_moves(self): + @classmethod + def init_moves(cls): move_list_vals = [ ("1", -1.83), ("2", 728.35), @@ -73,9 +72,9 @@ def init_moves(self): ] move_ids = [] for name, amount in move_list_vals: - move_ids.append(self.create_move(name, amount)) - aml_recs = self.env["account.move.line"].search( - [("move_id", "in", move_ids), ("account_id", "=", self.account_rcv.id)] + move_ids.append(cls.create_move(name, amount)) + aml_recs = cls.env["account.move.line"].search( + [("move_id", "in", move_ids), ("account_id", "=", cls.account_rcv.id)] ) return aml_recs @@ -97,10 +96,16 @@ def test_reconcile_accounts_excluded(self): with self.assertRaises(UserError): self.aml.reconcile() # reconciliation forbiden only for certain types of accounts - account = self.env["account.account"].search( - [("user_type_id.type", "=", "other")], limit=1 + account = self.env["account.account"].create( + { + "code": "CAA1000", + "name": "Test Current Assets Account", + "user_type_id": self.env.ref( + "account.data_account_type_current_assets" + ).id, + "reconcile": True, + } ) - account.reconcile = True self.aml[0].account_id = account.id with self.assertRaises(UserError): self.aml.reconcile() From f8b29ef636efcd8c156c211cd86a64ef619cff06 Mon Sep 17 00:00:00 2001 From: mreficent Date: Wed, 29 Jan 2020 13:04:41 +0100 Subject: [PATCH 06/18] [IMP] account_partner_reconcile: black, isort, prettier --- account_reconcile_restrict_partner_mismatch/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/account_reconcile_restrict_partner_mismatch/__init__.py b/account_reconcile_restrict_partner_mismatch/__init__.py index bf588bc8b8..51d8f52af0 100644 --- a/account_reconcile_restrict_partner_mismatch/__init__.py +++ b/account_reconcile_restrict_partner_mismatch/__init__.py @@ -1,2 +1 @@ -from . import models -from . import report +from . import models, report From 74119d3f926977f4fc2bb3277b1c8a97a21a41fe Mon Sep 17 00:00:00 2001 From: nguyenhk Date: Wed, 29 Sep 2021 16:59:33 +0700 Subject: [PATCH 07/18] [IMP] account_reconcile_restrict_partner_mismatch: black, isort, prettier --- account_reconcile_restrict_partner_mismatch/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_reconcile_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py index 694d288e96..c24f65f882 100644 --- a/account_reconcile_restrict_partner_mismatch/__manifest__.py +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -8,7 +8,7 @@ "version": "13.0.1.0.0", "depends": ["account"], "author": "Camptocamp, Odoo Community Association (OCA)", - "website": "http://www.github.com/OCA/account-reconcile", + "website": "https://github.com/OCA/account-reconcile", "category": "Finance", "license": "AGPL-3", "data": ["report/account_move_lines_report.xml", "security/ir.model.access.csv"], From 9f3ecfd9e1d3c4c5e9c0e18561088614e6cb6499 Mon Sep 17 00:00:00 2001 From: nguyenhk Date: Wed, 6 Oct 2021 08:32:00 +0700 Subject: [PATCH 08/18] [MIG] account_reconcile_restrict_partner_mismatch: Migration to 14.0 --- .../README.rst | 18 ++++++++++----- .../__manifest__.py | 2 +- ...nt_reconcile_restrict_partner_mismatch.pot | 5 +++- .../models/account_move_line.py | 6 ++--- .../readme/CONTRIBUTORS.rst | 3 ++- .../readme/CREDITS.rst | 1 + .../static/description/index.html | 23 +++++++++++-------- .../tests/test_reconciliation.py | 3 +++ 8 files changed, 40 insertions(+), 21 deletions(-) create mode 100644 account_reconcile_restrict_partner_mismatch/readme/CREDITS.rst diff --git a/account_reconcile_restrict_partner_mismatch/README.rst b/account_reconcile_restrict_partner_mismatch/README.rst index 145d112ac9..e9952f88f6 100644 --- a/account_reconcile_restrict_partner_mismatch/README.rst +++ b/account_reconcile_restrict_partner_mismatch/README.rst @@ -14,13 +14,13 @@ Reconcile restrict partner mismatch :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/13.0/account_reconcile_restrict_partner_mismatch + :target: https://github.com/OCA/account-reconcile/tree/14.0/account_reconcile_restrict_partner_mismatch :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-13-0/account-reconcile-13-0-account_reconcile_restrict_partner_mismatch + :target: https://translation.odoo-community.org/projects/account-reconcile-14-0/account-reconcile-14-0-account_reconcile_restrict_partner_mismatch :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/13.0 + :target: https://runbot.odoo-community.org/runbot/98/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -47,7 +47,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. @@ -63,8 +63,14 @@ Contributors ~~~~~~~~~~~~ * `Tecnativa `_: - * Ernesto Tejeda +* `Trobz `_: + * Nguyen Ho + +Other credits +~~~~~~~~~~~~~ + +The migration of this module from 13.0 to 14.0 was financially supported by Camptocamp Maintainers ~~~~~~~~~~~ @@ -79,6 +85,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/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_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py index c24f65f882..3d2ab09231 100644 --- a/account_reconcile_restrict_partner_mismatch/__manifest__.py +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -5,7 +5,7 @@ "name": "Reconcile restrict partner mismatch", "summary": "Restrict reconciliation on receivable " "and payable accounts to the same partner", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "depends": ["account"], "author": "Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-reconcile", diff --git a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot index b3d9f2afea..ca4f4954b0 100644 --- a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot +++ b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -59,6 +59,7 @@ msgid "Debit partner" msgstr "" #. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line__display_name #: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__display_name msgid "Display Name" msgstr "" @@ -69,6 +70,7 @@ msgid "Full Reconcile" msgstr "" #. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line__id #: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__id msgid "ID" msgstr "" @@ -79,6 +81,7 @@ msgid "Journal Item" msgstr "" #. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line____last_update #: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report____last_update msgid "Last Modified on" msgstr "" diff --git a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py index adafe6e47e..2835a2a82f 100644 --- a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py +++ b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py @@ -9,9 +9,9 @@ class AccountMoveLine(models.Model): _inherit = "account.move.line" - def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): + def reconcile(self): if config["test_enable"] and not self.env.context.get("test_partner_mismatch"): - return super().reconcile(writeoff_acc_id, writeoff_journal_id) + return super().reconcile() # to be consistent with parent method if not self: @@ -27,4 +27,4 @@ def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): " lines for receivable and payable accounts!" ) ) - return super().reconcile(writeoff_acc_id, writeoff_journal_id) + return super().reconcile() diff --git a/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst b/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst index 0b6bee443f..85d7402df8 100644 --- a/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst +++ b/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst @@ -1,3 +1,4 @@ * `Tecnativa `_: - * Ernesto Tejeda +* `Trobz `_: + * Nguyen Ho diff --git a/account_reconcile_restrict_partner_mismatch/readme/CREDITS.rst b/account_reconcile_restrict_partner_mismatch/readme/CREDITS.rst new file mode 100644 index 0000000000..f37ebe7570 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/readme/CREDITS.rst @@ -0,0 +1 @@ +The migration of this module from 13.0 to 14.0 was financially supported by Camptocamp diff --git a/account_reconcile_restrict_partner_mismatch/static/description/index.html b/account_reconcile_restrict_partner_mismatch/static/description/index.html index 3ddd6fd3fa..9def080dee 100644 --- a/account_reconcile_restrict_partner_mismatch/static/description/index.html +++ b/account_reconcile_restrict_partner_mismatch/static/description/index.html @@ -367,7 +367,7 @@

    Reconcile restrict partner mismatch

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

    +

    Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

    This module restricts reconciliation between journal items when:

    @@ -396,7 +397,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.

    @@ -410,20 +411,24 @@

    Authors

    Contributors

    +
    +

    Other credits

    +

    The migration of this module from 13.0 to 14.0 was financially supported by Camptocamp

    +
    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association

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

    -

    This module is part of the OCA/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_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py index 6f1e61f175..9ded5b956e 100644 --- a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -79,6 +79,7 @@ def init_moves(cls): return aml_recs def test_reconcile_no_partner(self): + self.aml.move_id.action_post() self.aml.reconcile() self.assertTrue(all(self.aml.mapped("reconciled"))) @@ -88,6 +89,7 @@ def test_reconcile_partner_mismatch(self): self.aml.reconcile() # all lines with same partner allowed self.aml.write({"partner_id": self.partner.id}) + self.aml.move_id.action_post() self.aml.reconcile() self.assertTrue(all(self.aml.mapped("reconciled"))) @@ -112,5 +114,6 @@ def test_reconcile_accounts_excluded(self): # reconciliation for different partners allowed # for not forbidden types self.aml.write({"account_id": account.id}) + self.aml.move_id.action_post() self.aml.reconcile() self.assertTrue(all(self.aml.mapped("reconciled"))) From b3385693434d2451b9ad7a2fb5bc20256221a02a Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Sun, 14 Nov 2021 23:06:09 +0000 Subject: [PATCH 09/18] Added translation using Weblate (Spanish (Argentina)) --- .../i18n/es_AR.po | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 account_reconcile_restrict_partner_mismatch/i18n/es_AR.po diff --git a/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po b/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po new file mode 100644 index 0000000000..ec28c98765 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po @@ -0,0 +1,113 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_reconcile_restrict_partner_mismatch +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-15 01:36+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_id +msgid "Account" +msgstr "Cuenta" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_reconcile_partner_mismatch_report +msgid "Account Reconcile Partner Mismatch Report" +msgstr "Informe de Discrepancias de Contactos en la Conciliación de Cuentas" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id +msgid "Account type" +msgstr "Tipo de Cuenta" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_amount +msgid "Credit amount" +msgstr "Monto de crédito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_move_id +msgid "Credit move" +msgstr "Movimiento de crédito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_partner_id +msgid "Credit partner" +msgstr "Crédito del contacto" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_amount +msgid "Debit amount" +msgstr "Monto de débito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_move_id +msgid "Debit move" +msgstr "Movimiento de débito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_partner_id +msgid "Debit partner" +msgstr "Débito del contacto" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line__display_name +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__full_reconcile_id +msgid "Full Reconcile" +msgstr "Conciliación Total" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line__id +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__id +msgid "ID" +msgstr "ID" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_move_line +msgid "Journal Item" +msgstr "Apunte Contable" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line____last_update +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__partial_reconcile_id +msgid "Partial Reconcile" +msgstr "Conciliación Parcial" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.actions.act_window,name:account_reconcile_restrict_partner_mismatch.action_account_reconcile_partner_mismatch_report +#: model:ir.ui.menu,name:account_reconcile_restrict_partner_mismatch.menu_account_reconcile_partner_mismatch_report +#: model_terms:ir.ui.view,arch_db:account_reconcile_restrict_partner_mismatch.account_reconcile_partner_mismatch_report_view_form +#: model_terms:ir.ui.view,arch_db:account_reconcile_restrict_partner_mismatch.view_account_move_reconciled_report_tree +msgid "Reconciled items with partner mismatch" +msgstr "Elementos conciliados con discrepancia del contacto" + +#. module: account_reconcile_restrict_partner_mismatch +#: code:addons/account_reconcile_restrict_partner_mismatch/models/account_move_line.py:0 +#, python-format +msgid "" +"The partner has to be the same on all lines for receivable and payable " +"accounts!" +msgstr "" +"¡El contacto tiene que ser el mismo en todas las líneas para cuentas por " +"cobrar y por pagar!" From fb3c30726e2664ebbc79333df2a54a5a002d8711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dept=2E=20T=C3=A9cnico?= Date: Tue, 12 Apr 2022 15:56:29 +0000 Subject: [PATCH 10/18] Added translation using Weblate (Spanish) --- .../i18n/es.po | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 account_reconcile_restrict_partner_mismatch/i18n/es.po diff --git a/account_reconcile_restrict_partner_mismatch/i18n/es.po b/account_reconcile_restrict_partner_mismatch/i18n/es.po new file mode 100644 index 0000000000..89d38f7fa9 --- /dev/null +++ b/account_reconcile_restrict_partner_mismatch/i18n/es.po @@ -0,0 +1,114 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_reconcile_restrict_partner_mismatch +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-08-04 18:06+0000\n" +"Last-Translator: Luis D. Lafaurie \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_id +msgid "Account" +msgstr "Cuenta" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_reconcile_partner_mismatch_report +msgid "Account Reconcile Partner Mismatch Report" +msgstr "" +"Informe sobre la falta de coincidencia de cuentas conciliadas de los socios" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id +msgid "Account type" +msgstr "Tipo de cuenta" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_amount +msgid "Credit amount" +msgstr "Importe del crédito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_move_id +msgid "Credit move" +msgstr "Movimiento del crédito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__credit_partner_id +msgid "Credit partner" +msgstr "Socio del crédito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_amount +msgid "Debit amount" +msgstr "Importe de débito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_move_id +msgid "Debit move" +msgstr "Movimiento de débito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__debit_partner_id +msgid "Debit partner" +msgstr "Socio de débito" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line__display_name +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__display_name +msgid "Display Name" +msgstr "Nombre de la pantalla" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__full_reconcile_id +msgid "Full Reconcile" +msgstr "Conciliación completa" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line__id +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__id +msgid "ID" +msgstr "Identificación" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model,name:account_reconcile_restrict_partner_mismatch.model_account_move_line +msgid "Journal Item" +msgstr "Artículo del diario" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_move_line____last_update +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report____last_update +msgid "Last Modified on" +msgstr "Ultima modificación en" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__partial_reconcile_id +msgid "Partial Reconcile" +msgstr "Conciliación parcial" + +#. module: account_reconcile_restrict_partner_mismatch +#: model:ir.actions.act_window,name:account_reconcile_restrict_partner_mismatch.action_account_reconcile_partner_mismatch_report +#: model:ir.ui.menu,name:account_reconcile_restrict_partner_mismatch.menu_account_reconcile_partner_mismatch_report +#: model_terms:ir.ui.view,arch_db:account_reconcile_restrict_partner_mismatch.account_reconcile_partner_mismatch_report_view_form +#: model_terms:ir.ui.view,arch_db:account_reconcile_restrict_partner_mismatch.view_account_move_reconciled_report_tree +msgid "Reconciled items with partner mismatch" +msgstr "Artículos conciliados sin coincidencia de socio" + +#. module: account_reconcile_restrict_partner_mismatch +#: code:addons/account_reconcile_restrict_partner_mismatch/models/account_move_line.py:0 +#, python-format +msgid "" +"The partner has to be the same on all lines for receivable and payable " +"accounts!" +msgstr "" +"¡El socio tiene que ser el mismo en todas las líneas de cuentas por cobrar y " +"por pagar!" From dd54e1cd2a3018ea25ee26ef0df5db66b4d25437 Mon Sep 17 00:00:00 2001 From: kaynnan Date: Fri, 7 Jul 2023 10:58:44 -0300 Subject: [PATCH 11/18] [MIG] account_reconcile_restrict_partner_mismatch: Migration to 15.0 --- .../__manifest__.py | 2 +- .../report/account_move_lines_report.xml | 7 +------ .../tests/test_reconciliation.py | 4 ++-- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/account_reconcile_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py index 3d2ab09231..449d49c6d9 100644 --- a/account_reconcile_restrict_partner_mismatch/__manifest__.py +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -5,7 +5,7 @@ "name": "Reconcile restrict partner mismatch", "summary": "Restrict reconciliation on receivable " "and payable accounts to the same partner", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "depends": ["account"], "author": "Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-reconcile", diff --git a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml index ee82bcc824..a464bed195 100644 --- a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml +++ b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml @@ -4,12 +4,7 @@ Reconciled items with partner mismatch account.reconcile.partner.mismatch.report - + diff --git a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py index 9ded5b956e..d45d1d15a3 100644 --- a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -2,10 +2,10 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo.exceptions import UserError -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestReconciliation(SavepointCase): +class TestReconciliation(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() From f81640debce361a165238ba4b228d2c610eb63ee Mon Sep 17 00:00:00 2001 From: sbejaoui Date: Fri, 29 Sep 2023 15:23:09 +0200 Subject: [PATCH 12/18] [16.0][MIG] account_reconcile_restrict_partner_mismatch --- .../README.rst | 25 +++++++++++-------- .../__manifest__.py | 2 +- ...nt_reconcile_restrict_partner_mismatch.pot | 2 +- .../i18n/es.po | 2 +- .../i18n/es_AR.po | 2 +- .../models/account_move_line.py | 5 +++- .../readme/CONTRIBUTORS.rst | 2 ++ .../report/account_move_lines_report.xml | 4 +-- .../report/report_reconciled_lines.py | 10 ++++---- .../static/description/index.html | 14 +++++++---- .../tests/test_reconciliation.py | 8 +++--- 11 files changed, 44 insertions(+), 32 deletions(-) diff --git a/account_reconcile_restrict_partner_mismatch/README.rst b/account_reconcile_restrict_partner_mismatch/README.rst index e9952f88f6..6c31f83af4 100644 --- a/account_reconcile_restrict_partner_mismatch/README.rst +++ b/account_reconcile_restrict_partner_mismatch/README.rst @@ -2,10 +2,13 @@ Reconcile restrict partner mismatch =================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e643e776a13ac74578f05aa23fc0328120234f43ff74182e837e0d18e2f357ae + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -14,16 +17,16 @@ Reconcile restrict partner mismatch :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/14.0/account_reconcile_restrict_partner_mismatch + :target: https://github.com/OCA/account-reconcile/tree/16.0/account_reconcile_restrict_partner_mismatch :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-14-0/account-reconcile-14-0-account_reconcile_restrict_partner_mismatch + :target: https://translation.odoo-community.org/projects/account-reconcile-16-0/account-reconcile-16-0-account_reconcile_restrict_partner_mismatch :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/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/account-reconcile&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module restricts reconciliation between journal items when: @@ -46,8 +49,8 @@ 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 `_. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -66,6 +69,8 @@ Contributors * Ernesto Tejeda * `Trobz `_: * Nguyen Ho +* `ACSONE SA `_: + * Souheil Bejaoui Other credits ~~~~~~~~~~~~~ @@ -85,6 +90,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/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_restrict_partner_mismatch/__manifest__.py b/account_reconcile_restrict_partner_mismatch/__manifest__.py index 449d49c6d9..c8a6481a6e 100644 --- a/account_reconcile_restrict_partner_mismatch/__manifest__.py +++ b/account_reconcile_restrict_partner_mismatch/__manifest__.py @@ -5,7 +5,7 @@ "name": "Reconcile restrict partner mismatch", "summary": "Restrict reconciliation on receivable " "and payable accounts to the same partner", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "depends": ["account"], "author": "Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-reconcile", diff --git a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot index ca4f4954b0..a170765b2e 100644 --- a/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot +++ b/account_reconcile_restrict_partner_mismatch/i18n/account_reconcile_restrict_partner_mismatch.pot @@ -24,7 +24,7 @@ msgid "Account Reconcile Partner Mismatch Report" msgstr "" #. module: account_reconcile_restrict_partner_mismatch -#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type msgid "Account type" msgstr "" diff --git a/account_reconcile_restrict_partner_mismatch/i18n/es.po b/account_reconcile_restrict_partner_mismatch/i18n/es.po index 89d38f7fa9..9c6b7e9b82 100644 --- a/account_reconcile_restrict_partner_mismatch/i18n/es.po +++ b/account_reconcile_restrict_partner_mismatch/i18n/es.po @@ -28,7 +28,7 @@ msgstr "" "Informe sobre la falta de coincidencia de cuentas conciliadas de los socios" #. module: account_reconcile_restrict_partner_mismatch -#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type msgid "Account type" msgstr "Tipo de cuenta" diff --git a/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po b/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po index ec28c98765..9af7491dbc 100644 --- a/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po +++ b/account_reconcile_restrict_partner_mismatch/i18n/es_AR.po @@ -27,7 +27,7 @@ msgid "Account Reconcile Partner Mismatch Report" msgstr "Informe de Discrepancias de Contactos en la Conciliación de Cuentas" #. module: account_reconcile_restrict_partner_mismatch -#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type_id +#: model:ir.model.fields,field_description:account_reconcile_restrict_partner_mismatch.field_account_reconcile_partner_mismatch_report__account_type msgid "Account type" msgstr "Tipo de Cuenta" diff --git a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py index 2835a2a82f..8f7b7b7b54 100644 --- a/account_reconcile_restrict_partner_mismatch/models/account_move_line.py +++ b/account_reconcile_restrict_partner_mismatch/models/account_move_line.py @@ -18,7 +18,10 @@ def reconcile(self): return True partners = set() for line in self: - if line.account_id.internal_type in ("receivable", "payable"): + if line.account_id.account_type in ( + "asset_receivable", + "liability_payable", + ): partners.add(line.partner_id.id) if len(partners) > 1: raise UserError( diff --git a/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst b/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst index 85d7402df8..c2b261b8ac 100644 --- a/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst +++ b/account_reconcile_restrict_partner_mismatch/readme/CONTRIBUTORS.rst @@ -2,3 +2,5 @@ * Ernesto Tejeda * `Trobz `_: * Nguyen Ho +* `ACSONE SA `_: + * Souheil Bejaoui diff --git a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml index a464bed195..c5930500e3 100644 --- a/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml +++ b/account_reconcile_restrict_partner_mismatch/report/account_move_lines_report.xml @@ -15,7 +15,7 @@ - + @@ -42,7 +42,7 @@ - + diff --git a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py index a1ceeab401..e98ca0eac0 100644 --- a/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py +++ b/account_reconcile_restrict_partner_mismatch/report/report_reconciled_lines.py @@ -15,7 +15,9 @@ class AccountReconcilePartnerMismatchReport(models.Model): ) full_reconcile_id = fields.Many2one("account.full.reconcile") account_id = fields.Many2one("account.account", string="Account") - account_type_id = fields.Many2one("account.account.type", string="Account type") + account_type = fields.Selection( + selection=[("asset_receivable", "Receivable"), ("liability_payable", "Payable")] + ) debit_move_id = fields.Many2one("account.move.line", string="Debit move") debit_amount = fields.Float("Debit amount") debit_partner_id = fields.Many2one("res.partner", string="Debit partner") @@ -33,7 +35,7 @@ def init(self): , pr.full_reconcile_id , pr.debit_move_id , daml.debit debit_amount - , aat.id account_type_id + , aa.account_type , daml.partner_id debit_partner_id , daml.account_id account_id , pr.credit_move_id @@ -46,9 +48,7 @@ def init(self): ON caml.id = pr.credit_move_id LEFT JOIN account_account aa ON daml.account_id = aa.id - LEFT JOIN account_account_type aat - ON aa.user_type_id = aat.id - WHERE aat.type in ('receivable', 'payable') + WHERE aa.account_type IN ('asset_receivable', 'liability_payable') AND (daml.partner_id <> caml.partner_id OR (daml.partner_id IS NULL AND caml.partner_id IS NOT NULL) diff --git a/account_reconcile_restrict_partner_mismatch/static/description/index.html b/account_reconcile_restrict_partner_mismatch/static/description/index.html index 9def080dee..25713b75df 100644 --- a/account_reconcile_restrict_partner_mismatch/static/description/index.html +++ b/account_reconcile_restrict_partner_mismatch/static/description/index.html @@ -3,7 +3,7 @@ - + Reconcile restrict partner mismatch