jueves, 26 de abril de 2007

Cambiar la vista por defecto - CRM 3.0

Bueno, sé que todos pensabamos que la vista por defecto no la podiamos cambiar, pero deambulando un poco por la web y basandome en ejemplos practicos, al final he conseguido cambiar la vista por defecto del Historia y de los Contratos en las cuentas.

Para realizar dicho cambio, necesitamos información varia:

* El nombre de la area a cargar.
* El nombre del Frame que contiene la vista del combo box de selección (Filtro).
* El nombre de la vista del Combo box.
* El valor del "option value" de la vista a seleccionar.

A continuación os pongo el código para cambiar la vista del Historial para mostrar "todo" por defecto, en vez de tan solo "los últimos 30 días". Ésto es aplicable a cualquier otro frame, luego os pondré por ejemplo el de contratos, para que en vez de mostrar por defecto "borrador", me muestre "todos".


//Código


SetDefaultView = function(viewCombo, viewName) {


if (viewCombo.value != viewName) {
viewCombo.value = viewName;
viewCombo.FireOnChange();
}}

/*Cargaremos el valor por defecto del Historico del Cliente

areaActivityHistoryFrame_OnReadyStateChange = function() {
if (document.readyState == "complete") {
var frame = document.frames("areaActivityHistoryFrame");
var viewCombo = frame.document.getElementById("actualend");
if (viewCombo.readyState == "complete") {
SetDefaultView(viewCombo, "All"); }
else {
viewCombo.onreadystatechange = function() {
if (this.readyState == "complete") {
SetDefaultView(this, "All"); }}}}}
loadArea('areaActivityHistory');
loadArea('areaForm');
document.frames("areaActivityHistoryFrame").document.onreadystatechange = areaActivityHistoryFrame_OnReadyStateChange;


//Ahora podemos hacer lo mismo para los contratos:


areaContractsFrame_OnReadyStateChange = function() {
if (document.readyState == "complete") {
var frame = document.frames("areaContractsFrame");
var viewCombo = frame.document.getElementById("statecode");
if (viewCombo.readyState == "complete") {
SetDefaultView(viewCombo, "All"); }
else {viewCombo.onreadystatechange = function() {
if (this.readyState == "complete") {
SetDefaultView(this, "All"); }}}}}
loadArea('areaContracts');
loadArea('areaForm');
document.frames("areaContractsFrame").document.onreadystatechange = areaContractsFrame_OnReadyStateChange;

2 comentarios:

oriol dijo...

Hola,
Me ha servido hasta cierto punto. Para ver las ofertas de una cuenta ya me aparece por defecto "Todo" en vez de "Borrador", pero curiosamente no veo las ofertas que deberian salir, cambio el estado a "borrador" tampoco veo nada y al volver a poner "Todo" me aparece la que queria ver. Es como si cambiase solo el select del Combo pero realmente no los cargara todos.

He puesto estas lineas donde esta el onload, onsave y todos los onchange de los campos, deberian estar en otro sitio?

loadArea('areaQuotes');
loadArea('areaForm');
document.frames('areaQuotesFrame').document.onreadystatechange = areaQuotesFrame_OnReadyStateChange;

Muchas gracias, me ha ayudado mucho tu post aunque no te lo creas XD. ciao!

oriol dijo...

Hola, ya lo he solucionado. Tenia un problema de velocidad de carga del documento, tal como explica este enlace en el apartado final:

http://www.stunnware.com/crm2/topic.aspx?id=JS11

He cambiado el 'document.readyState" por 'this.readyState' y ha funcionado. Lo escribo por si alguien se encuentra con el mismo problema.

Suerte!