|
|
#1 |
|
Участник
|
Автоматический расчет фактической суммы заказов при закрытии сделки
Необходимо, чтобы при закрытии сделки в поле "Фактический доход" автоматически записывалась сумма всех заказов, привязанных к этой сделке.
Как это сделать? |
|
|
|
|
#2 |
|
Участник
|
Автоматический расчет фактической суммы заказов при закрытии сделки
Необходимо при закрытии сделки автоматически рассчитывать фактическую сумму сделки по всем заказам, привязанным к этой сделке.
Как это правильно сделать? |
|
|
|
|
#3 |
|
Чайный пьяница
|
Оптимальный вариант - Plugin, который будет обрабатывать Win сообщение.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#4 |
|
Участник
|
Спасибо. Но каким образом надо писать плагин для событий Win и Lose? Я использую параметр "Target", но плагин не срабатывает...
|
|
|
|
|
#5 |
|
Чайный пьяница
|
Покажите, пожалуйста, каким образом вы регистрируете плагин и также покажите код, который вы написали.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#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. |
|
|
|
|
#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). | |
|
|
#8 |
|
Участник
|
Ясно
![]() Спасибо большое за ответы. |
|
|
|
|
#9 |
|
Участник
|
В CRM 2011 On-line, c которым я работаю, форма OpportunityClose полностью закрыта для редкатирования, то есть я не могу ни код на нее добавить, ни скрыть -добавить поля..
В предыдущих версиях также? Или может у меня не хватает каких-нибудь прав...?
|
|
|
|
|
#10 |
|
Чайный пьяница
|
В CRM Online у вас не получится сделать таких трюков. Единственное что могу порекомендовать - это написать плагин на закрытие, который принудительно установит сумму в требуемую...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
|