From 17f6257a49380bef7ba9c899c1871347d6ad1181 Mon Sep 17 00:00:00 2001 From: scampbell Date: Tue, 10 Dec 2019 13:10:56 -0800 Subject: [PATCH 1/7] [ADD] account_reconcile_reconciliation_date [IMP] New Line EOF [IMP] Flake8 [ADD] Documentation and Test Cases [IMP] Flake8 [UPD] Update account_reconcile_reconciliation_date.pot [UPD] README.rst --- .../README.rst | 73 +++ .../__init__.py | 4 + .../__manifest__.py | 18 + .../account_reconcile_reconciliation_date.pot | 37 ++ .../models/__init__.py | 6 + .../models/account_full_reconcile.py | 26 ++ .../models/account_invoice.py | 10 + .../models/account_payment.py | 10 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/index.html | 419 ++++++++++++++++++ .../tests/__init__.py | 4 + ...t_account_reconcile_reconciliation_date.py | 165 +++++++ .../views/account_invoice.xml | 14 + .../views/account_payment.xml | 14 + 15 files changed, 802 insertions(+) create mode 100644 account_reconcile_reconciliation_date/README.rst create mode 100644 account_reconcile_reconciliation_date/__init__.py create mode 100644 account_reconcile_reconciliation_date/__manifest__.py create mode 100644 account_reconcile_reconciliation_date/i18n/account_reconcile_reconciliation_date.pot create mode 100644 account_reconcile_reconciliation_date/models/__init__.py create mode 100644 account_reconcile_reconciliation_date/models/account_full_reconcile.py create mode 100644 account_reconcile_reconciliation_date/models/account_invoice.py create mode 100644 account_reconcile_reconciliation_date/models/account_payment.py create mode 100644 account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst create mode 100644 account_reconcile_reconciliation_date/readme/DESCRIPTION.rst create mode 100644 account_reconcile_reconciliation_date/static/description/index.html create mode 100644 account_reconcile_reconciliation_date/tests/__init__.py create mode 100644 account_reconcile_reconciliation_date/tests/test_account_reconcile_reconciliation_date.py create mode 100644 account_reconcile_reconciliation_date/views/account_invoice.xml create mode 100644 account_reconcile_reconciliation_date/views/account_payment.xml diff --git a/account_reconcile_reconciliation_date/README.rst b/account_reconcile_reconciliation_date/README.rst new file mode 100644 index 00000000..75e3563e --- /dev/null +++ b/account_reconcile_reconciliation_date/README.rst @@ -0,0 +1,73 @@ +=========================== +Account Reconciliation Date +=========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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_reconciliation_date + :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_reconciliation_date + :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 is designed to help users track when invoices and payments are reconciled + +**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 +~~~~~~~ + +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* Steven Campbell + +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_reconciliation_date/__init__.py b/account_reconcile_reconciliation_date/__init__.py new file mode 100644 index 00000000..a0d2c6cd --- /dev/null +++ b/account_reconcile_reconciliation_date/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/account_reconcile_reconciliation_date/__manifest__.py b/account_reconcile_reconciliation_date/__manifest__.py new file mode 100644 index 00000000..315231a3 --- /dev/null +++ b/account_reconcile_reconciliation_date/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Account Reconciliation Date", + "summary": "Track Reconciliation Date of Payments and Invoices", + "version": "12.0.1.0.0", + "depends": ["account"], + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "website": "http://www.github.com/OCA/account-reconcile", + "category": "Finance", + 'license': 'AGPL-3', + "data": [ + 'views/account_invoice.xml', + 'views/account_payment.xml' + ], + 'installable': True, +} diff --git a/account_reconcile_reconciliation_date/i18n/account_reconcile_reconciliation_date.pot b/account_reconcile_reconciliation_date/i18n/account_reconcile_reconciliation_date.pot new file mode 100644 index 00000000..2402e5d8 --- /dev/null +++ b/account_reconcile_reconciliation_date/i18n/account_reconcile_reconciliation_date.pot @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_reconcile_reconciliation_date +# +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_reconciliation_date +#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_full_reconcile +msgid "Full Reconcile" +msgstr "" + +#. module: account_reconcile_reconciliation_date +#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: account_reconcile_reconciliation_date +#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_payment +msgid "Payments" +msgstr "" + +#. module: account_reconcile_reconciliation_date +#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_full_reconcile__reconciliation_date +#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_invoice__reconciliation_date +#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_payment__reconciliation_date +msgid "Reconciliation Date" +msgstr "" + diff --git a/account_reconcile_reconciliation_date/models/__init__.py b/account_reconcile_reconciliation_date/models/__init__.py new file mode 100644 index 00000000..6fcf8c62 --- /dev/null +++ b/account_reconcile_reconciliation_date/models/__init__.py @@ -0,0 +1,6 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import account_full_reconcile +from . import account_invoice +from . import account_payment diff --git a/account_reconcile_reconciliation_date/models/account_full_reconcile.py b/account_reconcile_reconciliation_date/models/account_full_reconcile.py new file mode 100644 index 00000000..bdea9bdb --- /dev/null +++ b/account_reconcile_reconciliation_date/models/account_full_reconcile.py @@ -0,0 +1,26 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from datetime import date +from odoo import api, fields, models + + +class AccountFullReconcile(models.Model): + _inherit = "account.full.reconcile" + _description = "Full Reconcile" + + reconciliation_date = fields.Date(string="Reconciliation Date", + default=date.today()) + + @api.model + def create(self, vals): + res = super().create(vals) + 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 + if line_id.invoice_id: + line_id.invoice_id.reconciliation_date = reconcile_id.\ + reconciliation_date + return res diff --git a/account_reconcile_reconciliation_date/models/account_invoice.py b/account_reconcile_reconciliation_date/models/account_invoice.py new file mode 100644 index 00000000..ae3a4ffb --- /dev/null +++ b/account_reconcile_reconciliation_date/models/account_invoice.py @@ -0,0 +1,10 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AccountInvoice(models.Model): + _inherit = "account.invoice" + + reconciliation_date = fields.Date(string="Reconciliation Date") diff --git a/account_reconcile_reconciliation_date/models/account_payment.py b/account_reconcile_reconciliation_date/models/account_payment.py new file mode 100644 index 00000000..e16ea24e --- /dev/null +++ b/account_reconcile_reconciliation_date/models/account_payment.py @@ -0,0 +1,10 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AccountPayment(models.Model): + _inherit = "account.payment" + + reconciliation_date = fields.Date(string="Reconciliation Date") diff --git a/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst b/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..8fa8bb97 --- /dev/null +++ b/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Steven Campbell diff --git a/account_reconcile_reconciliation_date/readme/DESCRIPTION.rst b/account_reconcile_reconciliation_date/readme/DESCRIPTION.rst new file mode 100644 index 00000000..3389547b --- /dev/null +++ b/account_reconcile_reconciliation_date/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module is designed to help users track when invoices and payments are reconciled diff --git a/account_reconcile_reconciliation_date/static/description/index.html b/account_reconcile_reconciliation_date/static/description/index.html new file mode 100644 index 00000000..56f5f2aa --- /dev/null +++ b/account_reconcile_reconciliation_date/static/description/index.html @@ -0,0 +1,419 @@ + + + + + + +Account Reconciliation Date + + + +
+

