sexta-feira, 12 de dezembro de 2008

>> CRM 4.0 - Revisar Quota Programaticamente

Existem alguns desenvolvimentos para o Dynamics CRM (via SDK) que poderíamos categorizar como sendo "não tão óbvios". Por exemplo, não existem exemplos completos para, programaticamente, Revisar uma Quota.

Juntando o "quebra-cabeça" para este caso, segue abaixo função Template.

public string ReviseQuote(string id)
{
// Set up the CRM Service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = "OrgName";

CrmService CrmWebService = new CrmService();
CrmWebService.Url = "http://localhost:5555/mscrmservices/2007/crmservice.asmx";
CrmWebService.CrmAuthenticationTokenValue = token;
CrmWebService.Credentials = System.Net.CredentialCache.DefaultCredentials;

string idRet = string.Empty;
Boolean CloseQuoteRequestOk = true;

// 1 - CLOSE QUOTE ACTIVITY

crmSdk.BusinessEntity beQuote = CrmWebService.Retrieve(crmSdk.EntityName.quote.ToString(), new Guid(id), new crmSdk.AllColumns());
crmSdk.quote _quote = beQuote as crmSdk.quote;

if (_quote == null) return string.Empty;

quoteclose _quoteClose = new quoteclose();
Lookup _lookUp = new Lookup();
_lookUp.type = EntityName.quote.ToString();
_lookUp.Value = new Guid(id);
CrmDateTime _crmDate1 = new CrmDateTime();
CrmDateTime _crmDate2 = new CrmDateTime();
_crmDate1.Value = new DateTime(1999, 12, 31, 23, 0, 0).ToString("u");
_crmDate2.Value = DateTime.Now.ToString("s");
_quoteClose.quoteid = _lookUp;
_quoteClose.subject = "Oferta Fechada (Revisada) " + _quote.quotenumber;
_quoteClose.quotenumber = _quote.quotenumber;
_quoteClose.revision = _quote.revisionnumber;
_quoteClose.actualstart = _crmDate1;
_quoteClose.actualend = _crmDate2;
CloseQuoteRequest closeQuoteRequest = new CloseQuoteRequest();
closeQuoteRequest.QuoteClose = _quoteClose;
closeQuoteRequest.Status = 7; // Revised
try
{
CrmWebService.Execute(closeQuoteRequest);
}
catch (System.Web.Services.Protocols.SoapException ex)
{
CloseQuoteRequestOk = false;
System.Diagnostics.EventLog.WriteEntry("Application", "CloseQuoteRequest ERROR => QuoteID: [" + id + "] / Message: " + ex.Detail.InnerText);
}

if (!CloseQuoteRequestOk) return string.Empty;

// 2 - REVISE QUOTE
ReviseQuoteRequest reviseReq = new ReviseQuoteRequest();
ColumnSet columns = new ColumnSet();
columns.Attributes = new string[] { "quoteid" };
reviseReq.ColumnSet = columns;
reviseReq.QuoteId = new Guid(id);
reviseReq.ReturnDynamicEntities = false;
ReviseQuoteResponse reviseResp = null;
try
{
reviseResp = (ReviseQuoteResponse)CrmWebService.Execute(reviseReq);
idRet = "{" + (reviseResp.BusinessEntity as quote).quoteid.Value.ToString().ToUpper() + "}";
}
catch (System.Web.Services.Protocols.SoapException ex)
{
idRet = string.Empty;
System.Diagnostics.EventLog.WriteEntry("Application", "ReviseQuoteRequest ERROR => QuoteID: [" + id + "] / Message: " + ex.Detail.InnerText);
}
return idRet;
}

Nenhum comentário:

Postar um comentário

<< Ao enviar um comentário, favor clicar na opção [Enviar por e-mail comentários de acompanhamento para gtezini@gmail.com] >>