Usuário com melhor resposta
[CRM 2011] Alterar o status do pedido

Pergunta
-
Preciso alterar o status do pedido via javascript já tentei via Soap utilizando os critérios abaixo, mas não obtive sucesso, alguém já passou por isso?
"<soap:Body>"+ "<Update xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<entity xsi:type='salesorder'>"+ "<statuscode>100001</statuscode>"+ "<statecode>3</statecode>"+ "<salesorderid>"+Xrm.Page.data.entity.getId()+"</salesorderid>"+ "</entity>"+ "</Update>"+ "</soap:Body>"+ "</soap:Envelope>";
Erro : 100001 is not a valid status code for state code SalesOrderState.Active on salesorder.
- Editado Tiago Michelini CardosoMVP, Moderator quarta-feira, 21 de novembro de 2012 17:47 caixa alta
Respostas
-
Daniel, boa tarde.
Da uma olhada neste link
http://mileyja.blogspot.com.br/search?q=change+status
- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 21 de novembro de 2012 17:55
- Marcado como Resposta Tiago Michelini CardosoMVP, Moderator quinta-feira, 22 de novembro de 2012 17:44
-
Daniel,
Acabei de fazer um teste aqui, eu havia me esquecido, o pedido possui um método especial para a mudança do status, o método FullfillSalesOrderRequest. A biblioteca ainda não possui esta função implementada, desculpe a perca de tempo seu...
Use o método que o Eduardo te passou:
Desculpe novamente.
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/- Marcado como Resposta Daniel Jonathan quinta-feira, 22 de novembro de 2012 17:28
Todas as Respostas
-
Daniel, boa tarde.
Da uma olhada neste link
http://mileyja.blogspot.com.br/search?q=change+status
- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 21 de novembro de 2012 17:55
- Marcado como Resposta Tiago Michelini CardosoMVP, Moderator quinta-feira, 22 de novembro de 2012 17:44
-
Daniel,
Além deste exemplo que o Eduardo passou, você pode usar uma biblioteca, o XrmServiceToolkit, existe um método que faz exatamente o que quer SetState:
http://xrmservicetoolkit.codeplex.com/
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 21 de novembro de 2012 17:55
-
Eduardo,
A forma de alterar o status no link que vc me mandou e diferente da forma que uso, estou tendo dificuldade mas analizando já identifiquei alguns pontos.
O que mais me chamou a atenção foi o abaixo:
<c:key>State</c:key>";
Parece que tenho que passar um State ?
-
Daniel,
Acho que se confundiu, te passei um biblioteca de JScript...rs
Precisa adicionar o .js no formulário e fazer uma chamada, mais ou menos assim:
XrmServiceToolkit.Soap.SetState("contact", "245DD529-8343-E111-8F5A-000C294FB247", 1, 2);
Att,
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/ -
Tiago,
Muito bacana esta biblioteca, olhando a assinatura do método abaixo: Por favor me fale se estou fazendo algo errado:
tenho que passar: Nome da entidade, ID da entidade, STATUS, RAZÃO DO STATUS ?
var setState = function (entityName, id, stateCode, statusCode, callback)
-
Daniel,
Use o código que eu te passei, só troque os valores para os seus, o último parametro na verdade é um função de retorno que você pode utilizar, se não informar ele não utiliza.
Att,
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/ -
Tiago , acho que fiz algo de errado: pois esta me apresentando o erro abaixo:
jQuery is not loaded. Please ensure that jQuery is included as webresource in the form load.
o comando que usei foi o abaixo:
XrmServiceToolkit.Soap.SetState("salesorder","5D45ADAC-CD33-E211-8DC1-78E3B511A6C7", 100001, 3);
Vou descrever o que fiz:
1) criei uma biblioteca chamada: new_XrmServiceTollkit e acrescentei o arquivo XrmServiceToolkit.js
2) criei uma biblioteca chamada new_jquery e acrescentei o arquivo jquery.jx
3) criei uma biblioteca chamada new_json2 e acrescentei o arquivo json2.js
Posteriormente adicionei todas estas biblioteca ao formulário.
-
Daniel,
Verifique se as versões do jquery e json são compatíveis ou pegue os que o autor fornece.
Mas de qualquer forma seu código está com parametros errados, o correto é:
XrmServiceToolkit.Soap.SetState(entityName, id, stateCode, statusCode);
Veja os states e status permitidos, lembrando que precisa ter o pedido já ativo:
http://msdn.microsoft.com/en-us/library/bb959351.aspx
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/ -
Tiago, sobre o erro acima consegui resolver, mas agora o código e executado, não da nenhuma mensagem de erro, mas o status não e alterado, debugando percebi que aparentemente ele envia um xml formatado corretamente, segue o xml abaixo:
Alguém já consegui alterar o status da entidade Pedido?
<request i:type='b:SetStateRequest' xmlns:a='http://schemas.microsoft.com/xrm/2011/Contracts' xmlns:b='http://schemas.microsoft.com/crm/2011/Contracts'> <a:Parameters xmlns:c='http://schemas.datacontract.org/2004/07/System.Collections.Generic'> <a:KeyValuePairOfstringanyType> <c:key>EntityMoniker</c:key> <c:value i:type='a:EntityReference'> <a:Id>5D45ADAC-CD33-E211-8DC1-78E3B511A6C7</a:Id> <a:LogicalName>salesorder</a:LogicalName> <a:Name i:nil='true' /> </c:value> </a:KeyValuePairOfstringanyType> <a:KeyValuePairOfstringanyType> <c:key>State</c:key> <c:value i:type='a:OptionSetValue'> <a:Value>3</a:Value> </c:value> </a:KeyValuePairOfstringanyType> <a:KeyValuePairOfstringanyType> <c:key>Status</c:key> <c:value i:type='a:OptionSetValue'> <a:Value>100001</a:Value> </c:value> </a:KeyValuePairOfstringanyType> </a:Parameters> <a:RequestId i:nil='true' /> <a:RequestName>SetState</a:RequestName> </request>
-
-
Daniel,
Acabei de fazer um teste aqui, eu havia me esquecido, o pedido possui um método especial para a mudança do status, o método FullfillSalesOrderRequest. A biblioteca ainda não possui esta função implementada, desculpe a perca de tempo seu...
Use o método que o Eduardo te passou:
Desculpe novamente.
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/- Marcado como Resposta Daniel Jonathan quinta-feira, 22 de novembro de 2012 17:28
-
-
-
Daniel,
Além deste exemplo que o Eduardo passou, você pode usar uma biblioteca, o XrmServiceToolkit, existe um método que faz exatamente o que quer SetState:
http://xrmservicetoolkit.codeplex.com/
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/Muito útil essa biblioteca.
Funcionou simplesmente incluindo ela nos meus web resources e chamando a linha de código no meu script que já executava diversas validações antes da alteração no status.
Agora trabalhando para atualizar o formulário ao executar esse script pois só consigo ver a atualização do status quando dou um refresh no formulário.
Obrigada!
Elaine Tojal
- Editado Elaine Tojal quinta-feira, 25 de setembro de 2014 17:27