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

Linha 1: Linha 1:
 
Para ilustrar o processo de cadastro de cliente através da [[PHSYS_API |PHSYS API]], foi criado um exemplo através do script '''C_INSERTCLIENTE'''. Este script é responsável por inserir os dados na tabela de PESSOAS do sistema ERP. Ele recebe parâmetros como nome, endereço, número, bairro, tipo de pessoa (física ou jurídica), e CPF ou CNPJ. Além disso, preenche alguns campos, como país, estado, tipo de logradouro, município e se é cliente, de forma fixa.
 
Para ilustrar o processo de cadastro de cliente através da [[PHSYS_API |PHSYS API]], foi criado um exemplo através do script '''C_INSERTCLIENTE'''. Este script é responsável por inserir os dados na tabela de PESSOAS do sistema ERP. Ele recebe parâmetros como nome, endereço, número, bairro, tipo de pessoa (física ou jurídica), e CPF ou CNPJ. Além disso, preenche alguns campos, como país, estado, tipo de logradouro, município e se é cliente, de forma fixa.
  
  procedure C_INSERTCLIENTE;
+
  procedure C_PHInsertPessoa;
  var Q:TPHQuery;                                                
+
var  
 +
  Cliente: TPHServerClass;
 +
  Q:TPHQuery;                                                              
 
  begin
 
  begin
  Q := NewPHQuery;                          
+
  IniciarTransacao;               
  try
+
  try
    Q.Cadastro := 'CLIENTES';
+
    Q:= NewPHQuery;          
    Q.NovoRegistro;
+
    try
 +
      Q.Add('SELECT ID '+
 +
            'FROM PESSOAS '+
 +
            'WHERE CNPJCPF = :CNPJCPF ');                
 
   
 
   
    { Preenchidos através dos parâmetros presentes no Body da Requisição }           
+
      Q.ParamByName('CNPJCPF').AsString := ParamByName('CNPJCPF').AsString; 
                               
+
      Q.Open;
    Q.FieldByName('NOME').AsString        := ParamByName('Nome').AsString;
+
                   
    Q.FieldByName('LOGRADOURO').AsString  := ParamByName('Logradouro').AsString;
+
      if not (Q.RecordCount > 0 ) then
    Q.FieldByName('NUMERO').AsInteger    := ParamByName('Numero').AsInteger;
+
      begin
    Q.FieldByName('BAIRRO').AsString      := ParamByName('Bairro').AsString;
+
        ParamByName('Cadastro').AsString := 'CLIENTES';                                                                   
    Q.FieldByName('TIPOPESSOA').AsInteger := ParamByName('TipoPessoa').AsInteger;                                                                                                         
+
        Cliente := NewPHServerClass('CLIENTES');
    Q.FieldByName('CNPJCPF').AsString    := ParamByName('CNPJCPF').AsString;         
+
        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 }
+
            { Preenchidos de Forma Fixa }
 
   
 
   
    Q.FieldByName('PAIS').AsLargeInt          := 1;  { Valor Padrão: Brasil }
+
            Cliente.CampoDoNome('PAIS').AsLargeInt          := 1;  { Valor Padrão: Brasil }
    Q.FieldByName('ESTADO').AsLargeInt        := 24;  { Valor Padrão: SC }         
+
            Cliente.CampoDoNome('ESTADO').AsLargeInt        := 24;  { Valor Padrão: SC }         
    Q.FieldByName('TIPOLOGRADOURO').AsLargeInt := 1;  { Valor Padrão: Rua}         
+
            Cliente.CampoDoNome('TIPOLOGRADOURO').AsLargeInt := 1;  { Valor Padrão: Rua}         
    Q.FieldByName('MUNICIPIO').AsLargeInt      := 3;  { Valor Padrão: Blumenau }
+
            Cliente.CampoDoNome('MUNICIPIO').AsLargeInt      := 3;  { Valor Padrão: Blumenau }                
    Q.FieldByName('EHCLIENTE').AsString        := 'S'; { Valor Padrão: Sim }
 
 
   
 
   
    Q.Post;
+
            Cliente.Salvar;
   
+
    { Retorna o ID da PHSYS do registro que foi cadastrado através da integração }
+
            ParamByName('Result').AsString := '"ID_PHSYS" : "'+ intToStr(Cliente.CampoDoNome('ID').AsLargeInt)+'"';
    ParamByName('ID_PHSYS').AsLargeInt := Q.FieldByName('ID').AsLargeInt;                                                                                                                                      
+
                                                                               
 
+
        finally
  finally
+
            Cliente.Free;                       
  Q.Free;                                 
+
        end;               
  end;                 
+
      end else
  end;
+
      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
 
  begin
+
         
 
  end.
 
  end.
  

Edição das 14h09min de 2 de abril de 2024

Para ilustrar o processo de cadastro de cliente através da PHSYS API, foi criado um exemplo através do script C_INSERTCLIENTE. Este script é responsável por inserir os dados na tabela de PESSOAS do sistema ERP. Ele recebe parâmetros como nome, endereço, número, bairro, tipo de pessoa (física ou jurídica), e CPF ou CNPJ. Além disso, preenche alguns campos, como país, estado, tipo de logradouro, município e se é cliente, de forma fixa.

procedure C_PHInsertPessoa;
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.

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_INSERTCLIENTE. Este objeto deve incluir a classe TPHSProcScript, o procedimento Executar, e os parâmetros PHSProcedimento e PHSScriptNome com os valores C_INSERTCLIENTE. 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 a baixo o retorno da requisição contendo o ID do registro gerado na PHSYS.

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