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 SoapFault

 

1 <html>
2 <head>
3 <title>BlackTDN :: UBTDNTBLVIEW.php</title>
4 </head>
5 <body>
6 <?php
7 $wsdl = "http://BlackTDN:8088/ws02/UBTDNTVIEW.apw?WSDL";
8 try { // exceptions -> http://php.net/manual/en/language.exceptions.php
9 // SoapClient and WSDL_CACHE_NONE -> http://php.net/manual/en/soapclient.soapclient.php
10 $client = new SoapClient($wsdl,array("cache_wsdl"=>WSDL_CACHE_NONE));
11 $alias = "SRA";
12 $deleted = false;
13 $recno = false;
14 $param = array("ALIAS"=>$alias,"RDELETED"=>$deleted);
15 try { // try -> http://php.net/manual/en/language.exceptions.php
16 $result = $client->GETTRMAX($param);
17 $tRMax = $result->GETTRMAXRESULT/10;
18 } catch (SoapFault $fault) { //SoapFault -> http://php.net/manual/en/function.is-soap-fault.php
19 $tRMax = 0;
20 }
21 //Control Structures (if) -> http://www.php.net/manual/en/control-structures.if.php
22 if ($tRMax>0){
23 $step = $tRMax%10;
24 //array -> http://php.net/manual/en/ref.array.php
25 $results = array();
26 //control Structures (for) -> http://php.net/manual/en/control-structures.for.php
27 for ($i = 1; $i <= $tRMax; $i+=$step) {
28 $e = min($i+$step,$tRMax);
29 $param = array("ALIAS"=>$alias,"RINIT"=>$i,"REND"=>$e,"RDELETED"=>$deleted,"RRECNO"=>$recno);
30 $result = $client->GETTABLE($param);
31 // exceptions -> http://php.net/manual/en/language.exceptions.php
32 if (!is_soap_fault($result)){ //is_soap_fault -> http://php.net/manual/en/function.is-soap-fault.php
33 array_push ($results,$result); //array_push -> http://php.net/manual/en/ref.array.php
34 }
35 }
36 //sizeof -> http://www.php.net/manual/en/function.sizeof.php
37 if (sizeof($results)>0 ){
38 $result = $results[0];
39 } else {
40 //throw - > http://php.net/manual/en/language.exceptions.php
41 throw new Exception('No Results');
42 }
43 echo "<table border='1' align='left'>";
44 echo "<thead>";
45 echo "<tr align='left'>";
46 echo "<th>FLDNAME</th>";
47 echo "<th>FLDTYPE</th>";
48 echo "<th>FLDSIZE</th>";
49 echo "<th>FLDDEC</th>";
50 echo "<th>FLDTITLE</th>";
51 echo "<th>FLDDESCRIPTION</th>";
52 echo "<th>FLDMANDATORY</th>";
53 echo "</tr>";
54 echo "</thead>";
55 echo "<tbody>";
56 // is_array -> //array -> http://php.net/manual/en/ref.array.php
57 if (is_array($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT)){
58 //Control Structures (foreach) -> http://www.php.net/manual/en/control-structures.foreach.php
59 foreach ($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT as $item) {
60 echo "<tr>";
61 echo "<td><pre>".print_r($item->FLDNAME,true)."</pre></td>";
62 echo "<td><pre>".print_r($item->FLDTYPE,true)."</pre></td>";
63 echo "<td><pre>".print_r($item->FLDSIZE,true)."</pre></td>";
64 echo "<td><pre>".print_r($item->FLDDEC,true)."</pre></td>";
65 echo "<td><pre>".print_r($item->FLDTITLE,true)."</pre></td>";
66 echo "<td><pre>".print_r($item->FLDDESCRIPTION,true)."</pre></td>";
67 echo "<td><pre>".print_r($item->FLDMANDATORY,true)."</pre></td>";
68 echo "</tr>";
69 }
70 } else {
71 echo "<tr>";
72 //Control Structures (foreach) -> http://www.php.net/manual/en/control-structures.foreach.php
73 foreach ($result->GETTABLERESULT->TABLESTRUCT as $item) {
74 echo "<td><pre>".print_r($item->FLDNAME,true)."</pre></td>";
75 echo "<td><pre>".print_r($item->FLDTYPE,true)."</pre></td>";
76 echo "<td><pre>".print_r($item->FLDSIZE,true)."</pre></td>";
77 echo "<td><pre>".print_r($item->FLDDEC,true)."</pre></td>";
78 echo "<td><pre>".print_r($item->FLDTITLE,true)."</pre></td>";
79 echo "<td><pre>".print_r($item->FLDDESCRIPTION,true)."</pre></td>";
80 echo "<td><pre>".print_r($item->FLDMANDATORY,true)."</pre></td>";
81 }
82 echo "</tr>";
83 }
84 echo "<tbody>";
85 echo "</table>";
86 echo "<br />";
87 echo "<table border='1' align='left'>";
88 echo "<thead>";
89 echo "<tr align='left'>";
90 //Control Structures (if) -> http://www.php.net/manual/en/control-structures.if.php
91 // is_array -> //array -> http://php.net/manual/en/ref.array.php
92 if (is_array($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT)){
93 //Control Structures (foreach) -> http://www.php.net/manual/en/control-structures.foreach.php
94 foreach ($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT as $item) {
95 echo "<th><pre>".print_r($item->FLDNAME,true)."</pre></th>";
96 }
97 } else {
98 //Control Structures (foreach) -> http://www.php.net/manual/en/control-structures.foreach.php
99 foreach ($result->GETTABLERESULT->TABLESTRUCT as $item) {
100 echo "<th><pre>".print_r($item->FLDNAME,true)."</pre></th>";
101 }
102 }
103 echo "</tr>";
104 echo "</thead>";
105 echo "<tbody>";
106 //Control Structures (foreach) -> http://www.php.net/manual/en/control-structures.foreach.php
107 foreach ($results as $result){
108 // is_array -> //array -> http://php.net/manual/en/ref.array.php
109 if (is_array($result->GETTABLERESULT->TABLEDATA->FIELDVIEW)){
110 //Control Structures (foreach) -> http://www.php.net/manual/en/control-structures.foreach.php
111 foreach ($result->GETTABLERESULT->TABLEDATA->FIELDVIEW as $itens) {
112 echo "<tr align='left'>";
113 if (is_array($itens->FLDTAG->STRING)){
114 foreach ($itens->FLDTAG->STRING as $item) {
115 echo "<td><pre>".print_r($item,true)."</pre></td>";
116 }
117 } else {
118 foreach ($itens->FLDTAG as $item) {
119 echo "<td><pre>".print_r($item,true)."</pre></td>";
120 }
121 }
122 echo "</tr>";
123 }
124 } else{
125 echo "<tr align='left'>";
126 if (is_array($result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING)){
127 foreach ($result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING as $item) {
128 echo "<td><pre>".print_r($item,true)."</pre></td>";
129 }
130 } else {
131 $item = $result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING;
132 echo "<td><pre>".print_r($item,true)."</pre></td>";
133 }
134 echo "<tr>";
135 }
136 }
137 echo "</tbody>";
138 echo "</table>";
139 }
140 } catch (SoapFault $fault) { //SoapFault -> http://php.net/manual/en/function.is-soap-fault.php
141 trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
142 } catch (Exception $e) { //Exception -> http://php.net/manual/en/language.exceptions.php
143 echo "Caught Exception ('{$e->getMessage()}')\n{$e}\n";
144 }
145 die();
146 ?>
147 </body>
148 </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

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ã