segunda-feira, 19 de setembro de 2022

Reabrindo cotações ganhas no Dynamics 365 Sales Professional/Enterprise (C#) 

Primeiro, precisamos alterar o Status e o motivo do status da cotação de volta para Rascunho e em Andamento .

Depois de fazermos modificações na cotação, ela precisa ser definida como Ativa.

E por fim colocar ela com o Status ganha novamente.


1. Colocando uma Quote em Rascunho

Guid quoteID = new Guid("9cc66ad5-2506-4394-854d-f60c35185d96");

Entity quote = new Entity("quote", quoteID);

quote["statecode"] = new OptionSetValue(0); // Draft

quote["statuscode"] = new OptionSetValue(1); // In Progress

service.Update(quote);


ExecuteTransactionRequest transactionRequest = new ExecuteTransactionRequest()

{

    Requests = new OrganizationRequestCollection(),

    ReturnResponses = true,

};

ExecuteTransactionResponse transactionResponse;


Guid quoteID = new Guid("9cc66ad5-2506-4394-854d-f60c35185d96");


2. Ativando uma Cotação em Rascunho

Entity quote = new Entity("quote", quoteID);

quote["statecode"] = new OptionSetValue(1); // Active

quote["statuscode"] = new OptionSetValue(2); // In Progress


UpdateRequest updateRequest = new UpdateRequest()

{

    Target = quote,

};

transactionRequest.Requests.Add(updateRequest);


3. Fechando a cotação para Ganha

Entity quoteClose = new Entity("quoteclose");

quoteClose["subject"] = "Quote Close" + DateTime.Now.ToString();

quoteClose["quoteid"] = quote.ToEntityReference();


WinQuoteRequest winQuoteRequest = new WinQuoteRequest()

{

    QuoteClose = quoteClose,

    Status = new OptionSetValue(-1),

};


transactionRequest.Requests.Add(winQuoteRequest);

transactionResponse = (ExecuteTransactionResponse)service.Execute(transactionRequest);