[FIX]: Changes in the form to work as a real wizard.

[FIX]: Remove 'init_xml' keys, because it's no longer needed in v7.
[FIX]: Rename 'demo_xml' key to the new standard 'demo'.
[FIX]: Rename menu entry to "Renumber journal entries".
[FIX]: Change imports calls.
[FIX]: Remove __author__ variables in files, because authors are put on manifest file (__openerp__.py).
[FIX]: Increased compatibility with standard PEP8.
[FIX]: Delete test folder. On the next review I'll be able to create with YAML.
[IMP]:In selecting these come peridos sorted correctly. I modified the code to renumber the entries from period to period with this order.
This commit is contained in:
Joaquin Gutierrez
2013-09-26 18:50:10 +02:00
parent 2772cbc918
commit c96022bb1a
7 changed files with 154 additions and 208 deletions

View File

@@ -23,6 +23,5 @@
"""
Account renumber wizard
"""
__author__ = "Borja López Soilán (Pexego) - borjals@pexego.es"
import wizard

View File

@@ -45,12 +45,9 @@ It will recreate the sequence number of each account move using their journal se
""",
"license" : "AGPL-3",
"depends" : [
'base',
'account',
],
"init_xml" : [
],
"demo_xml" : [],
"demo" : [],
"data": [
'wizard/wizard_renumber_view.xml',
],

View File

@@ -5,143 +5,129 @@
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0-20130902-231053\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2013-09-24 10:12+0000\n"
"PO-Revision-Date: 2013-09-24 10:12+0000\n"
"Last-Translator: Joaquin Gutierrez<joaquin@gutierrezweb.es>\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-26 16:17+0000\n"
"PO-Revision-Date: 2013-09-26 16: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: 8bit\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_renumber
#: selection:wizard.renumber,state:0
msgid "Renumbering"
msgstr "Renumbering"
msgstr ""
#. module: account_renumber
#: help:wizard.renumber,period_ids:0
msgid "Fiscal periods to renumber"
msgstr "Fiscal periods to renumber"
msgstr ""
#. module: account_renumber
#: model:ir.actions.act_window,name:account_renumber.action_account_renumber
#: model:ir.ui.menu,name:account_renumber.menu_account_renumber
msgid "Renumber journal entries"
msgstr ""
#. module: account_renumber
#: field:wizard.renumber,number_next:0
msgid "First Number"
msgstr "First Number"
msgstr ""
#. module: account_renumber
#: field:wizard.renumber,state:0
msgid "unknown"
msgstr "unknown"
#. module: account_renumber
#: view:wizard.renumber:0
msgid "Show Results"
msgstr "Show Results"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "Renumber"
msgstr "Renumber"
#. module: account_renumber
#: view:wizard.renumber:0
msgid "You may now review them using the show results button."
msgstr "You may now review them using the show results button."
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
#: field:wizard.renumber,journal_ids:0
msgid "Journals"
msgstr "Journals"
#. module: account_renumber
#: code:addons/account_renumber/wizard/wizard_renumber.py:178
#, python-format
msgid "Wizard successfully executed "
msgstr "Wizard successfully executed "
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "Journals and periods to consider"
msgstr "Journals and periods to consider"
msgstr ""
#. module: account_renumber
#: selection:wizard.renumber,state:0
msgid "Initial"
msgstr "Initial"
msgstr ""
#. module: account_renumber
#: help:wizard.renumber,journal_ids:0
msgid "Journals to renumber"
msgstr "Journals to renumber"
msgstr ""
#. module: account_renumber
#: model:ir.actions.act_window,name:account_renumber.action_account_renumber
#: model:ir.ui.menu,name:account_renumber.menu_account_renumber
#: view:wizard.renumber:0
msgid "Renumber Account Moves"
msgstr "Renumber Account Moves"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "Posted moves from those journals will be sorted by date and then assigned sequential numbers using their journal sequence."
msgstr "Posted moves from those journals will be sorted by date and then assigned sequential numbers using their journal sequence."
#: code:addons/account_renumber/wizard/wizard_renumber.py:197
#, python-format
msgid "Renumbered account moves"
msgstr ""
#. module: account_renumber
#: model:ir.model,name:account_renumber.model_wizard_renumber
msgid "wizard.renumber"
msgstr "wizard.renumber"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "The moves of the selected journals and periods have been renumbered."
msgstr "The moves of the selected journals and periods have been renumbered."
#: code:addons/account_renumber/wizard/wizard_renumber.py:139
#, python-format
msgid "No Data Available"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "General Data"
msgstr "General Data"
msgstr ""
#. module: account_renumber
#: code:addons/account_renumber/wizard/wizard_renumber.py:209
#, python-format
msgid "Renumbered account moves"
msgstr "Renumbered account moves"
#: view:wizard.renumber:0
msgid "This wizard will help you renumber entries in one or more journals."
msgstr ""
#. module: account_renumber
#: code:addons/account_renumber/wizard/wizard_renumber.py:129
#: code:addons/account_renumber/wizard/wizard_renumber.py:137
#, python-format
msgid "No Data Available"
msgstr "No Data Available"
#: view:wizard.renumber:0
msgid "sequential numbers using their journal sequence."
msgstr ""
#. module: account_renumber
#: code:addons/account_renumber/wizard/wizard_renumber.py:129
#: code:addons/account_renumber/wizard/wizard_renumber.py:137
#: code:addons/account_renumber/wizard/wizard_renumber.py:140
#, python-format
msgid "No records found for your selection!"
msgstr "No records found for your selection!"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "Posted moves from those journals will be sorted by date and then assigned"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
#: field:wizard.renumber,period_ids:0
msgid "Periods"
msgstr "Periods"
msgstr ""
#. module: account_renumber
#: view:wizard.renumber:0
msgid "Cancel"
msgstr "Cancel"
#. module: account_renumber
#: view:wizard.renumber:0
msgid "This wizard will help you renumber one or more journals."
msgstr "This wizard will help you renumber one or more journals."
msgstr ""
#. module: account_renumber
#: help:wizard.renumber,number_next:0
msgid "Journal sequences will start counting on this number"
msgstr "Journal sequences will start counting on this number"
msgstr ""

View File

@@ -7,15 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-24 10:12+0000\n"
"PO-Revision-Date: 2013-09-24 12:19+0100\n"
"PO-Revision-Date: 2013-09-24 12:21+0100\n"
"Last-Translator: Joaquin Gutierrez <joaquing.pedrosa@gmail.com>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:55+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"Plural-Forms: \n"
#. module: account_renumber
#: selection:wizard.renumber,state:0

View File

@@ -23,7 +23,7 @@
"""
Account renumber wizard
"""
__author__ = "Borja López Soilán (Pexego) - borjals@pexego.es"
import wizard_renumber

View File

@@ -23,11 +23,9 @@
"""
Account renumber wizard
"""
__author__ = ["Borja López Soilán (Pexego)",
"Omar Castiñeira Saavedra (Pexego)"]
from openerp.osv import fields, orm
from openerp.osv import fields
from openerp.osv import orm
from openerp.tools.translate import _
from datetime import datetime
import logging
@@ -36,13 +34,22 @@ import time
class wizard_renumber(orm.TransientModel):
_name = "wizard.renumber"
_columns = {
'journal_ids': fields.many2many('account.journal', 'account_journal_wzd_renumber_rel',
'wizard_id', 'journal_id', required=True, help="Journals to renumber", string="Journals"),
'period_ids': fields.many2many('account.period', 'account_period_wzd_renumber_rel', 'wizard_id', 'period_id', required=True,
help='Fiscal periods to renumber', string="Periods", ondelete='null'),
'number_next': fields.integer('First Number', required=True, help="Journal sequences will start counting on this number"),
'state': fields.selection([('init', 'Initial'), ('renumber', 'Renumbering')], readonly=True)
'journal_ids': fields.many2many('account.journal', 'account_journal_wzd_renumber_rel',
'wizard_id', 'journal_id',
required=True,
help="Journals to renumber",
string="Journals"),
'period_ids': fields.many2many('account.period', 'account_period_wzd_renumber_rel',
'wizard_id', 'period_id',
required=True,
help='Fiscal periods to renumber',
string="Periods", ondelete='null'),
'number_next': fields.integer('First Number', required=True,
help="Journal sequences will start counting on this number"),
'state': fields.selection([
('init', 'Initial'),
('renumber', 'Renumbering')
], readonly=True)
}
_defaults = {
@@ -82,10 +89,17 @@ class wizard_renumber(orm.TransientModel):
and sufix processing. We will use the given date instead.
"""
try:
cr.execute('SELECT id, number_next, prefix, suffix, padding FROM ir_sequence WHERE ' + test + ' AND active=%s FOR UPDATE', (sequence_id, True))
cr.execute(
'SELECT id, number_next, prefix, suffix, padding \
FROM ir_sequence \
WHERE ' + test + ' AND active=%s FOR UPDATE',
(sequence_id, True))
res = cr.dictfetchone()
if res:
cr.execute('UPDATE ir_sequence SET number_next=number_next+number_increment WHERE id=%s AND active=%s', (res['id'], True))
cr.execute(
'UPDATE ir_sequence SET number_next=number_next+number_increment \
WHERE id=%s AND active=%s',
(res['id'], True))
if res['number_next']:
return self._process(res['prefix'], date_to_use=date_to_use) + '%%0%sd' % res['padding'] % res['number_next'] + self._process(res['suffix'], date_to_use=date_to_use)
else:
@@ -104,12 +118,13 @@ class wizard_renumber(orm.TransientModel):
res = cr.dictfetchone()
if res:
seq_facade = self.pool.get('ir.sequence')
for line in seq_facade.browse(cr, uid, res['id'], context=context).fiscal_ids:
for line in seq_facade.browse(cr, uid, res['id'],
context=context).fiscal_ids:
if line.fiscalyear_id.id == fiscalyear_id:
return line.sequence_id.id
return sequence_id
############################################################################
##########################################################################
# Renumber form/action
##########################################################################
@@ -126,83 +141,62 @@ class wizard_renumber(orm.TransientModel):
number_next = obj.number_next or 1
if not (period_ids and journal_ids):
raise orm.except_orm(_('No Data Available'), _(
'No records found for your selection!'))
raise orm.except_orm(
_('No Data Available'),
_('No records found for your selection!'))
logger.debug("Searching for account moves to renumber.")
move_facade = self.pool.get('account.move')
move_ids = move_facade.search(cr, uid, [('journal_id', 'in', journal_ids), ('period_id', 'in', period_ids), ('state', '=', 'posted')], limit=0, order='date,id', context=context)
if len(move_ids) == 0:
raise orm.except_orm(_('No Data Available'), _(
'No records found for your selection!'))
sequences_seen = []
logger.debug("Renumbering %d account moves." % len(move_ids))
for move in move_facade.browse(cr, uid, move_ids):
#
# Get the sequence to use for this move.
# Note: We will use the journal's sequence or one of its
# children (if it has children sequences per fiscalyear)
#
sequence_id = self.get_sequence_id_for_fiscalyear_id(cr, uid,
sequence_id=move.journal_id.sequence_id.id,
fiscalyear_id=move.period_id.fiscalyear_id.id)
if not sequence_id in sequences_seen:
# First time we see this sequence, reset it
self.pool.get('ir.sequence').write(
cr, uid, [sequence_id], {'number_next': number_next})
sequences_seen.append(sequence_id)
#
# Generate (using our own get_id) and write the new move number.
#
date_to_use = datetime.strptime(move.date, '%Y-%m-%d')
new_name = self.get_id(cr, uid, sequence_id,
context=context, date_to_use=date_to_use)
# Note: We can't just do a
# "move_facade.write(cr, uid, [move.id], {'name': new_name})"
# cause it might raise a "You can't do this modification on a confirmed entry"
# exception.
cr.execute('UPDATE account_move SET name=%s WHERE id=%s',
(new_name, move.id))
logger.debug("%d account moves renumbered." % len(move_ids))
for period in period_ids:
move_ids = move_facade.search(
cr,
uid,
[
('journal_id', 'in', journal_ids),
('period_id', '=', period),
('state', '=', 'posted')],
limit=0, order='date,id',
context=context)
if len(move_ids) == 0:
continue
for move in move_facade.browse(cr, uid, move_ids):
sequence_id = self.get_sequence_id_for_fiscalyear_id(
cr,
uid,
sequence_id=move.journal_id.sequence_id.id,
fiscalyear_id=move.period_id.fiscalyear_id.id)
if not sequence_id in sequences_seen:
self.pool.get('ir.sequence').write(
cr,
uid,
[sequence_id],
{'number_next': number_next})
sequences_seen.append(sequence_id)
#
# Generate (using our own get_id) and write the new move number
#
date_to_use = datetime.strptime(move.date, '%Y-%m-%d')
new_name = self.get_id(cr, uid, sequence_id,
context=context, date_to_use=date_to_use)
# Note: We can't just do a
# "move_facade.write(cr, uid, [move.id], {'name': new_name})"
# cause it might raise a
#"You can't do this modification on a confirmed entry"
# exception.
cr.execute('UPDATE account_move SET name=%s WHERE id=%s',
(new_name, move.id))
logger.debug("%d account moves renumbered." % len(move_ids))
logger.debug("Renumbering %d account moves." % len(move_ids))
sequences_seen = []
obj.write({'state': 'renumber'})
view_wizard = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_renumber', 'view_account_renumber_form')
view_wizard_id = view_wizard and view_wizard[1] or False,
res = {
'type': 'ir.actions.act_window',
'name': _("Wizard successfully executed "),
'res_model': 'wizard.renumber',
'view_type': 'form',
'view_mode': 'form',
'res_id': obj.id,
'view_id': view_wizard_id,
'context': context,
'target': 'current',
}
return res
############################################################################
# Show results action
##########################################################################
def show_results(self, cr, uid, ids, context):
"""
Action that shows the list of (non-draft) account moves from
the selected journals and periods, so the user can review
the renumbered account moves.
"""
obj = self.browse(cr, uid, ids[0])
period_ids = [x.id for x in obj.period_ids]
journal_ids = [x.id for x in obj.journal_ids]
assert (period_ids and journal_ids)
view_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'view_move_tree')
view_ref = self.pool.get('ir.model.data').get_object_reference(
cr,
uid,
'account',
'view_move_tree')
view_id = view_ref and view_ref[1] or False,
res = {
'type': 'ir.actions.act_window',

View File

@@ -5,71 +5,42 @@
<record id="view_account_renumber_form" model="ir.ui.view">
<field name="name">account_renumber.form</field>
<field name="model">wizard.renumber</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Renumber Account Moves" version="7.0">
<header>
<button special="cancel" string="Cancel"
attrs="{'invisible': [('state', '!=', 'init')]}" />
<button name="renumber" string="Renumber" states="init"
type="object" class="oe_highlight" />
<button name="show_results" string="Show Results" states="renumber"
type="object" />
</header>
<sheet>
<group string="General Data" attrs="{'invisible': [('state', '!=', 'init')]}">
<field name="number_next" attrs="{'invisible': [('state', '!=', 'init')]}" />
</group>
<group attrs="{'invisible': [('state', '!=', 'init')]}">
<label string="This wizard will help you renumber one or more journals."
colspan="4" />
<label
string="Posted moves from those journals will be sorted by date and then assigned sequential numbers using their journal sequence."
colspan="4" />
<newline />
<group string="Journals and periods to consider">
<notebook colspan="4">
<page string="Journals">
<field name="journal_ids" editable="top"
attrs="{'invisible': [('state', '!=', 'init')]}" />
</page>
<page string="Periods">
<field name="period_ids" editable="top"
attrs="{'invisible': [('state', '!=', 'init')]}" />
</page>
</notebook>
</group>
</group>
<group string="" colspan="4"
attrs="{'invisible': [('state', '=', 'init')]}">
<h1>
<label
string="The moves of the selected journals and periods have been renumbered."
colspan="4" />
</h1>
<label string="" colspan="4" />
<h2>
<label string="You may now review them using the show results button."
colspan="4" />
</h2>
</group>
<field name="state" invisible="1" />
</sheet>
<field name="state" invisible="1" />
<p>This wizard will help you renumber entries in one or more journals.</p>
<p>Posted moves from those journals will be sorted by date and then assigned</p>
<p>sequential numbers using their journal sequence.</p>
<group string="General Data">
<field name="number_next"/>
</group>
<group string="Journals and periods to consider">
<notebook colspan="4">
<page string="Journals">
<field name="journal_ids" editable="top"/>
</page>
<page string="Periods">
<field name="period_ids" editable="top"/>
</page>
</notebook>
</group>
<footer>
<div states="init">
<button special="cancel" string="Cancel"/>
<button name="renumber" string="Renumber" type="object" class="oe_highlight"/>
</div>
</footer>
</form>
</field>
</record>
<record id="action_account_renumber" model="ir.actions.act_window">
<field name="name">Renumber Account Moves</field>
<field name="name">Renumber journal entries</field>
<field name="res_model">wizard.renumber</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_account_renumber_form" />
<!-- <field name="target">new</field> -->
</record>
<menuitem id="menu_account_renumber" parent="account.menu_account_end_year_treatments"
action="action_account_renumber" groups="base.group_system" sequence="-1" />