O WebService Guarani é uma ferramenta de integração entre o Guarani ERP e sistemas de Terceiros.
Ele deve ser instalado e configurado no servidor local para que um login e senha para autenticação básica sejam gerados e distribuídos aos usuários.
As APIs com todos os métodos respondem no endereço do tipo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/<nome-do-método> e retornam os campos em aquivos de formato JSon.
Cada método será tratado abaixo:
GetFabricantes
Retorna os fabricantes de produtos cadastrados no sistema.
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetFabrifcantes
Campo | Descrição | Tipo |
---|---|---|
codigo | Código interno do fabricante | Numérico |
fabricante | Nome fantasia do fabricante | Texto |
Onde encontrar
GetRepresentantes
Retorna a listagem de representantes cadastrados no sistema.
- Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetRepresentantes
Pode ser passado na URL o código do representante, o que traz apenas o representante em questão. Ex:
- Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetRepresentantes/100
Campo | Descrição | Tipo |
---|---|---|
codigo | Código interno único do representante | Numérico |
razao | Razão Social | Texto |
fantasia | Nome Fantasia | Texto |
pessoa | Tipo de Pessoa. ('F') Física ou ('J') Jurídica | Texto |
endereco | Endereço | Texto |
bairro | Bairro | Texto |
cidade | Cidade | Texto |
uf | UF | Texto |
cep | CEP | Texto |
telefone | Telefone | Texto |
fax | Fax | Texto |
celular | Celular | Texto |
Texto | ||
site | Website | Texto |
rg_ie | RG ou Inscrição Estadual | Texto |
cpf_cnpj | CPF ou CNPJ | Texto |
Onde encontrar
GetClientesRepresentantes
Retorna a relação Clientes X Representantes
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetClientesRepresentantes
Este método aceita 2 tipos de filtros:
- clientes: dados o código do cliente retorna toda sua relação de representantes;
- Ex: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetClientesRepresentantes/cliente/100.
- representantes: dado o código do representante retorna toda a relação dos seus clientes;
- Ex: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetClientesRepresentantes/representante/100
Campo | Descrição | Tipo |
---|---|---|
cliente | Código do Cliente | Numérico |
representante | Código do Representante | Numérico |
padrao | Indica se o representante é padrão para o cliente. 0 = Não padrão | 1 = Padrão | Numérico |
Onde encontrar
GetCategorias
Retorna as categorias de produtos cadastrados no sistema.
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/Getcategorias
Campo | Descrição | Tipo |
---|---|---|
codigo | Código Interno da categoria | Numérico |
cod_pai | Código interno da categoria "pai" da categoria | Numérico |
nome | Nome da categoria | Texto |
referencia | Referência ou código externo editável (não obrigatório) | Texto |
descricao | Decriçãoda categoria | Texto |
ativo | Informa se categoria está ativa (Valor 'S' ou 'N') | Caractere |
Onde encontrar
GetClassificacoes
Retorna as possíveis classificações que um produto pode ter. O resultado é constituído da união de quatro tabelas do sistemas: Segmento, Linha, Grupo e Subgrupo.
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetClassificacoes
Campo | Descrição | Tipo |
---|---|---|
tipo | Tipo da classificação, podendo assmir: S = Segmentos / L = Linhas / G = Grupos / U = Supgrupos | Caractere |
codigo | Código interno da classificação. O valor pode se repertir, o que define a chave é a combinação com o tipo. | Numérico |
nome | Nome da classificação | Texto |
Onde encontrar:
GetProdutos
Retorna o cadastro de produtos que estão incluídos em uma tabela de preços parametrizada no WebService. Esta operação pode demorar um pouco dependendo da quantidade de produos na tabela. Um parâmetro com a referência do produto pode ser passado no método, trazendo assim apenas o cadastro do produto em questão, caso ele exista.
Exemplo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetProdutos/GX0021
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetProdutos
Campo | Descrição | Exemplo | Tipo |
---|---|---|---|
ref | Referência do produto no sistema, identificador único. | Texto | |
nome | Nome do produto. | Texto | |
descricao | Descrição Complementar do prouto. | Texto | |
legenda | Legenda que identifica o estado de um produt no sistema. Podendo assumir: L = Lançamento / F = Fora de Linha / N = Em Linha / P = Ponta de Estoque / T =Transição / C = Controle Interno R = Promoção | Caractere | |
ean13 | Código de barras EAN 13 do produto. | Texto | |
dun14 | Código de barras DUN14 da embalagem do produto. | Texto | |
fabricante | Código interno do fabricante. (mesmo que foi importado em GetFabricantes) | Numérico | |
segmento | Código interno do Segmento do produto. (GetClassificacoes) | Numérico | |
linha | Código interno da Linha do produto. (GetClassificacoes) | Numérico | |
grupo | Código interno do Grupo do produto. (GetClassificacoes) | Numérico | |
subgrupo | Código interno do Subgrupo do produto. (GetClassificacoes) | Numérico | |
cubagem | Cubagem do produto em M3. | Decimal | |
comprimento | Comprimento em Cm. | Decimal | |
largura | Largura em Cm. | Decimal | |
altura | Altura em Cm. | Decimal | |
pesoliq_un | Peso líquido da unidade em Kg. | Decimal | |
pesobru_un | Peo bruto da unidade em Kg. | Decimal | |
pesoliq_em | Peso líquido da embalagem em Kg. | Decimal | |
pesobru_em | Peso bruto da embalagem em Kg. | Decimal | |
un_venda | Unidade de venda do produto. (Ex. Cx/Un/Mt ... etc). | Texto | |
em_venda | Embalagem de venda do produto. (Ex. CX/12, PC/24 ... etc) | Texto | |
preco_un | Preço da unidade em reais. | Decimal | |
preco_em | Preço da embalagem em reais. | Decimal | |
qtd_logico | Qtd do estoque lógico. (= Estoque físico - Estoque vendio) | Decimal | |
qtd_fisico | Qtd física do produto em estoque. | Decimal |
Onde encontrar:
ListProdutos
Este método retorna apenas a referência dos produtos nas mesmas condições do método GetProdutos.
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/ListProdutos
GetProImagens
Este método retorna uma lisa de imagens do produto referenciado.
Exemplo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetProImagens/GX0021
Pode ser utilizado os parâmetros:
- /A - para exibir apenas imagens de alta qualidade
- Exemplo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetProImagens/GX0021/A
- /B - apenas imagens de baixa qualidade
- Exemplo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetProImagens/GX0021/B
Campo | Descrição | Tipo |
---|---|---|
img | Imagem do produto em formato Base64. | Texto Base64 |
GetEspecificacoes
Este método retorna as especificações de um produto. Por ser um campo livre seu tamanho pode ser muito grande, inviabilizando seu retorno junto ao método GetProdutos.
Deve ser utilizado sempre identificando o código do produto ao qual deseja-se obter a especificação.
Exemplo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetEspecificacoes/GX0021
Campo | Descrição | Tipo |
---|---|---|
ref | Referência do produto. (Identificador único) | Texto |
especificacao | Especificação do produto no cadastro. | Texto Livre |
Onde encontrar:
GetProCategorias
Este método retorna a relação categorias X produtos, lembrando que um produto pode ter várias categorias.
Campo | Descrição | Tipo |
---|---|---|
ref | Referência do produto. (Identificador único) | Texto |
categoria | Código interno da categoria. (GetCategorias) | Numérico |
ListEtapas
Este método retorna uma lista de todas as possíveis etapas cadastradas no sistema que um pedido de venda pode ter.
Campo | Descrição | Tipo |
---|---|---|
id | Código único da etapa. | Numérico |
etapa | Descrição da etapa. | Texto |
obs | Observações da etapa | Texto |
GetEtapaPedido
Dado o número do pedido, este método retorna sua etapa atual.
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetEtapaPedido/CODIGO_DO_PEDIDO
Campo | Descrição | Tipo |
---|---|---|
code | Retorno da API (0 = Retorno com sucesso | 1 = Erro no retorno) | Numérico |
msg | Caso haja erro (code = 1), será exibida a mensagem de erro neste campo. | Texto |
id_etapa | Código único da etapa (Retornadas em ListEtapas) | Numérico |
etapa | Descrição da etapa. | Texto |
user | Usuário que registrou a etapa. | Texto |
data | Data em que a etapa foi registrada. | Data/Hora |
GetFormasPagamento
Devolve as formas de pagamento disponíveis no sistema.
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetFormasPagamento
Campo | Descrição | Tipo |
---|---|---|
id | Id numérico da forma de pagamento | Numérico |
descricao | Descrição da forma de pagamento | Texto |
finalidade | Tipo da finalidade de pagamento 'DIN' = 'DINHEIRO' | Texto |
desconto | Desconto em % | Decimal |
ativo | Indica de a forma está ativa no sistema (1 = Ativo | 0 = Inativo) | Numérico |
SetPedido
Este método é responsável pelo recebimento dos pedidos gerados externamente. Deve ser utilizado o POST para envio de um arquivo JSon em que nele deve estar contidas todas ai informações a respeito da venda (datas, valores, cliente, produtos, pagamento, etc).
O documento JSON deve obedecer o seguinte formato:
Seção | Campo | Descrição | Tipo |
---|---|---|---|
pedido (Ocorrência 1:1) | id | Identificador do pedido no sistema de origem. | Numérico |
dtpedido | Data de digitação do pedido. | Data | |
dtentrega | Data de previsão de entrega do pedido. | Data | |
obs | Observações gerais sobre o pedido. | Texto | |
vrpedido | Valor total do pedido. | Decimal | |
vrfrete | Valor de frete do pedido. | Decimal | |
vrdesconto | Valor de desconto do pedido. | Decimal | |
tpfrete | Tipo do frete a ser utilizado ([C] CIF - [F] FOB - [S] CIF/FOB) | Texto(1) | |
idtransportador | Código do transportador no ERP | Numérico | |
cliente (Ocorrência 1:1) | id | Identificador do cliente no sistema de origem. | Numérico |
pessoa | Tipo de pessoa do cliente ([F] Física - [J] Jurídica). | Texto(1) | |
razao | Razão social do cliente. | Texto | |
fantasia | Nome fantasia do cliente. | Texto | |
cpfcnpj | CPF ou CNPJ do cliente. | Texto | |
rgie | RG ou Inscrição Estadual do cliente. | Texto | |
telefone | Telefone para contato. | Texto | |
fax | Fax. | Texto | |
E-mail para contato. | Texto | ||
emailnf | E-mail para envio de notas Fiscais. | Texto | |
endereco | Endereço do cliente. | Texto | |
bairro | Bairro. | Texto | |
cidade | Cidade. | Texto | |
uf | UF | Texto(2) | |
comp | Complemento do endereço. | Texto | |
cep | CEP do endereço. | Texto | |
numero | Número do endereço. | Texto | |
itens (Ocorrência N:1) | Id | Identificado do item no sistema Guarani, utiliza-se a referência do produto | Texto |
descricao | Descrição do Item | Texto | |
qtd | Quantidade vendida no pedido | Decimal | |
vrunit | Valor unitário do produto no pedido | Decimal | |
vtotal | Valor total dos produtos no pedido. | Decimal | |
- Campos decimais devem obedecer o formato: 0.##;
- Campos data devem obedecer o formato dd/mm/yyyy;
Exemplo de uma venda válida
{
"id":"16570",
"dtpedido":"03/04/2018",
"dtentrega":"",
"obs":"",
"vrpedido":213.29,
"vrfrete":0.00,
"vrdesconto":0.00,
"cliente":{
"id":"540",
"pessoa":"F",
"razao":"CLIENTE TESTE DE COMPRA",
"fantasia":"540",
"cpfcnpj":"00000000000",
"rgie":"",
"telefone":"0000000000",
"fax":" ",
"email":"teste@outlook.com",
"emailnf":"teste.nf@outlook.com",
"endereco":"RUA AFONSO BOTELHO",
"bairro":"CENTRO",
"cidade":"SÃO CARLOS",
"uf":"SP",
"comp":"apto 82 torre3",
"cep":"19997340",
"numero":"313"
},
"itens":[
{
"id":"1676",
"descricao":"Garfo Mesa Solin - 06 Unidades",
"qtd":1,
"vrunit":10.98,
"vtotal":10.98
},
{
"id":"1622",
"descricao":"Faca Mesa Serrilhada Solin - 06 Unidades",
"qtd":1,
"vrunit":10.98,
"vtotal":10.98
},
{
"id":"1355",
"descricao":"Caneca Beer 360ML",
"qtd":5,
"vrunit":9.51,
"vtotal":47.55
},
{
"id":"1784",
"descricao":"Kit de Aventais - Bordô ",
"qtd":1,
"vrunit":75.73,
"vtotal":75.73
},
{
"id":"1568",
"descricao":"Espátula Curva 60MM Profissional ",
"qtd":1,
"vrunit":12.46,
"vtotal":12.46
},
{
"id":"2042",
"descricao":"Ralador 6 Faces Inox ",
"qtd":1,
"vrunit":17.62,
"vtotal":17.62
},
{
"id":"2040",
"descricao":"Ralador 1 Face Multifuncional",
"qtd":1,
"vrunit":8.77,
"vtotal":8.77
},
{
"id":"2062",
"descricao":"Saladeira Empilhavel 12CM",
"qtd":4,
"vrunit":7.30,
"vtotal":29.20
}
]
}
Exemplos de Códigos
Delphi
procedure GetProduto;
const
API = 'http://127.0.0.1:8089/datasnap/rest/Tapi/getprodutos/';
USER = 'integration';
PASS = '123456';
var
server: TIdHttp;
str: TStringStream;
sku: string;
begin
sku := '36265';
server := TIdHttp.Create(nil);
try
server.Request.Accept := 'application/json';
server.Request.ContentType := 'application/json; charset=utf-8';
server.Request.CharSet := 'utf-8';
server.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
server.Request.Authentication := TIdBasicAuthentication.Create;
server.Request.BasicAuthentication := True;
server.Request.Authentication.Username := USER;
server.Request.Authentication.Password := PASS;
server.HTTPOptions := [hoForceEncodeParams] + [hoInProcessAuth];
str := TStringStream.Create('', TEncoding.UTF8);
try
try
server.Get(API + sku, str);
ShowMessage(str.DataString);
except
on E: Exception do
raise Exception.Create('Erro no GET do objeto.' + #13 + E.Message);
end;
finally
str.Free;
end;
finally
server.Disconnect;
server.Free;
end;
end;