Exemplo de Leitura de Registro de Pessoa Com PHSYS API
Índice
Introdução
Com a PHSYS API é possível acessar diversas funcionalidades do PHERP, incluindo a consulta de registros na base de dados por meio do modelo de execução de scripts internos.
Neste exemplo, será demonstrado como consultar informações cadastrais de pessoas (clientes) utilizando o procedimento interno C_PHGetPessoasByIDs, executado através do modelo TPHSProcScript.
Esse modelo permite que sistemas externos executem scripts específicos do ERP, informando parâmetros via body da requisição e recebendo o retorno estruturado em formato JSON.
Modelo de Integração PHSys
Este modelo de integração utiliza a classe TPHSProcScript para executar procedimentos internos do ERP.
O procedimento C_PHGetPessoasByIDs realiza a consulta das informações cadastrais de pessoas com base nos IDs informados no body da requisição.
No processamento interno:
- O sistema lê o parâmetro IDs enviado no body.
- Executa a consulta no cadastro de pessoas.
- Estrutura o retorno em formato JSON.
- Retorna as informações encontradas e a quantidade de registros.
Modelo Integração
Como Realizar a Requisição
A chamada à API deve ser realizada utilizando o método HTTP POST, enviando o conteúdo em formato JSON no body da requisição.
Cabeçalhos Necessários
Content-Type: application/json
Corpo da Requisição (Body)
Para execução do script específico, o body da requisição deve conter:
- Classe: TPHSProcScript
- Metodo: Executar
- PHSProcedimento: Nome do procedimento a ser executado
- PHSScriptNome: Nome do script cadastrado no ERP
- IDs: Lista de IDs das pessoas a serem consultadas, separados por vírgula
Exemplo:
{
"Classe": "TPHSProcScript",
"Metodo": "Executar",
"Parametros": {
"PHSProcedimento": "C_PHGetPessoasByIDs",
"PHSScriptNome": "C_PHGetPessoasByIDs",
"IDs": "1,2,3"
}
}
Validações Realizadas
Antes de executar o procedimento interno, o sistema valida:
- Se o parâmetro IDs foi informado
- Se o parâmetro IDs não está nulo
- Se os IDs informados são válidos
Caso o parâmetro IDs não seja informado, nenhuma consulta é realizada.
Resposta da Requisição
O retorno da requisição é definido pelo parâmetro:
ParamByName('Result').AsString := TextJSON;
Na resposta da API, será retornado exclusivamente o conteúdo atribuído ao parâmetro Result.
Exemplo de Resposta
{
"Pessoas": [
{
"ID": "1",
"Nome": "João da Silva",
"Telefone": "(11) 99999-9999",
"Estado": "São Paulo",
"Municipio": "São Paulo"
}
],
"Quantidade": "1"
}
Exemplo de Script
procedure C_PHGetPessoasByIDs;
var
Q: TPHQuery;
TextJSON: String;
begin
if not (ParamByName('IDs').IsNull) then
begin
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 (' + ParamByName('IDs').AsString + ')');
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;
TextJSON := '{ "Pessoas": [' + TextJSON + '], ' +
'"Quantidade": "' + IntToStr(Q.RecordCount) + '" }';
ParamByName('Result').AsString := TextJSON;
finally
Q.Free;
end;
end;
end;