Exemplo de Gravação de Registro de Pessoa Com PHSYS API

Para ilustrar o processo de cadastro de clientes através da PHSYS API, foi criado um exemplo usando o script C_PHInsertClient. Este script insere os dados e adiciona um registro na tabela PESSOAS do sistema ERP através da classe.

São utilizados parâmetros como nome, endereço, número, bairro, tipo de pessoa (física ou jurídica), CPF ou CNPJ, que devem ser preenchidos no conteúdo do Body da Requisição ao realizar a requisição. Alguns campos, como país, estado, tipo de logradouro e município, são preenchidos de forma fixa para simplificar o exemplo. Abaixo está o conteúdo do script:

procedure C_PHInsertClient;
var 
  Cliente: TPHServerClass;
  Q:TPHQuery;                                                                
begin
  IniciarTransacao;                
  try
    Q:= NewPHQuery;            
    try
      Q.Add('SELECT ID '+
           'FROM PESSOAS '+
           'WHERE CNPJCPF = :CNPJCPF ');                 

      Q.ParamByName('CNPJCPF').AsString := ParamByName('CNPJCPF').AsString;  
      Q.Open;
                    
      if not (Q.RecordCount > 0 ) then
      begin
        ParamByName('Cadastro').AsString := 'CLIENTES';                                                                    
        Cliente := NewPHServerClass('CLIENTES');
        try
           Cliente.NovoRegistro;
           
           { Preenchidos através dos parâmetros presentes no Body da Requisição }          
                              
           Cliente.CampoDoNome('NOME').AsString        := ParamByName('Nome').AsString;
           Cliente.CampoDoNome('LOGRADOURO').AsString  := ParamByName('Logradouro').AsString;
           Cliente.CampoDoNome('NUMERO').AsInteger     := ParamByName('Numero').AsInteger;
           Cliente.CampoDoNome('BAIRRO').AsString      := ParamByName('Bairro').AsString;
           Cliente.CampoDoNome('TIPOPESSOA').AsInteger := ParamByName('TipoPessoa').AsInteger;                                                                                                         
           Cliente.CampoDoNome('CNPJCPF').AsString     := ParamByName('CNPJCPF').AsString;        

           { Preenchidos de Forma Fixa }

           Cliente.CampoDoNome('PAIS').AsLargeInt           := 1;   { Valor Padrão: Brasil }
           Cliente.CampoDoNome('ESTADO').AsLargeInt         := 24;  { Valor Padrão: SC }        
           Cliente.CampoDoNome('TIPOLOGRADOURO').AsLargeInt := 1;   { Valor Padrão: Rua}        
           Cliente.CampoDoNome('MUNICIPIO').AsLargeInt      := 3;   { Valor Padrão: Blumenau }                 

           Cliente.Salvar;

           ParamByName('Result').AsString := '{"ID_PHSYS" : "'+ intToStr(Cliente.CampoDoNome('ID').AsLargeInt)+'"}';
                                                                                
        finally
           Cliente.Free;                        
        end;                 
      end else
      begin
        ParamByName('Result').AsString := '{"Erro" : "CNPJ/CPF já cadastrado no ERP."}';                                                            
      end;

      ConfirmarTransacao;          
    finally
      Q.Free;                                
    end;                           
  except                
    CancelarTransacao;
    ParamByName('Result').AsString :='{"Erro" : "'+ MensagemErro +'"}';  ;                                        
  end;      
end;    

begin
         
end.

Neste script, o procedimento C_PHInsertClient verifica se o CNPJ passado por parâmetro já está cadastrado em alguma pessoa dentro do ERP. Se sim, uma mensagem de erro é retornada para a requisição através do parâmetro Result, conforme definido:

ParamByName('Result').AsString := '{"Erro" : "CNPJ/CPF já cadastrado no ERP."}'; 

Caso o CPF/CNPJ não esteja presente em nenhum registro do ERP, é criado um novo registro de cliente utilizando a classe correspondente e preenchendo algumas informações com os parâmetros fornecidos no Body da Requisição.

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

ParamByName('Nome').AsString;

ParamByName('Logradouro').AsString;

ParamByName('Numero').AsInteger;

ParamByName('Bairro').AsString;

ParamByName('TipoPessoa').AsInteger; 
                                                                                                       
ParamByName('CNPJCPF').AsString;      

A resposta do script para o sucesso contém a atribuição do parâmetro Result da seguinte maneira:

ParamByName('Result').AsString := '{"ID_PHSYS" : "'+ intToStr(Cliente.CampoDoNome('ID').AsLargeInt)+'"}';

O parâmetro Result é utilizado para definir o retorno da requisição. Ao realizar a requisição através da API, apenas o conteúdo do parâmetro Result será retornado, contendo uma string em formato JSON com o atributo PHSYS_ID, que terá o valor do ID do novo registro inserido na tabela PESSOAS

Para enviar os dados de cadastro para a API, é necessário criar um objeto JSON no Body da Requisição contendo os parâmetros necessários para a execução do script C_PHInsertClient. Este objeto deve incluir a classe TPHSProcScript, o procedimento Executar e os parâmetros PHSProcedimento e PHSScriptNome com os valores C_PHInsertClient. Os demais parâmetros, como nome, endereço, número, etc., devem ser incluídos com seus respectivos valores.

{ 
   "Classe":"TPHSProcScript", 
   "Procedimento":"Executar",
   "Parametros":[{
           "Nome":"PHSProcedimento",
           "Tipo":"string",
           "Valor":"C_INSERTCLIENTE"
       },
       {
           "Nome":"PHSScriptNome",
           "Tipo":"string",
           "Valor":"C_INSERTCLIENTE"
       },
       {
           "Nome":"Nome",
           "Tipo":"string",
           "Valor":"Pedro Henrique"  
       },
       {
           "Nome":"Logradouro",
           "Tipo":"string",
           "Valor":"Pedro Zimmerman"  
       },
       {
           "Nome":"Numero",
           "Tipo":"integer",
           "Valor": 25  
       },
       {
           "Nome":"Bairro",
           "Tipo":"string",
           "Valor": "Itoupavazinha" 
       },
       {
           "Nome":"TipoPessoa",
           "Tipo":"integer",
           "Valor": 1
       },
       {
           "Nome":"CNPJCPF",
           "Tipo":"string",
           "Valor": "598.956.949-11" 
       }
   ]
}

Após enviar a requisição para a API, o script será executado e o cliente será cadastrado no sistema. O retorno da API incluirá o ID do cliente cadastrado, que pode ser utilizado para futuras consultas ou atualizações. Este processo permite cadastrar clientes de forma automatizada e integrada com o sistema ERP, proporcionando mais agilidade e precisão nas operações de cadastro. Segue abaixo o retorno da requisição contendo o ID do registro gerado na PHSYS.

{
   "Parametros": [
       {
           "Nome": "ID_PHSYS",
           "Tipo": "largeint",
           "Valor": 53
       }
   ]
}