Usuário com melhor resposta
Customização de páginas padrões criadas pelo Dynamics CRM - "dlg_closeopp.aspx"

Pergunta
-
Pessoal,
Preciso fazer uma customização na página de fechamento de Oportunidade, andei procurando e descobri o arquivo: "dlg_closeapp.aspx" que fica no diretório: /SFA/opps responsável pelas ações de fechamento. Então adicionei um IFRAME contendo informações de controle: tipo atividades que estão abertas ou outros flags que customizei na oportunidade. Consegui passar o ID da oportunidade só que agora preciso do ID do usuário que está executando esta ação. Em busca na NET encontrei o RemoteCommand.js que possui alguns métodos de conexão com o WS, tentei adicioná-lo à página em questão, no entanto não consigo importar o arquivo javascript.
O Dynamics CRM bloqueia esse tipo de funcionalidade nos arquivos padrão?
Conhecem outra forma que eu possa implementar esta solução?
Fernando Ferreira
Respostas
-
Caramba rapaz, não tinha nada mais difícil para fazer não? rs
Um plugin irá resolver então...
Já trabalhou com plugins? Tem o sdk?
http://archive.msdn.microsoft.com/crmplugin/Release/ProjectReleases.aspx?ReleaseId=2010
Depois de tudo isso, precisa registrar um plugin na entidade"opportunity" na message "win" em "pre state".
Através dos parâmetros retornados da oportunidade poderá verificar se o usuário que está fechando é o proprietário (ou melhor ainda configure nos direitos de acesso, para que somente seja aceito update por que criou a oportunidade)
Depois procure por todas as atividades que estão relacionadas com sua oportunidade e confirme se estão fechadas. Por fim verifique suas entidades personalizadas.
Caso qualquer condição não seja atendida "chame" a exception "InvalidPluginExecutionException" e informe o que desejar, visualmente aparecerá um alert para o usuário.
Ufa, acabei...
Vê se te ajuda, muito trabalho há de vir...
Avise-nos sobre os resultados...
[]'s
Tiago Cardoso
- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quinta-feira, 3 de março de 2011 18:58
- Marcado como Resposta Fernando F. dos Santos quinta-feira, 3 de março de 2011 19:36
Todas as Respostas
-
Fernando,
O que está fazendo é totalmente não suportado, qualquer rollup que for instalado no server poderá destruir o que fez bem como prejudicar a aplicação em si. Recomendo fortemente que não faça nenhum tipo de alteração no aspx e js do CRM.
O que pretende fazer? Ai tentamos encontrar outra solução, como plugins e workflows...
Att,
Tiago Cardoso
-
Tiago,
O que pretendo fazer é inibir o fechamento da oportunidade baseada em alguns flags, alguns deles são:
* Somente o proprietário da oportunidade pode fechá-la;
* Todas as atividades relacionadas devem estar concluidas;
* Tenho alguns entidades personalizadas e preciso verificar alguns flags.
* Dentre outras...
E cada verificação destes flags era acompanhada por um IFRAME que identificaria quais passos não satisfaziam, mostrando ao executor da ação o que estava incompleto para o fechamento da oppty. Bom o que estava tentando fazer era adicionar um complemento ao fechamento da oportunidade atendendo à minha necessidade.
Não imaginei que fosse tão arriscado esse tipo de alteração, mas tudo bem vou aceitar a recomendação.
Eu posso adicionar adicionar os mesmos parâmetros que existem no "dlg_closeopp.aspx" no evento de CLOSE da oportunidade através de plugins?? Outra questão é se dá para eu retirar a opção de fechamento da oppty padrão do CRM (tipo um disable no menu) e então criar uma nova página, ou então o usuário só conseguir abrir a opção "Fechar Oportunidade" apenas quando todas as condições satisfeitas.
Grato,
Fernando Ferreira -
Caramba rapaz, não tinha nada mais difícil para fazer não? rs
Um plugin irá resolver então...
Já trabalhou com plugins? Tem o sdk?
http://archive.msdn.microsoft.com/crmplugin/Release/ProjectReleases.aspx?ReleaseId=2010
Depois de tudo isso, precisa registrar um plugin na entidade"opportunity" na message "win" em "pre state".
Através dos parâmetros retornados da oportunidade poderá verificar se o usuário que está fechando é o proprietário (ou melhor ainda configure nos direitos de acesso, para que somente seja aceito update por que criou a oportunidade)
Depois procure por todas as atividades que estão relacionadas com sua oportunidade e confirme se estão fechadas. Por fim verifique suas entidades personalizadas.
Caso qualquer condição não seja atendida "chame" a exception "InvalidPluginExecutionException" e informe o que desejar, visualmente aparecerá um alert para o usuário.
Ufa, acabei...
Vê se te ajuda, muito trabalho há de vir...
Avise-nos sobre os resultados...
[]'s
Tiago Cardoso
- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quinta-feira, 3 de março de 2011 18:58
- Marcado como Resposta Fernando F. dos Santos quinta-feira, 3 de março de 2011 19:36
-
Trabalhão esse hein?? hehe
Então... Eu já tenho um pouco de conhecimento com os plugins e sdk's, só que a minha proposta inicial foi criar uma interface onde estariam dispostas as etapas de fechamento detalhando o motivo de certa etapa falhar, porque vários usuários vão utilizar e quero deixar o mais detalhado possível.
Tipo Assim:
********************
- Etapa 1 - Owner da oportunidade - OK
+Etapa 2 - Todas as atividades Concluidas - X
Atividade Y está aberta favor fechar
E assim a validação com as outras etapas.
Acho que com o plugin vai dar certo através da exception posso emitir os detalhes das etapas, mas sabe como é usuário.. hehe
Analisando o plugin registration tool na área de message observei 3 eventos que podem corresponder ao que estou querendo:
- Win "Como vc informou"
- Lose
- Close
Todos os 3 representam formas de fechamento de oportunidade? Desta forma então tenho registrar 2 plugins para Oportunidade Ganha e Perdida?
Vlw pelas dicas. \o/
Fernando Ferreira -
-