Pular para o conteúdo principal

Postagem em destaque

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu

BlackTDN :: Protheus WebService e PHP SoapClient

 

Para montar os exemplos de consumo de um WebService no Protheus usando PHP SoapClient resgatei um exemplo de código publicado em 2011 (

Protheus :: WebServices : Exemplo de uso da Estrutura TableView
Read more: http://www.blacktdn.com.br/2011/06/protheus-webservices-exemplo-de-uso-da.html#ixzz2llqVGZkihttp://www.blacktdn.com.br/2011/06/protheus-webservices-exemplo-de-uso-da.html#ixzz2llqVGZki

) fiz algumas modificações e atualizações e “Voilà”.

Montei alguns exemplos em PHP e, para testá-los, utilizei phpfiddle (para isso precisei de um IP Público). Se tiver o PHP instalado teste-o diretamente. Se tiver um IP público com acesso ao WS do Protehus e não tiver uma instalação do PHP utilize phpfiddle para executar os exemplos.

Ao código:

Um Exemplo de consumo usando o PHP

<html>
    <head>
        <title>BlackTDN :: UBTDNTBLVIEW.php</title>
    </head>
    <body>
        <?php
            $wsdl    = "http://BlackTDN:8088/ws02/UBTDNTVIEW.apw?WSDL";    
            $client  = new SoapClient($wsdl,array("cache_wsdl"=>WSDL_CACHE_NONE));
            $alias   = "SRA";
            $deleted = false;
            $recno   = false;
            $param   = array("ALIAS"=>$alias,"RDELETED"=>$deleted);
            $result  = $client->GETTRMAX($param);
            $tRMax   = $result->GETTRMAXRESULT/10;
             if ($tRMax>0){
                $step    = $tRMax%10;
                $results = array();
                for ($i = 1; $i <= $tRMax; $i+=$step) {
                    $e    = min($i+$step,$tRMax);
                    $param   = array("ALIAS"=>$alias,"RINIT"=>$i,"REND"=>$e,"RDELETED"=>$deleted,"RRECNO"=>$recno);
                    $result  = $client->GETTABLE($param);
                    array_push ($results,$result);
                }
                $result = $results[0];
                echo "<table border='1' align='left'>";
                echo     "<thead>";
                echo         "<tr align='left'>";
                echo             "<th>FLDNAME</th>";
                echo             "<th>FLDTYPE</th>";
                echo             "<th>FLDSIZE</th>";
                echo             "<th>FLDDEC</th>";
                echo             "<th>FLDTITLE</th>";
                echo             "<th>FLDDESCRIPTION</th>";
                echo             "<th>FLDMANDATORY</th>";
                echo         "</tr>";
                echo     "</thead>";      
                echo "<tbody>";
                if (is_array($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT)){
                    foreach ($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT as $item) {
                         echo "<tr>";
                            echo "<td><pre>".print_r($item->FLDNAME,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDTYPE,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDSIZE,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDDEC,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDTITLE,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDDESCRIPTION,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDMANDATORY,true)."</pre></td>";
                        echo "</tr>";
                    }
                } else {
                    echo "<tr>";
                    foreach ($result->GETTABLERESULT->TABLESTRUCT as $item) {
                            echo "<td><pre>".print_r($item->FLDNAME,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDTYPE,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDSIZE,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDDEC,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDTITLE,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDDESCRIPTION,true)."</pre></td>";
                            echo "<td><pre>".print_r($item->FLDMANDATORY,true)."</pre></td>";
                    }
                    echo "</tr>";
                }    
                echo "<tbody>";
                echo "</table>";
                echo "<br />";
                echo "<table border='1' align='left'>";
                echo     "<thead>";
                echo         "<tr align='left'>";
                if (is_array($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT)){
                    foreach ($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT as $item) {
                            echo "<th><pre>".print_r($item->FLDNAME,true)."</pre></th>";
                    }
                } else {
                    foreach ($result->GETTABLERESULT->TABLESTRUCT as $item) {
                            echo "<th><pre>".print_r($item->FLDNAME,true)."</pre></th>";
                    }
                }                    
                echo         "</tr>";
                echo     "</thead>";      
                echo "<tbody>";
                foreach ($results as $result){
                    if (is_array($result->GETTABLERESULT->TABLEDATA->FIELDVIEW)){
                        foreach ($result->GETTABLERESULT->TABLEDATA->FIELDVIEW as $itens) {
                            echo "<tr align='left'>";
                            if (is_array($itens->FLDTAG->STRING)){
                                foreach ($itens->FLDTAG->STRING as $item) {
                                    echo "<td><pre>".print_r($item,true)."</pre></td>";
                                }
                            } else {
                                foreach ($itens->FLDTAG as $item) {
                                    echo "<td><pre>".print_r($item,true)."</pre></td>";
                                }
                            }    
                            echo "</tr>";
                        }
                    } else{
                        echo "<tr align='left'>";
                            if (is_array($result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING)){
                                foreach ($result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING as $item) {
                                    echo "<td><pre>".print_r($item,true)."</pre></td>";
                                }
                            } else {
                                $item = $result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING;
                                echo "<td><pre>".print_r($item,true)."</pre></td>";
                            }
                        echo "<tr>";
                    }
                }    
                echo "</tbody>";            
                echo "</table>";
            }    
            die();
        ?>
    </body>
