Merge lp:~openerp-dev/openobject-server/trunk-bug-863221-nch into lp:openobject-server

Proposed by Naresh(OpenERP)
Status: Merged
Approved by: Olivier Dony (Odoo)
Approved revision: 3799
Merged at revision: 3881
Proposed branch: lp:~openerp-dev/openobject-server/trunk-bug-863221-nch
Merge into: lp:openobject-server
Diff against target: 19 lines (+8/-1)
1 file modified
openerp/addons/base/ir/ir_sequence.py (+8/-1)
To merge this branch: bzr merge lp:~openerp-dev/openobject-server/trunk-bug-863221-nch
Reviewer Review Type Date Requested Status
Olivier Dony (Odoo) Approve
Vo Minh Thu Pending
Review via email: mp+82124@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

Looks good, but when merging I suggest we also:

 - change the search() in _next_by_* to use order="company_id" to give higher priority to company-specific
   sequences when no sequence is found for preferred company (this will work because NULLs are sorted
   last in PostgreSQL)
 - add something in the docstrings to mention that force_company can be passed

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openerp/addons/base/ir/ir_sequence.py'
2--- openerp/addons/base/ir/ir_sequence.py 2011-10-07 14:54:06 +0000
3+++ openerp/addons/base/ir/ir_sequence.py 2011-11-14 11:13:11 +0000
4@@ -189,7 +189,14 @@
5 def _next(self, cr, uid, seq_ids, context=None):
6 if not seq_ids:
7 return False
8- seq = self.read(cr, uid, seq_ids[:1], ['implementation','number_next','prefix','suffix','padding'])[0]
9+ if context is None:
10+ context = {}
11+ force_company = context.get('force_company')
12+ if force_company is None:
13+ force_company = self.pool.get('res.users').browse(cr, uid, uid).company_id.id
14+ sequences = self.read(cr, uid, seq_ids, ['company_id', 'implementation','number_next','prefix','suffix','padding'])
15+ preferred_sequences = [s for s in sequences if s['company_id'] and s['company_id'][0] == force_company ]
16+ seq = preferred_sequences[0] if preferred_sequences else sequences[0]
17 if seq['implementation'] == 'standard':
18 cr.execute("SELECT nextval('ir_sequence_%03d')" % seq['id'])
19 seq['number_next'] = cr.fetchone()