16.05.2011, 17:28 | #1 |
Участник
|
Автоматический расчет фактической суммы заказов при закрытии сделки
Необходимо, чтобы при закрытии сделки в поле "Фактический доход" автоматически записывалась сумма всех заказов, привязанных к этой сделке.
Как это сделать? |
|
16.05.2011, 17:32 | #2 |
Участник
|
Автоматический расчет фактической суммы заказов при закрытии сделки
Необходимо при закрытии сделки автоматически рассчитывать фактическую сумму сделки по всем заказам, привязанным к этой сделке.
Как это правильно сделать? |
|
16.05.2011, 18:11 | #3 |
Чайный пьяница
|
Оптимальный вариант - Plugin, который будет обрабатывать Win сообщение.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
16.05.2011, 18:17 | #4 |
Участник
|
Спасибо. Но каким образом надо писать плагин для событий Win и Lose? Я использую параметр "Target", но плагин не срабатывает...
|
|
16.05.2011, 18:45 | #5 |
Чайный пьяница
|
Покажите, пожалуйста, каким образом вы регистрируете плагин и также покажите код, который вы написали.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
16.05.2011, 19:03 | #6 |
Участник
|
Исходя из статьи http://dmcrm.blogspot.com/2008/08/st...on-method.html переписала код с использованием OpportunityClose.
Код: public class OpportunityFact : IPlugin { public void Execute(IServiceProvider serviceProvider) { ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); if (tracer == null) throw new InvalidPluginExecutionException("Failed to retrieve the tracing service."); try { Microsoft.Xrm.Sdk.IPluginExecutionContext context = (Microsoft.Xrm.Sdk.IPluginExecutionContext) serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext)); if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity) { IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(context.UserId); Entity entity = (Entity)context.InputParameters["OpportunityClose"]; if (entity.LogicalName == "opportunityclose") { throw new Exception("win!"); } } } catch (Exception e) { tracer.Trace("Received exception: {0}", e); throw new InvalidPluginExecutionException(e.Message); } } } Это возможно сделать? Плагин зарегестирован на событиях Won и Lose на PreStage. |
|
16.05.2011, 19:47 | #7 |
Чайный пьяница
|
Цитата:
Сообщение от Omalinka
Исходя из статьи http://dmcrm.blogspot.com/2008/08/st...on-method.html переписала код с использованием OpportunityClose.
Код: public class OpportunityFact : IPlugin { public void Execute(IServiceProvider serviceProvider) { ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); if (tracer == null) throw new InvalidPluginExecutionException("Failed to retrieve the tracing service."); try { Microsoft.Xrm.Sdk.IPluginExecutionContext context = (Microsoft.Xrm.Sdk.IPluginExecutionContext) serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext)); if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity) { IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(context.UserId); Entity entity = (Entity)context.InputParameters["OpportunityClose"]; if (entity.LogicalName == "opportunityclose") { throw new Exception("win!"); } } } catch (Exception e) { tracer.Trace("Received exception: {0}", e); throw new InvalidPluginExecutionException(e.Message); } } } Это возможно сделать? Плагин зарегестирован на событиях Won и Lose на PreStage.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Omalinka (1). |
18.05.2011, 11:28 | #8 |
Участник
|
Ясно
Спасибо большое за ответы. |
|
18.05.2011, 13:08 | #9 |
Участник
|
В CRM 2011 On-line, c которым я работаю, форма OpportunityClose полностью закрыта для редкатирования, то есть я не могу ни код на нее добавить, ни скрыть -добавить поля..
В предыдущих версиях также? Или может у меня не хватает каких-нибудь прав...? |
|
18.05.2011, 13:44 | #10 |
Чайный пьяница
|
В CRM Online у вас не получится сделать таких трюков. Единственное что могу порекомендовать - это написать плагин на закрытие, который принудительно установит сумму в требуемую...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|