~asertigs/openobject-addons/7.0

« back to all changes in this revision

Viewing changes to ags_gtin_sequence/stock.py

  • Committer: Pablo
  • Date: 2014-08-05 07:32:08 UTC
  • Revision ID: pablo@pablo-pc-20140805073208-gu4o47ua816gt83m
[ADD/FIX] Añadido el indicador de extensión a los SSCCs, ahora ya son de la longitud correcta (18)
[FIX] Arreglado bug surgido al no estar preparada la actualización de secuencias padre en el write para secuencias repetidas pero de distinto tipo (faltaba en el search de hijos el criterio del tipo)
[FIX] Ahora las secuencias GTIN sólo deben ser únicas dentro del tipo de secuencia (pallet o producto) que sean
[MOD] Ahora cambiar la categoría de producto nunca borra el ean13, ni aunque la categoría no tenga numeración
[FIX] Problema cuando no estaba inicializada la configuración de dígitos de extensión de sscc
[FIX] Bugs varios en ags_gtin_sequence

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
    
28
28
    def make_sscc(self, cr, uid, context=None):
29
29
        obj_seq = self.pool.get('gtin_sequence.gtin_sequence')
30
 
 
 
30
        obj_config = self.pool.get('stock.config.settings')
 
31
        if context.get('in'):
 
32
            extension_digit = obj_config.get_default_ext_digit_in(cr, uid, [], context)['ext_digit_in']
 
33
        else:
 
34
            extension_digit = obj_config.get_default_ext_digit_other(cr, uid, [], context)['ext_digit_other']
 
35
        extension_digit = str(extension_digit)
31
36
        all_track_ids = self.search(cr, uid, [], context=context)
32
37
        res = self.read(cr, uid, all_track_ids, ['name'], context)
33
 
        used_sscc = [ r['name'][:-1] for r in res if len(r['name'])==17 ]
 
38
        used_sscc = [ r['name'][:-1] for r in res if len(r['name'])==18 ]
34
39
        candidate_sscc = obj_seq.next_ean(cr, uid, 'pallet', context=context)
35
 
        while candidate_sscc and candidate_sscc in used_sscc:
 
40
        while candidate_sscc and extension_digit+candidate_sscc in used_sscc:
36
41
            candidate_sscc = obj_seq.next_ean(cr, uid, 'pallet', context=context)
37
42
         
38
43
        if candidate_sscc:
39
 
            return candidate_sscc + str(self.checksum(candidate_sscc))
 
44
            sscc = extension_digit + candidate_sscc
 
45
            return sscc + str(self.checksum(sscc))
40
46
        #Si no conseguimos construir el sscc a nuestro modo porque no quedan 
41
47
        #secuencias de pallet de las que sacar números, lo hacemos a la antigua usanza
42
48
        return super(stock_tracking,self).make_sscc(cr, uid, context)