diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py
index d3a58272b89..09e51486ad2 100644
--- a/addons/account/__openerp__.py
+++ b/addons/account/__openerp__.py
@@ -127,6 +127,7 @@ module named account_vouchers
'board_account_demo.xml',
],
'test': [
+ 'test/account_sequence_test.yml',
'test/account_customer_invoice.yml',
'test/account_supplier_invoice.yml',
'test/account_change_currency.yml',
diff --git a/addons/account/invoice.py b/addons/account/invoice.py
index e2700a4e4b1..f3b62f0fd27 100644
--- a/addons/account/invoice.py
+++ b/addons/account/invoice.py
@@ -924,12 +924,20 @@ class account_invoice(osv.osv):
move_id = obj_inv.move_id and obj_inv.move_id.id or False
reference = obj_inv.reference
if not number:
- if obj_inv.journal_id.invoice_sequence_id:
- sid = obj_inv.journal_id.invoice_sequence_id.id
- number = self.pool.get('ir.sequence').get_id(cr, uid, sid, 'id', {'fiscalyear_id': obj_inv.period_id.fiscalyear_id.id})
+ tmp_context = {
+ 'fiscalyear_id': inv.period_id.fiscalyear_id.id
+ }
+ if inv.journal_id.invoice_sequence_id:
+ sequence_id = inv.journal_id.invoice_sequence_id.id
+ number = self.pool.get('ir.sequence').get_id(cr, uid,
+ sequence_id,
+ 'id',
+ context=tmp_context)
else:
- number = self.pool.get('ir.sequence').get(cr, uid,
- 'account.invoice.' + invtype)
+ number = self.pool.get('ir.sequence').get_id(cr, uid,
+ 'account.invoice.%s' % invtype,
+ 'code',
+ context=tmp_context)
if invtype in ('in_invoice', 'in_refund'):
ref = reference
else:
diff --git a/addons/account/sequence.py b/addons/account/sequence.py
index c90e9ef93c7..b75e7f3e34e 100644
--- a/addons/account/sequence.py
+++ b/addons/account/sequence.py
@@ -19,19 +19,23 @@
#
##############################################################################
-from osv import fields,osv
+from osv import fields, osv
class ir_sequence_fiscalyear(osv.osv):
_name = 'account.sequence.fiscalyear'
_rec_name = "sequence_main_id"
_columns = {
- "sequence_id": fields.many2one("ir.sequence", 'Sequence', required=True, ondelete='cascade'),
- "sequence_main_id": fields.many2one("ir.sequence", 'Main Sequence', required=True, ondelete='cascade'),
- "fiscalyear_id": fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, ondelete='cascade')
+ "sequence_id": fields.many2one("ir.sequence", 'Sequence', required=True,
+ ondelete='cascade'),
+ "sequence_main_id": fields.many2one("ir.sequence", 'Main Sequence',
+ required=True, ondelete='cascade'),
+ "fiscalyear_id": fields.many2one('account.fiscalyear', 'Fiscal Year',
+ required=True, ondelete='cascade')
}
_sql_constraints = [
- ('main_id', 'CHECK (sequence_main_id != sequence_id)', 'Main Sequence must be different from current !'),
+ ('main_id', 'CHECK (sequence_main_id != sequence_id)',
+ 'Main Sequence must be different from current !'),
]
ir_sequence_fiscalyear()
@@ -39,17 +43,25 @@ ir_sequence_fiscalyear()
class ir_sequence(osv.osv):
_inherit = 'ir.sequence'
_columns = {
- 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear', 'sequence_main_id', 'Sequences')
+ 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear',
+ 'sequence_main_id', 'Sequences')
}
- def get_id(self, cr, uid, sequence_id, test='id', context={}):
- cr.execute('select id from ir_sequence where '+test+'=%s and active=%s', (sequence_id, True,))
+ def get_id(self, cr, uid, sequence_id, test='id', context=None):
+ if context is None:
+ context = {}
+ cr.execute('select id from ir_sequence where '
+ + test + '=%s and active=%s', (sequence_id, True,))
res = cr.dictfetchone()
if res:
- for line in self.browse(cr, uid, res['id'], context=context).fiscal_ids:
- if line.fiscalyear_id.id==context.get('fiscalyear_id', False):
- return super(ir_sequence, self).get_id(cr, uid, line.sequence_id.id, test="id", context=context)
- return super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context)
+ for line in self.browse(cr, uid, res['id'],
+ context=context).fiscal_ids:
+ if line.fiscalyear_id.id == context.get('fiscalyear_id', False):
+ return super(ir_sequence, self).get_id(cr, uid,
+ line.sequence_id.id,
+ test="id",
+ context=context)
+ return super(ir_sequence, self).get_id(cr, uid, sequence_id, test,
+ context=context)
ir_sequence()
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/sequence_view.xml b/addons/account/sequence_view.xml
index 2d4d159cb41..565725d5d71 100644
--- a/addons/account/sequence_view.xml
+++ b/addons/account/sequence_view.xml
@@ -14,6 +14,10 @@