Account Reconciliation Date

+ + +

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

+

This module is designed to help users track when invoices and payments are reconciled

+

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

+
    +
  • Open Source Integrators
  • +
+
+ +
+

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_reconciliation_date/tests/__init__.py b/account_reconcile_reconciliation_date/tests/__init__.py new file mode 100644 index 00000000..3608509e --- /dev/null +++ b/account_reconcile_reconciliation_date/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_account_reconcile_reconciliation_date 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 new file mode 100644 index 00000000..829c360c --- /dev/null +++ b/account_reconcile_reconciliation_date/tests/test_account_reconcile_reconciliation_date.py @@ -0,0 +1,165 @@ +# 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 + + +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.partner_agrolait = self.env.ref("base.res_partner_2") + self.partner_china_exp = self.env.ref("base.res_partner_3") + self.currency_chf_id = self.env.ref("base.CHF").id + 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]) + 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.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.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.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 + + 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.action_invoice_open() + return invoice + + 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_line.process_reconciliation(payment_aml_rec=liquidity_aml) + return bank_stmt + + 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) + + 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, + }) + 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.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) + 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(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 new file mode 100644 index 00000000..f7c9eaea --- /dev/null +++ b/account_reconcile_reconciliation_date/views/account_invoice.xml @@ -0,0 +1,14 @@ + + + + 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 new file mode 100644 index 00000000..ebb0ec2c --- /dev/null +++ b/account_reconcile_reconciliation_date/views/account_payment.xml @@ -0,0 +1,14 @@ + + + + account.payment.reconciliation.date + account.payment + + + + + + + + + From 16a3a54df4027b7afc26fa801181916797f2ce15 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 19 Dec 2019 17:09:17 +0000 Subject: [PATCH 2/7] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 account_reconcile_reconciliation_date/static/description/icon.png diff --git a/account_reconcile_reconciliation_date/static/description/icon.png b/account_reconcile_reconciliation_date/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 357ce9e22c2286b0032165ac121b7ff3fd71def2 Mon Sep 17 00:00:00 2001 From: mreficent Date: Thu, 27 Feb 2020 14:00:36 +0100 Subject: [PATCH 3/7] [FIX] Grouping invoices in payments --- .../tests/test_account_reconcile_reconciliation_date.py | 1 + 1 file changed, 1 insertion(+) 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 829c360c..c67a3907 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 @@ -126,6 +126,7 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): '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) From 5bee3e1834811bac9b5822bd6fc1bf79a859bfe1 Mon Sep 17 00:00:00 2001 From: scampbell Date: Sat, 7 Mar 2020 10:07:07 -0800 Subject: [PATCH 4/7] [FIX] Reconciliation Date Not Showing --- account_reconcile_reconciliation_date/views/account_invoice.xml | 2 +- account_reconcile_reconciliation_date/views/account_payment.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/account_reconcile_reconciliation_date/views/account_invoice.xml b/account_reconcile_reconciliation_date/views/account_invoice.xml index f7c9eaea..7a559ac5 100644 --- a/account_reconcile_reconciliation_date/views/account_invoice.xml +++ b/account_reconcile_reconciliation_date/views/account_invoice.xml @@ -6,7 +6,7 @@ - + diff --git a/account_reconcile_reconciliation_date/views/account_payment.xml b/account_reconcile_reconciliation_date/views/account_payment.xml index ebb0ec2c..10a65be1 100644 --- a/account_reconcile_reconciliation_date/views/account_payment.xml +++ b/account_reconcile_reconciliation_date/views/account_payment.xml @@ -6,7 +6,7 @@ - + From ebe9fe6a910da71eaa494b5d25e2e998ca4ddef9 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 17 Mar 2020 14:57:10 +0000 Subject: [PATCH 5/7] account_reconcile_reconciliation_date 12.0.1.1.0 Added translation using Weblate (Spanish (Chile)) Translated using Weblate (Spanish (Chile)) Currently translated at 100.0% (4 of 4 strings) Translation: account-reconcile-12.0/account-reconcile-12.0-account_reconcile_reconciliation_date Translate-URL: https://translation.odoo-community.org/projects/account-reconcile-12-0/account-reconcile-12-0-account_reconcile_reconciliation_date/es_CL/ --- .../__manifest__.py | 2 +- .../i18n/es_CL.po | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 account_reconcile_reconciliation_date/i18n/es_CL.po diff --git a/account_reconcile_reconciliation_date/__manifest__.py b/account_reconcile_reconciliation_date/__manifest__.py index 315231a3..7a4fc4fe 100644 --- a/account_reconcile_reconciliation_date/__manifest__.py +++ b/account_reconcile_reconciliation_date/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Account Reconciliation Date", "summary": "Track Reconciliation Date of Payments and Invoices", - "version": "12.0.1.0.0", + "version": "12.0.1.1.0", "depends": ["account"], "author": "Open Source Integrators, Odoo Community Association (OCA)", "website": "http://www.github.com/OCA/account-reconcile", diff --git a/account_reconcile_reconciliation_date/i18n/es_CL.po b/account_reconcile_reconciliation_date/i18n/es_CL.po new file mode 100644 index 00000000..cc076f68 --- /dev/null +++ b/account_reconcile_reconciliation_date/i18n/es_CL.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_reconcile_reconciliation_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-03-01 23:45+0000\n" +"Last-Translator: Nelson Ramírez Sánchez \n" +"Language-Team: none\n" +"Language: es_CL\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_reconciliation_date +#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_full_reconcile +msgid "Full Reconcile" +msgstr "Reconciliación Completa" + +#. module: account_reconcile_reconciliation_date +#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_invoice +msgid "Invoice" +msgstr "Factura" + +#. module: account_reconcile_reconciliation_date +#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_payment +msgid "Payments" +msgstr "Pagos" + +#. module: account_reconcile_reconciliation_date +#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_full_reconcile__reconciliation_date +#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_invoice__reconciliation_date +#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_payment__reconciliation_date +msgid "Reconciliation Date" +msgstr "Fecha de Reconciliación" From aec6522a587ebf7d2a2f78df3f8bed0ae1452123 Mon Sep 17 00:00:00 2001 From: AmmarOfficewalaSerpentCS Date: Fri, 28 May 2021 16:56:13 +0530 Subject: [PATCH 6/7] [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, +) From 44fb43d6e02ff5e2e3922aa85916b28d8a8d8eed Mon Sep 17 00:00:00 2001 From: AmmarOfficewalaSerpentCS Date: Fri, 28 May 2021 17:17:46 +0530 Subject: [PATCH 7/7] [MIG][14.0] Migrated a account_reconcile_reconciliation_date. Prettier --- .../README.rst | 11 +- .../__init__.py | 2 +- .../__manifest__.py | 6 +- .../i18n/es_CL.po | 39 ------- .../models/__init__.py | 4 +- .../models/account_full_reconcile.py | 6 +- .../{account_invoice.py => account_move.py} | 6 +- .../models/account_payment.py | 2 +- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 7 +- .../tests/__init__.py | 2 +- ...t_account_reconcile_reconciliation_date.py | 101 ++++++++---------- .../views/account_invoice.xml | 17 --- .../views/account_move.xml | 17 +++ .../views/account_payment.xml | 2 +- 15 files changed, 87 insertions(+), 136 deletions(-) delete mode 100644 account_reconcile_reconciliation_date/i18n/es_CL.po rename account_reconcile_reconciliation_date/models/{account_invoice.py => account_move.py} (59%) delete mode 100644 account_reconcile_reconciliation_date/views/account_invoice.xml create mode 100644 account_reconcile_reconciliation_date/views/account_move.xml diff --git a/account_reconcile_reconciliation_date/README.rst b/account_reconcile_reconciliation_date/README.rst index 75e3563e..9abec966 100644 --- a/account_reconcile_reconciliation_date/README.rst +++ b/account_reconcile_reconciliation_date/README.rst @@ -14,13 +14,13 @@ Account Reconciliation Date :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_reconciliation_date + :target: https://github.com/OCA/account-reconcile/tree/14.0/account_reconcile_reconciliation_date :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_reconciliation_date + :target: https://translation.odoo-community.org/projects/account-reconcile-14-0/account-reconcile-14-0-account_reconcile_reconciliation_date :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/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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. @@ -54,6 +54,7 @@ Contributors ~~~~~~~~~~~~ * Steven Campbell +* Ammar Officewala Maintainers ~~~~~~~~~~~ @@ -68,6 +69,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_reconciliation_date/__init__.py b/account_reconcile_reconciliation_date/__init__.py index a0d2c6cd..84af717e 100644 --- a/account_reconcile_reconciliation_date/__init__.py +++ b/account_reconcile_reconciliation_date/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models diff --git a/account_reconcile_reconciliation_date/__manifest__.py b/account_reconcile_reconciliation_date/__manifest__.py index 1a9b7d3d..fe90f740 100644 --- a/account_reconcile_reconciliation_date/__manifest__.py +++ b/account_reconcile_reconciliation_date/__manifest__.py @@ -1,15 +1,15 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Account Reconciliation Date", "summary": "Track Reconciliation Date of Payments and Invoices", - "version": "12.0.1.1.0", + "version": "14.0.1.0.0", "depends": ["account"], "author": "Open Source Integrators, Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-reconcile", "category": "Finance", "license": "AGPL-3", - "data": ["views/account_invoice.xml", "views/account_payment.xml"], + "data": ["views/account_move.xml", "views/account_payment.xml"], "installable": True, } diff --git a/account_reconcile_reconciliation_date/i18n/es_CL.po b/account_reconcile_reconciliation_date/i18n/es_CL.po deleted file mode 100644 index cc076f68..00000000 --- a/account_reconcile_reconciliation_date/i18n/es_CL.po +++ /dev/null @@ -1,39 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_reconcile_reconciliation_date -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-03-01 23:45+0000\n" -"Last-Translator: Nelson Ramírez Sánchez \n" -"Language-Team: none\n" -"Language: es_CL\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_reconciliation_date -#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_full_reconcile -msgid "Full Reconcile" -msgstr "Reconciliación Completa" - -#. module: account_reconcile_reconciliation_date -#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_invoice -msgid "Invoice" -msgstr "Factura" - -#. module: account_reconcile_reconciliation_date -#: model:ir.model,name:account_reconcile_reconciliation_date.model_account_payment -msgid "Payments" -msgstr "Pagos" - -#. module: account_reconcile_reconciliation_date -#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_full_reconcile__reconciliation_date -#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_invoice__reconciliation_date -#: model:ir.model.fields,field_description:account_reconcile_reconciliation_date.field_account_payment__reconciliation_date -msgid "Reconciliation Date" -msgstr "Fecha de Reconciliación" diff --git a/account_reconcile_reconciliation_date/models/__init__.py b/account_reconcile_reconciliation_date/models/__init__.py index 6fcf8c62..587cc1d1 100644 --- a/account_reconcile_reconciliation_date/models/__init__.py +++ b/account_reconcile_reconciliation_date/models/__init__.py @@ -1,6 +1,6 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import account_full_reconcile -from . import account_invoice +from . import account_move from . import account_payment diff --git a/account_reconcile_reconciliation_date/models/account_full_reconcile.py b/account_reconcile_reconciliation_date/models/account_full_reconcile.py index e8145039..b652b850 100644 --- a/account_reconcile_reconciliation_date/models/account_full_reconcile.py +++ b/account_reconcile_reconciliation_date/models/account_full_reconcile.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import date @@ -23,8 +23,8 @@ class AccountFullReconcile(models.Model): line_id.payment_id.reconciliation_date = ( reconcile_id.reconciliation_date ) - if line_id.invoice_id: - line_id.invoice_id.reconciliation_date = ( + if line_id.move_id: + line_id.move_id.reconciliation_date = ( reconcile_id.reconciliation_date ) return res diff --git a/account_reconcile_reconciliation_date/models/account_invoice.py b/account_reconcile_reconciliation_date/models/account_move.py similarity index 59% rename from account_reconcile_reconciliation_date/models/account_invoice.py rename to account_reconcile_reconciliation_date/models/account_move.py index ae3a4ffb..436f0def 100644 --- a/account_reconcile_reconciliation_date/models/account_invoice.py +++ b/account_reconcile_reconciliation_date/models/account_move.py @@ -1,10 +1,10 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import fields, models -class AccountInvoice(models.Model): - _inherit = "account.invoice" +class AccountMove(models.Model): + _inherit = "account.move" reconciliation_date = fields.Date(string="Reconciliation Date") diff --git a/account_reconcile_reconciliation_date/models/account_payment.py b/account_reconcile_reconciliation_date/models/account_payment.py index e16ea24e..f59ef6ba 100644 --- a/account_reconcile_reconciliation_date/models/account_payment.py +++ b/account_reconcile_reconciliation_date/models/account_payment.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import fields, models diff --git a/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst b/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst index 8fa8bb97..c39c4246 100644 --- a/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst +++ b/account_reconcile_reconciliation_date/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Steven Campbell +* Ammar Officewala diff --git a/account_reconcile_reconciliation_date/static/description/index.html b/account_reconcile_reconciliation_date/static/description/index.html index 56f5f2aa..91e8122d 100644 --- a/account_reconcile_reconciliation_date/static/description/index.html +++ b/account_reconcile_reconciliation_date/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! 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 is designed to help users track when invoices and payments are reconciled

