2015-09-30 2 views
0

У меня есть программа, которая оплачивает клиента на основе настраиваемого объекта. Это процесс, основанный на подписке. Мы вводим заказ, если этот заказ имеет продукт, который был определен как продукт подписки, тогда создается пользовательский объект. Продукт может быть либо одним продуктом, либо он может быть комплектом. Когда подписка заканчивается, мне нужно прекратить способность клиента продолжать использовать программное обеспечение.Dynamics CRM Как определить, какие продукты являются частью пакета в C#

Я могу прочитать продукт, и я могу определить, является ли продукт комплектом, изучив атрибут «структура продукта». Как определить, какие продукты включены в комплект поставки?

Благодаря

+0

Я задаю конкретный вопрос, поэтому не знаю, почему кто-то проголосовал за закрытие вопроса. Но в любом случае я понял это. – Gary

+0

Не уверен. Я просто задал тот же вопрос. Я думал, что это полезно - спасибо! –

ответ

1

Если вы получить продукт, который вы можете использовать «productstructure», чтобы определить, является ли это расслоение. Если значение равно 3, это расслоение.

Затем вы можете запросить таблицу «productassociation», где атрибут «productid» равен Id идентификатора пакета.

Атрибут, который необходимо извлечь из таблицы «prodctassociation», является «связанным продуктом». Затем вы извлекаете экземпляр продукта.

QueryExpression productBundleQuery = new QueryExpression(); 
productBundleQuery.Distinct = false; 
productBundleQuery.EntityName = "productassociation"; 
productBundleQuery.ColumnSet = new ColumnSet("associatedproduct"); 
productBundleQuery.Criteria = new FilterExpression 
{ 
    Conditions = { new ConditionExpression("productid", ConditionOperator.Equal, bundle.Id) } 
}; 

EntityCollection productBundleCollection = _service.RetrieveMultiple(productBundleQuery); 

foreach (Entity productAssociation in productBundleCollection.Entities) 
{ 
    Entity product = _service.Retrieve("product", ((EntityReference)productAssociation["associatedproduct"]).Id, new ColumnSet("name", ...)); 

    Do something.... 
}