Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
2 Antworten
7488 Ansichten

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
Verwerfen

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?

Autor Beste Antwort

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
Verwerfen

You should mark your answer as correct.

Beste Antwort

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

Avatar
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
1
Juni 16
8137
0
Feb. 23
5143
0
Jan. 23
94
1
Okt. 22
4357
0
Apr. 22
2905