我有一个程序将我们的CRM Dynamics Online系统中的发票拉入.csv文件。
有时我们的销售人员在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;
}
答案 0 :(得分:1)
fetch语句中的distinct子句仅过滤掉返回结果集中的重复ID。要根据订单号过滤我们的欺骗行为,您必须在结果返回后以编程方式执行此操作。