2013-06-11 46 views
1

您可以请帮助我crm 2011 我需要从我们的另一个系统进口发票。 (很简单)crm:创建独特的发票

private void CreateInvoice(Invoice _invoice) 
{ 
    IOrganizationService _service = GetCRMService(); 
    Entity entity = new Entity("invoice"); 

    entity[e_Invoice.InvoiceNumber] = _invoice.Id.ToString(); 
    entity[e_Invoice.CustomerId] = new EntityReference("account", new Guid("6209A6AD-43B6-E211-A99D-005056A51C55")); 

    _service.Create(entity); 
} 

我呼叫事件上PreRetriveInvoice

所以上第二呼叫,方法创建另一个项目(如INV-01157-F4C5F5

对我来说这是不可接受的。

如何查询发票号码?就像系统中有这个号码一样,我会跳过记录。

回答

1

您可以创建查询OrganizationService要求搜索具有给定编号的发票,如果结果不会为空 - 您可以跳过创建发票。

您的代码可能是这样的:

private void CreateInvoice(Invoice _invoice) 
{ 
    IOrganizationService _service = GetCRMService(); 

    // Getting all invoices with given number 
    var filter = new FilterExpression(); 
    filter.AddCondition(e_Invoice.InvoiceNumber, ConditionOperator.Equal, _invoice.Id.ToString()); 

    var query = new QueryExpression("invoice") 
    { 
     ColumnSet = new ColumnSet(true), 
     Criteria = filter, 
     Distinct = true 
    }; 

    // Executing query 
    var invoices = (EntityCollection)_service.RetrieveMultiple(query); 

    if (invoices.Entities.Count == 0) 
    { 
     // Creating new invoice 
     Entity entity = new Entity("invoice"); 

     entity[e_Invoice.InvoiceNumber] = _invoice.Id.ToString(); 
     entity[e_Invoice.CustomerId] = new EntityReference("account", new Guid("6209A6AD-43B6-E211-A99D-005056A51C55")); 

     _service.Create(entity); 
    } 
}