1

您能否帮我处理 crm 2011 我需要从我们的另一个系统导入发票。(很简单)

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

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

如何查看发票号码?如果我在系统中有这个号码,我会跳过记录。

4

1 回答 1

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);
    }
}
于 2013-06-11T17:07:35.110 回答