Dynamics CRM如何在C#中告知哪些产品是捆绑包的一部分

时间:2015-09-30 23:43:43

标签: c# dynamics-crm

我有一个程序根据自定义实体向客户收费。这是一个基于订阅的过程。我们输入订单,如果该订单的产品已定义为订购产品,则创建自定义实体。该产品可以是单个产品,也可以是捆绑产品。订阅结束时,我需要结束客户继续使用该软件的能力。

我可以阅读产品,我可以通过检查属性" productstructure"来确定产品是否是捆绑产品。如何确定捆绑包中包含哪些产品?

由于

1 个答案:

答案 0 :(得分:1)

如果您检索产品,则可以使用“productstructure”来确定它是否为捆绑产品。如果值为3,则为捆绑。

然后,您可以查询“productassociation”表,其中属性“productid”等于捆绑包的Id。

您需要从“prodctassociation”表中检索的属性是“associatedproduct”。然后,您将检索产品实例。

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....
 }