Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

Mostrando las entradas con la etiqueta onchange. Mostrar todas las entradas
Mostrando las entradas con la etiqueta onchange. Mostrar todas las entradas

lunes, 20 de enero de 2014

Atributos en Formularios de Odoo (OPENERP)

ATRIBUTOS DEL ELEMENTO DE FORMULARIO <FIELD>


attrs (condiciones de solo lectura, invisible, y requerido).

Cuando definimos un atributo 'attr' a un campo <field>, estamos definiendo una condición.

          Las condiciones que podemos definir es que el campo sea solo de lectura, requerido, o invisible.
Supongamos que tenemos definido en nuestro archivo de Phyton una clase con los siguientes campos:

'historial': fields.boolean('Historial', help="Marque casilla si historial"),
'historial_desc': fields.char('Description', size=64),

Y en la vista, esta es la definición de los campos:

<field name="historial"/>
<field name="historial_desc" attrs="{'invisible': [('historial, '=', False)]}"/>

El campo 'historial_desc' serĆ” invisible si el campo 'historial' (booleano) es igual a 'False'.

on_change (trigger que ejecuta una función cuando el valor del campo cambia).


    Cuando el valor del 'field' cambia, automĆ”ticamente ejecuta la función que definamos en el atributo 'onchange'. La funcion 'onchange' SIEMPRE DEVUELVE EL PARAMETRO 'value'.

Ejemplo:

<field name="historial"/>
<field name="historial_des" on_change="onchange_historial_des(historial_desc)"     attrs="{'invisible': [('historial', '=', False)]}"/>

Cuando el valor del campo 'onchange_historial_desc'. 'historial_desc' cambie, ejecutaremos la función :

def onchange_historial_desc(self, cr, uid, ids, historial_desc, context={}):
    res = {}
    for xxxx in self.browse(cr, uid, ids):
            res = {
                'historial_desc': (xxxx.historial_desc or '') + _('\n') +  (historial_desc or ''),
            }
        return {'value': res}

    En esta primera opción, no estoy haciendo caso al parĆ”metro 'historial_des', ya que en este campo no viene un ID, sino un texto. Por lo tanto, hago referencia al parĆ”metro de entrada 'ids'.

Opción 2 de la función:

def onchange_historial_des(self, cr, uid, ids, historial_id, context={}):
    res = {}
    if historial_id:
       xx_obj = self.pool.get('xxxx')
       xx = xxxx_obj.browse(cr, uid, historial_id)
       res = {
                'historial_des': (xxxx.historial_desc or '') + _('\n') +  (historial_des or ''),
          }
       return {'value': res