Mudanças entre as edições de "Exemplo de Gravação de Registro de Pessoa Com PHSYS API"

Linha 44: Linha 44:
 
             Cliente.Salvar;
 
             Cliente.Salvar;
 
   
 
   
             ParamByName('Result').AsString := '"ID_PHSYS" : "'+ intToStr(Cliente.CampoDoNome('ID').AsLargeInt)+'"';
+
             ParamByName('Result').AsString := '{"ID_PHSYS" : "'+ intToStr(Cliente.CampoDoNome('ID').AsLargeInt)+'"}';
 
                                                                                  
 
                                                                                  
 
         finally
 
         finally
Linha 67: Linha 67:
 
            
 
            
 
  end.
 
  end.
 +
 +
Neste script existe o procedimento '''C_PHInsertClient''' que realiza a criação do registro de cliente dentro do ERP utilizando a respectiva classe e preenchendo algumas informações através dos parâmetros parâmetros que são inseridos 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;     
 +
 +
Ao final do script, foi atribuido o 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, quando realizada a requisição através da API, será retornado apenas o conteúdo do parâmetro '''Result''', neste caso, conterá uma string em formato JSON que conterá o atributo '''PHSYS_ID''' que possuíra o valor do ID do registro que foi inserido na tabela '''PESSOAS''' do ERP.
  
 
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 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.
 
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 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.

Edição das 17h35min de 3 de abril de 2024

Para ilustrar o processo de cadastro de clientes através da PHSYS API, foi criado um exemplo através do script C_PHInsertClient. Este script é responsável por inserir os dados e incluir um registro na tabela PESSOAS do sistema ERP através da classe.

São consumidos parâmetros como nome, endereço, número, bairro, tipo de pessoa (física ou jurídica), e CPF ou CNPJ que devem ser preenchidos através do conteúdo do Body da Requisição quando realizada a requisição. Alguns campos, como país, estado, tipo de logradouro, município são preenchidos de forma fixa para facilitar a exemplificação. Segue abaixo 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 existe o procedimento C_PHInsertClient que realiza a criação do registro de cliente dentro do ERP utilizando a respectiva classe e preenchendo algumas informações através dos parâmetros parâmetros que são inseridos 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;      

Ao final do script, foi atribuido o 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, quando realizada a requisição através da API, será retornado apenas o conteúdo do parâmetro Result, neste caso, conterá uma string em formato JSON que conterá o atributo PHSYS_ID que possuíra o valor do ID do registro que foi inserido na tabela PESSOAS do ERP.

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 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
       }
   ]
}