Table of contents

@@ -386,7 +386,7 @@ ul.auto-toc {

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.

@@ -401,6 +401,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

Contributors

@@ -410,7 +411,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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_reconciliation_date/tests/__init__.py b/account_reconcile_reconciliation_date/tests/__init__.py index 3608509e..5cbf2f9a 100644 --- a/account_reconcile_reconciliation_date/tests/__init__.py +++ b/account_reconcile_reconciliation_date/tests/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import test_account_reconcile_reconciliation_date 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 3ebea791..2554acee 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,20 +1,20 @@ -# Copyright (C) 2019, Open Source Integrators +# Copyright (C) 2021, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import time -from odoo.addons.account.tests.account_test_classes import AccountingTestCase +from odoo.addons.account.tests.common import AccountTestInvoicingCommon -class TestAccountReconcileReconciliationDate(AccountingTestCase): +class TestAccountReconcileReconciliationDate(AccountTestInvoicingCommon): def setUp(self): super(TestAccountReconcileReconciliationDate, self).setUp() self.register_payments_model = self.env[ - "account.register.payments" - ].with_context(active_model="account.invoice") + "account.payment.register" + ].with_context(active_model="account.move") self.payment_model = self.env["account.payment"] - self.invoice_model = self.env["account.invoice"] - self.invoice_line_model = self.env["account.invoice.line"] + self.invoice_model = self.env["account.move"] + self.invoice_line_model = self.env["account.move.line"] self.acc_bank_stmt_model = self.env["account.bank.statement"] self.acc_bank_stmt_line_model = self.env["account.bank.statement.line"] @@ -68,10 +68,10 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): 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"].search( + [("type", "=", "bank")], limit=1 ) - self.account_eur = self.bank_journal_euro.default_debit_account_id + self.account_eur = self.bank_journal_euro.default_account_id self.bank_journal_usd = self.env["account.journal"].create( { @@ -81,8 +81,10 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): "currency_id": self.currency_usd_id, } ) - self.account_usd = self.bank_journal_usd.default_debit_account_id - + self.account_usd = self.bank_journal_usd.default_account_id + self.journal_id = self.env["account.journal"].search( + [("type", "=", "sale")], limit=1 + ) self.transfer_account = ( self.env["res.users"].browse(self.env.uid).company_id.transfer_account_id ) @@ -100,7 +102,7 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): def create_invoice( self, amount=100, - type="out_invoice", + move_type="out_invoice", currency_id=None, partner=None, account_id=None, @@ -110,23 +112,25 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): { "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", + "journal_id": self.journal_id.id, + "move_type": move_type, + "invoice_date": time.strftime("%Y") + "-06-26", + "invoice_line_ids": [ + ( + 0, + 0, + { + "product_id": self.product.id, + "quantity": 1, + "price_unit": amount, + "name": "something", + "account_id": self.journal_id.default_account_id.id, + }, + ) + ], } ) - 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() + invoice.action_post() return invoice def reconcile( @@ -169,56 +173,39 @@ class TestAccountReconcileReconciliationDate(AccountingTestCase): partner=self.partner_agrolait.id, ) - ctx = {"active_model": "account.invoice", "active_ids": [inv_1.id, inv_2.id]} + ctx = {"active_model": "account.move", "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() + register_payments.flush() + register_payments.action_create_payments() payment = self.payment_model.search([], order="id desc", limit=1) - self.assertAlmostEquals(payment.amount, 300) + self.assertAlmostEqual(payment.amount, 200) self.assertEqual(payment.state, "posted") self.assertEqual(payment.state, "posted") - self.assertEqual(inv_1.state, "paid") - self.assertEqual(inv_2.state, "paid") + self.assertEqual(inv_1.payment_state, "paid") + self.assertEqual(inv_2.payment_state, "paid") self.assertRecordValues( - payment.move_line_ids, + payment.line_ids, [ { - "account_id": self.account_eur.id, - "debit": 300.0, + "journal_id": self.bank_journal_euro.id, + "debit": 200.0, "credit": 0.0, - "amount_currency": 0, - "currency_id": False, }, { - "account_id": inv_1.account_id.id, + "journal_id": self.bank_journal_euro.id, "debit": 0.0, - "credit": 300.0, - "amount_currency": 0, - "currency_id": False, + "credit": 200.0, }, ], ) - 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 - ) - 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(payment.state, "reconciled") + self.assertEqual(payment.state, "posted") 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 deleted file mode 100644 index b523261a..00000000 --- a/account_reconcile_reconciliation_date/views/account_invoice.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - account.invoice.reconciliation.date - account.invoice - - - - - - - - - diff --git a/account_reconcile_reconciliation_date/views/account_move.xml b/account_reconcile_reconciliation_date/views/account_move.xml new file mode 100644 index 00000000..60bb0c4a --- /dev/null +++ b/account_reconcile_reconciliation_date/views/account_move.xml @@ -0,0 +1,17 @@ + + + + account.move.reconciliation.date + account.move + + + + + + + + + diff --git a/account_reconcile_reconciliation_date/views/account_payment.xml b/account_reconcile_reconciliation_date/views/account_payment.xml index 1802aa16..0088cbc8 100644 --- a/account_reconcile_reconciliation_date/views/account_payment.xml +++ b/account_reconcile_reconciliation_date/views/account_payment.xml @@ -5,7 +5,7 @@ account.payment - +