沿着this question的路線行駛。在Dynamics CRM 2011中標記發票作爲付款
我在使用Silverlight將Dynamics CRM 2011中的現有發票標記爲付費標記。
按照documentation,我需要做的就是將狀態設置代碼= 100001和國家代碼= 2
當我這樣做,我得到一個「NOTFOUND」異常。
Guid invoiceID = new Guid("Existing Invoice Guid");
IOrganizationService orgService = OrgServiceFactory.GetInstance();
orgService.BeginRetrieve("invoice", invoiceID, new ColumnSet(new string[] { "invoiceid", "statecode", "statuscode" }), (result) =>
{
var fetchResp = orgService.EndRetrieve(result);
var statecodeAttrib = fetchResp.Attributes.Single(a => a.Key == "statecode");
OptionSetValue statecode = (OptionSetValue)statecodeAttrib.Value;
statecode.Value = 2;
var statuscodeAttrib = fetchResp.Attributes.Single(a => a.Key == "statuscode");
OptionSetValue statuscode = (OptionSetValue)statuscodeAttrib.Value;
statuscode.Value = 100001;
orgService.BeginUpdate(fetchResp, (updateResult) =>
{
/* Web Exception thrown here */
orgService.EndUpdate(updateResult);
Console.Write("");
}, orgService);
}, orgService);
如果我刪除「statecode」一下,只是嘗試和的StatusCode設置爲2 - (部分出貨)或4 - (結算)它按預期工作。
只有當我嘗試並設置它都失敗。如果我只是嘗試,並設置它也沒有的StatusCode = 100001,100002,100003(完全,部分,已取消)
有另一種方式支付給標記發票嗎?
很奇怪,我可以設置狀態碼爲2或3,但不是其他的。 –
只需使用更新就可以將狀態碼更改爲處於相同狀態的其他狀態,但如果更改狀態,則需要實際發送SetState消息。 – Matt