我们有客户关系管理2011,酒店内。在WCF服务(C#)中,我正在以编程方式创建契约和ContractDetails。创建合同后,我使用以下代码设置其State = 'Invoiced‘:
try
{
SetStateRequest setStateRequest = new SetStateRequest()
{
EntityMoniker = new EntityReference
{
Id = gNewContractId,
LogicalName = Xrm.Contract.EntityLogicalName
},
State = new OptionSetValue((int)Xrm.ContractState.Invoiced),
Status = new OptionSetValue((int)Xrm.ContractState.Invoiced + 1)
};
_service.Execute(setStateRequest);
}这个过程过去是可行的,但有时我会遇到这样的错误,就像我今天所做的那样:
"System.ServiceModel.FaultException`1Microsoft.Xrm.Sdk.OrganizationServiceFault:状态无效,此合同不能设置为发票状态。(故障详细信息等于Microsoft.Xrm.Sdk.OrganizationServiceFault)。
执行这个片段时(今天失败)的合同状态是“草案”。
这份合同有孩子合同的细节,它的ActiveOn日期是6/1/2015,所以它应该被激活--它曾经是。所以我不理解这个错误或者我需要做些什么来防止它。
谢谢你的帮助和建议。
发布于 2015-07-02 11:41:47
首先,这一行代码
Status = new OptionSetValue((int)Xrm.ContractState.Invoiced + 1)应该是这样的
Status = new OptionSetValue((int)Xrm.ContractStatus.Invoiced)或者状态原因枚举的名称,这是因为您正在编写1+1,因此它减少了早期绑定的功能。
关于合同,看起来SetStateRequest根据合同的开始日期和结束日期采取不同的行动。如果范围在当前日期内,则请求将合同设置为活动,如果范围超出当前日期,则为合同开具发票。请检查您的合同日期,看看是否是这样。
https://stackoverflow.com/questions/31168452
复制相似问题