Skip to Content
Menu
This question has been flagged
2 Replies
6414 Views

Hi,

How I can write some code to choose the sequence number in the production lot, because we need use different sequence depends of the products category. Using openERP v6.0.4.

in the stock module, the default code use: 'name': lambda x, y, z, c: x.pool.get('ir.sequence').get(y, z, 'stock.lot.serial'), using the sequence: stock.lot.serial but how we can use a variable here to select the name of sequence to use. I tried some options using fields.selection and functions but doesn't work. Thanks.

Avatar
Discard

When you say you tried some options, did you try (not sure if syntax is correct here): "'name': lambda x, y, z, c: x.pool.get('ir.sequence').get(y, z, x.browse(y, z, [x.id]).sequence_to_use_field)" where 'sequence_to_use_field' is the fields.selection?

Author Best Answer

Thanks,

After try some codes, I finally solved it using a select field: .xml

    'sequence_lot': fields.selection([("seq1",'Product 1'),("seq2",'Product 2'),("seq3",'Product 4'),("seq4",'Product '),("seq5",'Bases')],'Secuencia a usar '),

<field name="sequence_lot" on_change="onchange_sequence_lot(sequence_lot)"/>

.py Function onChange, using the id of sequence choosen, is posible use the name too.

def onchange_sequence_lot(self, cr, uid, ids, sequence_lot, context=None):
    result = {}
    if sequence_lot == "seq1":
        seq_choosen = self.pool.get('ir.sequence').get_id(cr, uid, 103, context={} ) #Using id of seq.
        result['value'] = {'name': seq_choosen,}    
        #raise osv.except_osv(_('Warning!'), _('Seq Conteo %s.'%str(seq_choosen)))
    elif sequence_lot == "seq2":
        seq_choosen = self.pool.get('ir.sequence').get_id(cr, uid, 30, context={} )
        result['value'] = {'name': seq_choosen,}
    elif sequence_lot == "seq3":
        seq_choosen = self.pool.get('ir.sequence').get_id(cr, uid, 27, context={} )
        result['value'] = {'name': seq_choosen,}
    elif sequence_lot == "seq4":
        seq_choosen = self.pool.get('ir.sequence').get_id(cr, uid, 39, context={} )
        result['value'] = {'name': seq_choosen,}
    elif sequence_lot == "seq5":
        seq_choosen = self.pool.get('ir.sequence').get_id(cr, uid, 39, context={} )
        result['value'] = {'name': seq_choosen,}
    else:
        seq_choosen = {}
        result['value'] = {'name': seq_choosen,}
    return result
Avatar
Discard

You should mark your answer as correct.

Best Answer

To modify your sequences, go to Settings > Technical > Sequences and Identifiers.

Avatar
Discard
Related Posts Replies Views Activity
1
Jun 16
6944
0
Feb 23
2827
0
Jan 23
86
1
Oct 22
3093
0
Apr 22
1658