Web Service Guarani ERP
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
GetTransportadores
Retorna listagem dos transportadores registrados no Guarani. Pode aceitar um código como parâmetro para trazer dados específicos de um transportador.
- Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetTransportadores
Campo | Descrição | Tipo |
---|---|---|
codigo | Código do transportador no Guarani. | Numérico |
fantasia | Nome fantasia do transportador. | Texto |
razao | Razão social do transportador. | Texto |
cnpj | CNPJ do transportador. | Texto |
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 | Exemplo |
---|---|---|---|
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 | |
bloquedo | Informa se o representante está marcado como bloqueado. S = Sim / N = Não | Texto | |
inativo | Informa se o representante está marcado como inativo. S = Sim / N = Não | Texto |
Onde encontrar
GetRepresentantesContatos
Retorna a relação de contatos dos representantes
- Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetRepresentantesContatos
Pode ser passado na URL o código do representante, o que traz apenas os contatos do representante em questão. Ex:
- Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetRepresentantesContatos/100
Campo | Descrição | Tipo |
---|---|---|
codigo | Código único do Contato | Numérico |
fornecedor | Código do representante o qual o contato esta atrelado | Numérico |
contato | Nome do Contatos | Texto |
ramal | Ramal | Texto |
celular | Número do Celular | Texto |
telefone | Número do Telefone | Texto |
fax | Número do Fax | Texto |
E-mail do representante | Texto | |
tipo | Tipo, podendo ser: G = Geral C = Compras V = Vendas F = Fiscal A = Administrativo S = Financeito | Texto |
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 produtos 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
GetProdutosFull
Este método é uma variação do método Getprodutos, eles devolve os mesmos campos com adicional do nome e descrição do produto.
Por devolver mais informações ele é mais "pesado" que o GetProdutos, por isso, utilize-o em ocasiões onde essas informações adicionais são requeridas.
Campo | Descrição | Exemplo | Tipo |
---|---|---|---|
ref | Referência do produto no sistema, identificador único. | Texto | |
nome | Nome do produto. (Disponível apenas no método GetProdutosFull) | Texto | |
descricao | Descrição Complementar do produto. (Disponível apenas no método GetProdutosFull) | 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 | |
em_fator | Fator da embalagem de venda. (Ex: em_venda = CX/12, em_fator = 12) | Numérico | |
apenas_un | Vende somente Unidade. (S = Sim | N = Não) | ||
apenas_em | Vende somente Embalagem. (S = Sim | N = Não) | ||
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 |
GetProSimilares
Dado uma referência de produto este método retorna todos os produtos similares do seu cadastro.
Exemplo: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/oSimilares/<código do produto>
Campo | Descrição | Tipo | Exemplo |
---|---|---|---|
- | Lista com referência dos produtos similares. | Array de texto |
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 |
GetDetalhesPedido
Dado o número do pedido, devolve alguns detalhes importantes a respeito do pedido;
Exemplo de uso: http://<endereço-do-cliente>:8089/datasnap/rest/tapi/GetDetalhesPedido/CODIGO_DO_PEDIDO
Campo | Descrição | Tipo |
---|---|---|
origem | Origem do pedido no Guarani. (Parte da ID interna) | Numérico |
pedido | Código do pedido no Guarani. (Parte da ID interna) | Numérico |
vr_frete | Valor do frete em reais. | Decimal |
vr_total | Valor do pedido em reais; | Decimal |
vq_liquido | Valor líquido do pedido em reais. | Decimal |
nf_serie | Número de série da Nota fiscal. (Depende da nota estar gerada) | Numérico |
nf_numero | Número da nota fiscal. (Depende da nota estar gerada) | Numérico |
nf_chave | Chave da Nota fiscal. (Depende da nota estar gerada) | texto |
GetEtapaPedido
Dado o número externo 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, 2, 3 = Erro no retorno) | Numérico |
msg | 1 = Pedido não encontrado. (O pedido não foi localizado na base do ERP) 2 = Pedido recebido mas não importado. (O pedido foi recebido pelo ERP mas ainda não processado pelo usuário) 3 = Etapa vazia. (O pedido não contém uma etapa válida no ERP) | 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 |
id_interno | Id interno do pedido no sistema (Origem - Pedido). Se 0, o pedido ainda não foi processado. | Texto |
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 | ||
representante | Código do representante no pedido. Deve ser o mesmo código de representante do Guarani ERP. Se não informado, será utilizado o código parametrizado no Webservice. | Numérico | ||
obs_ped | Lista de observações do pedido. Suporta até 4 campos de 120 caracteres em formato array.
| Array de Texto | ||
obs_nf | Lista de observações da Nota Fiscal. Suporta até 3 campos de 70caracteres em formato array.
| Array de Texto | ||
prazos | Lista de prazos em dias. Suporta até 12 campos de números inteiros em formato array.
| Array numérico | ||
vrpedido | Valor total do pedido. | Decimal | ||
vrfrete | Valor de frete do pedido. | Decimal | ||
vrdesconto | Valor em percentual do desconto do pedido. | Decimal(15,2) | *Considerar duas casas decimais depois à direita. | |
tpfrete | Tipo do frete a ser utilizado ([C] CIF - [F] FOB - [S] CIF/FOB) | Texto(1) | ||
pagforma | Id da forma de pagamento. As formas são adquiridas no método GetFormasPagamento | Numérico | ||
transp | Código do transportador. Pode ser obtido no método GetTrasnportadores | 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. (Atenção em mandar o valor da embalagem, se a venda foi em embalagem ou em unidade caso contrário) | Decimal | ||
vrunit | Valor unitário do produto no pedido | Decimal | ||
vtotal | Valor total dos produtos no pedido. | Decimal | ||
emb | Embalagem de venda, tipo retornado no método GetProdutos/GetprodutosFull nos campos em_venda ou un_venda. De forma simplificada, se o item foi vendido em embalagem deve ser informado o mesmo valor do campo em_venda, se unidade, informar o valor do campo un_venda. *Se o valor for omitido será considerado 'UN'; | Texto |
- 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":"",
"obs_ped":["PD1","PD2","PD3","PD4"],
"obs_nf":["NF1","NF2","NF3"],
"prazos":[12,60,90,120],
"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,
"emb":"PC/6",
"vrunit":10.98,
"vtotal":10.98,
},
{
"id":"1622",
"descricao":"Faca Mesa Serrilhada Solin - 06 Unidades",
"qtd":1,
"emb":"UN",
"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;
Related content
Guarani Sistemas - Todos os direitos reservados