FA
Necessidade de abrir uma página externa automaticamente após
Boa tarde,
Estou com um dilema, estou desenvolvendo um sistema de arrecadação para uso na nossa instituição. Tudo funciona bem (exceto um pequeno erro que não fui possível identificar mas que ocorre dentro do ERP em geral e sem regularidade), efetua-se os cadastros e pesquisas e remete tudo em forma de REST para o WebService de terceiros que gera o código do Boleto. Meu problema surge devido a ter que usar uma URL mais o código gerado para poder abrir a visualização do Boleto. Seria interessante se isto fosse automático e um outra aba ou janela para que o usuário fique mais confortável mas não sei como fazer isso no Adianti. Alguém sabe como faze-lo? Vi outro forum ( https://www.adianti.com.br/forum/pt/view_1816?abrir-uma-url-externa-em-outra-aba) mas a proposta não chega nem perto do que necessito.
Certo da atenção dos demais desenvolvedores, deixo minha sincera gratidão.
Estou com um dilema, estou desenvolvendo um sistema de arrecadação para uso na nossa instituição. Tudo funciona bem (exceto um pequeno erro que não fui possível identificar mas que ocorre dentro do ERP em geral e sem regularidade), efetua-se os cadastros e pesquisas e remete tudo em forma de REST para o WebService de terceiros que gera o código do Boleto. Meu problema surge devido a ter que usar uma URL mais o código gerado para poder abrir a visualização do Boleto. Seria interessante se isto fosse automático e um outra aba ou janela para que o usuário fique mais confortável mas não sei como fazer isso no Adianti. Alguém sabe como faze-lo? Vi outro forum ( https://www.adianti.com.br/forum/pt/view_1816?abrir-uma-url-externa-em-outra-aba) mas a proposta não chega nem perto do que necessito.
Certo da atenção dos demais desenvolvedores, deixo minha sincera gratidão.
Fernando, não sei se entendi sua necessidade. Você quer pegar o retorno de um webservice e concatenar em uma outra url para visualização?
Bom dia Nataniel,
Agradeço a atenção, pesar de ter já solucionado o problema vou explicar para que, de repente, possa servir para outros.
O serviço todo compõe de:
1 - Cadastro de um contrato de serviço que é feito em meu BD;
2 - Remessa dos dados para um WS que gera o boleto mas retorna somente o código deste boleto;
3 - No retorno, meu sistema vincula o código do boleto gerado ao contrato, para posteriormente poder emitir uma segunda via do mesmo;
4 - Feito os vínculos, o sistema deveria abrir uma janela usando uma URL base junto com o código do boleto: Ex. www.urlParaPegarBoleto.com/codigoboleto=xxxxxxxxxxxx
Vou colar o código abaixo e vou explicar a solução.
public function primeiraVia ($param)
{
try
{
$param = $this->form->getData(); // get form data as array
$relatos = self::isValidSave($param);
if (!empty($relatos))
{
$validar='';
foreach ($relatos as $relato)
{
if (!empty($relato))
{
$validar.=$relato.'
';
}
}
throw new Exception ($validar);
}
$ferram = new TFerramentas;
$valor_total = (float)$param->valor_total;
$valor_total = number_format($valor_total, 2, ',', '.');
$data_pagamento = $ferram->corrigeData ($param->data_pagamento);
$data_vencimento = $ferram->corrigeData ($param->data_vencimento);
$razao_social = $ferram->removeAcentos($param->razao_social);
$descricao = $ferram->removeAcentos($param->descricao_servico);
$doc_vinculo = $ferram->removeAcentos($param->doc_vinculo);
$cod_servico = self::achaCodServico($param->id_servico);
$contribuinte = $param->id_contribuinte;
if (strlen($contribuinte)>11)
{
$cpf = '';
$cnpj = $contribuinte;
}
else
{
$cpf = $contribuinte;
$cnpj = '';
}
$city = (empty($param->cidade_servico)) ? 'GOIÂNIA' : $param->cidade_servico;
$rua = $param->endereco_servico;
$bairro = $param->bairro_servico;
$endereco = $ferram->removeAcentos($rua . ", ".$bairro." - ".$city);
$fone = $ferram->formata_fone($param->fone_contato_servico);
$cod_municipio = self::achaCodMunicipio($city);
$orgao = "MinhaInstituicao";
$url = self::rest_BOLETO;
$boleto = array(
"siglaOrgaoEmissor" => $orgao,
"numeroControleOrgaoEmissor" => "KMGHUOSSQM",
"codgDetalheReceita" => (int) $cod_servico,
"valorOriginal" => $valor_total,
//"dataVencimentoTributo" => $data_vencimento,
"dataCalcPagamento" => $data_pagamento,
"codgTipoDocumentoOrigem" => 16,//16
"numrDocumentoOrigem" => $doc_vinculo,
"numrCPFContrib" => $cpf,
"numrCNPJContrib" => $cnpj,
"nomeRazaoSocialContrib" => $razao_social,
"enderecoEmitente" => $endereco,
"codgMunicipioContrib" => (int)$cod_municipio,//5208707
"codgDddTelefoneContrib" => (int)$fone['ddd'],//62
"numrTelefoneContrib" => (int)$fone['fone']);//
$data = $boleto;
$data_string = json_encode($data);
//new TMessage ('info', var_dump($boleto));
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string),
'Accept: text/plain')
);
$result = (TSession::getValue('ambiente')!='local') ? $result = curl_exec($ch) : $result = 'sucesso';
if ($result)
{
if (strtoupper(substr($result,0,4))=="ERRO")
{
throw new Exception ('Falha ao Gerar Boleto...Tente mais tarde.');
}
else
{
$obj = new StdClass;
$obj->numero_sefaz = $result;
$obj->id = $param->id;
self::saveBOLETO($obj);//Salva o Numero do Boleto
$obj = $param;
$obj->numero_sefaz = $result;
$this->form->setData($obj);//Atualiza o Formulário
$key = self::busca_tipo($obj->id_servico);
if ($key)
{
self::campo_Habilita($key->tipo_servico);
}
else
{
self::campo_Habilita('0');
}
if (!empty($obj->numero_sefaz))
{
TButton::disableField('form_contrato','primeiravia');
TButton::enableField('form_contrato','segundavia');
TButton::disableField('form_contrato','save');
}
else
{
TButton::enableField('form_contrato','primeiravia');
TButton::disableField('form_contrato','segundavia');
TButton::enableField('form_contrato','save');
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// A SOLUÇÃO ESTÁ EM USAR O TWindow E CRIAR UMA JANELA COM O CÓDIGO ABAIXO
// NOTE QUE NA TAG <FORM></FORM> ESTÁ REDIRECIONADA PARA A URL QUE MOSTRARÁ O BOLETO SENDO INCLUÍDO O CÓDIGO DO BOLETO JUNTO
// NA EXECUÇÃO DO TWINDOW SERÁ ABERTO UMA JANELA COM UM BOTÃO E É ELE QUE ABRIRÁ O SERVIÇO. PODE SER APRIMORADO USANDO
// JAVASCRIPT PARA FAZER ISSO AUTOMATICAMENTE...MAS PARA MIM BASTOU ISSO.
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$message = '<div class="container" style="border-radius: 3px; border: 1px solid black; background-color: lightskyblue;';
$message.= 'background-image: linear-gradient(to bottom, white, lightskyblue); margin-top: 5%; margin-bottom: 2%; width:90%; height: 100px;">';
$message.= ' <form action="https://app.webserviceDeRetornodeBoleto.br/arr-www/view/exibeBOLETO.jsf?codigo='.$result.'" method="Post" ';
$message.= ' name="showDare" id="showDare" target="_blank">';
$message.= ' <center>
<label><strong>Clique no Botão abaixo para abrir o Boleto</strong></label>
';
$message.= ' <input class="btn btn-success btn-lg" type="submit" value="Boleto">';
$message.= ' </center>';
$message.= ' </form>';
$message.= '</div>';
$window = TWindow::create('Pegue Seu Boleto', 0.5, 0.5); // AQUI ESTÁ O PULO DO GADO.
$window->add($message);
$window->show();
}
}
else
{
throw new Exception ('Falha na comunicação com a XXXX. Boleto não Gerar Boleto...Tente mais tarde.');
}
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage()); // shows the exception error message
$this->form->setData($this->form->getData() ); // keep form data
}
}//Fim Módulo
Mais uma vez obrigado pela atenção.