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 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 banco de dados 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 } ] }