Mudanças entre as edições de "Exemplo de Leitura de Registro de Pessoa Com PHSYS API"

Linha 1: Linha 1:
 
Com a API é possível acessar diversas funcionalidades, incluindo a consulta de registros na base de dados. Para ilustrar, vamos considerar um cenário onde precisamos obter informações de um cliente no ERP. Com a [[PHSYS_API | PHSYS API]], podemos consumir essas informações de forma fácil e eficiente.
 
Com a API é possível acessar diversas funcionalidades, incluindo a consulta de registros na base de dados. Para ilustrar, vamos considerar um cenário onde precisamos obter informações de um cliente no ERP. Com a [[PHSYS_API | PHSYS API]], podemos consumir essas informações de forma fácil e eficiente.
  
Primeiramente, criamos um script específico dentro do ERP através do módulo desenvolvimento, no qual, foi chamado '''C_LEITURAPESSOA''' com e inserido o seguinte comportamento desenvolvido:
+
Primeiramente, criamos um script específico dentro do ERP através do módulo desenvolvimento, no qual, foi chamado '''C_PHGetPessoasByIDs''' com e inserido o seguinte comportamento desenvolvido:
  
  procedure C_LEITURAPESSOA;
+
  procedure C_PHGetPessoasByIDs;
  var  
+
var  
  Q: TPHQuery;
+
  Q: TPHQuery;
  ParamList: TStringList;
+
  TextJSON:String;
  Index:Integer;                                              
+
  IDList:TStringList;                                                                
  begin
+
  begin     
   Q := NewPHQuery;
+
  if (ParamByName('IDs').AsString <> '' ) then               
  try
+
  begin
      { Consulta de dados através de comandos SQL com base no ID que será preenchido pelo parâmetro de ID da requisição }
+
    IDList := TStringList.Create;
      Q.Add('SELECT A.NOME, '+
+
    try                 
            '      A.TELEFONE, '+
+
       IDList.CommaText := ParamByName('IDs').AsString;            
            '       A.EMAIL, '+
+
   
            '      B.NOME AS ESTADO, '+
+
       Q := NewPHQuery;
            '      C.NOME AS MUNICIPIO '+                                       
 
            'FROM PESSOAS A '+
 
            'LEFT JOIN ESTADOS    B ON B.ID = A.ESTADO '+
 
            'LEFT JOIN MUNICIPIOS C ON C.ID = A.MUNICIPIO '+                                                                                                                                         
 
            'WHERE A.ID = :FID');
 
           
 
       Q.ParamByName('FID').AsLargeInt := ParamByName('ID').AsLargeInt;                                                                                        
 
       Q.Open;
 
 
 
      ParamList := TStringList.Create;
 
 
       try
 
       try
         ParamList.Add('NOME');
+
         Q.Add('SELECT A.ID, '+                 
        ParamList.Add('TELEFONE');
+
              '      A.NOME, '+
        ParamList.Add('EMAIL');
+
              '      A.TELEFONE, '+
        ParamList.Add('ESTADO');
+
              '       B.NOME AS ESTADO, '+
        ParamList.Add('MUNICIPIO');
+
              '      C.NOME AS MUNICIPIO '+                                       
 
+
              'FROM PESSOAS A '+
         Index := 0;
+
              'LEFT JOIN ESTADOS    B ON B.ID = A.ESTADO '+
     
+
              'LEFT JOIN MUNICIPIOS C ON C.ID = A.MUNICIPIO '+                                                                                                                                         
         while Index < ParamList.Count do
+
              'WHERE A.ID IN ('+ IDList.CommaText +')');
 +
                   
 +
         Q.Open;
 +
 +
         while not Q.Eof do  
 
         begin
 
         begin
           { Quando utilizado o ParambyName será retornado na requisição o parâmetro conforme atribuição designada. }                                               
+
           if TextJSON <> '' then
          ParamByName(ParamList[Index]).AsString := Q.FieldByName(ParamList[Index]).AsString;
+
            TextJSON := TextJSON + ', ';
           Inc(Index);
+
         end;                                                                                    
+
          TextJSON := TextJSON + '{ ' +   
   
+
                          'ID : '+          Q.FieldByName('ID').AsString + ',' +                                                                                                                                 
      finally
