From d8ef036fa72397f57f6208b629724bd6d841f199 Mon Sep 17 00:00:00 2001 From: mreficent Date: Tue, 27 Jun 2017 19:33:51 +0200 Subject: [PATCH 01/18] [MIG] account_mass_reconcile_by_purchase_line: Migration to 9.0 --- .../README.rst | 65 ++++++++++++++++++ .../__init__.py | 6 ++ .../__openerp__.py | 22 ++++++ .../models/__init__.py | 6 ++ .../models/base_reconciliation.py | 19 +++++ .../models/mass_reconcile.py | 18 +++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../views/mass_reconcile.xml | 18 +++++ .../wizards/__init__.py | 5 ++ .../wizards/advanced_reconciliation.py | 32 +++++++++ 10 files changed, 191 insertions(+) create mode 100644 account_mass_reconcile_by_purchase_line/README.rst create mode 100644 account_mass_reconcile_by_purchase_line/__init__.py create mode 100644 account_mass_reconcile_by_purchase_line/__openerp__.py create mode 100644 account_mass_reconcile_by_purchase_line/models/__init__.py create mode 100644 account_mass_reconcile_by_purchase_line/models/base_reconciliation.py create mode 100644 account_mass_reconcile_by_purchase_line/models/mass_reconcile.py create mode 100644 account_mass_reconcile_by_purchase_line/static/description/icon.png create mode 100644 account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml create mode 100644 account_mass_reconcile_by_purchase_line/wizards/__init__.py create mode 100644 account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py diff --git a/account_mass_reconcile_by_purchase_line/README.rst b/account_mass_reconcile_by_purchase_line/README.rst new file mode 100644 index 00000000..65449897 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/README.rst @@ -0,0 +1,65 @@ +.. image:: https://img.shields.io/badge/license-AGPLv3-blue.svg + :target: https://www.gnu.org/licenses/agpl.html + :alt: License: AGPL-3 + +======================================= +Account Mass Reconcile by Purchase Line +======================================= + +This module extends the functionality of acccount_mass_reconcile and +allow an user to reconcile debits and credits of an Account +using the PO Line, Product and Partner as key fields. This type of +reconciliation is to be used in the context of the Perpetual Inventory +accounting system, with the accrual account '*Goods Received Not Invoiced*'. + + +Usage +===== + +To use this module, you need to: + +* Go to 'Accounting / Adviser / Mass Automatic Reconcile'. + +* Create a new reconciliation profile, and select a new configuration entry + with type 'Advanced. Partner, product, purchase order line.'. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/98/9.0 + +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. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Jordi Ballester Alomar +* Miquel Raïch + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file diff --git a/account_mass_reconcile_by_purchase_line/__init__.py b/account_mass_reconcile_by_purchase_line/__init__.py new file mode 100644 index 00000000..09cfd859 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models +from . import wizards diff --git a/account_mass_reconcile_by_purchase_line/__openerp__.py b/account_mass_reconcile_by_purchase_line/__openerp__.py new file mode 100644 index 00000000..9bf7a07f --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/__openerp__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Account Mass Reconcile by Purchase Line", + "summary": "Allows to reconcile based on the PO line", + "version": "9.0.1.0.0", + "author": "Eficent, " + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/bank-statement-reconcile", + "category": "Finance", + "depends": ["account_mass_reconcile", + "account_move_line_purchase_info" + ], + "license": "AGPL-3", + "data": [ + "views/mass_reconcile.xml", + ], + "installable": True, + "auto_install": False, +} diff --git a/account_mass_reconcile_by_purchase_line/models/__init__.py b/account_mass_reconcile_by_purchase_line/models/__init__.py new file mode 100644 index 00000000..f4d36637 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import mass_reconcile +from . import base_reconciliation diff --git a/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py new file mode 100644 index 00000000..09861e45 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from openerp import api, models + + +class MassReconcileBase(models.AbstractModel): + _inherit = 'mass.reconcile.base' + + @api.model + def _base_columns(self): + """ Mandatory columns for move lines queries + An extra column aliased as ``key`` should be defined + in each query.""" + aml_cols = super(MassReconcileBase, self)._base_columns() + aml_cols.append('account_move_line.purchase_line_id') + aml_cols.append('account_move_line.product_id') + return aml_cols diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py new file mode 100644 index 00000000..5ae3f691 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from openerp import api, models + + +class AccountMassReconcileMethod(models.Model): + _inherit = 'account.mass.reconcile.method' + + @api.model + def _get_all_rec_method(self): + methods = super(AccountMassReconcileMethod, self)._get_all_rec_method() + methods += [ + ('mass.reconcile.advanced.by.purchase.line', + 'Advanced. Partner, product, purchase order line.'), + ] + return methods diff --git a/account_mass_reconcile_by_purchase_line/static/description/icon.png b/account_mass_reconcile_by_purchase_line/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_mass_reconcile_by_purchase_line/views/mass_reconcile.xml b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml new file mode 100644 index 00000000..374a692a --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml @@ -0,0 +1,18 @@ + + + + account.mass.reconcile.form + 20 + account.mass.reconcile + + + + + + + + + + diff --git a/account_mass_reconcile_by_purchase_line/wizards/__init__.py b/account_mass_reconcile_by_purchase_line/wizards/__init__.py new file mode 100644 index 00000000..141fb706 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/wizards/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import advanced_reconciliation diff --git a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py new file mode 100644 index 00000000..13b0e634 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from openerp import api, models + + +class MassReconcileAdvancedByPurchaseLine(models.TransientModel): + _name = 'mass.reconcile.advanced.by.purchase.line' + _inherit = 'mass.reconcile.advanced' + + @api.multi + def _skip_line(self, move_line): + """ + When True is returned on some conditions, the credit move line + will be skipped for reconciliation. Can be inherited to + skip on some conditions. ie: ref or partner_id is empty. + """ + return not (move_line.get('partner_id') and move_line.get( + 'product_id') and move_line.get('purchase_line_id')) + + @api.multi + def _matchers(self, move_line): + return (('partner_id', move_line['partner_id']), + ('product_id', move_line['product_id']), + ('purchase_line_id', move_line['purchase_line_id'])) + + @api.multi + def _opposite_matchers(self, move_line): + yield ('partner_id', move_line['partner_id']) + yield ('product_id', move_line['product_id']) + yield ('purchase_line_id', move_line['purchase_line_id']) From 69d5a0a54e5b3ccf6834ca04ae4f116693c7481d Mon Sep 17 00:00:00 2001 From: lreficent Date: Fri, 1 Sep 2017 11:47:39 +0200 Subject: [PATCH 02/18] [9.0] account_mass_reconcile_by_purchase_line: do not consider partner. --- .../models/mass_reconcile.py | 2 +- .../wizards/advanced_reconciliation.py | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index 5ae3f691..21dbdcc0 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -13,6 +13,6 @@ class AccountMassReconcileMethod(models.Model): methods = super(AccountMassReconcileMethod, self)._get_all_rec_method() methods += [ ('mass.reconcile.advanced.by.purchase.line', - 'Advanced. Partner, product, purchase order line.'), + 'Advanced. Product, purchase order line.'), ] return methods diff --git a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py index 13b0e634..1a602849 100644 --- a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py @@ -16,17 +16,15 @@ class MassReconcileAdvancedByPurchaseLine(models.TransientModel): will be skipped for reconciliation. Can be inherited to skip on some conditions. ie: ref or partner_id is empty. """ - return not (move_line.get('partner_id') and move_line.get( - 'product_id') and move_line.get('purchase_line_id')) + return not (move_line.get('product_id') and + move_line.get('purchase_line_id')) @api.multi def _matchers(self, move_line): - return (('partner_id', move_line['partner_id']), - ('product_id', move_line['product_id']), + return (('product_id', move_line['product_id']), ('purchase_line_id', move_line['purchase_line_id'])) @api.multi def _opposite_matchers(self, move_line): - yield ('partner_id', move_line['partner_id']) yield ('product_id', move_line['product_id']) yield ('purchase_line_id', move_line['purchase_line_id']) From 9fe509ebf852f94f6ed1e45df4c4adb79e4bf4c3 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Fri, 1 Sep 2017 18:35:48 +0200 Subject: [PATCH 03/18] Update README --- account_mass_reconcile_by_purchase_line/README.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/account_mass_reconcile_by_purchase_line/README.rst b/account_mass_reconcile_by_purchase_line/README.rst index 65449897..ad78d7a3 100644 --- a/account_mass_reconcile_by_purchase_line/README.rst +++ b/account_mass_reconcile_by_purchase_line/README.rst @@ -8,11 +8,10 @@ Account Mass Reconcile by Purchase Line This module extends the functionality of acccount_mass_reconcile and allow an user to reconcile debits and credits of an Account -using the PO Line, Product and Partner as key fields. This type of +using the PO Line and Product as key fields. This type of reconciliation is to be used in the context of the Perpetual Inventory accounting system, with the accrual account '*Goods Received Not Invoiced*'. - Usage ===== @@ -21,7 +20,7 @@ To use this module, you need to: * Go to 'Accounting / Adviser / Mass Automatic Reconcile'. * Create a new reconciliation profile, and select a new configuration entry - with type 'Advanced. Partner, product, purchase order line.'. + with type 'Advanced. Product, purchase order line.'. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot @@ -48,6 +47,7 @@ Contributors * Jordi Ballester Alomar * Miquel Raïch +* Lois Rilo Maintainer ---------- @@ -62,4 +62,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file +To contribute to this module, please visit https://odoo-community.org. From bb3249b52c4fef2527795809f86f6de9974a3a58 Mon Sep 17 00:00:00 2001 From: mreficent Date: Fri, 15 Sep 2017 11:36:04 +0200 Subject: [PATCH 04/18] [MIG] account_mass_reconcile_by_purchase_line: Migration to 10.0 --- account_mass_reconcile_by_purchase_line/README.rst | 2 +- .../{__openerp__.py => __manifest__.py} | 2 +- .../models/base_reconciliation.py | 2 +- .../models/mass_reconcile.py | 2 +- .../views/mass_reconcile.xml | 4 ++-- .../wizards/advanced_reconciliation.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) rename account_mass_reconcile_by_purchase_line/{__openerp__.py => __manifest__.py} (96%) diff --git a/account_mass_reconcile_by_purchase_line/README.rst b/account_mass_reconcile_by_purchase_line/README.rst index ad78d7a3..2554bb51 100644 --- a/account_mass_reconcile_by_purchase_line/README.rst +++ b/account_mass_reconcile_by_purchase_line/README.rst @@ -24,7 +24,7 @@ To use this module, you need to: .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/98/9.0 + :target: https://runbot.odoo-community.org/runbot/98/10.0 Bug Tracker =========== diff --git a/account_mass_reconcile_by_purchase_line/__openerp__.py b/account_mass_reconcile_by_purchase_line/__manifest__.py similarity index 96% rename from account_mass_reconcile_by_purchase_line/__openerp__.py rename to account_mass_reconcile_by_purchase_line/__manifest__.py index 9bf7a07f..99350968 100644 --- a/account_mass_reconcile_by_purchase_line/__openerp__.py +++ b/account_mass_reconcile_by_purchase_line/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Account Mass Reconcile by Purchase Line", "summary": "Allows to reconcile based on the PO line", - "version": "9.0.1.0.0", + "version": "10.0.1.0.0", "author": "Eficent, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-reconcile", diff --git a/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py index 09861e45..5de2ba08 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py @@ -2,7 +2,7 @@ # © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import api, models +from odoo import api, models class MassReconcileBase(models.AbstractModel): diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index 21dbdcc0..e85c9980 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -2,7 +2,7 @@ # © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import api, models +from odoo import api, models class AccountMassReconcileMethod(models.Model): diff --git a/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml index 374a692a..c1347cfe 100644 --- a/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml +++ b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml @@ -1,5 +1,5 @@ - + account.mass.reconcile.form 20 @@ -15,4 +15,4 @@ The lines should have the same partner, product and PO lines to be reconciled." - + diff --git a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py index 1a602849..1db5bc6f 100644 --- a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py @@ -2,7 +2,7 @@ # © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import api, models +from odoo import api, models class MassReconcileAdvancedByPurchaseLine(models.TransientModel): From e2c339c121691aa49673b0e1b98cb417c82b9afb Mon Sep 17 00:00:00 2001 From: mreficent Date: Mon, 6 Nov 2017 18:23:44 +0100 Subject: [PATCH 05/18] [FIX] mass_reconcile_purchase_by_purchase_line --- .../models/__init__.py | 2 +- ...reconciliation.py => base_advanced_reconciliation.py} | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) rename account_mass_reconcile_by_purchase_line/models/{base_reconciliation.py => base_advanced_reconciliation.py} (71%) diff --git a/account_mass_reconcile_by_purchase_line/models/__init__.py b/account_mass_reconcile_by_purchase_line/models/__init__.py index f4d36637..98605de2 100644 --- a/account_mass_reconcile_by_purchase_line/models/__init__.py +++ b/account_mass_reconcile_by_purchase_line/models/__init__.py @@ -3,4 +3,4 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from . import mass_reconcile -from . import base_reconciliation +from . import base_advanced_reconciliation diff --git a/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py similarity index 71% rename from account_mass_reconcile_by_purchase_line/models/base_reconciliation.py rename to account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py index 5de2ba08..16c2b189 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py @@ -2,18 +2,17 @@ # © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import api, models +from odoo import models -class MassReconcileBase(models.AbstractModel): - _inherit = 'mass.reconcile.base' +class MassReconcileAdvanced(models.AbstractModel): + _inherit = 'mass.reconcile.advanced' - @api.model def _base_columns(self): """ Mandatory columns for move lines queries An extra column aliased as ``key`` should be defined in each query.""" - aml_cols = super(MassReconcileBase, self)._base_columns() + aml_cols = super(MassReconcileAdvanced, self)._base_columns() aml_cols.append('account_move_line.purchase_line_id') aml_cols.append('account_move_line.product_id') return aml_cols From 92f87d52abbe6f00bc6832e72a9f33f9889f8175 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 12 Jul 2018 17:06:20 +0000 Subject: [PATCH 06/18] [UPD] Update account_mass_reconcile_by_purchase_line.pot --- ...ccount_mass_reconcile_by_purchase_line.pot | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot diff --git a/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot b/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot new file mode 100644 index 00000000..b2a0c75a --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_mass_reconcile_by_purchase_line +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.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_mass_reconcile_by_purchase_line +#: model:ir.ui.view,arch_db:account_mass_reconcile_by_purchase_line.account_mass_reconcile_form +msgid "Advanced. Purchase Order Line" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_create_uid +msgid "Created by" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_create_date +msgid "Created on" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_display_name +msgid "Display Name" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_id +msgid "ID" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line___last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.ui.view,arch_db:account_mass_reconcile_by_purchase_line.account_mass_reconcile_form +msgid "Match multiple debit vs multiple credit entries. Allow partial reconciliation. The lines should have the same partner, product and PO lines to be reconciled." +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_mass_reconcile_advanced +msgid "mass.reconcile.advanced" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_mass_reconcile_advanced_by_purchase_line +msgid "mass.reconcile.advanced.by.purchase.line" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_account_mass_reconcile_method +msgid "reconcile method for account_mass_reconcile" +msgstr "" + From 063b9bdc988d55f87d1425cccf36e0cf87c7715a Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Thu, 12 Jul 2018 20:28:05 +0200 Subject: [PATCH 07/18] [MIG] account_mass_reconcile_by_purchase_line: Migration to 11.0 --- .../README.rst | 2 +- .../__init__.py | 5 ---- .../__manifest__.py | 5 ++-- .../models/__init__.py | 5 +--- .../models/base_advanced_reconciliation.py | 29 +++++++++++------- .../models/mass_reconcile.py | 8 ++--- .../models/simple_reconciliation.py | 12 ++++++++ .../wizards/__init__.py | 5 ---- .../wizards/advanced_reconciliation.py | 30 ------------------- 9 files changed, 39 insertions(+), 62 deletions(-) create mode 100644 account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py delete mode 100644 account_mass_reconcile_by_purchase_line/wizards/__init__.py delete mode 100644 account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py diff --git a/account_mass_reconcile_by_purchase_line/README.rst b/account_mass_reconcile_by_purchase_line/README.rst index 2554bb51..c8aad386 100644 --- a/account_mass_reconcile_by_purchase_line/README.rst +++ b/account_mass_reconcile_by_purchase_line/README.rst @@ -24,7 +24,7 @@ To use this module, you need to: .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/98/10.0 + :target: https://runbot.odoo-community.org/runbot/98/11.0 Bug Tracker =========== diff --git a/account_mass_reconcile_by_purchase_line/__init__.py b/account_mass_reconcile_by_purchase_line/__init__.py index 09cfd859..0650744f 100644 --- a/account_mass_reconcile_by_purchase_line/__init__.py +++ b/account_mass_reconcile_by_purchase_line/__init__.py @@ -1,6 +1 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - from . import models -from . import wizards diff --git a/account_mass_reconcile_by_purchase_line/__manifest__.py b/account_mass_reconcile_by_purchase_line/__manifest__.py index 99350968..418ae681 100644 --- a/account_mass_reconcile_by_purchase_line/__manifest__.py +++ b/account_mass_reconcile_by_purchase_line/__manifest__.py @@ -1,11 +1,10 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Account Mass Reconcile by Purchase Line", "summary": "Allows to reconcile based on the PO line", - "version": "10.0.1.0.0", + "version": "11.0.1.0.0", "author": "Eficent, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-reconcile", diff --git a/account_mass_reconcile_by_purchase_line/models/__init__.py b/account_mass_reconcile_by_purchase_line/models/__init__.py index 98605de2..8b08acfb 100644 --- a/account_mass_reconcile_by_purchase_line/models/__init__.py +++ b/account_mass_reconcile_by_purchase_line/models/__init__.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - from . import mass_reconcile from . import base_advanced_reconciliation +from . import simple_reconciliation diff --git a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py index 16c2b189..053358f0 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py @@ -1,5 +1,4 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import models @@ -8,11 +7,21 @@ from odoo import models class MassReconcileAdvanced(models.AbstractModel): _inherit = 'mass.reconcile.advanced' - def _base_columns(self): - """ Mandatory columns for move lines queries - An extra column aliased as ``key`` should be defined - in each query.""" - aml_cols = super(MassReconcileAdvanced, self)._base_columns() - aml_cols.append('account_move_line.purchase_line_id') - aml_cols.append('account_move_line.product_id') - return aml_cols + def _skip_line(self, move_line): + """ + When True is returned on some conditions, the credit move line + will be skipped for reconciliation. Can be inherited to + skip on some conditions. ie: ref or partner_id is empty. + """ + return not (move_line.get('product_id') and + move_line.get('purchase_line_id')) + + @staticmethod + def _matchers(move_line): + return (('product_id', move_line['product_id']), + ('purchase_line_id', move_line['purchase_line_id'])) + + @staticmethod + def _opposite_matchers(move_line): + yield ('product_id', move_line['product_id']) + yield ('purchase_line_id', move_line['purchase_line_id']) diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index e85c9980..91df430f 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -1,5 +1,4 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import api, models @@ -9,8 +8,9 @@ class AccountMassReconcileMethod(models.Model): _inherit = 'account.mass.reconcile.method' @api.model - def _get_all_rec_method(self): - methods = super(AccountMassReconcileMethod, self)._get_all_rec_method() + def _get_reconcilation_methods(self): + methods = super(AccountMassReconcileMethod, + self)._get_reconcilation_methods() methods += [ ('mass.reconcile.advanced.by.purchase.line', 'Advanced. Product, purchase order line.'), diff --git a/account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py new file mode 100644 index 00000000..2d5de51c --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py @@ -0,0 +1,12 @@ +# Copyright 2012-2016 Camptocamp SA +# Copyright 2010 Sébastien Beau +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, api + + +class MassReconcileAdvancedByPurchaseLineName(models.TransientModel): + _name = 'mass.reconcile.advanced.by.purchase.line' + _inherit = 'mass.reconcile.simple' + + _key_field = 'purchase_line_id' diff --git a/account_mass_reconcile_by_purchase_line/wizards/__init__.py b/account_mass_reconcile_by_purchase_line/wizards/__init__.py deleted file mode 100644 index 141fb706..00000000 --- a/account_mass_reconcile_by_purchase_line/wizards/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from . import advanced_reconciliation diff --git a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py deleted file mode 100644 index 1db5bc6f..00000000 --- a/account_mass_reconcile_by_purchase_line/wizards/advanced_reconciliation.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2015-17 Eficent Business and IT Consulting Services S.L. (www.eficent.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from odoo import api, models - - -class MassReconcileAdvancedByPurchaseLine(models.TransientModel): - _name = 'mass.reconcile.advanced.by.purchase.line' - _inherit = 'mass.reconcile.advanced' - - @api.multi - def _skip_line(self, move_line): - """ - When True is returned on some conditions, the credit move line - will be skipped for reconciliation. Can be inherited to - skip on some conditions. ie: ref or partner_id is empty. - """ - return not (move_line.get('product_id') and - move_line.get('purchase_line_id')) - - @api.multi - def _matchers(self, move_line): - return (('product_id', move_line['product_id']), - ('purchase_line_id', move_line['purchase_line_id'])) - - @api.multi - def _opposite_matchers(self, move_line): - yield ('product_id', move_line['product_id']) - yield ('purchase_line_id', move_line['purchase_line_id']) From af6a5119c3332b5dee79e5c79ebb524c54f7cc7f Mon Sep 17 00:00:00 2001 From: mreficent Date: Fri, 13 Jul 2018 12:37:18 +0200 Subject: [PATCH 08/18] [FIX] Finish the migration to v11 --- .../README.rst | 10 +++---- .../models/__init__.py | 2 +- .../models/advanced_reconciliation.py | 29 +++++++++++++++++++ .../models/base_advanced_reconciliation.py | 26 ++++++----------- .../models/mass_reconcile.py | 11 +++---- .../models/simple_reconciliation.py | 12 -------- 6 files changed, 50 insertions(+), 40 deletions(-) create mode 100644 account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py delete mode 100644 account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py diff --git a/account_mass_reconcile_by_purchase_line/README.rst b/account_mass_reconcile_by_purchase_line/README.rst index c8aad386..7205c756 100644 --- a/account_mass_reconcile_by_purchase_line/README.rst +++ b/account_mass_reconcile_by_purchase_line/README.rst @@ -1,12 +1,12 @@ -.. image:: https://img.shields.io/badge/license-AGPLv3-blue.svg - :target: https://www.gnu.org/licenses/agpl.html +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl :alt: License: AGPL-3 ======================================= Account Mass Reconcile by Purchase Line ======================================= -This module extends the functionality of acccount_mass_reconcile and +This module extends the functionality of account_mass_reconcile and allow an user to reconcile debits and credits of an Account using the PO Line and Product as key fields. This type of reconciliation is to be used in the context of the Perpetual Inventory @@ -20,7 +20,7 @@ To use this module, you need to: * Go to 'Accounting / Adviser / Mass Automatic Reconcile'. * Create a new reconciliation profile, and select a new configuration entry - with type 'Advanced. Product, purchase order line.'. + with type 'Advanced. Product, purchase order line'. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot @@ -40,7 +40,7 @@ Credits Images ------ -* Odoo Community Association: `Icon `_. +* Odoo Community Association: `Icon `_. Contributors ------------ diff --git a/account_mass_reconcile_by_purchase_line/models/__init__.py b/account_mass_reconcile_by_purchase_line/models/__init__.py index 8b08acfb..fbcdbc24 100644 --- a/account_mass_reconcile_by_purchase_line/models/__init__.py +++ b/account_mass_reconcile_by_purchase_line/models/__init__.py @@ -1,3 +1,3 @@ from . import mass_reconcile from . import base_advanced_reconciliation -from . import simple_reconciliation +from . import advanced_reconciliation diff --git a/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py new file mode 100644 index 00000000..769f05ea --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py @@ -0,0 +1,29 @@ +# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class MassReconcileAdvancedByPurchaseLine(models.TransientModel): + _name = 'mass.reconcile.advanced.by.purchase.line' + _inherit = 'mass.reconcile.advanced' + + @staticmethod + def _skip_line(move_line): + """ + When True is returned on some conditions, the credit move line + will be skipped for reconciliation. Can be inherited to + skip on some conditions. ie: ref or partner_id is empty. + """ + return not (move_line.get('product_id') and + move_line.get('purchase_line_id')) + + @staticmethod + def _matchers(move_line): + return (('product_id', move_line['product_id']), + ('purchase_line_id', move_line['purchase_line_id'])) + + @staticmethod + def _opposite_matchers(move_line): + yield ('product_id', move_line['product_id']) + yield ('purchase_line_id', move_line['purchase_line_id']) diff --git a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py index 053358f0..13acfded 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py @@ -7,21 +7,13 @@ from odoo import models class MassReconcileAdvanced(models.AbstractModel): _inherit = 'mass.reconcile.advanced' - def _skip_line(self, move_line): - """ - When True is returned on some conditions, the credit move line - will be skipped for reconciliation. Can be inherited to - skip on some conditions. ie: ref or partner_id is empty. - """ - return not (move_line.get('product_id') and - move_line.get('purchase_line_id')) - @staticmethod - def _matchers(move_line): - return (('product_id', move_line['product_id']), - ('purchase_line_id', move_line['purchase_line_id'])) - - @staticmethod - def _opposite_matchers(move_line): - yield ('product_id', move_line['product_id']) - yield ('purchase_line_id', move_line['purchase_line_id']) + def _base_columns(): + """ Mandatory columns for move lines queries + An extra column aliased as ``key`` should be defined + in each query.""" + aml_cols = super(MassReconcileAdvanced, MassReconcileAdvanced).\ + _base_columns() + aml_cols.append('account_move_line.purchase_line_id') + aml_cols.append('account_move_line.product_id') + return aml_cols diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index 91df430f..e11eb7a5 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -1,16 +1,17 @@ # © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import api, models +from odoo import models class AccountMassReconcileMethod(models.Model): _inherit = 'account.mass.reconcile.method' - @api.model - def _get_reconcilation_methods(self): - methods = super(AccountMassReconcileMethod, - self)._get_reconcilation_methods() + @staticmethod + def _get_reconcilation_methods(): + methods = super( + AccountMassReconcileMethod, AccountMassReconcileMethod).\ + _get_reconcilation_methods() methods += [ ('mass.reconcile.advanced.by.purchase.line', 'Advanced. Product, purchase order line.'), diff --git a/account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py deleted file mode 100644 index 2d5de51c..00000000 --- a/account_mass_reconcile_by_purchase_line/models/simple_reconciliation.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2012-2016 Camptocamp SA -# Copyright 2010 Sébastien Beau -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import models, api - - -class MassReconcileAdvancedByPurchaseLineName(models.TransientModel): - _name = 'mass.reconcile.advanced.by.purchase.line' - _inherit = 'mass.reconcile.simple' - - _key_field = 'purchase_line_id' From 216cba211064036d67b47545ba1d83dee6c7ab62 Mon Sep 17 00:00:00 2001 From: mreficent Date: Wed, 25 Jul 2018 12:58:12 +0200 Subject: [PATCH 09/18] [FIX] Super call on static methods --- .../models/base_advanced_reconciliation.py | 9 ++------- .../models/mass_reconcile.py | 7 ++----- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py index 13acfded..9c9d46e4 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py @@ -7,13 +7,8 @@ from odoo import models class MassReconcileAdvanced(models.AbstractModel): _inherit = 'mass.reconcile.advanced' - @staticmethod - def _base_columns(): - """ Mandatory columns for move lines queries - An extra column aliased as ``key`` should be defined - in each query.""" - aml_cols = super(MassReconcileAdvanced, MassReconcileAdvanced).\ - _base_columns() + def _selection_columns(self): + aml_cols = super(MassReconcileAdvanced, self)._selection_columns() aml_cols.append('account_move_line.purchase_line_id') aml_cols.append('account_move_line.product_id') return aml_cols diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index e11eb7a5..145ce52b 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -7,11 +7,8 @@ from odoo import models class AccountMassReconcileMethod(models.Model): _inherit = 'account.mass.reconcile.method' - @staticmethod - def _get_reconcilation_methods(): - methods = super( - AccountMassReconcileMethod, AccountMassReconcileMethod).\ - _get_reconcilation_methods() + def _selection_name(self): + methods = super(AccountMassReconcileMethod, self)._selection_name() methods += [ ('mass.reconcile.advanced.by.purchase.line', 'Advanced. Product, purchase order line.'), From 2d66ab8d201bcc2a526d3f1811f4d45a7ed213b5 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 25 Jul 2018 17:34:59 +0000 Subject: [PATCH 10/18] [UPD] Update account_mass_reconcile_by_purchase_line.pot --- .../i18n/account_mass_reconcile_by_purchase_line.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot b/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot index b2a0c75a..9ef22f27 100644 --- a/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot +++ b/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" From 2f8f97c76d9124a97c75b99f1f8f633f553a1f5e Mon Sep 17 00:00:00 2001 From: Osoul Date: Fri, 10 Aug 2018 23:26:52 +0000 Subject: [PATCH 11/18] Added translation using Weblate (Arabic) --- .../i18n/ar.po | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 account_mass_reconcile_by_purchase_line/i18n/ar.po diff --git a/account_mass_reconcile_by_purchase_line/i18n/ar.po b/account_mass_reconcile_by_purchase_line/i18n/ar.po new file mode 100644 index 00000000..ae90be22 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/i18n/ar.po @@ -0,0 +1,76 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_mass_reconcile_by_purchase_line +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.ui.view,arch_db:account_mass_reconcile_by_purchase_line.account_mass_reconcile_form +msgid "Advanced. Purchase Order Line" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_create_uid +msgid "Created by" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_create_date +msgid "Created on" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_display_name +msgid "Display Name" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_id +msgid "ID" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line___last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.ui.view,arch_db:account_mass_reconcile_by_purchase_line.account_mass_reconcile_form +msgid "Match multiple debit vs multiple credit entries. Allow partial reconciliation. The lines should have the same partner, product and PO lines to be reconciled." +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_mass_reconcile_advanced +msgid "mass.reconcile.advanced" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_mass_reconcile_advanced_by_purchase_line +msgid "mass.reconcile.advanced.by.purchase.line" +msgstr "" + +#. module: account_mass_reconcile_by_purchase_line +#: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_account_mass_reconcile_method +msgid "reconcile method for account_mass_reconcile" +msgstr "" From c0b4c5b210b5b077f757097e27ec7787fa495e58 Mon Sep 17 00:00:00 2001 From: Osoul Date: Fri, 10 Aug 2018 23:27:24 +0000 Subject: [PATCH 12/18] Translated using Weblate (Arabic) Currently translated at 16.7% (2 of 12 strings) Translation: account-reconcile-11.0/account-reconcile-11.0-account_mass_reconcile_by_purchase_line Translate-URL: https://translation.odoo-community.org/projects/account-reconcile-11-0/account-reconcile-11-0-account_mass_reconcile_by_purchase_line/ar/ --- account_mass_reconcile_by_purchase_line/i18n/ar.po | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/account_mass_reconcile_by_purchase_line/i18n/ar.po b/account_mass_reconcile_by_purchase_line/i18n/ar.po index ae90be22..16c8257e 100644 --- a/account_mass_reconcile_by_purchase_line/i18n/ar.po +++ b/account_mass_reconcile_by_purchase_line/i18n/ar.po @@ -6,7 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2018-08-12 00:01+0000\n" +"Last-Translator: Osoul \n" "Language-Team: none\n" "Language: ar\n" "MIME-Version: 1.0\n" @@ -14,11 +15,12 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 3.1.1\n" #. module: account_mass_reconcile_by_purchase_line #: model:ir.ui.view,arch_db:account_mass_reconcile_by_purchase_line.account_mass_reconcile_form msgid "Advanced. Purchase Order Line" -msgstr "" +msgstr "متطور. أوامر الشراء" #. module: account_mass_reconcile_by_purchase_line #: model:ir.model.fields,field_description:account_mass_reconcile_by_purchase_line.field_mass_reconcile_advanced_by_purchase_line_create_uid @@ -59,6 +61,8 @@ msgstr "" #: model:ir.ui.view,arch_db:account_mass_reconcile_by_purchase_line.account_mass_reconcile_form msgid "Match multiple debit vs multiple credit entries. Allow partial reconciliation. The lines should have the same partner, product and PO lines to be reconciled." msgstr "" +"تسوية مجموعة قيود مدينة ودائنة. السماح بالتسوية الجزئية. القيود يجب ان تحتوي " +"على نفس الشريك، والمنتج وبند أمر الشراء." #. module: account_mass_reconcile_by_purchase_line #: model:ir.model,name:account_mass_reconcile_by_purchase_line.model_mass_reconcile_advanced From f433f3aa147ae4a974c1738734816fea96468c67 Mon Sep 17 00:00:00 2001 From: mreficent Date: Thu, 6 Jun 2019 14:18:53 +0200 Subject: [PATCH 13/18] [MIG] account_mass_reconcile_by_purchase_line: Migration to 12.0 --- .../tests/test_scenario_reconcile.py | 23 ++++++++++++------- .../README.rst | 6 ++--- .../__manifest__.py | 6 ++--- ...ccount_mass_reconcile_by_purchase_line.pot | 2 +- .../readme/CONTRIBUTORS.rst | 3 +++ .../readme/DESCRIPTION.rst | 5 ++++ .../readme/USAGE.rst | 6 +++++ .../views/mass_reconcile.xml | 2 +- 8 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst create mode 100644 account_mass_reconcile_by_purchase_line/readme/DESCRIPTION.rst create mode 100644 account_mass_reconcile_by_purchase_line/readme/USAGE.rst diff --git a/account_mass_reconcile/tests/test_scenario_reconcile.py b/account_mass_reconcile/tests/test_scenario_reconcile.py index 9ef536f5..eb2864e1 100644 --- a/account_mass_reconcile/tests/test_scenario_reconcile.py +++ b/account_mass_reconcile/tests/test_scenario_reconcile.py @@ -125,20 +125,27 @@ class TestScenarioReconcile(common.SavepointCase): "reconcile_method": [(0, 0, {"name": "mass.reconcile.simple.partner"})], } ) - # call the automatic reconcilation method + # call the automatic reconciliation method mass_rec.run_reconcile() invoice.invalidate_cache() self.assertEqual("paid", invoice.invoice_payment_state) def test_scenario_reconcile_currency(self): - # create currency rate - self.env["res.currency.rate"].create( - { - "name": fields.Date.today().strftime("%Y-%m-%d") + " 00:00:00", - "currency_id": self.ref("base.USD"), - "rate": 1.5, - } + currency_rate = self.env['res.currency.rate'].sudo().search( + [('currency_id', '=', self.ref('base.USD')), + ('company_id', '=', self.ref('base.main_company'))]).filtered( + lambda r: r.name == fields.Date.today() ) + if not currency_rate: + # create currency rate + self.env['res.currency.rate'].create({ + 'name': fields.Date.today(), + 'currency_id': self.ref('base.USD'), + 'rate': 1.5, + }) + else: + currency_rate = fields.first(currency_rate) + currency_rate.rate = 1.5 # create invoice invoice = self.invoice_obj.with_context(default_type="out_invoice").create( { diff --git a/account_mass_reconcile_by_purchase_line/README.rst b/account_mass_reconcile_by_purchase_line/README.rst index 7205c756..419efb8f 100644 --- a/account_mass_reconcile_by_purchase_line/README.rst +++ b/account_mass_reconcile_by_purchase_line/README.rst @@ -17,14 +17,14 @@ Usage To use this module, you need to: -* Go to 'Accounting / Adviser / Mass Automatic Reconcile'. +* Go to 'Invoicing / Accounting / Actions / Mass Automatic Reconcile'. * Create a new reconciliation profile, and select a new configuration entry with type 'Advanced. Product, purchase order line'. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/98/11.0 + :target: https://runbot.odoo-community.org/runbot/98/12.0 Bug Tracker =========== @@ -32,7 +32,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. +help us smash it by providing detailed and welcomed feedback. Credits ======= diff --git a/account_mass_reconcile_by_purchase_line/__manifest__.py b/account_mass_reconcile_by_purchase_line/__manifest__.py index 418ae681..921c6ead 100644 --- a/account_mass_reconcile_by_purchase_line/__manifest__.py +++ b/account_mass_reconcile_by_purchase_line/__manifest__.py @@ -4,13 +4,13 @@ { "name": "Account Mass Reconcile by Purchase Line", "summary": "Allows to reconcile based on the PO line", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "author": "Eficent, " "Odoo Community Association (OCA)", - "website": "https://github.com/OCA/bank-statement-reconcile", + "website": "https://github.com/OCA/account-reconcile", "category": "Finance", "depends": ["account_mass_reconcile", - "account_move_line_purchase_info" + "account_move_line_purchase_info", ], "license": "AGPL-3", "data": [ diff --git a/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot b/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot index 9ef22f27..262d3376 100644 --- a/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot +++ b/account_mass_reconcile_by_purchase_line/i18n/account_mass_reconcile_by_purchase_line.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst b/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..435bad2d --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Jordi Ballester Alomar +* Miquel Raïch +* Lois Rilo diff --git a/account_mass_reconcile_by_purchase_line/readme/DESCRIPTION.rst b/account_mass_reconcile_by_purchase_line/readme/DESCRIPTION.rst new file mode 100644 index 00000000..cfceadd4 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module extends the functionality of account_mass_reconcile and +allow an user to reconcile debits and credits of an Account +using the PO Line and Product as key fields. This type of +reconciliation is to be used in the context of the Perpetual Inventory +accounting system, with the accrual account '*Goods Received Not Invoiced*'. diff --git a/account_mass_reconcile_by_purchase_line/readme/USAGE.rst b/account_mass_reconcile_by_purchase_line/readme/USAGE.rst new file mode 100644 index 00000000..cf838212 --- /dev/null +++ b/account_mass_reconcile_by_purchase_line/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +* Go to 'Invoicing / Accounting / Actions / Mass Automatic Reconcile'. + +* Create a new reconciliation profile, and select a new configuration entry + with type 'Advanced. Product, purchase order line'. diff --git a/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml index c1347cfe..ca749444 100644 --- a/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml +++ b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml @@ -9,7 +9,7 @@ - From 94a885a8cbe156695790d5c255f35672cb51b7a9 Mon Sep 17 00:00:00 2001 From: AaronHForgeFlow Date: Fri, 16 Jul 2021 12:01:56 +0200 Subject: [PATCH 14/18] [IMP] account_mass_reconcile_by_purchase_line: black, isort, prettier --- .../tests/test_scenario_reconcile.py | 26 ++++++++----- .../__manifest__.py | 11 ++---- .../models/advanced_reconciliation.py | 17 ++++---- .../models/base_advanced_reconciliation.py | 6 +-- .../models/mass_reconcile.py | 8 ++-- .../views/mass_reconcile.xml | 39 +++++++++++-------- .../account_mass_reconcile_by_purchase_line | 1 + .../setup.py | 6 +++ 8 files changed, 67 insertions(+), 47 deletions(-) create mode 120000 setup/account_mass_reconcile_by_purchase_line/odoo/addons/account_mass_reconcile_by_purchase_line create mode 100644 setup/account_mass_reconcile_by_purchase_line/setup.py diff --git a/account_mass_reconcile/tests/test_scenario_reconcile.py b/account_mass_reconcile/tests/test_scenario_reconcile.py index eb2864e1..51c5607c 100644 --- a/account_mass_reconcile/tests/test_scenario_reconcile.py +++ b/account_mass_reconcile/tests/test_scenario_reconcile.py @@ -131,18 +131,26 @@ class TestScenarioReconcile(common.SavepointCase): self.assertEqual("paid", invoice.invoice_payment_state) def test_scenario_reconcile_currency(self): - currency_rate = self.env['res.currency.rate'].sudo().search( - [('currency_id', '=', self.ref('base.USD')), - ('company_id', '=', self.ref('base.main_company'))]).filtered( - lambda r: r.name == fields.Date.today() + currency_rate = ( + self.env["res.currency.rate"] + .sudo() + .search( + [ + ("currency_id", "=", self.ref("base.USD")), + ("company_id", "=", self.ref("base.main_company")), + ] + ) + .filtered(lambda r: r.name == fields.Date.today()) ) if not currency_rate: # create currency rate - self.env['res.currency.rate'].create({ - 'name': fields.Date.today(), - 'currency_id': self.ref('base.USD'), - 'rate': 1.5, - }) + self.env["res.currency.rate"].create( + { + "name": fields.Date.today(), + "currency_id": self.ref("base.USD"), + "rate": 1.5, + } + ) else: currency_rate = fields.first(currency_rate) currency_rate.rate = 1.5 diff --git a/account_mass_reconcile_by_purchase_line/__manifest__.py b/account_mass_reconcile_by_purchase_line/__manifest__.py index 921c6ead..2e8063b5 100644 --- a/account_mass_reconcile_by_purchase_line/__manifest__.py +++ b/account_mass_reconcile_by_purchase_line/__manifest__.py @@ -5,17 +5,12 @@ "name": "Account Mass Reconcile by Purchase Line", "summary": "Allows to reconcile based on the PO line", "version": "12.0.1.0.0", - "author": "Eficent, " - "Odoo Community Association (OCA)", + "author": "Eficent, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-reconcile", "category": "Finance", - "depends": ["account_mass_reconcile", - "account_move_line_purchase_info", - ], + "depends": ["account_mass_reconcile", "account_move_line_purchase_info"], "license": "AGPL-3", - "data": [ - "views/mass_reconcile.xml", - ], + "data": ["views/mass_reconcile.xml"], "installable": True, "auto_install": False, } diff --git a/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py index 769f05ea..336b3f11 100644 --- a/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py @@ -5,8 +5,8 @@ from odoo import models class MassReconcileAdvancedByPurchaseLine(models.TransientModel): - _name = 'mass.reconcile.advanced.by.purchase.line' - _inherit = 'mass.reconcile.advanced' + _name = "mass.reconcile.advanced.by.purchase.line" + _inherit = "mass.reconcile.advanced" @staticmethod def _skip_line(move_line): @@ -15,15 +15,16 @@ class MassReconcileAdvancedByPurchaseLine(models.TransientModel): will be skipped for reconciliation. Can be inherited to skip on some conditions. ie: ref or partner_id is empty. """ - return not (move_line.get('product_id') and - move_line.get('purchase_line_id')) + return not (move_line.get("product_id") and move_line.get("purchase_line_id")) @staticmethod def _matchers(move_line): - return (('product_id', move_line['product_id']), - ('purchase_line_id', move_line['purchase_line_id'])) + return ( + ("product_id", move_line["product_id"]), + ("purchase_line_id", move_line["purchase_line_id"]), + ) @staticmethod def _opposite_matchers(move_line): - yield ('product_id', move_line['product_id']) - yield ('purchase_line_id', move_line['purchase_line_id']) + yield ("product_id", move_line["product_id"]) + yield ("purchase_line_id", move_line["purchase_line_id"]) diff --git a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py index 9c9d46e4..f5052320 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py @@ -5,10 +5,10 @@ from odoo import models class MassReconcileAdvanced(models.AbstractModel): - _inherit = 'mass.reconcile.advanced' + _inherit = "mass.reconcile.advanced" def _selection_columns(self): aml_cols = super(MassReconcileAdvanced, self)._selection_columns() - aml_cols.append('account_move_line.purchase_line_id') - aml_cols.append('account_move_line.product_id') + aml_cols.append("account_move_line.purchase_line_id") + aml_cols.append("account_move_line.product_id") return aml_cols diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index 145ce52b..a67bf9e4 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -5,12 +5,14 @@ from odoo import models class AccountMassReconcileMethod(models.Model): - _inherit = 'account.mass.reconcile.method' + _inherit = "account.mass.reconcile.method" def _selection_name(self): methods = super(AccountMassReconcileMethod, self)._selection_name() methods += [ - ('mass.reconcile.advanced.by.purchase.line', - 'Advanced. Product, purchase order line.'), + ( + "mass.reconcile.advanced.by.purchase.line", + "Advanced. Product, purchase order line.", + ), ] return methods diff --git a/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml index ca749444..6491a8a7 100644 --- a/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml +++ b/account_mass_reconcile_by_purchase_line/views/mass_reconcile.xml @@ -1,18 +1,25 @@ - + - - account.mass.reconcile.form - 20 - account.mass.reconcile - - - - - - - - - + + account.mass.reconcile.form + 20 + account.mass.reconcile + + + + + + + + + diff --git a/setup/account_mass_reconcile_by_purchase_line/odoo/addons/account_mass_reconcile_by_purchase_line b/setup/account_mass_reconcile_by_purchase_line/odoo/addons/account_mass_reconcile_by_purchase_line new file mode 120000 index 00000000..6d19d44f --- /dev/null +++ b/setup/account_mass_reconcile_by_purchase_line/odoo/addons/account_mass_reconcile_by_purchase_line @@ -0,0 +1 @@ +../../../../account_mass_reconcile_by_purchase_line \ No newline at end of file diff --git a/setup/account_mass_reconcile_by_purchase_line/setup.py b/setup/account_mass_reconcile_by_purchase_line/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/account_mass_reconcile_by_purchase_line/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 5d59c8944f2241720961dbba40911d17058cb9f1 Mon Sep 17 00:00:00 2001 From: AaronHForgeFlow Date: Fri, 16 Jul 2021 12:03:12 +0200 Subject: [PATCH 15/18] [13.0][MIG] account_mass_reconcile_by_purchase_line --- account_mass_reconcile_by_purchase_line/__manifest__.py | 6 +++--- .../models/advanced_reconciliation.py | 5 +++-- .../models/base_advanced_reconciliation.py | 2 +- .../models/mass_reconcile.py | 2 +- .../readme/CONTRIBUTORS.rst | 6 +++--- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/account_mass_reconcile_by_purchase_line/__manifest__.py b/account_mass_reconcile_by_purchase_line/__manifest__.py index 2e8063b5..26035eff 100644 --- a/account_mass_reconcile_by_purchase_line/__manifest__.py +++ b/account_mass_reconcile_by_purchase_line/__manifest__.py @@ -1,11 +1,11 @@ -# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# Copyright 2020 ForgeFlow S.L. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Account Mass Reconcile by Purchase Line", "summary": "Allows to reconcile based on the PO line", - "version": "12.0.1.0.0", - "author": "Eficent, " "Odoo Community Association (OCA)", + "version": "13.0.1.0.0", + "author": "ForgeFlow, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-reconcile", "category": "Finance", "depends": ["account_mass_reconcile", "account_move_line_purchase_info"], diff --git a/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py index 336b3f11..aa3e1e7e 100644 --- a/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/advanced_reconciliation.py @@ -1,5 +1,5 @@ -# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# Copyright 2020 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import models @@ -7,6 +7,7 @@ from odoo import models class MassReconcileAdvancedByPurchaseLine(models.TransientModel): _name = "mass.reconcile.advanced.by.purchase.line" _inherit = "mass.reconcile.advanced" + _description = "Mass Reconcile By Purchase Line" @staticmethod def _skip_line(move_line): diff --git a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py index f5052320..9ab7c388 100644 --- a/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py +++ b/account_mass_reconcile_by_purchase_line/models/base_advanced_reconciliation.py @@ -1,4 +1,4 @@ -# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# Copyright 2020 ForgeFlow S.L. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import models diff --git a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py index a67bf9e4..fbc507c0 100644 --- a/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py +++ b/account_mass_reconcile_by_purchase_line/models/mass_reconcile.py @@ -1,4 +1,4 @@ -# © 2015-18 Eficent Business and IT Consulting Services S.L. (www.eficent.com) +# Copyright 2020 ForgeFlow S.L. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import models diff --git a/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst b/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst index 435bad2d..39ebe28f 100644 --- a/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst +++ b/account_mass_reconcile_by_purchase_line/readme/CONTRIBUTORS.rst @@ -1,3 +1,3 @@ -* Jordi Ballester Alomar -* Miquel Raïch -* Lois Rilo +* Jordi Ballester Alomar +* Miquel Raïch +* Lois Rilo From f81177ad3a17def205c3af06bf81ea06b6494a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Ra=C3=AFch?= Date: Wed, 8 Jun 2022 11:59:12 +0200 Subject: [PATCH 16/18] [FIX] travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 6716bfad..a143c2e7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ addons: apt: packages: - expect-dev # provides unbuffer utility + - swig stages: - linting From 1d800663c63da5229a9f6750907c7f88d134b8c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Ra=C3=AFch?= Date: Wed, 8 Jun 2022 13:46:22 +0200 Subject: [PATCH 17/18] [FIX] account_reconcile_model_strict_match_amount: communication_flag test The communication_flag test the match of aml.name, am.name and am.ref, not aml.ref. --- .../models/account_reconcile_model.py | 12 ++++++------ ...st_account_reconcile_model_strict_match_amount.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/account_reconcile_model_strict_match_amount/models/account_reconcile_model.py b/account_reconcile_model_strict_match_amount/models/account_reconcile_model.py index 16e1a17d..100790d1 100644 --- a/account_reconcile_model_strict_match_amount/models/account_reconcile_model.py +++ b/account_reconcile_model_strict_match_amount/models/account_reconcile_model.py @@ -45,9 +45,9 @@ class AccountReconcileModel(models.Model): , FALSE) AND CASE - WHEN abs(st_line.amount) < abs(aml.balance) THEN abs(st_line.amount) / abs(aml.balance) * 100 - WHEN abs(st_line.amount) > abs(aml.balance) THEN abs(aml.balance) / abs(st_line.amount) * 100 - ELSE 100 + WHEN abs(st_line.amount) < abs(aml.balance) THEN abs(st_line.amount) / abs(aml.balance) * 100.0 + WHEN abs(st_line.amount) > abs(aml.balance) THEN abs(aml.balance) / abs(st_line.amount) * 100.0 + ELSE 100.0 END >= {match_total_amount_param} AS communication_flag """.format( match_total_amount_param=self.match_total_amount_param @@ -67,9 +67,9 @@ class AccountReconcileModel(models.Model): , FALSE) AND CASE - WHEN abs(st_line.amount) < abs(aml.balance) THEN abs(st_line.amount) / abs(aml.balance) * 100 - WHEN abs(st_line.amount) > abs(aml.balance) THEN abs(aml.balance) / abs(st_line.amount) * 100 - ELSE 100 + WHEN abs(st_line.amount) < abs(aml.balance) THEN abs(st_line.amount) / abs(aml.balance) * 100.0 + WHEN abs(st_line.amount) > abs(aml.balance) THEN abs(aml.balance) / abs(st_line.amount) * 100.0 + ELSE 100.0 END >= {match_total_amount_param} AS payment_reference_flag """.format( match_total_amount_param=self.match_total_amount_param diff --git a/account_reconcile_model_strict_match_amount/tests/test_account_reconcile_model_strict_match_amount.py b/account_reconcile_model_strict_match_amount/tests/test_account_reconcile_model_strict_match_amount.py index c9582be6..785cbc26 100644 --- a/account_reconcile_model_strict_match_amount/tests/test_account_reconcile_model_strict_match_amount.py +++ b/account_reconcile_model_strict_match_amount/tests/test_account_reconcile_model_strict_match_amount.py @@ -14,9 +14,9 @@ class TestAccountReconcileModelStrictMatchAmount(TestReconciliationMatchingRules cls.partner_5 = cls.env["res.partner"].create({"name": "partner_5"}) cls.partner_6 = cls.env["res.partner"].create({"name": "partner_6"}) cls.invoice_line_5 = cls._create_invoice_line(150, cls.partner_3, "out_invoice") - cls.invoice_line_5.ref = "ABC001XYZ" + cls.invoice_line_5.name = "ABC001XYZ" cls.invoice_line_6 = cls._create_invoice_line(300, cls.partner_4, "out_invoice") - cls.invoice_line_6.name = "ABC002XYZ" + cls.invoice_line_6.move_id.name = "ABC002XYZ" cls.invoice_line_7 = cls._create_invoice_line(450, cls.partner_5, "out_invoice") cls.invoice_line_7.move_id.ref = "ABC003XYZ" cls.invoice_line_8 = cls._create_invoice_line(600, cls.partner_6, "out_invoice") From f89eeb53364fac4247b863dc345ef8e2fb266620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miquel=20Ra=C3=AFch?= Date: Wed, 8 Jun 2022 13:47:30 +0200 Subject: [PATCH 18/18] [FIX] account_reconcile_restrict_partner_mismatch: move should be posted to be reconciled --- .../tests/test_reconciliation.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py index 6f1e61f1..54fd2957 100644 --- a/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py +++ b/account_reconcile_restrict_partner_mismatch/tests/test_reconciliation.py @@ -53,12 +53,13 @@ class TestReconciliation(SavepointCase): "journal_id": cls.bank_journal.id, "line_ids": [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], } - return ( + move = ( cls.env["account.move"] .with_context(default_journal_id=cls.bank_journal.id) .create(vals) - .id ) + move.post() + return move.id @classmethod def init_moves(cls): @@ -95,7 +96,7 @@ class TestReconciliation(SavepointCase): self.aml[0].partner_id = self.partner.id with self.assertRaises(UserError): self.aml.reconcile() - # reconciliation forbiden only for certain types of accounts + # reconciliation forbidden only for certain types of accounts account = self.env["account.account"].create( { "code": "CAA1000",