2013-06-11 4 views
1

Pourriez-vous s'il vous plaît m'aider avec crm 2011 J'ai besoin d'importer la facture d'un autre notre système. (Il est simple)crm: créer une facture unique

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); 
} 

Je suis événement appel PreRetriveInvoice.

Donc deuxième appel, la méthode créer un autre élément (comme INV-01157-F4C5F5)

Pour moi, ce qui est inacceptable.

Comment puis-je vérifier le numéro de facture? Quelque chose comme si j'ai ce numéro dans le système, je vais passer l'enregistrement.

Répondre

1

Vous pouvez créer une requête à l'OrganizationService demandant de rechercher la facture avec un nombre donné et si le résultat ne sera pas vide - vous ignorez la création de la facture.

Votre code pourrait ressembler à ceci:

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); 
    } 
} 
Questions connexes