2013-06-11 2 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); 
    } 
} 
Смежные вопросы