2016-04-25 22 views
1

Ich habe ein Programm, das Rechnungen aus unserem CRM Dynamics Online-System in eine .csv-Datei zieht.FetchXML Duplicate-Werte herausfiltern

Manchmal erstellen unsere Vertriebsmitarbeiter mehrere Rechnungen für dieselbe Bestellung in CRM, und ich brauche eine Möglichkeit, doppelte Rechnungen auf der .csv zu entfernen.

Ich möchte nur Rechnungen mit eindeutigen Bestellnummern ziehen. Wie würde dies erreicht werden? Ich habe den ganzen Vormittag mit Unterscheidungen gearbeitet, ohne Erfolg.

Mein Code:

private EntityCollection GetInvoices(Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy crmService) 
    { 
     string fx = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'> 
       <entity name='invoice'> 
        <attribute name='invoiceid' alias='InvoiceId' /> 
        <attribute name='customerid' alias='ShipTO' /> 
        <attribute name='shipto_postalcode' alias='ShipZip' /> 
        <attribute name='shipto_line2' alias='ShipAddr2' /> 
        <attribute name='shipto_line1' alias='ShipAddr1' /> 
        <attribute name='shipto_stateorprovince' alias='ShipState' /> 
        <attribute name='shipto_country' alias='ShipCountry' /> 
        <attribute name='shipto_city' alias='ShipCity' /> 
        <attribute name='neu_customerponumber' alias='PO' /> 
        <attribute name='paymenttermscode' alias='Terms' /> 
        <attribute name='createdon' alias='ShipDate'/> 
        <attribute name='ordernumber' alias='InvoiceNo' /> 
          "; 
     fx += GetInvoiceFilter(); 
     fx += @" 
        <link-entity name='salesorder' from='salesorderid' to='salesorderid' visible='false' link-type='outer' alias='order1'> 
         <attribute name='datefulfilled' alias='FirstOfShippingDate' /> 
         <link-entity name='systemuser' from='systemuserid' to='ownerid' visible='false' link-type='outer' alias='systemuser1'> 
          <attribute name='fullname' alias='SalesRep' /> 
         </link-entity> 
        </link-entity> 
        <link-entity name='invoicedetail' from='invoiceid' to='invoiceid' visible='false' link-type='outer' alias='invoicedetail1'> 
         <attribute name='neu_percentdiscount' alias='Discount' /> 
         <attribute name='invoicedetailid' alias='InvoiceDetailId' /> 
         <attribute name='baseamount' alias='Amount' /> 
         <attribute name='extendedamount' alias='Sales' /> 
         <link-entity name='product' from='productid' to='productid' visible='false' link-type='outer' alias='product1'> 
          <attribute name='neu_division' alias='Division' /> 
          <attribute name='producttypecode' alias='Desc' /> 
          <attribute name='productnumber' alias='CatalogNumber' /> 
         </link-entity> 
        </link-entity> 
        <link-entity name='account' alias='account1' to='customerid' from='accountid'> 
         <attribute name='accountnumber' alias='CustID' /> 
        </link-entity> 
       </entity> 
       </fetch>"; 

     return crmService.RetrieveMultiple(new FetchExpression(fx)); 


    } 



    private string GetInvoiceFilter() 
    { 
     string fetchFilter = ""; 

     fetchFilter = @"<filter type='and'>"; 

     if (txtOrderName.Text.Length > 0) 
     { 
      fetchFilter += @"<condition attribute='ordernumber' operator='eq' value='"; 
      fetchFilter += txtOrderName.Text; 
      fetchFilter += "' />"; 
     } 
     else 
     { 
      fetchFilter += @"<condition attribute='statuscode' operator='eq' value='1' />";    
      fetchFilter += @"<condition attribute='neu_exportedtopeachtree' operator='null' />"; 
      fetchFilter += @"<condition attribute='createdon' operator='on-or-after' value='"; 
      fetchFilter += dtpFrom.Text; 
      fetchFilter += "' />"; 
      fetchFilter += " <condition attribute='createdon' operator='on-or-before' value='"; 
      fetchFilter += dtpTo.Text; 
      fetchFilter += "' />"; 
     } 

     fetchFilter += @"</filter>"; 

     return fetchFilter; 
    } 

Antwort

1

Die deutliche Klausel über die Abruf- Anweisung filtert nur aus doppeltem IDs, die zurück in der Ergebnismenge kommen. Um unsere Duples basierend auf der Bestellnummer zu filtern, müssen Sie dies programmatisch tun, nachdem die Ergebnisse zurückkommen.

+0

Ahh das macht Sinn, danke! –