Кто-нибудь пытался создать плагин, который обновляет значения записи в форме заявки? Я создал его, потому что мне нужна настраиваемая формула, которая вычисляет поле Extended Amount, но в CRM есть автоматические вычисления, которые заполняют эти поля. Это не позволяет мне вообще обновить формулу расчета.CRM 2013 Обновление цитаты Раздел продукта
Что мой плагин сделать, это:
- Получает значения из полой Цены за единицу, количество и дисконтным% (что является настраиваемым полем);
- Вычисляет значение, которое мне нужно;
- Устанавливает его в поле увеличенной суммы.
Но все это не работает, потому что я получаю «ошибку бизнес-процесса»; В основном эта ошибка говорит мне, что я не могу использовать руководство записи для доступа к нему.
Вот мой код:
protected void ExecutePostQuoteProductUpdate(LocalPluginContext localContext)
{
if (localContext == null)
{
throw new ArgumentNullException("localContext");
}
IPluginExecutionContext context = localContext.PluginExecutionContext;
IOrganizationService service = localContext.OrganizationService;
Guid quoteProductID = (Guid)((Entity)context.InputParameters["Target"]).Id;
ColumnSet set = new ColumnSet();
set.AllColumns = true;
var quote = service.Retrieve("quotedetail", quoteProductID, set);
var priceperunit = quote.Attributes["priceperunit"];
var teamleader = quote.Attributes["new_disc"];
var manualdiscountamount = quote.Attributes["manualdiscountamount"];
var volumediscountamount = quote.Attributes["volumediscountamount"];
var VAT = (int)quote.Attributes["new_vat"];
var discountamount = (double)priceperunit * (double)teamleader/100;
var baseamount = (double)priceperunit - discountamount;
var tax = baseamount * VAT/100;
var extendedamount = baseamount + tax;
quote.Attributes["new_discountamount"] = discountamount;
quote.Attributes["baseamount"] = baseamount;
quote.Attributes["tax"] = tax;
quote["description"] = priceperunit;
quote.Attributes["extendedamount"] = extendedamount;
service.Update(quote);
}
Пожалуйста, скажи мне, если есть способ получить доступ к этим полям и используйте/выводящие их.
Спасибо заранее! :/
Спасибо, Джейсон! Теперь я знаю, что мне нужно использовать другие поля, чтобы установить Extended Amount в определенное значение. Не могли бы вы рассказать мне, как мне получить доступ к полям, таким как priceperunit, потому что таким образом var priceperunit = quote.Attributes ["priceperunit"]; дает мне ошибку ISV в CRM:/ – Goshenko
Атрибут «priceperunit» будет введен только в том случае, если он был обновлен графическим интерфейсом (или, более конкретно, изменением дельта), в противном случае вам нужно будет ввести его как часть изображения. Если вы знаете 'baseamount' и' количество', вы можете просто сделать 'price = baseamount/quantity' –
Это хороший обходной путь, но, к сожалению, у меня нет доступа к ** baseamount **. – Goshenko