+
                          'Nome : '+        Q.FieldByName('NOME').AsString + ',' +                       
        ParamList.Free;
+
                          'Telefone : '+    Q.FieldByName('TELEFONE').AsString + ',' +
      end;                
+
                          'Estado : '+      Q.FieldByName('ESTADO').AsString + ','  +
  finally
+
                          'Municipio : '+  Q.FieldByName('MUNICIPIO').AsString +
    Q.Free;                                  
+
                    '}';                                                                   
  end;        
+
          Q.Next                                                       
  end;  
+
        end;
       
+
            
 +
        ParamByName('Result').AsString := TextJSON;
 +
         ParamByName('ResultCount').AsInteger := Q.RecordCount;                        
 +
                                             
 +
      finally
 +
        Q.Free;                                  
 +
      end;          
 +
    finally
 +
      IDList.Free;                    
 +
    end;     
 +
  end;      
 +
  end;
 +
 
  begin
 
  begin
             
+
 
 
  end.
 
  end.
  
Neste script existe o procedimento '''C_LEITURAPESSOA''' que realiza a consulta das informações cadastrais com base no '''ID''' que será preenchido pelo parâmetro '''ID''' do '''Body da Requisição'''.  
+
Neste script existe o procedimento '''C_PHGetPessoasByIDs''' que realiza a consulta das informações cadastrais com base nos '''IDs''' que são preenchidos pelo parâmetro '''IDs''' do '''Body da Requisição'''.  
  
Para consumir o parâmetro de ID preenchido no '''Body da Requisição''' é utilizado no método '''ParamByName''', da seguinte maneira:
+
Para consumir o parâmetro de IDs preenchido no '''Body da Requisição''' é utilizado no método '''ParamByName''', da seguinte maneira:
  
  ParamByName('ID').AsLargeInt;  
+
  ParamByName('IDs').AsString;  
  
 
Para cada um dos campos retornados pela consulta é atribuído o '''ParamByName''' designando o nome do parâmetro e seu respectivo valor, desta forma, quando executado pela requisição, estes parâmetros serão retornados como resposta.  
 
Para cada um dos campos retornados pela consulta é atribuído o '''ParamByName''' designando o nome do parâmetro e seu respectivo valor, desta forma, quando executado pela requisição, estes parâmetros serão retornados como resposta.  
  
Em seguida, dentro do [[Servidor_de_Aplicação | servidor de aplicação]], na página API, criamos a chave de acesso '''GETPESSOA''' conforme a imagem abaixo:
+
Em seguida, dentro do [[Servidor_de_Aplicação | servidor de aplicação]], na página API, criamos a chave de acesso '''PHGetPessoasByIDs''' conforme a imagem abaixo:
  
 
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_CHAVEACESSO.png" alt="Chave Acesso API GETPessoa" style="width:700px">
 
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_CHAVEACESSO.png" alt="Chave Acesso API GETPessoa" style="width:700px">
Linha 71: Linha 77:
 
*'''PHSProcedimento:''' Preenchido com o nome do procedimento do script que será executado.
 
*'''PHSProcedimento:''' Preenchido com o nome do procedimento do script que será executado.
 
*'''PHSScriptNome:''' Preenchido com o nome do script que será executado.
 
*'''PHSScriptNome:''' Preenchido com o nome do script que será executado.
*'''ID:''' Preenchido com o ID do registro que é desejado retornar as informações cadastrais.
+
*'''IDs:''' Preenchido com os IDs dos registros que é desejado retornar as informações cadastrais, separados por "''','''" e sendo do tipo string.
  
Com essa configuração e o desenvolvimento do script de leitura específico, ao realizar uma requisição para a chave de acesso, as informações do cliente são retornadas de acordo com o ID passado por parâmetro através do '''Body da Requisição'''.
+
Com essa configuração e o desenvolvimento do script de leitura específico, ao realizar uma requisição para a chave de acesso, as informações do cliente são retornadas de acordo com os IDs passado por parâmetro através do '''Body da Requisição'''.
  
 
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_BODY.png" alt="Chave Acesso API GETPessoa" style="width:900px">
 
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_BODY.png" alt="Chave Acesso API GETPessoa" style="width:900px">

