using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; /// <summary> /// 销售合同 /// </summary> public class ContractHelper { public static readonly string entityName = "contract"; public Guid contractId = Guid.Empty; public IOrganizationService service; /// <summary> /// 建立销售合同 /// </summary> public void Create() { Entity en = new Entity() { LogicalName = entityName }; en["title"] = "销售合同测试"; contractId = service.Create(en); } /// <summary> /// 将销售合同分派给其余用户或团队 /// </summary> /// <param name="assignee">用户或团队引用</param> public void Assign(EntityReference assignee) { AssignRequest request = new AssignRequest(); request.Target = new EntityReference() { LogicalName = entityName, Id = contractId }; request.Assignee = assignee; AssignResponse response = (AssignResponse)service.Execute(request); } /// <summary> /// 取消合同 /// </summary> /// <param name="status">取消的状态</param> public void CancelContract(int status) { CancelContractRequest request = new CancelContractRequest(); request.ContractId = contractId; request.CancelDate = DateTime.Now; request.Status = new OptionSetValue(status); CancelContractResponse response = (CancelContractResponse)service.Execute(request); } /// <summary> /// 复制合同 /// </summary> public void CloneContract() { CloneContractRequest request = new CloneContractRequest(); request.ContractId = contractId; request.IncludeCanceledLines = true; CloneContractResponse response = (CloneContractResponse)service.Execute(request); //销售合同 Entity contractEn = response.Entity; } /// <summary> /// 续订合同 /// </summary> public void RenewContract() { RenewContractRequest request = new RenewContractRequest(); request.ContractId = contractId; request.IncludeCanceledLines = true; //合同的状态 request.Status = 0; RenewContractResponse response = (RenewContractResponse)service.Execute(request); //销售合同 Entity contractEn = response.Entity; } /// <summary> /// 与其余安全主体(用户或团队)共享销售合同 /// </summary> /// <param name="accessMask">访问权限</param> /// <param name="principal">用户或团队引用</param> public void GrantAccessRequest(AccessRights accessMask, EntityReference principal) { GrantAccessRequest request = new GrantAccessRequest(); request.Target = new EntityReference() { LogicalName = entityName, Id = contractId }; request.PrincipalAccess = new PrincipalAccess() { AccessMask = accessMask, Principal = principal }; GrantAccessResponse response = (GrantAccessResponse)service.Execute(request); } /// <summary> /// 删除指定安全主体(用户或团队)对销售合同的全部访问权限 /// </summary> /// <param name="revokee">用户或团队引用</param> public void RevokeAccess(EntityReference revokee) { RevokeAccessRequest request = new RevokeAccessRequest(); request.Target = new EntityReference() { LogicalName = entityName, Id = contractId }; request.Revokee = revokee; RevokeAccessResponse response = (RevokeAccessResponse)service.Execute(request); } /// <summary> /// /// 删除销售合同 /// /// </summary> public void Delete() { service.Delete(entityName, contractId); } }