From aec6522a587ebf7d2a2f78df3f8bed0ae1452123 Mon Sep 17 00:00:00 2001 From: AmmarOfficewalaSerpentCS Date: Fri, 28 May 2021 16:56:13 +0530 Subject: [PATCH] [FIX] Fixed a travis. --- .../__manifest__.py | 11 +- .../models/account_full_reconcile.py | 16 +- ...t_account_reconcile_reconciliation_date.py | 294 +++++++++++------- .../views/account_invoice.xml | 7 +- .../views/account_payment.xml | 7 +- .../account_reconcile_reconciliation_date | 1 + .../setup.py | 6 + 7 files changed, 207 insertions(+), 135 deletions(-) create mode 120000 setup/account_reconcile_reconciliation_date/odoo/addons/account_reconcile_reconciliation_date create mode 100644 setup/account_reconcile_reconciliation_date/setup.py diff --git a/account_reconcile_reconciliation_date/__manifest__.py b/account_reconcile_reconciliation_date/__manifest__.py index 7a4fc4fe..1a9b7d3d 100644 --- a/account_reconcile_reconciliation_date/__manifest__.py +++ b/account_reconcile_reconciliation_date/__manifest__.py @@ -7,12 +7,9 @@ "version": "12.0.1.1.0", "depends": ["account"], "author": "Open Source Integrators, 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": [ - 'views/account_invoice.xml', - 'views/account_payment.xml' - ], - 'installable': True, + "license": "AGPL-3", + "data": ["views/account_invoice.xml", "views/account_payment.xml"], + "installable": True, } diff --git a/account_reconcile_reconciliation_date/models/account_full_reconcile.py b/account_reconcile_reconciliation_date/models/account_full_reconcile.py index bdea9bdb..e8145039 100644 --- a/account_reconcile_reconciliation_date/models/account_full_reconcile.py +++ b/account_reconcile_reconciliation_date/models/account_full_reconcile.py @@ -2,6 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import date + from odoo import api, fields, models @@ -9,8 +10,9 @@ class AccountFullReconcile(models.Model): _inherit = "account.full.reconcile" _description = "Full Reconcile" - reconciliation_date = fields.Date(string="Reconciliation Date", - default=date.today()) + reconciliation_date = fields.Date( + string="Reconciliation Date", default=date.today() + ) @api.model def create(self, vals): @@ -18,9 +20,11 @@ class AccountFullReconcile(models.Model): for reconcile_id in res: for line_id in reconcile_id.reconciled_line_ids: if line_id.payment_id: - line_id.payment_id.reconciliation_date = reconcile_id.\ - reconciliation_date + line_id.payment_id.reconciliation_date = ( + reconcile_id.reconciliation_date + ) if line_id.invoice_id: - line_id.invoice_id.reconciliation_date = reconcile_id.\ - reconciliation_date + line_id.invoice_id.reconciliation_date = ( + reconcile_id.reconciliation_date + ) return res diff --git a/account_reconcile_reconciliation_date/tests/test_account_reconcile_reconciliation_date.py b/account_reconcile_reconciliation_date/tests/test_account_reconcile_reconciliation_date.py index c67a3907..3ebea791 100644 --- a/account_reconcile_reconciliation_date/tests/test_account_reconcile_reconciliation_date.py +++ b/account_reconcile_reconciliation_date/tests/test_account_reconcile_reconciliation_date.py @@ -1,21 +1,22 @@ # Copyright (C) 2019, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.addons.account.tests.account_test_classes import AccountingTestCase import time +from odoo.addons.account.tests.account_test_classes import AccountingTestCase + class TestAccountReconcileReconciliationDate(AccountingTestCase): def setUp(self): super(TestAccountReconcileReconciliationDate, self).setUp() - self.register_payments_model = self.env['account.register.payments'].\ - with_context(active_model='account.invoice') - self.payment_model = self.env['account.payment'] - self.invoice_model = self.env['account.invoice'] - self.invoice_line_model = self.env['account.invoice.line'] - self.acc_bank_stmt_model = self.env['account.bank.statement'] - self.acc_bank_stmt_line_model = self.\ - env['account.bank.statement.line'] + self.register_payments_model = self.env[ + "account.register.payments" + ].with_context(active_model="account.invoice") + self.payment_model = self.env["account.payment"] + self.invoice_model = self.env["account.invoice"] + self.invoice_line_model = self.env["account.invoice.line"] + self.acc_bank_stmt_model = self.env["account.bank.statement"] + self.acc_bank_stmt_line_model = self.env["account.bank.statement.line"] self.partner_agrolait = self.env.ref("base.res_partner_2") self.partner_china_exp = self.env.ref("base.res_partner_3") @@ -23,87 +24,133 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): self.currency_usd_id = self.env.ref("base.USD").id self.currency_eur_id = self.env.ref("base.EUR").id - company = self.env.ref('base.main_company') - self.cr.\ - execute("UPDATE res_company SET currency_id = %s WHERE id = %s", - [self.currency_eur_id, company.id]) + company = self.env.ref("base.main_company") + self.cr.execute( + "UPDATE res_company SET currency_id = %s WHERE id = %s", + [self.currency_eur_id, company.id], + ) self.product = self.env.ref("product.product_product_4") - self.payment_method_manual_in = self.env.\ - ref("account.account_payment_method_manual_in") - self.payment_method_manual_out = self.env.\ - ref("account.account_payment_method_manual_out") + self.payment_method_manual_in = self.env.ref( + "account.account_payment_method_manual_in" + ) + self.payment_method_manual_out = self.env.ref( + "account.account_payment_method_manual_out" + ) - self.account_receivable = self.env['account.account'].\ - search([('user_type_id', '=', self. - env.ref('account.data_account_type_receivable').id)], - limit=1) - self.account_payable = self.env['account.account'].\ - search([('user_type_id', '=', self.env. - ref('account.data_account_type_payable').id)], limit=1) - self.account_revenue = self.env['account.account'].\ - search([('user_type_id', '=', self.env. - ref('account.data_account_type_revenue').id)], limit=1) + self.account_receivable = self.env["account.account"].search( + [ + ( + "user_type_id", + "=", + self.env.ref("account.data_account_type_receivable").id, + ) + ], + limit=1, + ) + self.account_payable = self.env["account.account"].search( + [ + ( + "user_type_id", + "=", + self.env.ref("account.data_account_type_payable").id, + ) + ], + limit=1, + ) + self.account_revenue = self.env["account.account"].search( + [ + ( + "user_type_id", + "=", + self.env.ref("account.data_account_type_revenue").id, + ) + ], + limit=1, + ) - self.bank_journal_euro = self.env['account.journal'].\ - create({'name': 'Bank', 'type': 'bank', 'code': 'BNK67'}) + self.bank_journal_euro = self.env["account.journal"].create( + {"name": "Bank", "type": "bank", "code": "BNK67"} + ) self.account_eur = self.bank_journal_euro.default_debit_account_id - self.bank_journal_usd = self.env['account.journal'].\ - create({'name': 'Bank US', - 'type': 'bank', - 'code': 'BNK68', - 'currency_id': self.currency_usd_id}) + self.bank_journal_usd = self.env["account.journal"].create( + { + "name": "Bank US", + "type": "bank", + "code": "BNK68", + "currency_id": self.currency_usd_id, + } + ) self.account_usd = self.bank_journal_usd.default_debit_account_id - self.transfer_account = self.env['res.users'].\ - browse(self.env.uid).company_id.transfer_account_id - self.diff_income_account = self.env['res.users'].\ - browse(self.env.uid).company_id.\ - income_currency_exchange_account_id - self.diff_expense_account = self.env['res.users'].\ - browse(self.env.uid).company_id.\ - expense_currency_exchange_account_id + self.transfer_account = ( + self.env["res.users"].browse(self.env.uid).company_id.transfer_account_id + ) + self.diff_income_account = ( + self.env["res.users"] + .browse(self.env.uid) + .company_id.income_currency_exchange_account_id + ) + self.diff_expense_account = ( + self.env["res.users"] + .browse(self.env.uid) + .company_id.expense_currency_exchange_account_id + ) - def create_invoice(self, amount=100, - type='out_invoice', currency_id=None, - partner=None, account_id=None): + def create_invoice( + self, + amount=100, + type="out_invoice", + currency_id=None, + partner=None, + account_id=None, + ): """ Returns an open invoice """ - invoice = self.invoice_model.create({ - 'partner_id': partner or self.partner_agrolait.id, - 'currency_id': currency_id or self.currency_eur_id, - 'name': type, - 'account_id': account_id or self.account_receivable.id, - 'type': type, - 'date_invoice': time.strftime('%Y') + '-06-26', - }) - self.invoice_line_model.create({ - 'product_id': self.product.id, - 'quantity': 1, - 'price_unit': amount, - 'invoice_id': invoice.id, - 'name': 'something', - 'account_id': self.account_revenue.id, - }) + invoice = self.invoice_model.create( + { + "partner_id": partner or self.partner_agrolait.id, + "currency_id": currency_id or self.currency_eur_id, + "name": type, + "account_id": account_id or self.account_receivable.id, + "type": type, + "date_invoice": time.strftime("%Y") + "-06-26", + } + ) + self.invoice_line_model.create( + { + "product_id": self.product.id, + "quantity": 1, + "price_unit": amount, + "invoice_id": invoice.id, + "name": "something", + "account_id": self.account_revenue.id, + } + ) invoice.action_invoice_open() return invoice - def reconcile(self, liquidity_aml, - amount=0.0, amount_currency=0.0, currency_id=None): + def reconcile( + self, liquidity_aml, amount=0.0, amount_currency=0.0, currency_id=None + ): """ Reconcile a journal entry corresponding \ to a payment with its bank statement line """ - bank_stmt = self.acc_bank_stmt_model.create({ - 'journal_id': liquidity_aml.journal_id.id, - 'date': time.strftime('%Y') + '-07-15', - }) - bank_stmt_line = self.acc_bank_stmt_line_model.create({ - 'name': 'payment', - 'statement_id': bank_stmt.id, - 'partner_id': self.partner_agrolait.id, - 'amount': amount, - 'amount_currency': amount_currency, - 'currency_id': currency_id, - 'date': time.strftime('%Y') + '-07-15' - }) + bank_stmt = self.acc_bank_stmt_model.create( + { + "journal_id": liquidity_aml.journal_id.id, + "date": time.strftime("%Y") + "-07-15", + } + ) + bank_stmt_line = self.acc_bank_stmt_line_model.create( + { + "name": "payment", + "statement_id": bank_stmt.id, + "partner_id": self.partner_agrolait.id, + "amount": amount, + "amount_currency": amount_currency, + "currency_id": currency_id, + "date": time.strftime("%Y") + "-07-15", + } + ) bank_stmt_line.process_reconciliation(payment_aml_rec=liquidity_aml) return bank_stmt @@ -111,56 +158,67 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): def test_full_payment_process(self): """ Create a payment for two invoices, \ post it and reconcile it with a bank statement """ - inv_1 = self.create_invoice(amount=100, - currency_id=self.currency_eur_id, - partner=self.partner_agrolait.id) - inv_2 = self.create_invoice(amount=200, - currency_id=self.currency_eur_id, - partner=self.partner_agrolait.id) + inv_1 = self.create_invoice( + amount=100, + currency_id=self.currency_eur_id, + partner=self.partner_agrolait.id, + ) + inv_2 = self.create_invoice( + amount=200, + currency_id=self.currency_eur_id, + partner=self.partner_agrolait.id, + ) - ctx = {'active_model': 'account.invoice', - 'active_ids': [inv_1.id, inv_2.id]} - register_payments = self.register_payments_model.\ - with_context(ctx).\ - create({ - 'payment_date': time.strftime('%Y') + '-07-15', - 'journal_id': self.bank_journal_euro.id, - 'payment_method_id': self.payment_method_manual_in.id, - 'group_invoices': True, - }) + ctx = {"active_model": "account.invoice", "active_ids": [inv_1.id, inv_2.id]} + register_payments = self.register_payments_model.with_context(ctx).create( + { + "payment_date": time.strftime("%Y") + "-07-15", + "journal_id": self.bank_journal_euro.id, + "payment_method_id": self.payment_method_manual_in.id, + "group_invoices": True, + } + ) register_payments.create_payments() payment = self.payment_model.search([], order="id desc", limit=1) self.assertAlmostEquals(payment.amount, 300) - self.assertEqual(payment.state, 'posted') - self.assertEqual(payment.state, 'posted') - self.assertEqual(inv_1.state, 'paid') - self.assertEqual(inv_2.state, 'paid') + self.assertEqual(payment.state, "posted") + self.assertEqual(payment.state, "posted") + self.assertEqual(inv_1.state, "paid") + self.assertEqual(inv_2.state, "paid") - self.assertRecordValues(payment.move_line_ids, [ - {'account_id': self.account_eur.id, - 'debit': 300.0, - 'credit': 0.0, - 'amount_currency': 0, - 'currency_id': False}, - {'account_id': inv_1.account_id.id, - 'debit': 0.0, - 'credit': 300.0, - 'amount_currency': 0, - 'currency_id': False}, - ]) - self.assertTrue(payment.move_line_ids. - filtered(lambda l: l.account_id == inv_1.account_id) - [0].full_reconcile_id) + self.assertRecordValues( + payment.move_line_ids, + [ + { + "account_id": self.account_eur.id, + "debit": 300.0, + "credit": 0.0, + "amount_currency": 0, + "currency_id": False, + }, + { + "account_id": inv_1.account_id.id, + "debit": 0.0, + "credit": 300.0, + "amount_currency": 0, + "currency_id": False, + }, + ], + ) + self.assertTrue( + payment.move_line_ids.filtered(lambda l: l.account_id == inv_1.account_id)[ + 0 + ].full_reconcile_id + ) - liquidity_aml = payment.move_line_ids.\ - filtered(lambda r: r.account_id == self.account_eur) + liquidity_aml = payment.move_line_ids.filtered( + lambda r: r.account_id == self.account_eur + ) bank_statement = self.reconcile(liquidity_aml, 200, 0, False) self.assertEqual(liquidity_aml.statement_id, bank_statement) - self.assertEqual(liquidity_aml.statement_line_id, - bank_statement.line_ids[0]) + self.assertEqual(liquidity_aml.statement_line_id, bank_statement.line_ids[0]) - self.assertEqual(payment.state, 'reconciled') - self.assertEqual(payment.reconciliation_date, - inv_1.reconciliation_date) + self.assertEqual(payment.state, "reconciled") + self.assertEqual(payment.reconciliation_date, inv_1.reconciliation_date) diff --git a/account_reconcile_reconciliation_date/views/account_invoice.xml b/account_reconcile_reconciliation_date/views/account_invoice.xml index 7a559ac5..b523261a 100644 --- a/account_reconcile_reconciliation_date/views/account_invoice.xml +++ b/account_reconcile_reconciliation_date/views/account_invoice.xml @@ -3,10 +3,13 @@ account.invoice.reconciliation.date account.invoice - + - + diff --git a/account_reconcile_reconciliation_date/views/account_payment.xml b/account_reconcile_reconciliation_date/views/account_payment.xml index 10a65be1..1802aa16 100644 --- a/account_reconcile_reconciliation_date/views/account_payment.xml +++ b/account_reconcile_reconciliation_date/views/account_payment.xml @@ -3,10 +3,13 @@ account.payment.reconciliation.date account.payment - + - + diff --git a/setup/account_reconcile_reconciliation_date/odoo/addons/account_reconcile_reconciliation_date b/setup/account_reconcile_reconciliation_date/odoo/addons/account_reconcile_reconciliation_date new file mode 120000 index 00000000..12e4abc0 --- /dev/null +++ b/setup/account_reconcile_reconciliation_date/odoo/addons/account_reconcile_reconciliation_date @@ -0,0 +1 @@ +../../../../account_reconcile_reconciliation_date \ No newline at end of file diff --git a/setup/account_reconcile_reconciliation_date/setup.py b/setup/account_reconcile_reconciliation_date/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/account_reconcile_reconciliation_date/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)