From 0464802099e47f75deb570813a9b09922b01cff3 Mon Sep 17 00:00:00 2001 From: Ernesto Tejeda Date: Thu, 20 Aug 2020 09:22:40 -0400 Subject: [PATCH] [IMP] account_journal_lock_date: two dates per journal - Change in journal the existing 'Lock date' by two dates, the same as in company. - Add a wizard to allows a massive update of those dates for several journals at the same time. --- account_journal_lock_date/README.rst | 38 ++++-- account_journal_lock_date/__init__.py | 3 + account_journal_lock_date/__manifest__.py | 3 +- .../i18n/account_journal_lock_date.pot | 99 ++++++++++++-- account_journal_lock_date/i18n/es.po | 129 ++++++++++++++++-- .../models/account_journal.py | 25 ++-- .../models/account_move.py | 33 +++-- .../readme/CONFIGURE.rst | 8 ++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 13 +- account_journal_lock_date/readme/ROADMAP.rst | 3 +- account_journal_lock_date/readme/USAGE.rst | 7 + .../static/description/index.html | 63 ++++++--- .../tests/test_journal_lock_date.py | 70 +++++++--- .../views/account_journal.xml | 8 +- account_journal_lock_date/wizards/__init__.py | 3 + .../wizards/update_journal_lock_dates.py | 30 ++++ .../update_journal_lock_dates_views.xml | 39 ++++++ 18 files changed, 467 insertions(+), 108 deletions(-) create mode 100644 account_journal_lock_date/readme/CONFIGURE.rst create mode 100644 account_journal_lock_date/readme/USAGE.rst create mode 100644 account_journal_lock_date/wizards/__init__.py create mode 100644 account_journal_lock_date/wizards/update_journal_lock_dates.py create mode 100644 account_journal_lock_date/wizards/update_journal_lock_dates_views.xml diff --git a/account_journal_lock_date/README.rst b/account_journal_lock_date/README.rst index 36d49d33..e42aabb4 100644 --- a/account_journal_lock_date/README.rst +++ b/account_journal_lock_date/README.rst @@ -27,26 +27,43 @@ Account Journal Lock Date Lock each accounting journal independently. -In addition to the lock dates provided by standard Odoo and -account_permanent_lock_move, provide a per journal lock date. +In addition to the lock dates provided by standard Odoo, this module +provides a 'Lock Date' and a 'Lock Date for Non-Advisers' per journal. -Note: this module depends on account_permanent_lock_move because it -implements stricter checks than standard Odoo, such as verifying that -one cannot create draft moves before the lock date. - -Note: the journal lock date is ignored for users that are part of -the Adviser group. This rule can be adapted by overriding method -`_can_bypass_journal_lock_date` of `account.journal`. +This module also adds a wizard that allows you to update the 'Lock Date' +and the 'Lock Date for Non-Advisers' for several Journals at the same time. **Table of contents** .. contents:: :local: +Configuration +============= + +To configure this module, you need to: + +#. Go to *Invoicing > Configuration > Journals* +#. Open a Journal and set the 'Lock Date' and the 'Lock Date for Non-Advisers' + in the' Advanced Settings' tab of the form view or select several + Journals in the list view and click on the action menu + 'Update journals lock dates' to update those dates for the selected + journals at the same time. + +Usage +===== + +If the logged-in user has the access group 'Adviser', he/she will +not be able to create a journal entry if the 'Lock Date' of the +journal is greater than or equal to the journal entry. + +If the logged-in user has not the access group 'Adviser', he/she will +not be able to create a journal entry if the 'Lock Date for Non-Advisers' +of the journal is greater than or equal to the journal entry. + Known issues / Roadmap ====================== -* a wizard to set the lock date on several journals could be nice to have * the module does not check that all moves prior the lock date are posted, this could be made as part of the wizard @@ -81,6 +98,7 @@ Contributors * `Tecnativa `_: * Pedro M. Baeza + * Ernesto Tejeda Maintainers ~~~~~~~~~~~ diff --git a/account_journal_lock_date/__init__.py b/account_journal_lock_date/__init__.py index 0650744f..adc6207f 100644 --- a/account_journal_lock_date/__init__.py +++ b/account_journal_lock_date/__init__.py @@ -1 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import models +from . import wizards diff --git a/account_journal_lock_date/__manifest__.py b/account_journal_lock_date/__manifest__.py index eb18a363..da853481 100644 --- a/account_journal_lock_date/__manifest__.py +++ b/account_journal_lock_date/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Account Journal Lock Date', 'summary': """ Lock each journal independently""", - 'version': '12.0.1.0.0', + 'version': '12.0.2.0.0', 'license': 'AGPL-3', 'author': 'ACSONE SA/NV,Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/account-financial-tools', @@ -14,6 +14,7 @@ ], 'data': [ 'views/account_journal.xml', + 'wizards/update_journal_lock_dates_views.xml', ], 'demo': [ ], diff --git a/account_journal_lock_date/i18n/account_journal_lock_date.pot b/account_journal_lock_date/i18n/account_journal_lock_date.pot index b52413a9..d28fc5e3 100644 --- a/account_journal_lock_date/i18n/account_journal_lock_date.pot +++ b/account_journal_lock_date/i18n/account_journal_lock_date.pot @@ -4,8 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-08-20 04:25+0000\n" +"PO-Revision-Date: 2020-08-20 04:25+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -14,8 +16,28 @@ msgstr "" "Plural-Forms: \n" #. module: account_journal_lock_date -#: model:ir.model,name:account_journal_lock_date.model_account_move -msgid "Account Entry" +#: model_terms:ir.ui.view,arch_db:account_journal_lock_date.update_journal_lock_dates_wizard_view_form +msgid "Cancel" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__id +msgid "ID" msgstr "" #. module: account_journal_lock_date @@ -24,18 +46,77 @@ msgid "Journal" msgstr "" #. module: account_journal_lock_date -#: model:ir.model.fields,field_description:account_journal_lock_date.field_account_journal_journal_lock_date -msgid "Lock date" +#: model:ir.model,name:account_journal_lock_date.model_account_move +msgid "Journal Entries" msgstr "" #. module: account_journal_lock_date -#: model:ir.model.fields,help:account_journal_lock_date.field_account_journal_journal_lock_date -msgid "Moves cannot be entered nor modified in this journal prior to the lock date, unless the user has the Adviser role." +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard____last_update +msgid "Last Modified on" msgstr "" #. module: account_journal_lock_date -#: code:addons/account_journal_lock_date/models/account_move.py:23 +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_account_journal__fiscalyear_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__fiscalyear_lock_date +msgid "Lock Date" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_account_journal__period_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__period_lock_date +msgid "Lock Date for Non-Advisers" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model,name:account_journal_lock_date.model_update_journal_lock_dates_wizard +msgid "Mass Update Journal Lock Dates Wizard" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,help:account_journal_lock_date.field_account_journal__fiscalyear_lock_date +msgid "No users, including Advisers, can edit accounts prior to and inclusive of this date for this journal. Use it for fiscal year locking for this journal, for example." +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,help:account_journal_lock_date.field_account_journal__period_lock_date +msgid "Only users with the 'Adviser' role can edit accounts prior to and inclusive of this date for this journal. Use it for period locking inside an open fiscal year for this journal, for example." +msgstr "" + +#. module: account_journal_lock_date +#: model_terms:ir.ui.view,arch_db:account_journal_lock_date.update_journal_lock_dates_wizard_view_form +msgid "Update" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.actions.act_window,name:account_journal_lock_date.update_journal_lock_dates_wizard_action +msgid "Update journal lock dates" +msgstr "" + +#. module: account_journal_lock_date +#: code:addons/account_journal_lock_date/wizards/update_journal_lock_dates.py:20 #, python-format -msgid "You cannot add/modify entries prior to and inclusive of the journal lock date %s" +msgid "You are not allowed to execute this action." +msgstr "" + +#. module: account_journal_lock_date +#: code:addons/account_journal_lock_date/models/account_move.py:39 +#, python-format +msgid "You cannot add/modify entries for the journal '%s' prior to and inclusive of the lock date %s" +msgstr "" + +#. module: account_journal_lock_date +#: code:addons/account_journal_lock_date/models/account_move.py:44 +#, python-format +msgid "You cannot add/modify entries for the journal '%s' prior to and inclusive of the lock date %s. Check the Journal settings or ask someone with the 'Adviser' role" msgstr "" diff --git a/account_journal_lock_date/i18n/es.po b/account_journal_lock_date/i18n/es.po index dc2adcb6..6342e1ba 100644 --- a/account_journal_lock_date/i18n/es.po +++ b/account_journal_lock_date/i18n/es.po @@ -8,20 +8,41 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-30 00:47+0000\n" -"PO-Revision-Date: 2017-05-30 00:47+0000\n" +"POT-Creation-Date: 2020-08-20 04:25+0000\n" +"PO-Revision-Date: 2020-08-20 00:52-0400\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.6\n" #. module: account_journal_lock_date -#: model:ir.model,name:account_journal_lock_date.model_account_move -msgid "Account Entry" -msgstr "Asiento contable" +#: model_terms:ir.ui.view,arch_db:account_journal_lock_date.update_journal_lock_dates_wizard_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__id +msgid "ID" +msgstr "" #. module: account_journal_lock_date #: model:ir.model,name:account_journal_lock_date.model_account_journal @@ -29,21 +50,101 @@ msgid "Journal" msgstr "Diario" #. module: account_journal_lock_date -#: model:ir.model.fields,field_description:account_journal_lock_date.field_account_journal_journal_lock_date -msgid "Lock date" +#: model:ir.model,name:account_journal_lock_date.model_account_move +msgid "Journal Entries" +msgstr "Asientos Contables" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard____last_update +msgid "Last Modified on" msgstr "" #. module: account_journal_lock_date -#: model:ir.model.fields,help:account_journal_lock_date.field_account_journal_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_account_journal__fiscalyear_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__fiscalyear_lock_date +msgid "Lock Date" +msgstr "Fecha de bloqueo" + +#. module: account_journal_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_account_journal__period_lock_date +#: model:ir.model.fields,field_description:account_journal_lock_date.field_update_journal_lock_dates_wizard__period_lock_date +msgid "Lock Date for Non-Advisers" +msgstr "Fecha de bloqueo para no asesores" + +#. module: account_journal_lock_date +#: model:ir.model,name:account_journal_lock_date.model_update_journal_lock_dates_wizard +msgid "Mass Update Journal Lock Dates Wizard" +msgstr "Asistente para la actualización masiva de fechas de bloqueo" + +#. module: account_journal_lock_date +#: model:ir.model.fields,help:account_journal_lock_date.field_account_journal__fiscalyear_lock_date msgid "" -"Moves cannot be entered nor modified in this journal prior to the lock date, " -"unless the user has the Adviser role." +"No users, including Advisers, can edit accounts prior to and inclusive of " +"this date for this journal. Use it for fiscal year locking for this journal, " +"for example." msgstr "" +"Ningún usuario, incluyendo Asesores, pueden editar cuentas antes de y en " +"esta fecha para este diario. Utilícela, por ejemplo, para bloquear un año " +"fiscal para este Diario." #. module: account_journal_lock_date -#: code:addons/account_journal_lock_date/models/account_move.py:23 +#: model:ir.model.fields,help:account_journal_lock_date.field_account_journal__period_lock_date +msgid "" +"Only users with the 'Adviser' role can edit accounts prior to and inclusive " +"of this date for this journal. Use it for period locking inside an open " +"fiscal year for this journal, for example." +msgstr "" +"Sólo los usuarios con el rol 'Asesor' pueden editar cuentas antes de y en " +"esta fecha para este Diario. Utilícelo para bloquear un período dentro de un " +"año fiscal abierto para este diario, por ejemplo." + +#. module: account_journal_lock_date +#: model_terms:ir.ui.view,arch_db:account_journal_lock_date.update_journal_lock_dates_wizard_view_form +msgid "Update" +msgstr "Actualizar" + +#. module: account_journal_lock_date +#: model:ir.actions.act_window,name:account_journal_lock_date.update_journal_lock_dates_wizard_action +msgid "Update journal lock dates" +msgstr "Actualizar fechas de bloqueo" + +#. module: account_journal_lock_date +#: code:addons/account_journal_lock_date/wizards/update_journal_lock_dates.py:20 +#, python-format +msgid "You are not allowed to execute this action." +msgstr "No está autorizado a realizar esta acción." + +#. module: account_journal_lock_date +#: code:addons/account_journal_lock_date/models/account_move.py:39 #, python-format msgid "" -"You cannot add/modify entries prior to and inclusive of the journal lock " -"date %s" +"You cannot add/modify entries for the journal '%s' prior to and inclusive of " +"the lock date %s" msgstr "" +"No puede añadir/modificar asientos para el diario '%s' con anterioridad y " +"hasta la fecha de bloqueo %s" + +#. module: account_journal_lock_date +#: code:addons/account_journal_lock_date/models/account_move.py:44 +#, python-format +msgid "" +"You cannot add/modify entries for the journal '%s' prior to and inclusive of " +"the lock date %s. Check the Journal settings or ask someone with the " +"'Adviser' role" +msgstr "" +"No puede añadir/modificar asientos para el Diario '%s' con anterioridad y " +"hasta la fecha de bloqueo %s. Compruebe la configuración del Diario o " +"pregunte a alguien con el grupo de acceso 'Asesor'" + +#~ msgid "Account Entry" +#~ msgstr "Asiento contable" diff --git a/account_journal_lock_date/models/account_journal.py b/account_journal_lock_date/models/account_journal.py index bd1cc739..958ddf68 100644 --- a/account_journal_lock_date/models/account_journal.py +++ b/account_journal_lock_date/models/account_journal.py @@ -1,22 +1,23 @@ # Copyright 2017 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import fields, models class AccountJournal(models.Model): _inherit = 'account.journal' - journal_lock_date = fields.Date( - string="Lock date", - help="Moves cannot be entered nor modified in this " - "journal prior to the lock date, unless the user " - "has the Adviser role." + fiscalyear_lock_date = fields.Date( + string="Lock Date", + help="No users, including Advisers, can edit accounts prior " + "to and inclusive of this date for this journal. Use it " + "for fiscal year locking for this journal, for example." + ) + period_lock_date = fields.Date( + string="Lock Date for Non-Advisers", + help="Only users with the 'Adviser' role can edit accounts " + "prior to and inclusive of this date for this journal. " + "Use it for period locking inside an open fiscal year " + "for this journal, for example." ) - - @api.model - def _can_bypass_journal_lock_date(self): - """ This method is meant to be overridden to provide - finer control on who can bypass the lock date """ - return self.env.user.has_group('account.group_account_manager') diff --git a/account_journal_lock_date/models/account_move.py b/account_journal_lock_date/models/account_move.py index 634b9763..ec5c780a 100644 --- a/account_journal_lock_date/models/account_move.py +++ b/account_journal_lock_date/models/account_move.py @@ -1,6 +1,7 @@ # Copyright 2017 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from datetime import date from odoo import api, models, _ from ..exceptions import JournalLockDateError @@ -23,16 +24,30 @@ class AccountMove(models.Model): self._check_lock_date() return res - @api.multi def _check_lock_date(self): - res = super(AccountMove, self)._check_lock_date() - if self.env['account.journal']._can_bypass_journal_lock_date(): + res = super()._check_lock_date() + if self.env.context.get("bypass_journal_lock_date"): return res for move in self: - lock_date = move.journal_id.journal_lock_date - if lock_date and move.date <= lock_date: - raise JournalLockDateError( - _("You cannot add/modify entries prior to and " - "inclusive of the journal lock date %s") % - (lock_date, )) + if self.user_has_groups('account.group_account_manager'): + lock_date = move.journal_id.fiscalyear_lock_date or date.min + else: + lock_date = max( + move.journal_id.period_lock_date or date.min, + move.journal_id.fiscalyear_lock_date or date.min, + ) + if move.date <= lock_date: + if self.user_has_groups('account.group_account_manager'): + message = _( + "You cannot add/modify entries for the journal '%s' " + "prior to and inclusive of the lock date %s" + ) % (move.journal_id.display_name, lock_date) + else: + message = _( + "You cannot add/modify entries for the journal '%s' " + "prior to and inclusive of the lock date %s. " + "Check the Journal settings or ask someone " + "with the 'Adviser' role" + ) % (move.journal_id.display_name, lock_date) + raise JournalLockDateError(message) return res diff --git a/account_journal_lock_date/readme/CONFIGURE.rst b/account_journal_lock_date/readme/CONFIGURE.rst new file mode 100644 index 00000000..304673ab --- /dev/null +++ b/account_journal_lock_date/readme/CONFIGURE.rst @@ -0,0 +1,8 @@ +To configure this module, you need to: + +#. Go to *Invoicing > Configuration > Journals* +#. Open a Journal and set the 'Lock Date' and the 'Lock Date for Non-Advisers' + in the' Advanced Settings' tab of the form view or select several + Journals in the list view and click on the action menu + 'Update journals lock dates' to update those dates for the selected + journals at the same time. diff --git a/account_journal_lock_date/readme/CONTRIBUTORS.rst b/account_journal_lock_date/readme/CONTRIBUTORS.rst index 21d67b3a..a644f445 100644 --- a/account_journal_lock_date/readme/CONTRIBUTORS.rst +++ b/account_journal_lock_date/readme/CONTRIBUTORS.rst @@ -8,3 +8,4 @@ * `Tecnativa `_: * Pedro M. Baeza + * Ernesto Tejeda diff --git a/account_journal_lock_date/readme/DESCRIPTION.rst b/account_journal_lock_date/readme/DESCRIPTION.rst index aa9ab76f..51cdc34e 100644 --- a/account_journal_lock_date/readme/DESCRIPTION.rst +++ b/account_journal_lock_date/readme/DESCRIPTION.rst @@ -1,12 +1,7 @@ Lock each accounting journal independently. -In addition to the lock dates provided by standard Odoo and -account_permanent_lock_move, provide a per journal lock date. +In addition to the lock dates provided by standard Odoo, this module +provides a 'Lock Date' and a 'Lock Date for Non-Advisers' per journal. -Note: this module depends on account_permanent_lock_move because it -implements stricter checks than standard Odoo, such as verifying that -one cannot create draft moves before the lock date. - -Note: the journal lock date is ignored for users that are part of -the Adviser group. This rule can be adapted by overriding method -`_can_bypass_journal_lock_date` of `account.journal`. +This module also adds a wizard that allows you to update the 'Lock Date' +and the 'Lock Date for Non-Advisers' for several Journals at the same time. diff --git a/account_journal_lock_date/readme/ROADMAP.rst b/account_journal_lock_date/readme/ROADMAP.rst index 6b1f5ba3..e1c0bfa0 100644 --- a/account_journal_lock_date/readme/ROADMAP.rst +++ b/account_journal_lock_date/readme/ROADMAP.rst @@ -1,3 +1,2 @@ -* a wizard to set the lock date on several journals could be nice to have * the module does not check that all moves prior the lock date are posted, this could be - made as part of the wizard \ No newline at end of file + made as part of the wizard diff --git a/account_journal_lock_date/readme/USAGE.rst b/account_journal_lock_date/readme/USAGE.rst new file mode 100644 index 00000000..4e0e74e9 --- /dev/null +++ b/account_journal_lock_date/readme/USAGE.rst @@ -0,0 +1,7 @@ +If the logged-in user has the access group 'Adviser', he/she will +not be able to create a journal entry if the 'Lock Date' of the +journal is greater than or equal to the journal entry. + +If the logged-in user has not the access group 'Adviser', he/she will +not be able to create a journal entry if the 'Lock Date for Non-Advisers' +of the journal is greater than or equal to the journal entry. diff --git a/account_journal_lock_date/static/description/index.html b/account_journal_lock_date/static/description/index.html index edd7d242..d719f421 100644 --- a/account_journal_lock_date/static/description/index.html +++ b/account_journal_lock_date/static/description/index.html @@ -3,7 +3,7 @@ - + Account Journal Lock Date