Caros, possuo dois scripts de evento de worklow: 1º - Monta XML e insere os dados na ficha via webservice no módulo de compras do ERP. 2º - É o beforeStateEntry que chama o script inseremovimento. (Esse deve receber o erro do resultado do web service ( erro 555 ) na tela do usuário quando enviar o processo ao invés do throw com um texto.
Observação: O script funciona normalmente e integra normalmente ao ERP, só quero apenas que a resposta do erro 555 apresentada no script 1 que insere o movimento no ERP seja apresentada no script 2 quando o usuário avança o processo pra finalizar a integração quando ocorrer o erro 555 retornado pelo web service quando existe alguma inconformidade.
Quando existe algum erro vindo do ERP. Preciso que esse erro seja mostrado na tela do usuário. Tipo o usuário informou um centro de custo errado o ERP vai retornar o erro no web service e preciso que esse erro seja mostrado. No segundo script quando ele não encontra a chave gravada num campo extra do movimento no ERP ele retorna um THROW, gostaria que nesse THROW do segundo script, ele mostrasse o erro abaixo visto no log pelo log.info:
17:58:03,145 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (http-/10.7.4.40:8088-5) CUSTOM: retorno de insereMovimentoManutencao - result: 555 - Erro interno do servidor. Erro ao executar o WebMethod: InsereMovimentoManutencao. Centro de Custo .. não encontrado!
1º Script - F005.inseremovimento.js
function InsereMovimento(XML)
{
var codColigada = 1;
var dataset = DatasetFactory.getDataset("ds_totvs_connector", null, null, null);
var key = dataset.getValue(0, "chave");
log.info("CUSTOM F005 - INSEREMOVIMENTO - ANTES DO TRY");
try // Area comentada
{
var provider = ServiceManager.getServiceInstance("wsECM");
if (provider == null)
{
throw "F005.InsereMovimento.js - ERROR: O Serviço SebraeService não esta cadastrado. Por favor verificar!";
}
else
{
log.info("CUSTOM F005 - INSEREMOVIMENTO - PROVIDER INTANTIATE");
var locator = provider.instantiate("org.tempuri.WsECM");
log.info("CUSTOM F005 - INSEREMOVIMENTO - DEPOIS DO PROVIDER INTANTIATE");
var service = locator.getWsECMSoap();
log.info("CUSTOM F005 - INSEREMOVIMENTO - locator.getWsECMSoap()");
var result = service.insereMovimentoManutencao(codColigada, XML, key);
log.info("CUSTOM F005 - INSEREMOVIMENTO - DEPOIS DO WEB METODO INSERE MANUTENCAO");
log.info("CUSTOM: entrada de insereMovimentoManutencao(codColigada, XML, key): " + codColigada + " - " + key);
log.info("CUSTOM: retorno de insereMovimentoManutencao - result: " + result);
return result;
}
} //Comentario 1
catch(e) //Comentario 2
{ //Comentario 3
throw "ERROR: " + e; //comentario 4
} //Comentario 5
}
2º Script - BeforeStateEntry
function beforeStateEntry(sequenceId){
var tarefa = getValue("WKNumState");
var prox_tarefa = getValue("WKNextState");
var retornoIntegracaoECM;
var retornoIntegracaoERP;
if ( (tarefa == hAPI.getAdvancedProperty("Atividade_IntegraTotvs")) &&
(prox_tarefa == hAPI.getAdvancedProperty("Atividade_IntegracaoRM")) )
{
var XML_SOLICITACAO = geraXmlSolicitacao();
log.info("---------------------------------- XML F005.BeforeStateEntry " + XML_SOLICITACAO);
InsereMovimento(XML_SOLICITACAO);
log.info("Após Inserir");
log.info("------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoECM);
log.info("------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoERP);
retornoIntegracaoECM = verificaIntegracaoECM();
log.info("---------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoECM);
if (!retornoIntegracaoECM)
{
throw "F005.BeforeStateEntry - Não Foi Possível Realizar a integração com o ERP, verífique o status do Webservice";
}
}
else if ( (tarefa == 27) &&
(prox_tarefa == 106) )
{
var XML_SOLICITACAO = geraXmlSolicitacao();
log.info("---------------------------------- XML F005.BeforeStateEntry " + XML_SOLICITACAO);
InsereMovimento(XML_SOLICITACAO);
log.info("Após Inserir");
log.info("------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoECM);
log.info("------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoERP);
retornoIntegracaoECM = verificaIntegracaoECM();
log.info("---------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoECM);
if (!retornoIntegracaoECM)
{
throw "F005.BeforeStateEntry - Não Foi Possível Realizar a integração com o ERP, verífique o status do Webservice";
}
}
log.info("##### beforeStateEntry 2 F005 FIM ")
}
/* Script atual Integracao - 27-06-2017
function beforeStateEntry(sequenceId){
var tarefa = getValue("WKNumState");
var prox_tarefa = getValue("WKNextState");
var retornoIntegracaoECM;
var retornoIntegracaoERP;
if ( (tarefa == hAPI.getAdvancedProperty("Atividade_AvaliarUGF")) &&
(prox_tarefa == hAPI.getAdvancedProperty("Atividade_Integracao")) )
{
var XML_SOLICITACAO = geraXmlSolicitacao();
log.info("---------------------------------- XML F005.BeforeStateEntry " + XML_SOLICITACAO);
InsereMovimento(XML_SOLICITACAO);
log.info("Após Inserir");
log.info("------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoECM);
log.info("------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoERP);
retornoIntegracaoECM = verificaIntegracaoECM();
log.info("---------------------------------- RETORNO ECM F005.BeforeStateEntry " + retornoIntegracaoECM);
if (!retornoIntegracaoECM)
{
throw "F005.BeforeStateEntry - Não Foi Possível Realizar a integração com o ERP, verífique o status do Webservice";
}
}
log.info("##### beforeStateEntry 2 F005 FIM ")
}
Se eu colocar depois do "result" um bloco de If que se o retorno for 555, ele retornará no segundo script o erro da resposta do webservice nele?
— FLUIG MAN 30 de Jun de 2017