Edição das 11h30min de 26 de março de 2024

Com a API é possível acessar diversas funcionalidades, incluindo a consulta de registros na base de dados. Para ilustrar, vamos considerar um cenário onde precisamos obter informações de um cliente no ERP. Com a PHSYS API, podemos consumir essas informações de forma fácil e eficiente.

Primeiramente, criamos um script específico dentro do ERP através do módulo desenvolvimento, no qual, foi chamado C_PHGetPessoasByIDs com e inserido o seguinte comportamento desenvolvido:

procedure C_PHGetPessoasByIDs;
var 
 Q: TPHQuery;
 TextJSON:String;
 IDList:TStringList;                                                                 
begin    
 if (ParamByName('IDs').AsString <>  ) then                 
 begin
   IDList := TStringList.Create;
   try                  
     IDList.CommaText := ParamByName('IDs').AsString;              
   
     Q := NewPHQuery;
     try
       Q.Add('SELECT A.ID, '+                  
             '       A.NOME, '+
             '       A.TELEFONE, '+
             '       B.NOME AS ESTADO, '+
             '       C.NOME AS MUNICIPIO '+                                        
             'FROM PESSOAS A '+
             'LEFT JOIN ESTADOS    B ON B.ID = A.ESTADO '+
             'LEFT JOIN MUNICIPIOS C ON C.ID = A.MUNICIPIO '+                                                                                                                                          
             'WHERE A.ID IN ('+ IDList.CommaText +')');
                    
       Q.Open;

       while not Q.Eof do    
       begin
         if TextJSON <>  then
           TextJSON := TextJSON + ', ';

         TextJSON := TextJSON + '{ ' +     
                          'ID : '+          Q.FieldByName('ID').AsString + ',' +                                                                                                                                  
                          'Nome : '+        Q.FieldByName('NOME').AsString + ',' +                        
                          'Telefone : '+    Q.FieldByName('TELEFONE').AsString + ',' +
                          'Estado : '+      Q.FieldByName('ESTADO').AsString + ','   +
                          'Municipio : '+   Q.FieldByName('MUNICIPIO').AsString + 
                    '}';                                                                    
         Q.Next                                                         
       end;
         
       ParamByName('Result').AsString := TextJSON;
       ParamByName('ResultCount').AsInteger := Q.RecordCount;                          
                                              
      finally
        Q.Free;                                    
      end;            
   finally
     IDList.Free;                      
   end;      
 end;        
end;

begin
 
end.

Neste script existe o procedimento C_PHGetPessoasByIDs que realiza a consulta das informações cadastrais com base nos IDs que são preenchidos pelo parâmetro IDs do Body da Requisição.

Para consumir o parâmetro de IDs preenchido no Body da Requisição é utilizado no método ParamByName, da seguinte maneira:

ParamByName('IDs').AsString; 

Para cada um dos campos retornados pela consulta é atribuído o ParamByName designando o nome do parâmetro e seu respectivo valor, desta forma, quando executado pela requisição, estes parâmetros serão retornados como resposta.

Em seguida, dentro do servidor de aplicação, na página API, criamos a chave de acesso PHGetPessoasByIDs conforme a imagem abaixo:

Chave Acesso API GETPessoa

Para execução do script específico é necessário que seja estruturado o Body da Requisição conforme padrão PHSYS, contendo a classe TPHSProcScript e o procedimento Executar. É necessário que nos parâmetros seja incluso os seguintes parâmetros:

  • PHSProcedimento: Preenchido com o nome do procedimento do script que será executado.
  • PHSScriptNome: Preenchido com o nome do script que será executado.
  • IDs: Preenchido com os IDs dos registros que é desejado retornar as informações cadastrais, separados por "," e sendo do tipo string.

Com essa configuração e o desenvolvimento do script de leitura específico, ao realizar uma requisição para a chave de acesso, as informações do cliente são retornadas de acordo com os IDs passado por parâmetro através do Body da Requisição.

Chave Acesso API GETPessoa

Ao executar a requisição, a resposta no Body da Requisição conterá as informações solicitadas, como no exemplo abaixo:

Chave Acesso API GETPessoa