[MIG] account_mass_reconcile: Migration to 13.0

This commit is contained in:
Adrià Gil Sorribes
2019-12-24 14:51:16 +01:00
committed by sonhd91
parent cd26ee62a1
commit dee51857de
14 changed files with 153 additions and 139 deletions

View File

@@ -14,13 +14,13 @@ Account Mass Reconcile
: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_mass_reconcile
:target: https://github.com/OCA/account-reconcile/tree/13.0/account_mass_reconcile
: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_mass_reconcile
:target: https://translation.odoo-community.org/projects/account-reconcile-13-0/account-reconcile-13-0-account_mass_reconcile
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/98/12.0
:target: https://runbot.odoo-community.org/runbot/98/13.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -62,7 +62,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-reconcile/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 <https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_mass_reconcile%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_mass_reconcile%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
@@ -96,6 +96,7 @@ Contributors
* Damien Crier <damien.crier@camptocamp.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>
* Mykhailo Panarin <m.panarin@mobilunity.com>
* Adrià Gil Sorribes <adria.gil@forgeflow.com>
Maintainers
~~~~~~~~~~~
@@ -110,6 +111,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 <https://github.com/OCA/account-reconcile/tree/12.0/account_mass_reconcile>`_ project on GitHub.
This module is part of the `OCA/account-reconcile <https://github.com/OCA/account-reconcile/tree/13.0/account_mass_reconcile>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -4,7 +4,7 @@
{
"name": "Account Mass Reconcile",
"version": "12.0.1.0.0",
"version": "13.0.1.0.0",
"depends": ["account"],
"author": "Akretion,Camptocamp,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-reconcile",

View File

@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_mass_reconcile
# * account_mass_reconcile
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -14,14 +14,17 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_mass_reconcile
#: code:addons/account_mass_reconcile/models/base_advanced_reconciliation.py:157
#: code:addons/account_mass_reconcile/models/base_advanced_reconciliation.py:0
#, python-format
msgid "A matcher %s is compared with a matcher %s, the _matchers and _opposite_matchers are probably wrong"
msgid ""
"A matcher %s is compared with a matcher %s, the _matchers and "
"_opposite_matchers are probably wrong"
msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.actions.act_window,help:account_mass_reconcile.action_account_mass_reconcile
msgid "A reconciliation profile specifies, for one account, how\n"
msgid ""
"A reconciliation profile specifies, for one account, how\n"
" the entries should be reconciled.\n"
" You can select one or many reconciliation methods which will\n"
" be run sequentially to match the entries between them."
@@ -52,6 +55,11 @@ msgstr ""
msgid "Account Lost"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_account_mass_reconcile
msgid "Account Mass Reconcile"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,field_description:account_mass_reconcile.field_account_mass_reconcile_method__account_profit_id
#: model:ir.model.fields,field_description:account_mass_reconcile.field_mass_reconcile_advanced__account_profit_id
@@ -100,7 +108,7 @@ msgid "Automatic Mass Reconcile Method"
msgstr ""
#. module: account_mass_reconcile
#: code:addons/account_mass_reconcile/models/base_reconciliation.py:160
#: code:addons/account_mass_reconcile/models/base_reconciliation.py:0
#, python-format
msgid "Automatic Write Off"
msgstr ""
@@ -282,7 +290,8 @@ msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.view_account_config
msgid "How often to commit when performing automatic reconciliation.\n"
msgid ""
"How often to commit when performing automatic reconciliation.\n"
" Leave zero to commit only at the end of the process."
msgstr ""
@@ -301,18 +310,15 @@ msgstr ""
msgid "ID"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,help:account_mass_reconcile.field_account_mass_reconcile__message_unread
msgid "If checked new messages require your attention."
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,help:account_mass_reconcile.field_account_mass_reconcile__message_needaction
#: model:ir.model.fields,help:account_mass_reconcile.field_account_mass_reconcile__message_unread
msgid "If checked, new messages require your attention."
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,help:account_mass_reconcile.field_account_mass_reconcile__message_has_error
#: model:ir.model.fields,help:account_mass_reconcile.field_account_mass_reconcile__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ""
@@ -417,23 +423,70 @@ msgid "Mass Automatic Reconcile History"
msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.account_mass_reconcile_form
msgid "Match multiple debit vs multiple credit entries. Allow partial reconciliation. The lines should have the same partner, and the credit entry ref. is matched with the debit entry ref. or name."
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_advanced
msgid "Mass Reconcile Advanced"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_advanced_ref
msgid "Mass Reconcile Advanced Ref"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_base
msgid "Mass Reconcile Base"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple
msgid "Mass Reconcile Simple"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple_name
msgid "Mass Reconcile Simple Name"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple_partner
msgid "Mass Reconcile Simple Partner"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple_reference
msgid "Mass Reconcile Simple Reference"
msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.account_mass_reconcile_form
msgid "Match one debit line vs one credit line. Do not allow partial reconciliation. The lines should have the same amount (with the write-off) and the same name to be reconciled."
msgid ""
"Match multiple debit vs multiple credit entries. Allow partial "
"reconciliation. The lines should have the same partner, and the credit entry"
" ref. is matched with the debit entry ref. or name."
msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.account_mass_reconcile_form
msgid "Match one debit line vs one credit line. Do not allow partial reconciliation. The lines should have the same amount (with the write-off) and the same partner to be reconciled."
msgid ""
"Match one debit line vs one credit line. Do not allow partial "
"reconciliation. The lines should have the same amount (with the write-off) "
"and the same name to be reconciled."
msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.account_mass_reconcile_form
msgid "Match one debit line vs one credit line. Do not allow partial reconciliation. The lines should have the same amount (with the write-off) and the same reference to be reconciled."
msgid ""
"Match one debit line vs one credit line. Do not allow partial "
"reconciliation. The lines should have the same amount (with the write-off) "
"and the same partner to be reconciled."
msgstr ""
#. module: account_mass_reconcile
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.account_mass_reconcile_form
msgid ""
"Match one debit line vs one credit line. Do not allow partial "
"reconciliation. The lines should have the same amount (with the write-off) "
"and the same reference to be reconciled."
msgstr ""
#. module: account_mass_reconcile
@@ -463,7 +516,7 @@ msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,field_description:account_mass_reconcile.field_account_mass_reconcile__message_has_error_counter
msgid "Number of error"
msgid "Number of errors"
msgstr ""
#. module: account_mass_reconcile
@@ -491,6 +544,11 @@ msgstr ""
msgid "Profile Information"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_account_mass_reconcile_method
msgid "Reconcile Method for account_mass_reconcile"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,field_description:account_mass_reconcile.field_mass_reconcile_history__mass_reconcile_id
msgid "Reconcile Profile"
@@ -507,7 +565,7 @@ msgid "Reconciliation"
msgstr ""
#. module: account_mass_reconcile
#: code:addons/account_mass_reconcile/models/mass_reconcile_history.py:64
#: code:addons/account_mass_reconcile/models/mass_reconcile_history.py:0
#: model_terms:ir.ui.view,arch_db:account_mass_reconcile.mass_reconcile_history_form
#, python-format
msgid "Reconciliations"
@@ -534,6 +592,11 @@ msgstr ""
msgid "Run date"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,field_description:account_mass_reconcile.field_account_mass_reconcile__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model.fields,field_description:account_mass_reconcile.field_account_mass_reconcile_method__sequence
msgid "Sequence"
@@ -580,13 +643,13 @@ msgid "The sequence field is used to order the reconcile method"
msgstr ""
#. module: account_mass_reconcile
#: code:addons/account_mass_reconcile/models/mass_reconcile.py:274
#: code:addons/account_mass_reconcile/models/mass_reconcile.py:0
#, python-format
msgid "There is no history of reconciled items on the task: %s."
msgstr ""
#. module: account_mass_reconcile
#: code:addons/account_mass_reconcile/models/mass_reconcile.py:251
#: code:addons/account_mass_reconcile/models/mass_reconcile.py:0
#, python-format
msgid "There was an error during reconciliation : %s"
msgstr ""
@@ -617,7 +680,7 @@ msgid "Unreconciled Items"
msgstr ""
#. module: account_mass_reconcile
#: code:addons/account_mass_reconcile/models/mass_reconcile.py:300
#: code:addons/account_mass_reconcile/models/mass_reconcile.py:0
#, python-format
msgid "Unreconciled items"
msgstr ""
@@ -644,49 +707,3 @@ msgstr ""
#: model:ir.model.fields,field_description:account_mass_reconcile.field_mass_reconcile_simple_reference__write_off
msgid "Write off allowed"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_account_mass_reconcile
msgid "account mass reconcile"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_advanced
msgid "mass.reconcile.advanced"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_advanced_ref
msgid "mass.reconcile.advanced.ref"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_base
msgid "mass.reconcile.base"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple
msgid "mass.reconcile.simple"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple_name
msgid "mass.reconcile.simple.name"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple_partner
msgid "mass.reconcile.simple.partner"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_mass_reconcile_simple_reference
msgid "mass.reconcile.simple.reference"
msgstr ""
#. module: account_mass_reconcile
#: model:ir.model,name:account_mass_reconcile.model_account_mass_reconcile_method
msgid "reconcile method for account_mass_reconcile"
msgstr ""

View File

@@ -9,6 +9,7 @@ class MassReconcileAdvancedRef(models.TransientModel):
_name = "mass.reconcile.advanced.ref"
_inherit = "mass.reconcile.advanced"
_description = "Mass Reconcile Advanced Ref"
@staticmethod
def _skip_line(move_line):

View File

@@ -5,7 +5,7 @@
import logging
from itertools import product
from odoo import api, models
from odoo import models
from odoo.tools.translate import _
_logger = logging.getLogger(__name__)
@@ -14,6 +14,7 @@ _logger = logging.getLogger(__name__)
class MassReconcileAdvanced(models.AbstractModel):
_name = "mass.reconcile.advanced"
_inherit = "mass.reconcile.base"
_description = "Mass Reconcile Advanced"
def _query_debit(self):
"""Select all move (debit>0) as candidate. """
@@ -217,9 +218,9 @@ class MassReconcileAdvanced(models.AbstractModel):
"""
return False
@api.multi
def _rec_auto_lines_advanced(self, credit_lines, debit_lines):
""" Advanced reconciliation main loop """
# pylint: disable=invalid-commit
reconciled_ids = []
for rec in self:
reconcile_groups = []

View File

@@ -5,7 +5,7 @@
from functools import reduce
from operator import itemgetter
from odoo import _, api, fields, models
from odoo import _, fields, models
from odoo.tools.safe_eval import safe_eval
@@ -14,6 +14,7 @@ class MassReconcileBase(models.AbstractModel):
_name = "mass.reconcile.base"
_inherit = "mass.reconcile.options"
_description = "Mass Reconcile Base"
account_id = fields.Many2one("account.account", string="Account", required=True)
partner_ids = fields.Many2many(
@@ -21,7 +22,6 @@ class MassReconcileBase(models.AbstractModel):
)
# other fields are inherited from mass.reconcile.options
@api.multi
def automatic_reconcile(self):
""" Reconciliation method called from the view.
@@ -65,7 +65,6 @@ class MassReconcileBase(models.AbstractModel):
def _from_query(self, *args, **kwargs):
return "FROM account_move_line "
@api.multi
def _where_query(self, *args, **kwargs):
self.ensure_one()
where = (
@@ -82,7 +81,6 @@ class MassReconcileBase(models.AbstractModel):
params.append(tuple([l.id for l in self.partner_ids]))
return where, params
@api.multi
def _get_filter(self):
self.ensure_one()
ml_obj = self.env["account.move.line"]
@@ -94,7 +92,6 @@ class MassReconcileBase(models.AbstractModel):
where = " AND %s" % where
return where, params
@api.multi
def _below_writeoff_limit(self, lines, writeoff_limit):
self.ensure_one()
precision = self.env["decimal.precision"].precision_get("Account")
@@ -109,7 +106,6 @@ class MassReconcileBase(models.AbstractModel):
writeoff_amount = round(debit - credit, precision)
return bool(writeoff_limit >= abs(writeoff_amount)), debit, credit
@api.multi
def _get_rec_date(self, lines, based_on="end_period_last_credit"):
self.ensure_one()
@@ -132,7 +128,6 @@ class MassReconcileBase(models.AbstractModel):
# when date is None
return None
@api.multi
def _reconcile_lines(self, lines, allow_partial=False):
""" Try to reconcile given lines

View File

@@ -5,6 +5,8 @@
import logging
from datetime import datetime
from psycopg2.extensions import AsIs
from odoo import _, api, fields, models, sql_db
from odoo.exceptions import Warning as UserError
@@ -37,7 +39,7 @@ class MassReconcileOptions(models.AbstractModel):
string="Date of reconciliation",
default="newest",
)
_filter = fields.Char(string="Filter", oldname="filter")
_filter = fields.Char(string="Filter")
income_exchange_account_id = fields.Many2one(
"account.account", string="Gain Exchange Rate Account"
)
@@ -48,7 +50,7 @@ class MassReconcileOptions(models.AbstractModel):
class AccountMassReconcileMethod(models.Model):
_name = "account.mass.reconcile.method"
_description = "reconcile method for account_mass_reconcile"
_description = "Reconcile Method for account_mass_reconcile"
_inherit = "mass.reconcile.options"
_order = "sequence"
@@ -86,20 +88,18 @@ class AccountMassReconcileMethod(models.Model):
class AccountMassReconcile(models.Model):
_name = "account.mass.reconcile"
_inherit = ["mail.thread"]
_description = "account mass reconcile"
_description = "Account Mass Reconcile"
@api.multi
@api.depends("account")
def _get_total_unrec(self):
def _compute_total_unrec(self):
obj_move_line = self.env["account.move.line"]
for rec in self:
rec.unreconciled_count = obj_move_line.search_count(
[("account_id", "=", rec.account.id), ("reconciled", "=", False)]
)
@api.multi
@api.depends("history_ids")
def _last_history(self):
def _compute_last_history(self):
# do a search() for retrieving the latest history line,
# as a read() will badly split the list of ids with 'date desc'
# and return the wrong result.
@@ -116,7 +116,7 @@ class AccountMassReconcile(models.Model):
"account.mass.reconcile.method", "task_id", string="Method"
)
unreconciled_count = fields.Integer(
string="Unreconciled Items", compute="_get_total_unrec"
string="Unreconciled Items", compute="_compute_total_unrec"
)
history_ids = fields.One2many(
"mass.reconcile.history", "mass_reconcile_id", string="History", readonly=True
@@ -125,7 +125,7 @@ class AccountMassReconcile(models.Model):
"mass.reconcile.history",
string="Last history",
readonly=True,
compute="_last_history",
compute="_compute_last_history",
)
company_id = fields.Many2one("res.company", string="Company")
@@ -143,17 +143,17 @@ class AccountMassReconcile(models.Model):
"_filter": rec_method._filter,
}
@api.multi
def run_reconcile(self):
def find_reconcile_ids(fieldname, move_line_ids):
if not move_line_ids:
return []
sql = (
"SELECT DISTINCT " + fieldname + " FROM account_move_line "
" WHERE id in %s "
" AND " + fieldname + " IS NOT NULL"
)
self.env.cr.execute(sql, (tuple(move_line_ids),))
self.flush()
sql = """
SELECT DISTINCT %s FROM account_move_line
WHERE %s IS NOT NULL AND id in %s
"""
params = [AsIs(fieldname), AsIs(fieldname), tuple(move_line_ids)]
self.env.cr.execute(sql, params)
res = self.env.cr.fetchall()
return [row[0] for row in res]
@@ -235,7 +235,6 @@ class AccountMassReconcile(models.Model):
"domain": [("id", "in", move_line_ids)],
}
@api.multi
def open_unreconcile(self):
""" Open the view of move line with the unreconciled move lines"""
self.ensure_one()

View File

@@ -15,9 +15,8 @@ class MassReconcileHistory(models.Model):
_rec_name = "mass_reconcile_id"
_order = "date DESC"
@api.multi
@api.depends("reconcile_ids")
def _get_reconcile_line_ids(self):
def _compute_reconcile_line_ids(self):
for rec in self:
rec.reconcile_line_ids = rec.mapped("reconcile_ids.reconciled_line_ids").ids
@@ -35,7 +34,7 @@ class MassReconcileHistory(models.Model):
comodel_name="account.move.line",
relation="account_move_line_history_rel",
string="Reconciled Items",
compute="_get_reconcile_line_ids",
compute="_compute_reconcile_line_ids",
)
company_id = fields.Many2one(
"res.company",
@@ -45,7 +44,6 @@ class MassReconcileHistory(models.Model):
related="mass_reconcile_id.company_id",
)
@api.multi
def _open_move_lines(self):
""" For an history record, open the view of move line with
the reconciled move lines
@@ -67,7 +65,6 @@ class MassReconcileHistory(models.Model):
"domain": [("id", "in", move_line_ids)],
}
@api.multi
def open_reconcile(self):
""" For an history record, open the view of move line
with the reconciled move lines

View File

@@ -2,18 +2,18 @@
# Copyright 2010 Sébastien Beau
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models
from odoo import models
class MassReconcileSimple(models.AbstractModel):
_name = "mass.reconcile.simple"
_inherit = "mass.reconcile.base"
_description = "Mass Reconcile Simple"
# has to be subclassed
# field name used as key for matching the move lines
_key_field = None
@api.multi
def rec_auto_lines_simple(self, lines):
if self._key_field is None:
raise ValueError("_key_field has to be defined")
@@ -67,6 +67,7 @@ class MassReconcileSimple(models.AbstractModel):
class MassReconcileSimpleName(models.TransientModel):
_name = "mass.reconcile.simple.name"
_inherit = "mass.reconcile.simple"
_description = "Mass Reconcile Simple Name"
# has to be subclassed
# field name used as key for matching the move lines
@@ -76,6 +77,7 @@ class MassReconcileSimpleName(models.TransientModel):
class MassReconcileSimplePartner(models.TransientModel):
_name = "mass.reconcile.simple.partner"
_inherit = "mass.reconcile.simple"
_description = "Mass Reconcile Simple Partner"
# has to be subclassed
# field name used as key for matching the move lines
@@ -85,6 +87,7 @@ class MassReconcileSimplePartner(models.TransientModel):
class MassReconcileSimpleReference(models.TransientModel):
_name = "mass.reconcile.simple.reference"
_inherit = "mass.reconcile.simple"
_description = "Mass Reconcile Simple Reference"
# has to be subclassed
# field name used as key for matching the move lines

View File

@@ -16,3 +16,4 @@
* Damien Crier <damien.crier@camptocamp.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>
* Mykhailo Panarin <m.panarin@mobilunity.com>
* Adrià Gil Sorribes <adria.gil@forgeflow.com>

View File

@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/account-reconcile/tree/12.0/account_mass_reconcile"><img alt="OCA/account-reconcile" src="https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/account-reconcile-12-0/account-reconcile-12-0-account_mass_reconcile"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/98/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/account-reconcile/tree/13.0/account_mass_reconcile"><img alt="OCA/account-reconcile" src="https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/account-reconcile-13-0/account-reconcile-13-0-account_mass_reconcile"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/98/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This is a shared work between Akretion and Camptocamp
in order to provide:</p>
<ul class="simple">
@@ -410,7 +410,7 @@ reconcile.</p>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-reconcile/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_mass_reconcile%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_mass_reconcile%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
@@ -443,6 +443,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
<li>Damien Crier &lt;<a class="reference external" href="mailto:damien.crier&#64;camptocamp.com">damien.crier&#64;camptocamp.com</a>&gt;</li>
<li>Akim Juillerat &lt;<a class="reference external" href="mailto:akim.juillerat&#64;camptocamp.com">akim.juillerat&#64;camptocamp.com</a>&gt;</li>
<li>Mykhailo Panarin &lt;<a class="reference external" href="mailto:m.panarin&#64;mobilunity.com">m.panarin&#64;mobilunity.com</a>&gt;</li>
<li>Adrià Gil Sorribes &lt;<a class="reference external" href="mailto:adria.gil&#64;forgeflow.com">adria.gil&#64;forgeflow.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
@@ -452,7 +453,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-reconcile/tree/12.0/account_mass_reconcile">OCA/account-reconcile</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-reconcile/tree/13.0/account_mass_reconcile">OCA/account-reconcile</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>

View File

@@ -21,7 +21,7 @@ class TestScenarioReconcile(common.SavepointCase):
)
cls.rec_history_obj = cls.env["mass.reconcile.history"]
cls.mass_rec_obj = cls.env["account.mass.reconcile"]
cls.invoice_obj = cls.env["account.invoice"]
cls.invoice_obj = cls.env["account.move"]
cls.bk_stmt_obj = cls.env["account.bank.statement"]
cls.bk_stmt_line_obj = cls.env["account.bank.statement.line"]
cls.acc_move_line_obj = cls.env["account.move.line"]
@@ -45,10 +45,9 @@ class TestScenarioReconcile(common.SavepointCase):
def test_scenario_reconcile(self):
# create invoice
invoice = self.invoice_obj.create(
invoice = self.invoice_obj.with_context(default_type="out_invoice").create(
{
"type": "out_invoice",
"account_id": self.ref("account.a_recv"),
"company_id": self.ref("base.main_company"),
"journal_id": self.ref("account.sales_journal"),
"partner_id": self.ref("base.res_partner_12"),
@@ -57,7 +56,7 @@ class TestScenarioReconcile(common.SavepointCase):
0,
0,
{
"name": "[PCSC234] PC Assemble SC234",
"name": "[FURN_7800] Desk Combination",
"account_id": self.ref("account.a_sale"),
"price_unit": 1000.0,
"quantity": 1.0,
@@ -68,8 +67,8 @@ class TestScenarioReconcile(common.SavepointCase):
}
)
# validate invoice
invoice.action_invoice_open()
self.assertEqual("open", invoice.state)
invoice.post()
self.assertEqual("posted", invoice.state)
# create bank_statement
statement = self.bk_stmt_obj.create(
@@ -85,8 +84,8 @@ class TestScenarioReconcile(common.SavepointCase):
{
"amount": 1000.0,
"partner_id": self.ref("base.res_partner_12"),
"name": invoice.number,
"ref": invoice.number,
"name": invoice.name,
"ref": invoice.name,
},
)
],
@@ -95,8 +94,8 @@ class TestScenarioReconcile(common.SavepointCase):
# reconcile
line_id = None
for l in invoice.move_id.line_ids:
if l.account_id.id == self.ref("account.a_recv"):
for l in invoice.line_ids:
if l.account_id.internal_type == "receivable":
line_id = l
break
@@ -107,7 +106,7 @@ class TestScenarioReconcile(common.SavepointCase):
"move_line": line_id,
"credit": 1000.0,
"debit": 0.0,
"name": invoice.number,
"name": invoice.name,
}
]
)
@@ -122,13 +121,14 @@ class TestScenarioReconcile(common.SavepointCase):
mass_rec = self.mass_rec_obj.create(
{
"name": "mass_reconcile_1",
"account": self.ref("account.a_recv"),
"account": line_id.account_id.id,
"reconcile_method": [(0, 0, {"name": "mass.reconcile.simple.partner"})],
}
)
# call the automatic reconcilation method
mass_rec.run_reconcile()
self.assertEqual("paid", invoice.state)
invoice.invalidate_cache()
self.assertEqual("paid", invoice.invoice_payment_state)
def test_scenario_reconcile_currency(self):
# create currency rate
@@ -140,20 +140,19 @@ class TestScenarioReconcile(common.SavepointCase):
}
)
# create invoice
invoice = self.invoice_obj.create(
invoice = self.invoice_obj.with_context(default_type="out_invoice").create(
{
"type": "out_invoice",
"account_id": self.ref("account.a_recv"),
"company_id": self.ref("base.main_company"),
"currency_id": self.ref("base.USD"),
"journal_id": self.ref("account.bank_journal_usd"),
"journal_id": self.ref("account.sales_journal"),
"partner_id": self.ref("base.res_partner_12"),
"invoice_line_ids": [
(
0,
0,
{
"name": "[PCSC234] PC Assemble SC234",
"name": "[FURN_7800] Desk Combination",
"account_id": self.ref("account.a_sale"),
"price_unit": 1000.0,
"quantity": 1.0,
@@ -164,8 +163,8 @@ class TestScenarioReconcile(common.SavepointCase):
}
)
# validate invoice
invoice.action_invoice_open()
self.assertEqual("open", invoice.state)
invoice.post()
self.assertEqual("posted", invoice.state)
# create bank_statement
statement = self.bk_stmt_obj.create(
@@ -183,8 +182,8 @@ class TestScenarioReconcile(common.SavepointCase):
"amount": 1000.0,
"amount_currency": 1500.0,
"partner_id": self.ref("base.res_partner_12"),
"name": invoice.number,
"ref": invoice.number,
"name": invoice.name,
"ref": invoice.name,
},
)
],
@@ -193,8 +192,8 @@ class TestScenarioReconcile(common.SavepointCase):
# reconcile
line_id = None
for l in invoice.move_id.line_ids:
if l.account_id.id == self.ref("account.a_recv"):
for l in invoice.line_ids:
if l.account_id.internal_type == "receivable":
line_id = l
break
@@ -205,7 +204,7 @@ class TestScenarioReconcile(common.SavepointCase):
"move_line": line_id,
"credit": 1000.0,
"debit": 0.0,
"name": invoice.number,
"name": invoice.name,
}
]
)
@@ -219,10 +218,11 @@ class TestScenarioReconcile(common.SavepointCase):
mass_rec = self.mass_rec_obj.create(
{
"name": "mass_reconcile_1",
"account": self.ref("account.a_recv"),
"account": line_id.account_id.id,
"reconcile_method": [(0, 0, {"name": "mass.reconcile.simple.partner"})],
}
)
# call the automatic reconcilation method
mass_rec.run_reconcile()
self.assertEqual("paid", invoice.state)
invoice.invalidate_cache()
self.assertEqual("paid", invoice.invoice_payment_state)

View File

@@ -142,7 +142,6 @@ The lines should have the same partner, and the credit entry ref. is matched wit
<field name="name">Mass Automatic Reconcile</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.mass.reconcile</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">

View File

@@ -85,7 +85,6 @@
<field name="name">Mass Automatic Reconcile History</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mass.reconcile.history</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<act_window