Crear un campo personalizado incremental (secuencia) que incremente su valor por cada producto de tipo stockable

Hola. He creado un campo personalizado incremental en la GUI de Odoo. A este campo le asigné una secuancia.

La idea es que ese campo se incremente en la vista por cada producto de tipo stockable que seleccione. El campo creado se llama 'x_niu'.

En la vista se genera la secuencia del campo, pero por TODOS los productos, cuando yo deseo que sean solos los stockables.

Imagen: http://en.zimagez.com/zimage/werfwrwerwerwer.php

Por otro lado he creado el metodo para realizar la validacion, en el modelo sale.orde.line,  que sólo se genere la secuencia para los productos stockables. El estado 'product' corresponde al producto stockable.

_defaults = {

    'x_niu':lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'sale.order.line'),

}

def nombre_metodo (self, cr, uid, vals, context=None):

    if vals.get('x_niu') == None and product_id.type == 'product':

        vals['x_niu'] = self.pool.get('ir.sequence').get(cr, uid, 'sale.order.line')

    return super(SaleOrderLine,self).nombre_metodo(cr, uid, vals, context)

Espero que puedan ayudarme en algo que me tiene tan acomplejado, ya que por lo que notarán soy nuevo en lo que es Odoo. De ante mano disculparme por quitarles de su tiempo y agradecer su disposicion. Muchas Gracias.

CARLO ECHEVERRIA FUENTES
CARLO ECHEVERRIA FUENTES
10
| 1 1 1
Preguntado en 24-02-16 21:03
0
voto
1723 Vistas

Para hacer esta secuencia, te recomiendo hacer un módulo. Lo ideal sería mediante un campo calculado, que tome la secuencia en una función, en lugar de tomar el default, usar compute.
Creo que por lo que dices, hiciste un campo personalizado, y ¿modificaste sale.order.line en lugar de heredar? si es así no es una buena práctica. Más o menos este sería el código clave del nuevo módulo:

class sale_order_line(models.Model):
   _name = 'sale.order.line_ext'
    _inherit = 'sale.order.line'
    x_niu = fields.Char('NIU', compute='_get_sequence')

    @api.multi
    def _get_sequence(self):
        self.ensure_one()
        if self.product_id.type == 'product':
            self.x_niu = self.env['ir.sequence'].............

 

Blanco Martín & Asociados Chile
Blanco Martín & Asociados
1737
| 5 2 5
Respondido en 04-03-16 0:38
0
voto

Su respuesta

Trate por favor de dar una respuesta sustancial. Si quiere comentar en la pregunta o la respuesta, sólo use la herramienta de comentarios. Recuerde que siempre puede revise sus respuestas - no hay necesidad de responder dos veces la misma pregunta. También no olvide votar - ¡ayuda realmente a seleccionar las mejores preguntas y respuestas!

Realizar una pregunta

Mantener informado

Sobre este foro 

Esta comunidad es para profesionales y entusiastas de nuestros productos y servicios.

Lea las directrices

Herramientas de las preguntas

15 seguidor(es)

Estadísticas

Preguntado: 24-02-16 21:03
Visto: 1723 veces
Última actualización: 04-03-16 0:38