Publicidad

viernes, 2 de octubre de 2015

Campos Seleccion Calculados en Odoo

Crear un Campo Calculado de Tipo Seleccion



Si trabajamos con campos calculados en Odoo y nos hemos enfrentado a obtener un valor de un campo Selección o Relación, observamos que en la nueva tabla el resultado es correcto obtenemos el resultado pero no tenemos la etiqueta correcta. Esto se soluciona haciendo uso del atributo "selection".

Ejemplo:
def _get_states(self, cr, uid, ids, fieldnames, args, context=None):
    res = {}
    state = 'draft'
    #### Aqui meteriamos el codigo para obtener el Estado del registro que necesitaramos #####
    return res[ids[0]] = state

lista_estados = [
                ('draft','Borrador')
                ('done','Realizado')
                ]

'state': fields.function(_get_states, type='selection',method=True,  selection=lista_estados, string="Estado"),


La misma regla aplica para los campos Relacion (Related):

lista_estados = [
                ('draft','Borrador')
                ('confirmed','Confirmado')
                ('done','Realizado')
                ('cancel','Cancelado')
                ]

'state': fields.related('invoice_id','state', type='selection',method=True,  selection=lista_estados, string="Estado"),

3 comentarios:

  1. Buenos dias, estoy tratando se hacer un reporte con aeroo reports, pero al mostrar un campo seleccion en el reporte solo muestra numeros (claves) pero no el nombre o valor de dicho campo seleccion. Hay alguna forma de hacer que muestre el valor del campo y no el indice?? Gracias

    ResponderEliminar
    Respuestas
    1. Hola, normalmente los campos selección estan conformados por 2 valores, el primero es el texto que se guarda en Base de Datos y el Segundo el Texto para la aplicación. Si deseas mostrar un valor distinto al de la clave de la selección, debes usar condicionantes y en base a esto poner el valor, por ejemplo if o.state == 'cancel':
      "Documento Cancelado".

      El ejemplo anterior solo es para darte una idea.

      Eliminar