diff --git a/account_move_batch_validate/__init__.py b/account_move_batch_validate/__init__.py
new file mode 100644
index 000000000..df1a591bd
--- /dev/null
+++ b/account_move_batch_validate/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+# #
+# Author: Leonardo Pistone
+# Copyright 2014 Camptocamp SA
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see . #
+# #
+###############################################################################
+"""Account Move Batch Validate."""
+
+from . import account # noqa
+from . import wizard # noqa
diff --git a/account_move_batch_validate/__openerp__.py b/account_move_batch_validate/__openerp__.py
index 56ef8cea6..14c18ad64 100644
--- a/account_move_batch_validate/__openerp__.py
+++ b/account_move_batch_validate/__openerp__.py
@@ -20,7 +20,7 @@
###############################################################################
{
'name': "Account Move Batch Validate",
- 'version': '0.1',
+ 'version': '0.2',
'author': 'Camptocamp',
'maintainer': 'Camptocamp',
'category': 'Finance',
@@ -73,6 +73,7 @@
'test': [
'test/batch_validate.yml',
'test/batch_validate_then_unmark.yml',
+ 'test/batch_validate_then_delete_move.yml',
],
'installable': False,
'images': [],
diff --git a/account_move_batch_validate/account.py b/account_move_batch_validate/account.py
index 12b9653f3..622cf9314 100644
--- a/account_move_batch_validate/account.py
+++ b/account_move_batch_validate/account.py
@@ -74,6 +74,12 @@ class account_move(orm.Model):
# maybe not creating too many dictionaries will make us a bit faster
values = {'post_job_uuid': None}
+ _logger.info(
+ u'{0} jobs for posting moves have been created.'.format(
+ len(move_ids)
+ )
+ )
+
for move_id in move_ids:
job_uuid = validate_one_move.delay(session, name, move_id,
eta=eta)
@@ -140,9 +146,12 @@ class account_move(orm.Model):
@job
def validate_one_move(session, model_name, move_id):
"""Validate a move, and leave the job reference in place."""
-
- session.pool['account.move'].button_validate(
- session.cr,
- session.uid,
- [move_id]
- )
+ move_pool = session.pool['account.move']
+ if move_pool.exists(session.cr, session.uid, [move_id]):
+ move_pool.button_validate(
+ session.cr,
+ session.uid,
+ [move_id]
+ )
+ else:
+ return _(u'Nothing to do because the record has been deleted')
diff --git a/account_move_batch_validate/account_view.xml b/account_move_batch_validate/account_view.xml
new file mode 100644
index 000000000..1f5a60af9
--- /dev/null
+++ b/account_move_batch_validate/account_view.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+ view.move.to_post.tree
+ account.move
+
+
+
+
+
+
+
+
+
+ view.move.to_post.form
+ account.move
+
+
+
+
+
+
+
+
+
+
diff --git a/account_move_batch_validate/i18n/account_move_batch_validate.pot b/account_move_batch_validate/i18n/account_move_batch_validate.pot
new file mode 100644
index 000000000..d979d1c72
--- /dev/null
+++ b/account_move_batch_validate/i18n/account_move_batch_validate.pot
@@ -0,0 +1,191 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_move_batch_validate
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-01-17 14:17+0000\n"
+"PO-Revision-Date: 2014-01-17 14:17+0000\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_move_batch_validate
+#: field:account.move,post_job_uuid:0
+msgid "UUID of the Job to approve this move"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: help:account.move,to_post:0
+msgid "Check this box to mark the move for batch posting"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: code:addons/account_move_batch_validate/account.py:95
+#, python-format
+msgid "Task set to Done because the user unmarked the move"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Mark"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,action:0
+msgid "Unmark for posting"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move,to_post:0
+msgid "To Post"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,company_id:0
+msgid "Company"
+msgstr "Société"
+
+#. module: account_move_batch_validate
+#: model:ir.actions.act_window,name:account_move_batch_validate.action_account_move_marker
+#: model:ir.ui.menu,name:account_move_batch_validate.menu_account_move_marker
+msgid "Mark Journal Items for Batch Posting"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,filter:0
+msgid "Date"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,chart_account_id:0
+msgid "Chart of Account"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+#: field:account.move.marker,journal_ids:0
+msgid "Journals"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,target_move:0
+msgid "Target Moves"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Report Options"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+#: selection:account.move.marker,filter:0
+msgid "Periods"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,date_to:0
+msgid "End Date"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Dates"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,period_from:0
+msgid "Start Period"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,eta:0
+msgid "Seconds to wait before starting the jobs"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,target_move:0
+msgid "All Posted Entries"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: help:account.move.marker,fiscalyear_id:0
+msgid "Keep empty for all open fiscal year"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,period_to:0
+msgid "End Period"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,fiscalyear_id:0
+msgid "Fiscal Year"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,filter:0
+msgid "No Filters"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,action:0
+msgid "Action"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: model:ir.model,name:account_move_batch_validate.model_account_move
+msgid "Account Entry"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,action:0
+msgid "Mark for posting"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: model:ir.model,name:account_move_batch_validate.model_account_move_marker
+msgid "Mark Journal Items for batch posting"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Filters"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Cancel"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,date_from:0
+msgid "Start Date"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: help:account.move.marker,chart_account_id:0
+msgid "Select Charts of Accounts"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,filter:0
+msgid "Filter by"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "or"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,target_move:0
+msgid "All Entries"
+msgstr ""
+
diff --git a/account_move_batch_validate/i18n/fr.po b/account_move_batch_validate/i18n/fr.po
new file mode 100644
index 000000000..31d4a7f67
--- /dev/null
+++ b/account_move_batch_validate/i18n/fr.po
@@ -0,0 +1,192 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_move_batch_validate
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-01-17 14:17+0000\n"
+"PO-Revision-Date: 2014-02-24 05:21+0000\n"
+"Last-Translator: Leonardo Pistone - camptocamp "
+"\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-06-12 06:31+0000\n"
+"X-Generator: Launchpad (build 17041)\n"
+
+#. module: account_move_batch_validate
+#: field:account.move,post_job_uuid:0
+msgid "UUID of the Job to approve this move"
+msgstr "UUID du Job pour approuver cette move"
+
+#. module: account_move_batch_validate
+#: help:account.move,to_post:0
+msgid "Check this box to mark the move for batch posting"
+msgstr "Check this box to mark the move for batch posting"
+
+#. module: account_move_batch_validate
+#: code:addons/account_move_batch_validate/account.py:95
+#, python-format
+msgid "Task set to Done because the user unmarked the move"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Mark"
+msgstr "Mark"
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,action:0
+msgid "Unmark for posting"
+msgstr "Unmark for posting"
+
+#. module: account_move_batch_validate
+#: field:account.move,to_post:0
+msgid "To Post"
+msgstr "Validation demandée"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,company_id:0
+msgid "Company"
+msgstr "Société"
+
+#. module: account_move_batch_validate
+#: model:ir.actions.act_window,name:account_move_batch_validate.action_account_move_marker
+#: model:ir.ui.menu,name:account_move_batch_validate.menu_account_move_marker
+msgid "Mark Journal Items for Batch Posting"
+msgstr ""
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,filter:0
+msgid "Date"
+msgstr "Date"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,chart_account_id:0
+msgid "Chart of Account"
+msgstr "Plan Comptable"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+#: field:account.move.marker,journal_ids:0
+msgid "Journals"
+msgstr "Journaux"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,target_move:0
+msgid "Target Moves"
+msgstr "Target Moves"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Report Options"
+msgstr "Report Options"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+#: selection:account.move.marker,filter:0
+msgid "Periods"
+msgstr "Periods"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,date_to:0
+msgid "End Date"
+msgstr "End Date"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Dates"
+msgstr "Dates"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,period_from:0
+msgid "Start Period"
+msgstr "Période de debut"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,eta:0
+msgid "Seconds to wait before starting the jobs"
+msgstr "Seconds to wait before starting the jobs"
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,target_move:0
+msgid "All Posted Entries"
+msgstr "Toutes les écritures passées"
+
+#. module: account_move_batch_validate
+#: help:account.move.marker,fiscalyear_id:0
+msgid "Keep empty for all open fiscal year"
+msgstr "Keep empty for all open fiscal year"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,period_to:0
+msgid "End Period"
+msgstr "Période de fin"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,fiscalyear_id:0
+msgid "Fiscal Year"
+msgstr "Exercice"
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,filter:0
+msgid "No Filters"
+msgstr "Aucun filtre"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,action:0
+msgid "Action"
+msgstr "Action"
+
+#. module: account_move_batch_validate
+#: model:ir.model,name:account_move_batch_validate.model_account_move
+msgid "Account Entry"
+msgstr "Pièce comptable"
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,action:0
+msgid "Mark for posting"
+msgstr "Sélectionner pour validation"
+
+#. module: account_move_batch_validate
+#: model:ir.model,name:account_move_batch_validate.model_account_move_marker
+msgid "Mark Journal Items for batch posting"
+msgstr "Sélectionner Ecritures comptables à Valider en batch"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Filters"
+msgstr "Filtres"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,date_from:0
+msgid "Start Date"
+msgstr "Date de début"
+
+#. module: account_move_batch_validate
+#: help:account.move.marker,chart_account_id:0
+msgid "Select Charts of Accounts"
+msgstr "Sélectionner Plan Comptable"
+
+#. module: account_move_batch_validate
+#: field:account.move.marker,filter:0
+msgid "Filter by"
+msgstr "Filtrer par"
+
+#. module: account_move_batch_validate
+#: view:account.move.marker:0
+msgid "or"
+msgstr "ou"
+
+#. module: account_move_batch_validate
+#: selection:account.move.marker,target_move:0
+msgid "All Entries"
+msgstr "Toutes les écritures"
diff --git a/account_move_batch_validate/test/batch_validate.yml b/account_move_batch_validate/test/batch_validate.yml
new file mode 100644
index 000000000..e129914fa
--- /dev/null
+++ b/account_move_batch_validate/test/batch_validate.yml
@@ -0,0 +1,49 @@
+-
+ I create a move
+-
+ !record {model: account.move, id: move1}:
+ journal_id: account.sales_journal
+ line_id:
+ - name: Receivable line
+ account_id: account.a_recv
+ debit: 1000.0
+ - name: Sales line
+ account_id: account.a_sale
+ credit: 1000.0
+-
+ I check that the move is still draft
+-
+ !assert {model: account.move, id: move1}:
+ - state == 'draft'
+-
+ I create a wizard
+-
+ !record {model: account.move.marker, id: wiz_marker1}:
+ action: mark
+-
+ I run the wizard
+-
+ !python {model: account.move.marker}: |
+ context['automated_test_execute_now'] = True
+ self.button_mark(
+ cr, uid, [ref('wiz_marker1')], context=context
+ )
+-
+ I read the UUID from the move, I dequeue the job and run it
+-
+ !python {model: account.move}: |
+ from openerp.addons.connector.queue.job import OpenERPJobStorage
+ from openerp.addons.connector.session import ConnectorSession
+
+ move = self.browse(cr, uid, ref('move1'), context=context)
+ uuid = move.post_job_uuid
+ session = ConnectorSession(cr, uid, context=context)
+ storage = OpenERPJobStorage(session)
+
+ myjob = storage.load(uuid)
+ myjob.perform(session)
+-
+ I check that the move is now approved
+-
+ !assert {model: account.move, id: move1}:
+ - state == 'posted'
diff --git a/account_move_batch_validate/test/batch_validate_then_delete_move.yml b/account_move_batch_validate/test/batch_validate_then_delete_move.yml
index be8389fd5..c7f1d7400 100644
--- a/account_move_batch_validate/test/batch_validate_then_delete_move.yml
+++ b/account_move_batch_validate/test/batch_validate_then_delete_move.yml
@@ -25,6 +25,7 @@
I run the wizard
-
!python {model: account.move.marker}: |
+ context['automated_test_execute_now'] = True
self.button_mark(
cr, uid, [ref('wiz_marker4')], context=context
)
diff --git a/account_move_batch_validate/test/batch_validate_then_unmark.yml b/account_move_batch_validate/test/batch_validate_then_unmark.yml
new file mode 100644
index 000000000..adf395107
--- /dev/null
+++ b/account_move_batch_validate/test/batch_validate_then_unmark.yml
@@ -0,0 +1,63 @@
+-
+ I create a move
+-
+ !record {model: account.move, id: move2}:
+ journal_id: account.sales_journal
+ line_id:
+ - name: Receivable line
+ account_id: account.a_recv
+ debit: 2000.0
+ - name: Sales line
+ account_id: account.a_sale
+ credit: 2000.0
+-
+ I check that the move is still draft
+-
+ !assert {model: account.move, id: move2}:
+ - state == 'draft'
+-
+ I create a wizard with a long ETA
+-
+ !record {model: account.move.marker, id: wiz_marker2}:
+ action: mark
+ eta: 10000
+-
+ I run the wizard
+-
+ !python {model: account.move.marker}: |
+ context['automated_test_execute_now'] = True
+ self.button_mark(
+ cr, uid, [ref('wiz_marker2')], context=context
+ )
+-
+ Now I change my mind and I create a wizard to unmark the moves
+-
+ !record {model: account.move.marker, id: wiz_unmarker3}:
+ action: unmark
+-
+ I run the wizard
+-
+ !python {model: account.move.marker}: |
+ self.button_mark(
+ cr, uid, [ref('wiz_unmarker3')], context=context
+ )
+-
+ Now I checked that my job is done, and the move is still draft
+-
+ !python {model: account.move}: |
+ from openerp.addons.connector.queue.job import OpenERPJobStorage
+ from openerp.addons.connector.session import ConnectorSession
+
+ session = ConnectorSession(cr, uid, context=context)
+ storage = OpenERPJobStorage(session)
+
+ move = self.browse(cr, uid, ref('move2'), context=context)
+ myjob = storage.load(move.post_job_uuid)
+ assert myjob.state == 'done', 'Job is in state {0}, should be done'.format(
+ myjob.state
+ )
+-
+ I check that the move is still draft
+-
+ !assert {model: account.move, id: move2}:
+ - state == 'draft'
diff --git a/account_move_batch_validate/wizard/__init__.py b/account_move_batch_validate/wizard/__init__.py
new file mode 100644
index 000000000..f13b63cb0
--- /dev/null
+++ b/account_move_batch_validate/wizard/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+# #
+# Author: Leonardo Pistone
+# Copyright 2014 Camptocamp SA
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see . #
+# #
+###############################################################################
+"""Wizard to mark account moves for batch posting."""
+from . import move_marker # noqa
diff --git a/account_move_batch_validate/wizard/move_marker.py b/account_move_batch_validate/wizard/move_marker.py
new file mode 100644
index 000000000..c018bf190
--- /dev/null
+++ b/account_move_batch_validate/wizard/move_marker.py
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+# #
+# Author: Leonardo Pistone
+# Copyright 2014 Camptocamp SA
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see . #
+# #
+###############################################################################
+"""Wizards for batch posting."""
+
+from openerp.osv import fields, orm
+from openerp.addons.connector.session import ConnectorSession
+from openerp.addons.connector.queue.job import job
+
+
+class AccountMoveMarker(orm.TransientModel):
+
+ """Wizard to mark account moves for batch posting."""
+
+ _name = "account.move.marker"
+ _inherit = "account.common.report"
+ _description = "Mark Journal Items for batch posting"
+
+ _columns = {
+ 'action': fields.selection([
+ ('mark', 'Mark for posting'),
+ ('unmark', 'Unmark for posting'),
+ ], "Action", required=True),
+ 'eta': fields.integer('Seconds to wait before starting the jobs')
+ }
+
+ _defaults = {
+ 'action': 'mark',
+ }
+
+ def button_mark(self, cr, uid, ids, context=None):
+ """Create a single job that will create one job per move.
+
+ Return action.
+
+ """
+ session = ConnectorSession(cr, uid, context=context)
+ for wizard_id in ids:
+ # to find out what _classic_write does, read the documentation.
+ wizard_data = self.read(cr, uid, wizard_id, context=context,
+ load='_classic_write')
+ wizard_data.pop('id')
+
+ if context.get('automated_test_execute_now'):
+ process_wizard(session, self._name, wizard_data)
+ else:
+ process_wizard.delay(session, self._name, wizard_data)
+
+ return {'type': 'ir.actions.act_window_close'}
+
+ def process_wizard(self, cr, uid, ids, context=None):
+ """Choose the correct list of moves to mark and then validate."""
+ for wiz in self.browse(cr, uid, ids, context=context):
+
+ move_obj = self.pool['account.move']
+
+ domain = [('state', '=', 'draft')]
+
+ if wiz.filter == 'filter_period':
+ period_pool = self.pool['account.period']
+ period_ids = period_pool.search(cr, uid, [
+ ('date_start', '>=', wiz.period_from.date_start),
+ ('date_stop', '<=', wiz.period_to.date_stop),
+ ], context=context)
+
+ domain.append((
+ 'period_id',
+ 'in',
+ period_ids
+ ))
+ elif wiz.filter == 'filter_date':
+ domain += [
+ ('date', '>=', wiz.date_from),
+ ('date', '<=', wiz.date_to),
+ ]
+
+ if wiz.journal_ids:
+ domain.append((
+ 'journal_id',
+ 'in',
+ [journal.id for journal in wiz.journal_ids]
+ ))
+
+ move_ids = move_obj.search(cr, uid, domain, context=context)
+
+ if wiz.action == 'mark':
+ move_obj.mark_for_posting(cr, uid, move_ids, eta=wiz.eta,
+ context=context)
+
+ elif wiz.action == 'unmark':
+ move_obj.unmark_for_posting(cr, uid, move_ids, context=context)
+
+
+@job
+def process_wizard(session, model_name, wizard_data):
+ """Create jobs to validate Journal Entries."""
+
+ wiz_obj = session.pool[model_name]
+ new_wiz_id = wiz_obj.create(
+ session.cr,
+ session.uid,
+ wizard_data,
+ session.context
+ )
+
+ wiz_obj.process_wizard(
+ session.cr,
+ session.uid,
+ ids=[new_wiz_id],
+ context=session.context,
+ )
diff --git a/account_move_batch_validate/wizard/move_marker_view.xml b/account_move_batch_validate/wizard/move_marker_view.xml
new file mode 100644
index 000000000..3f1b0ab51
--- /dev/null
+++ b/account_move_batch_validate/wizard/move_marker_view.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+ Mark Jornal Items for Batch Posting
+ account.move.marker
+
+
+
+
+
+
+ Mark Jornal Items for Batch Posting
+ ir.actions.act_window
+ account.move.marker
+ form
+ form
+ new
+
+
+
+
+
+
+