2016-04-25 171 views
1

我有一個程序將CRM Dynamics Online系統中的發票拖入.csv文件。FetchXML篩選出重複值

有時我們的銷售人員會在CRM中以同一訂單創建多個發票,我需要一種方法來清除.csv上的任何重複發票。

我只想拉取不同訂單號的發票。這將如何實現?整個上午我一直在努力工作,但無濟於事。

我的代碼:

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

回答

1

對fetch語句的不同子句僅過濾掉回來在結果集中重複的ID。要根據訂單號來過濾我們的欺騙,您必須在結果返回後以編程方式執行此操作。

+0

啊,這是有道理的,謝謝! –