From 00c2e523c4cc05cd7e0f81850a4af0ee2bf046a7 Mon Sep 17 00:00:00 2001 From: ernestotejeda Date: Mon, 25 Nov 2019 15:07:08 -0500 Subject: [PATCH] [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 a9e05f06..92fb8619 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 8ab5f13e..9cd800fe 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 @@ class AccountMoveLine(models.Model): 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 14b7276f..91aef714 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 994264ac..06e0e86b 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 @@ from odoo import api, fields, models, tools 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 13be4455..5711a687 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): - 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")))