</html>

O código do WS em advpl bem como os demais exemplos em PHP poderão ser obtidos aqui.



Obs.: Existe dependencia do programa NDJLIB006.prg que pode ser obtido ao clicar aqui.


[]s
иαldσ dj

Comentários

  1. ola. naldo. vc tem condicoes de exemplos como consumir o webservice da vtex.com.br em php?

    ResponderExcluir
  2. Boa Tarde Naldo.
    Muito bom o seu site, parabéns !.
    Gostaria de saber se pode me ajudar com uma questão. Preciso consumir um webservice NAO Protheus e enviar ao mesmo um arquivo XML e um arquivo PDF.
    Estou usando o comando HTTPPOST porém, pelo retorno obtido, o arquivo em si está indo apenas como parametro da URL e nao sofrendo o upload propriamente dito.
    Vc teria exemplos de uso dessa funcao ?
    Te agradeço muito.
    Meu e-mail é rafael.nogueira@mrntecnologia.com.br
    Grande abraço

    ResponderExcluir
  3. Existe um exemplo simples de montar um WEBSERVICE no protheus de apenas enviar e receber um txt ?

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

BlackTDN :: RLeg ~ Desvendando a Função ParamBox

Para quem precisar desenvolver uma interface de entrada de dados, coisa rápida, e não quer ter aquele trabalhão danado que todos já sabemos, o Protheus tem uma função que ajuda muito, é uma interface semelhante a função Pergunte, porém com muito mais opção de objeto de entrada de dados, alias até colocar o scrollbox desta interface com todos os objetos em outra MsDialog ou Wizard é simples. Vejam o exemplo abaixo, boa sorte! Rleg. //---------------------------------------------------------- // Função exemplo utilizando a função ParamBox() //---------------------------------------------------------- User Function xParamBox() Local aRet := {} Local aParamBox := {} Local aCombo := {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"} Local i := 0 Private cCadastro := "xParambox" // ---------------

Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login

Ferne$ perguntou: "...é possível abrir alguma rotina do sistema sem solicitar login ao usuário, como por exemplo a rotina MATA010..." Sim Ferne$, é possível sim. Abaixo um Exemplo para a Chamada à função MATA010 sem a necessidade de Login no sistema. #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" /*/ Funcao: MATA010Ex Data: 30/04/2011 Autor: Marinaldo de Jesus Descricao: Executar a Funcao MATA010 diretamente sem a necessidade de LOGIN no Protheus Sintaxe: 1 ) U_MATA010Ex ( Chamada diretamente na Tela de Entrada do Sistema ) ; ou 2 ) totvsclient.exe -q -p=u_MATA010Ex -a=01;01 -c=rnp_local -e=rnp -m -l ( Chamada Via Linha de Comando ) /*/ User Function MATA010Ex( cEmpFil ) Local aEmpFil Local bWindowInit := { || __Execute( "MATA010()" , "xxxxxxxxxxxxxxxxxxxx" , "MATA010" , "SIGAFAT" , "SIGAFAT", 1 , .T. ) } Local cEmp Local cFil Local cMod Local cModName := "SIGAFAT" DEFA

BlackTDN :: Customizando a interface de Login no Protheus e by You

A publicação “ BlackTDN :: By You e sua nova tela de login ”  de nosso amigo OBona deu o que falar e, em função disso, esse que a muito não vos escreve resolveu criar uma versão onde será possível personalizar, “por completo”, a tela de login no Protheus/by You. Considerando que OBona já havia “mapeado, identificado e customizado” as imagens peguei-as emprestadas para o exemplo que se segue: O primeiro passo para a customização “total” da interface de login do Protheus/by You será implementar o “Ponto de Entrada” ChgPrDir (Diretório de impressão) . Usaremos esse PE juntamente como programa U_FindMsObject.prg (apresentado pela primeira vez em: Protheus :: ADVPL : The Container : Presents Pandora's box ). Diferente do exemplo proposto por OBona, que substitui, durante o processo de compilação, as imagens padrões do sistema (excluindo-as) por imagens customizadas (com o mesmo nome) este novo exemplo mantém, no RPO, as imagens padrões adicionando novas imagens customizadas que serã