viernes, 13 de agosto de 2010

Lookup Multientity - (como el de cliente)

En ocasiones hemos necesitado de un lookup el cual nos permita manejar tanto Cuentas como Contactos (similar al que hay en el formulario de Casos) o lookups como los "Referente a". Si bien es cierto que es una funcionalidad propia de CRM, en este ejempplo (que tiene como base este post) vamos a emular un lookup multi-entidad el cual nos permita hacer el registro de un contacto o cuenta.
Supongamos que tienen una entidad personalizada llamaba: jl_entidad. Deberán crear relaciones con la entidad account y contact donde éstas son las entidades principales. Agregar los campos de tipo lookup jl_accountid y jl_contactid en el formulario de jl_entidad.
Ahora en el evento OnLoad, copiar el siguiente código:
var accountLookup = crmForm.all.jl_accountid;
var contactLookup = crmForm.all.jl_contactid;
accountLookup.lookuptypes = "1,2";
accountLookup.lookuptypenames = "account:1,contact:2";
accountLookup.lookuptypeIcons = "/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif";
if (contactLookup.DataValue != null) {
   accountLookup.DefaultValue = contactLookup.DataValue;
   accountLookup.DataValue = contactLookup.DataValue;
   if (typeof (accountLookup.DataValue[0].data) != "undefined") {
      accountLookup.DefaultValue[0].data = accountLookup.DataValue[0].data;
   }
}
En el evento OnSave copiar lo siguiente:
var accountLookup = crmForm.all.jl_accountid;
var contactLookup = crmForm.all.jl_contactid;
if (accountLookup.DataValue == null) {
   contactLookup.DataValue = null;
}
else {
   var customer = accountLookup.DataValue[0];
   if (customer.type == "1") {
      contactLookup.DataValue = null;
   }
   else {
      contactLookup.DataValue = accountLookup.DataValue;
      accountLookup.DataValue = null;
   }
}

No hay comentarios:

Publicar un comentario