From 396bbe73e1dfdbb65789038f2709ff528e5af03a Mon Sep 17 00:00:00 2001 From: mtr Date: Tue, 23 Nov 2010 16:16:33 +0530 Subject: [ADD] Account_sequence: added installer files bzr revid: mtr@mtr-20101123104633-cnvoe6f8rm7ufq9c --- .../account_sequence/account_sequence_installer.py | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 addons/account_sequence/account_sequence_installer.py (limited to 'addons/account_sequence/account_sequence_installer.py') diff --git a/addons/account_sequence/account_sequence_installer.py b/addons/account_sequence/account_sequence_installer.py new file mode 100644 index 00000000000..d07c0e481aa --- /dev/null +++ b/addons/account_sequence/account_sequence_installer.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +from osv import fields, osv + +class account_sequence_installer(osv.osv_memory): + _name = 'account.sequence.installer' + _inherit = 'res.config.installer' + + _columns = { + 'internal_sequence': fields.many2one('ir.sequence', 'Internal Sequence', help="This sequence will be used on Journals to maintain internal number for accounting entries."), + } + + def _get_internal_sequence(self, cr, uid, context): + obj_sequence = self.pool.get('ir.sequence') + seq_id = obj_sequence.search(cr, uid, [('name','=', 'Internal Sequence Journal')]) + for seq in obj_sequence.browse(cr, uid, seq_id): + if seq.id: + return seq.id + return False + + def execute(self, cr, uid, ids, context): + if context is None: + context = {} + res = super(account_sequence_installer, self).execute(cr, uid, ids, context=context) + jou_obj = self.pool.get('account.journal') + obj_sequence = self.pool.get('ir.sequence') + journal_ids = jou_obj.search(cr, uid, [('type','in',['sale','sale_refund','purchase','purchase_refund','cash', 'bank', 'general','situation'])]) + + for line in self.browse(cr, uid, ids): + for journal in jou_obj.browse(cr, uid, journal_ids): + if not journal.internal_sequence: + seq_id = obj_sequence.search(cr, uid, [('name','=', line.internal_sequence.name)]) + for seq in obj_sequence.browse(cr, uid, seq_id): + if seq.id: + jou_obj.write(cr, uid, [journal.id], {'internal_sequence': seq.id}) + return res + + _defaults = { + 'internal_sequence': _get_internal_sequence + } + +account_sequence_installer() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: -- cgit v1.2.3 From de80030a876bea0a0347ce6d93e6c8054aa56776 Mon Sep 17 00:00:00 2001 From: mtr Date: Tue, 23 Nov 2010 16:31:01 +0530 Subject: [IMP] Account_sequence: code cleaning bzr revid: mtr@mtr-20101123110101-pkttkomd1ma8chbm --- addons/account_sequence/account_sequence_installer.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'addons/account_sequence/account_sequence_installer.py') diff --git a/addons/account_sequence/account_sequence_installer.py b/addons/account_sequence/account_sequence_installer.py index d07c0e481aa..b7b6954bcc1 100644 --- a/addons/account_sequence/account_sequence_installer.py +++ b/addons/account_sequence/account_sequence_installer.py @@ -31,7 +31,7 @@ class account_sequence_installer(osv.osv_memory): def _get_internal_sequence(self, cr, uid, context): obj_sequence = self.pool.get('ir.sequence') - seq_id = obj_sequence.search(cr, uid, [('name','=', 'Internal Sequence Journal')]) + seq_id = obj_sequence.search(cr, uid, [('name', '=', 'Internal Sequence Journal')]) for seq in obj_sequence.browse(cr, uid, seq_id): if seq.id: return seq.id @@ -43,21 +43,21 @@ class account_sequence_installer(osv.osv_memory): res = super(account_sequence_installer, self).execute(cr, uid, ids, context=context) jou_obj = self.pool.get('account.journal') obj_sequence = self.pool.get('ir.sequence') - journal_ids = jou_obj.search(cr, uid, [('type','in',['sale','sale_refund','purchase','purchase_refund','cash', 'bank', 'general','situation'])]) + journal_ids = jou_obj.search(cr, uid, [('type', 'in', ['sale', 'sale_refund', 'purchase', 'purchase_refund', 'cash', 'bank', 'general', 'situation'])]) for line in self.browse(cr, uid, ids): for journal in jou_obj.browse(cr, uid, journal_ids): if not journal.internal_sequence: - seq_id = obj_sequence.search(cr, uid, [('name','=', line.internal_sequence.name)]) + seq_id = obj_sequence.search(cr, uid, [('name', '=', line.internal_sequence.name)]) for seq in obj_sequence.browse(cr, uid, seq_id): if seq.id: jou_obj.write(cr, uid, [journal.id], {'internal_sequence': seq.id}) return res _defaults = { - 'internal_sequence': _get_internal_sequence - } + 'internal_sequence': _get_internal_sequence + } account_sequence_installer() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file -- cgit v1.2.3 From 5189d31000c6a809e6cef495e1dc9466e0b368f4 Mon Sep 17 00:00:00 2001 From: mtr Date: Wed, 24 Nov 2010 12:59:23 +0530 Subject: [IMP] account_sequence:_get_internal_sequence search using xml_id and search all journals without any domain bzr revid: mtr@mtr-20101124072923-ofkrd55uz1g15ild --- addons/account_sequence/account_sequence_installer.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'addons/account_sequence/account_sequence_installer.py') diff --git a/addons/account_sequence/account_sequence_installer.py b/addons/account_sequence/account_sequence_installer.py index b7b6954bcc1..16808565380 100644 --- a/addons/account_sequence/account_sequence_installer.py +++ b/addons/account_sequence/account_sequence_installer.py @@ -30,12 +30,11 @@ class account_sequence_installer(osv.osv_memory): } def _get_internal_sequence(self, cr, uid, context): - obj_sequence = self.pool.get('ir.sequence') - seq_id = obj_sequence.search(cr, uid, [('name', '=', 'Internal Sequence Journal')]) - for seq in obj_sequence.browse(cr, uid, seq_id): - if seq.id: - return seq.id - return False + mod_obj = self.pool.get('ir.model.data') + result = mod_obj.get_object_reference(cr, uid, 'account_sequence', 'internal_sequence_journal') + res = result[1] or False + return res + def execute(self, cr, uid, ids, context): if context is None: @@ -43,8 +42,7 @@ class account_sequence_installer(osv.osv_memory): res = super(account_sequence_installer, self).execute(cr, uid, ids, context=context) jou_obj = self.pool.get('account.journal') obj_sequence = self.pool.get('ir.sequence') - journal_ids = jou_obj.search(cr, uid, [('type', 'in', ['sale', 'sale_refund', 'purchase', 'purchase_refund', 'cash', 'bank', 'general', 'situation'])]) - + journal_ids = jou_obj.search(cr, uid, []) for line in self.browse(cr, uid, ids): for journal in jou_obj.browse(cr, uid, journal_ids): if not journal.internal_sequence: -- cgit v1.2.3 From 308394a14b1628474427ebe2b21486550c460375 Mon Sep 17 00:00:00 2001 From: mtr Date: Wed, 24 Nov 2010 18:07:51 +0530 Subject: [IMP] account_sequence:changes in the execute method and return of _get_internal_sequence method bzr revid: mtr@mtr-20101124123751-tga2tn6oy3ipewrn --- addons/account_sequence/account_sequence_installer.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'addons/account_sequence/account_sequence_installer.py') diff --git a/addons/account_sequence/account_sequence_installer.py b/addons/account_sequence/account_sequence_installer.py index 16808565380..482e193d8ef 100644 --- a/addons/account_sequence/account_sequence_installer.py +++ b/addons/account_sequence/account_sequence_installer.py @@ -32,7 +32,7 @@ class account_sequence_installer(osv.osv_memory): def _get_internal_sequence(self, cr, uid, context): mod_obj = self.pool.get('ir.model.data') result = mod_obj.get_object_reference(cr, uid, 'account_sequence', 'internal_sequence_journal') - res = result[1] or False + res = result and result[1] or False return res @@ -46,8 +46,7 @@ class account_sequence_installer(osv.osv_memory): for line in self.browse(cr, uid, ids): for journal in jou_obj.browse(cr, uid, journal_ids): if not journal.internal_sequence: - seq_id = obj_sequence.search(cr, uid, [('name', '=', line.internal_sequence.name)]) - for seq in obj_sequence.browse(cr, uid, seq_id): + for seq in obj_sequence.browse(cr, uid, [line.internal_sequence.id]): if seq.id: jou_obj.write(cr, uid, [journal.id], {'internal_sequence': seq.id}) return res -- cgit v1.2.3 From 93c0f3f02fa3545b209288f5b6acd220064602d2 Mon Sep 17 00:00:00 2001 From: "qdp-launchpad@tinyerp.com" <> Date: Fri, 26 Nov 2010 11:28:30 +0100 Subject: [IMP] account_sequence: *rename the field internal_sequence in internal_sequence_id *improved the installation wizard to display the fields of the sequence to create (more user friendly) *set the config wizard as "on_skip" bzr revid: qdp-launchpad@tinyerp.com-20101126102830-9ppwdb3m205634jp --- .../account_sequence/account_sequence_installer.py | 54 ++++++++++++++++------ 1 file changed, 39 insertions(+), 15 deletions(-) (limited to 'addons/account_sequence/account_sequence_installer.py') diff --git a/addons/account_sequence/account_sequence_installer.py b/addons/account_sequence/account_sequence_installer.py index 5375ee6fae3..fb0f5840566 100644 --- a/addons/account_sequence/account_sequence_installer.py +++ b/addons/account_sequence/account_sequence_installer.py @@ -26,33 +26,57 @@ class account_sequence_installer(osv.osv_memory): _inherit = 'res.config.installer' _columns = { - 'internal_sequence': fields.many2one('ir.sequence', 'Internal Sequence', help="This sequence will be used on Journals to maintain internal number for accounting entries."), + 'name': fields.char('Name',size=64, required=True), + 'prefix': fields.char('Prefix',size=64, help="Prefix value of the record for the sequence"), + 'suffix': fields.char('Suffix',size=64, help="Suffix value of the record for the sequence"), + 'number_next': fields.integer('Next Number', required=True, help="Next number of this sequence"), + 'number_increment': fields.integer('Increment Number', required=True, help="The next number of the sequence will be incremented by this number"), + 'padding' : fields.integer('Number padding', required=True, help="OpenERP will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."), + 'company_id': fields.many2one('res.company', 'Company'), + } + _defaults = { + 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'ir.sequence', context=c), + 'number_increment': 1, + 'number_next': 1, + 'padding' : 0, + 'name': 'Internal Sequence Journal', } - - def _get_internal_sequence(self, cr, uid, context=None): - result = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_sequence', 'internal_sequence_journal') - return result and result[1] or False def execute(self, cr, uid, ids, context=None): if context is None: context = {} jou_obj = self.pool.get('account.journal') obj_sequence = self.pool.get('ir.sequence') - record = self.browse(cr, uid, ids)[0] + record = self.browse(cr, uid, ids, context)[0] j_ids = [] + if record.company_id: + company_id = record.company_id.id, + search_criteria = [('company_id', '=', company_id)] + else: + company_id = False + search_criteria = [] + vals = { + 'id': 'internal_sequence_journal', + 'code': 'account.journal', + 'name': record.name, + 'prefix': record.prefix, + 'suffix': record.suffix, + 'number_next': record.number_next, + 'number_increment': record.number_increment, + 'padding' : record.padding, + 'company_id': company_id, + } + + ir_seq = obj_sequence.create(cr, uid, vals, context) res = super(account_sequence_installer, self).execute(cr, uid, ids, context=context) - journal_ids = jou_obj.search(cr, uid, [], context=context) - for journal in jou_obj.browse(cr, uid, journal_ids): - if not journal.internal_sequence: + journal_ids = jou_obj.search(cr, uid, search_criteria, context=context) + for journal in jou_obj.browse(cr, uid, journal_ids, context): + if not journal.internal_sequence_id: j_ids.append(journal.id) if j_ids: - jou_obj.write(cr, uid, j_ids, {'internal_sequence': record.internal_sequence.id}) + jou_obj.write(cr, uid, j_ids, {'internal_sequence_id': ir_seq}) return res - _defaults = { - 'internal_sequence': _get_internal_sequence - } - account_sequence_installer() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: -- cgit v1.2.3 From 56bbbfcd62e0037bd86c5de77768b281d25da450 Mon Sep 17 00:00:00 2001 From: "qdp-launchpad@tinyerp.com" <> Date: Fri, 26 Nov 2010 15:35:24 +0100 Subject: [FIX] account_sequence: ir.values for default internal sequence on new journals bzr revid: qdp-launchpad@tinyerp.com-20101126143524-gl3g2xkmr3eiy453 --- addons/account_sequence/account_sequence_installer.py | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/account_sequence/account_sequence_installer.py') diff --git a/addons/account_sequence/account_sequence_installer.py b/addons/account_sequence/account_sequence_installer.py index fb0f5840566..f7bcb113388 100644 --- a/addons/account_sequence/account_sequence_installer.py +++ b/addons/account_sequence/account_sequence_installer.py @@ -75,6 +75,7 @@ class account_sequence_installer(osv.osv_memory): j_ids.append(journal.id) if j_ids: jou_obj.write(cr, uid, j_ids, {'internal_sequence_id': ir_seq}) + self.pool.get('ir.values').set(cr, uid, key='default', key2=False, name='internal_sequence_id', models =[('account.journal', False)], value=ir_seq) return res account_sequence_installer() -- cgit v1.2.3