Integrações
Introdução
O Integrações é um módulo desenvolvido para receber requisições de um serviço web para coleta de informações do banco de dados do Shop Control 9, permitindo assim a atualização de sites e/ou sistemas de vendas online. Ele também é responsável por receber os dados de vendas feitas na plataforma online e gerar as sequências de saídas no sistema, bem como a emissão de nota fiscal.
Através deste manual técnico, iremos informar as linhas de comando necessárias para o webservice tratar as requisições entre ele e o módulo Integrações.
A ativação em uma base real, adiciona valor à renovação de licença do cliente que fará uso. O Módulo Integrações está disponível apenas para clientes com o Shop Control 9 Plus. Consulte o departamento comercial, sobre os valores, antes de iniciar o processo de homologação.
E-mail: comercial@idealsoft.com.br
Fone: (41) 3013-1161
Visão Geral
Segue abaixo a lista de informações que estão no Shop Control 9 e que o módulo Integrações disponibilizará para o webservice:
Cadastros:
- Classe
- Subclasse
- Grupos
- Famílias
- Fabricantes
- Unidades de Venda
- Cores
- Tamanhos
- Moedas
- Pesquisa 1
- Pesquisa 2
- Pesquisa 3
- Clientes
- Contatos dos Clientes (telefones, e-mail, data de nascimento, etc.)
- Produtos
- Fotos das mercadorias
- Preços
- Estoque
- Promoções
Movimento:
Para a parte de movimentação do sistema, teremos a função de receber as vendas feitas no site, para a criação das sequências no Shop Control 9.
Arquitetura
Geral
A arquitetura da API do módulo Integrações é separada pela requisição de autenticação e as demais requisições. A requisição de autenticação trará o token a ser utilizado em todas as outras requisições. O token deverá ser gerado a cada $HORAS horas para que as validações de data e hora com o servidor e licenciamento do módulo ocorram.
Cabeçalho da Requisição
Todas as requisições devem passar uma série de parâmetros no header da requisição:
“Signature”: Para garantir que as informações enviadas na requisição para o módulo estejam concisas e não tenham sofrido modificações durante a requisição até o servidor, é necessário que no header da requisição seja enviado o campo “signature”, que deve ser calculado da seguinte forma:
1 – Concatenar os seguintes campos:
Método HTTP* + Timestamp + Conteúdo BODY* (se houver)
* O método HTTP precisa ser em minúsculo, por exemplo, get, post, put, delet
* O conteúdo do body precisa ser sem espaços no começo e no fim e estar em Base64
2- Encriptar os dados concatenados com o algoritmo HMAC SHA256, utilizando a senha informada nas configurações do módulo.
3- Passar os dados encriptados para Base64.
“CodFilial”: passar o código da filial do Shop Control 9 para que o token foi gerado.
“Authorization”: deve ser passado o token gerado pela requisição Autenticação, no seguinte modelo:
Token [tokenGerado]
“Timestamp”: passar o timestamp utilizado para gerar o campo Signature, para questões de conferência.
Resposta
Todas as requisições que foram processadas e respondidas pelo servidor retornarão o status HTTP 200 OK, independente do sucesso da resposta. Todas as respostas serão retornadas no padrão JSON e terão o seguinte formato:
{
“sucesso”: [bool],
“mensagem”: [string],
“tipo”: [string],
“complementoTipo”: [string],
“statusCode”: [int],
“dados”: [json]
}
Descrição dos campos:
“sucesso”: Esse campo boolean diz que a resposta pode ser considerada como válida para processamento pelo consumidor do serviço. Caso seja falso, o campo “dados” virá sem valor e os campos “mensagem” e “tipo” serão preenchidos com mais informações a respeito do problema.
“mensagem”: Campo string com informações do erro da requisição, caso o campo “sucesso” seja falso. Pode ser uma mensagem simples de validação das regras de negócio do serviço ou uma mensagem de erro retornada pelo servidor (algumas vezes em inglês). Utilizar em conjunto com os campos “tipo”, “complementoTipo” e “statusCode” para fazer o tratamento de erros e sistema de logs.
“tipo”: Campo string com uma informação técnica do tipo do erro para auxiliar o consumidor do serviço a depurar e tratar os problemas. Atualmente os tipos possíveis são:
- EXCECAO_SERVIDOR,
- AUTENTICACAO_INVALIDA,
- HEADER_INVALIDO,
- BODY_INVALIDO,
- CAMPO_INVALIDO,
- LICENCA_EXPIRADA_OU_INVALIDA,
- FIM_DE_PAGINA,
- REGISTRO_NAO_ENCONTRADO,
- TIPO_BUSCA_INVALIDO
“complementoTipo”: Campo string, só virá preenchido caso o campo “tipo” seja ambíguo ou complexo a ponto de precisar de um complemento.
“statusCode”: Campo integer, trará o código 200 OK nos casos de sucesso no processamento da requisição. Nos casos de erro, trará um código HTTP relativo ao problema apresentado para que o consumidor do serviço possa apurar seu tratamento de erros (como por exemplo: 401 Não autorizado, para o caso de o token informado seja inválido, etc.).
“dados”: Campo JSON, será o campo onde as informações requisitadas serão apresentadas. Poderá ser um objeto simples ou uma lista, dependendo do tipo da requisição. Para mais informações acerca do tipo de retorno para cada uma das requisições consulte a seção Serviços.
Homologação
A IdealSoft disponibiliza uma área de homologação com uma base de testes para clientes em processo de integração realizarem os testes das requisições antes de utilizar o módulo Integrações em produção. Ao requisitar o módulo com o setor comercial, você deverá receber o código da filial de homologação para autenticar o serviço.
Caso deseje seguir o roteiro de homologação, leia a seção Roteiro de Testes.
Serviços
Autenticação
Fará a validação do licenciamento para o número de série e filial informados. Retorna o token para utilização nas demais requisições.
Requisição
GET/auth/?serie=[string]&codfilial=[integer]
Parâmetros
serie: Número de série licenciado para uso
codfilial: Código da filial do Shop Control 9 licenciado para uso.
Parâmetros BODY
Nenhum.
<JSON/>
token: [string]
expireAt: [data/hora UTC]
token: Token para utilização nas demais requisições. Tem validade de $HORAS horas. Após expirar, deve ser feita outra requisição de token.
expireAt: Data/hora em UTC (YYYY-MM-DDTHH:MM:SS.0000000+00:00) do momento em que o token retornado irá expirar. Pode ser utilizado para que o consumidor do serviço faça um controle da requisição de novos tokens.
Cadastros
Filial
Traz a lista de Filiais cadastradas.
GET/filial/pagina?datade=[datade]&dataate=[dataate]
Parâmetros
datade (opcional): A data mínima de alteração para que sejam filtrados os resultados.
dataate (opcional): A data máxima de alteração para que sejam filtrados os resultados.
ativo (opcional): booleano.
<JSON/>
token: [string]
expireAt: [data/hora UTC]
token: Token para utilização nas demais requisições. Tem validade de $HORAS horas. Após expirar, deve ser feita outra requisição de token.
expireAt: Data/hora em UTC (YYYY-MM-DDTHH:MM:SS.0000000+00:00) do momento em que o token retornado irá expirar. Pode ser utilizado para que o consumidor do serviço faça um controle da requisição de novos tokens.
Traz detalhes do cadastro da filial.
GET/filial/detalhe/codigoFilial
Parâmetros
codigoFilial: O campo código da filial.
<JSON/>
codigo: [string]
nome: [string]
razaoSocial: [string]
cNPJ: [string]
bairro: [string]
cidade: [string]
estado: [string]
CEP: [string]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigo": "1", "nome": "FILIAL 1", "razaoSocial": "Razão Social Curitiba", "cNPJ": "00000000000001", "bairro": "Alto da XV", "cidade": "Curitiba", "estado": "PR", "cEP": "80040380" }, { "codigo": "2", "nome": "FILIAL SP", "razaoSocial": "Razão Social Sampa", "cNPJ": "00000000000002", "bairro": "Pinheiros", "cidade": "São Paulo", "estado": "SP", "cEP": "05414011" }, ] }
Funcionários
Traz a lista de funcionários cadastrados.
GET/funcionarios/pagina?datadefunc=[data]&dataatefunc=[data]
Parâmetros
datadefunc: A data mínima de alteração para que sejam filtrados os resultados.
dataatefunc: A data máxima de alteração para que sejam filtrados os resultados.
ativo: booleano.
tecnico: booleano.
vendedor: booleano.
<JSON/>
codigo: [string]
nome: [string]
apelido: [string]
sexo: [string](M ou F)
admissao: [string]
demissao: [string]
endereço: [string]
bairro: [string]
cidade: [string]
estado: [string]
telefone: [string]
inativo: [bool]
vendedor: [bool]
tecnico: [bool]
cargo: [string]
cpf: [string]
email: [string]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigo": 1, "nome": "FUNCIONÁRIO ADMINISTRADOR", "apelido": "ADMINISTRADOR", "sexo": "M", "admissao": "2019-07-15T00:00:00-03:00", "demissao": null, "endereco": "Rua Aramis Taborda Athayde", "bairro": "Hugo Lange", "cidade": "Curitiba", "estado": "PR", "telefone": "41999466849", "inativo": false, "vendedor": false, "tecnico": false, "cargo": "Gestor Financeiro", "cpf": "000.000.000-00", "email": "email@email.com.br" }, { "codigo": 2, "nome": "FUNCIONÁRIO DOIS", "apelido": "FUNC 2", "sexo": "M", "admissao": "2019-07-15T00:00:00-03:00", "demissao": null, "endereco": "Rua Professor Brandão", "bairro": "Alto da XV", "cidade": "Curitiba", "estado": "PR", "telefone": "41999999999", "inativo": false, "vendedor": false, "tecnico": false, "cargo": "Vendedor", "cpf": "000.000.000-00", "email": "email@email.com.br" }, ] }
Traz os detalhes do cadastro do funcionario.
GET/funcionarios/detalhes/codigoFuncionario
Parâmetros
codigoFuncionario: O campo código do Funcionário.
<JSON/>
codigo: [string]
nome: [string]
apelido: [string]
sexo: [string](M ou F)
admissao: [string]
demissao: [string]
endereço: [string]
bairro: [string]
cidade: [string]
estado: [string]
telefone: [string]
inativo: [bool]
vendedor: [bool]
tecnico: [bool]
cargo: [string]
cpf: [string]
email: [string]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigo": 1, "nome": "FUNCIONÁRIO ADMINISTRADOR", "apelido": "ADMINISTRADOR", "sexo": "M", "admissao": "2019-07-15T00:00:00-03:00", "demissao": null, "endereco": "Rua Aramis Taborda Athayde", "bairro": "Hugo Lange", "cidade": "Curitiba", "estado": "PR", "telefone": "41999999999", "inativo": false, "vendedor": false, "tecnico": false, "cargo": "Gestor Financeiro", "cpf": "000.000.000-00", "email": "email@email.com.br" }, ] }
Auxiliares
Traz a lista de cadastros auxiliares do tipo escolhido para complementar o cadastro de produtos.
GET/aux/tipo?datade=[data]&dataate=[data]
Parâmetros
tipo: Tipo do cadastro auxiliar, deve ser substituído por um dos seguintes valores:
- classes
- subclasses
- grupos
- familias
- fabricantes
- unidades_venda
- cores
- tamanhos
- moedas
- pesquisa_1
- pesquisa_2
- pesquisa_3
datade (opcional): A data mínima de alteração
dataate (opcional): A data máxima de alteração
<JSON/>
codigo: [string]
nome: [string]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigo": "1", "nome": "Produto Acabado" }, { "codigo": "2", "nome": "Insumos" }, { "codigo": "9999", "nome": "Outras" } ] }
Clientes
As requisições para o cadastro de clientes permitem trazer todos os clientes cadastrados na base de forma paginada – podendo filtrar pela data de alteração dos registros – e também trazer os contatos cadastrados dos clientes.
Existe também a possibilidade de cadastrar clientes e seus contatos através de requisições POST.
Consultar Clientes
GET /clientes/pagina?datade=[data]&dataate=[data]
Parâmetros
pagina: A requisição trará sempre no máximo 20 registros do cadastro de clientes e fornecedores por página. Para pegar o cadastro completo deve ser feito o loop passando por todas as páginas (começando pela página 1) até que a requisição retorne o tipo “FIM_DE_PAGINA”.
datade (opcional): A data mínima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
dataate (opcional): A data máxima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
codigo: [long]
nome: [string]
fantasia: [string]
tipo: “C”, “F”, “R” – (Verificar descrição logo abaixo)
fisicaJuridica: “F” ou “J”
cpfCnpj: [string(14)]
rg: [string]
ie: [string]
cep: [string(8)]
endereco: [string]
numero: [string]
complemento: [string]
bairro: [string]
cidade: [string]
uf: [string(2)]
pais: [string]
telefone1: [string]
telefone2: [string]
fax: [string]
LGPD_Receber_Campanhas_Marketing: [bool]
LGPD_Receber_Contato_Situacao_Pedido: [bool]
LGPD_Telefone_Contato_Formatado: [string] (II) IIIII-IIII
entregaCep: [string]
entregaEndereco: [string]
entregaNumero: [string]
entregaComplemento: [string]
entregaBairro: [string]
entregaCidade: [string]
entregaUf: [string]
entregaPais: [string]
entregaPontoRef1: [string]
entregaPontoRef2: [string]
faturamentoCep: [string]
faturamentoEndereco: [string]
faturamentoNumero: [string]
faturamentoComplemento: [string]
faturamentoBairro: [string]
faturamentoCidade: [string]
faturamentoUf: [string]
faturamentoPais: [string]
faturamentoPontoRef1: [string]
faturamentoPontoRef2: [string]
IndicadorIE: 1, 2 ou 9 – (Verificar descrição logo abaixo)
vendedor1:
{
ordem:[int]
codigo:[string]
nome:[string]
}
vendedor2:
{
ordem:[int]
codigo:[string]
nome:[string]
}
tabelaPrecosPadrao: [string]
codigoClasse: [string]
codigoFilial: [string]
filialExclusiva: [bool]
urlContatos: [string]
utiliza_Fidelidade: [bool]
contatos:
[{
nome: [string]
sexo: “M” ou “F”
cargo: [string]
diaAniversario: [int(2)]
mesAniversario: [string(3)] (JAN até DEZ)
anoAniversario: [int(4)]
telefone: [string]
ramal: [string]
tipoEmail: “E”, “P”, “F”, “N”, “M” – (Verificar descrição logo abaixo)
email: [string]
ordem: [int]
}]
Tipo Cliente
C – Cliente
F – Fornecedor
R – Revenda
Indicador IE
1 – Contribuinte
2 – Isento
9 – Não contribuinte
Tipo Email
E – Empresa
P – Pessoal
F – Financeiro
N – NF-e
M – Mala Direta
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "ordem": 1234, "codigo": 5678, "nome": "João da Silva", "fantasia": "Silva e Cia", "tipo": "J", "fisicaJuridica": "J", "cpfCnpj": "12345678000190", "rg": "MG12345678", "ie": "123456789", "cep": "30123456", "endereco": "Rua Exemplo de Dados", "numero": "1000", "complemento": "Sala 100", "bairro": "Centro", "cidade": "Belo Horizonte", "uf": "MG", "pais": "BRASIL", "telefone1": "31999999999", "telefone2": "3133333333", "fax": "3133334444", "lGPD_Receber_Campanhas_Marketing": false, "lGPD_Receber_Contato_Situacao_Pedido": true, "lGPD_Telefone_Contato_Formatado": "31999999999", "entregaCep": "30123456", "entregaEndereco": "Avenida Exemplo", "entregaNumero": "200", "entregaComplemento": "Loja 1", "entregaBairro": "Savassi", "entregaCidade": "Belo Horizonte", "entregaUf": "MG", "entregaPais": "BRASIL", "entregaPontoRef1": "Próximo ao shopping", "entregaPontoRef2": "Ao lado do banco", "faturamentoCep": "30123456", "faturamentoEndereco": "Rua Faturamento", "faturamentoNumero": "1500", "faturamentoComplemento": "Andar 3", "faturamentoBairro": "Funcionários", "faturamentoCidade": "Belo Horizonte", "faturamentoUf": "MG", "faturamentoPais": "BRASIL", "faturamentoPontoRef1": "Perto da praça", "faturamentoPontoRef2": "Próximo à igreja", "indicadorIE": 1, "vendedor1": { "ordem": 10, "codigo": 100, "nome": "Maria Souza" }, "vendedor2": { "ordem": 20, "codigo": 200, "nome": "Carlos Oliveira" }, "tabelaPrecosPadrao": "Tabela 1", "codigoClasse": 2, "codigoFilial": 3, "filialExclusiva": true, "urlContatos": "/contatos/5678", "utiliza_Fidelidade": false, "contatos": [ { "nome": "João", "sexo": "M", "cargo": "Gerente", "diaAniversario": 10, "mesAniversario": "JUL", "anoAniversario": 1985, "telefone": "31999999999", "ramal": "100", "tipoEmail": "P", "email": "joao.silva@example.com", "ordem": 4321 } ] } ] }
GET /clientes/detalhes/codigo
Parâmetros
codigo: O código do cliente específico para trazer o cadastro. Retorna StatusCode 404 caso seja passado um código que não existe.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
codigo: [long]
nome: [string]
fantasia: [string]
tipo: “C”, “F”, “R” – (Verificar descrição logo abaixo)
fisicaJuridica: “F” ou “J”
cpfCnpj: [string(14)]
rg: [string]
ie: [string]
cep: [string(8)]
endereco: [string]
numero: [string]
complemento: [string]
bairro: [string]
cidade: [string]
uf: [string(2)]
pais: [string]
telefone1: [string]
telefone2: [string]
fax: [string]
LGPD_Receber_Campanhas_Marketing: [bool]
LGPD_Receber_Contato_Situacao_Pedido: [bool]
LGPD_Telefone_Contato_Formatado: [string] (II) IIIII-IIII
entregaCep: [string]
entregaEndereco: [string]
entregaNumero: [string]
entregaComplemento: [string]
entregaBairro: [string]
entregaCidade: [string]
entregaUf: [string]
entregaPais: [string]
entregaPontoRef1: [string]
entregaPontoRef2: [string]
faturamentoCep: [string]
faturamentoEndereco: [string]
faturamentoNumero: [string]
faturamentoComplemento: [string]
faturamentoBairro: [string]
faturamentoCidade: [string]
faturamentoUf: [string]
faturamentoPais: [string]
faturamentoPontoRef1: [string]
faturamentoPontoRef2: [string]
IndicadorIE: 1, 2 ou 9 – (Verificar descrição logo abaixo)
vendedor1:
{
ordem:[int]
codigo:[string]
nome:[string]
}
vendedor2:
{
ordem:[int]
codigo:[string]
nome:[string]
}
tabelaPrecosPadrao: [string]
codigoClasse: [string]
codigoFilial: [string]
filialExclusiva: [bool]
urlContatos: [string]
utiliza_Fidelidade: [bool]
contatos:
[{
nome: [string]
sexo: “M” ou “F”
cargo: [string]
diaAniversario: [int(2)]
mesAniversario: [string(3)] (JAN até DEZ)
anoAniversario: [int(4)]
telefone: [string]
ramal: [string]
tipoEmail: “E”, “P”, “F”, “N”, “M” – (Verificar descrição logo abaixo)
email: [string]
ordem: [int]
}]
Tipo Cliente
C – Cliente
F – Fornecedor
R – Revenda
Indicador IE
1 – Contribuinte
2 – Isento
9 – Não contribuinte
Tipo Email
E – Empresa
P – Pessoal
F – Financeiro
N – NF-e
M – Mala Direta
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "ordem": 1234, "codigo": 5678, "nome": "João da Silva", "fantasia": "Silva e Cia", "tipo": "J", "fisicaJuridica": "J", "cpfCnpj": "12345678000190", "rg": "MG12345678", "ie": "123456789", "cep": "30123456", "endereco": "Rua Exemplo de Dados", "numero": "1000", "complemento": "Sala 100", "bairro": "Centro", "cidade": "Belo Horizonte", "uf": "MG", "pais": "BRASIL", "telefone1": "31999999999", "telefone2": "3133333333", "fax": "3133334444", "lGPD_Receber_Campanhas_Marketing": false, "lGPD_Receber_Contato_Situacao_Pedido": true, "lGPD_Telefone_Contato_Formatado": "31999999999", "entregaCep": "30123456", "entregaEndereco": "Avenida Exemplo", "entregaNumero": "200", "entregaComplemento": "Loja 1", "entregaBairro": "Savassi", "entregaCidade": "Belo Horizonte", "entregaUf": "MG", "entregaPais": "BRASIL", "entregaPontoRef1": "Próximo ao shopping", "entregaPontoRef2": "Ao lado do banco", "faturamentoCep": "30123456", "faturamentoEndereco": "Rua Faturamento", "faturamentoNumero": "1500", "faturamentoComplemento": "Andar 3", "faturamentoBairro": "Funcionários", "faturamentoCidade": "Belo Horizonte", "faturamentoUf": "MG", "faturamentoPais": "BRASIL", "faturamentoPontoRef1": "Perto da praça", "faturamentoPontoRef2": "Próximo à igreja", "indicadorIE": 1, "vendedor1": { "ordem": 10, "codigo": 100, "nome": "Maria Souza" }, "vendedor2": { "ordem": 20, "codigo": 200, "nome": "Carlos Oliveira" }, "tabelaPrecosPadrao": "Tabela 1", "codigoClasse": 2, "codigoFilial": 3, "filialExclusiva": true, "urlContatos": "/contatos/5678", "utiliza_Fidelidade": false, "contatos": [ { "nome": "João", "sexo": "M", "cargo": "Gerente", "diaAniversario": 10, "mesAniversario": "JUL", "anoAniversario": 1985, "telefone": "31999999999", "ramal": "100", "tipoEmail": "P", "email": "joao.silva@example.com", "ordem": 4321 } ] } ] }
Consultar Contatos
GET /clientes/contatos/?datade=[data]&dataate=[data]
Parâmetros
datade (opcional): A data mínima de alteração para que sejam filtrados os resultados.
Recomendado para que sejam atualizados os resultados após a primeira sincronização.
dataate (opcional): A data máxima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
Parâmetros BODY
Nenhum.
<JSON/>
codigoCliente: [long]
contatos:
[{
nome: [string]
sexo: M ou F
cargo: [string]
diaAniversario: [int(2)]
mesAniversario: [string(3)] (JAN até DEZ)
anoAniversario: [int(4)]
telefone: [string]
ramal: [string]
tipoEmail: “E”, “P”, “F”, “N”, “M” – (Verificar descrição logo abaixo)
email: [string]
ordem: [int]
}]
Tipo Email
E – Empresa
P – Pessoal
F – Financeiro
N – NF-e
M – Mala Direta
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigoCliente": 2, "contatos": [ { "sexo": "M", "cargo": "Gerente de TI", "diaAniversario": 15, "mesAniversario": "MAR", "anoAniversario": 1985, "telefone": "+55 11 91234-5678", "ramal": "101", "tipoEmail": "E", "email": "gerente.ti@empresa.com", "ordem": 118, "codigo": 2, "nome": "Carlos Silva" }, { "sexo": "M", "cargo": "Desenvolvedor", "diaAniversario": 5, "mesAniversario": "DEZ", "anoAniversario": 1992, "telefone": "+55 31 97654-3210", "ramal": "303", "tipoEmail": "F", "email": "dev.junior@empresa.com", "ordem": 120, "codigo": 4, "nome": "João Souza" } ] } ] }
Cadastrar Cliente
POST /clientes
Parâmetros
Nenhum.
Parâmetros BODY
Content-Type: application/json
Único JSON:
Nome: [string]
Fantasia: [string]
Tipo: “C”, “F”, “R” (Verificar descrição logo abaixo)
FisicaJuridica: “F” ou “J”
CpfCnpj: [string(14)]
Rg: [string]
Ie: [string]
Cep: [string(8)]
Endereco: [string]
Numero: [string]
Complemento: [string]
Bairro: [string]
Cidade: [string]
Uf: [string(2)]
Pais*: [string]
Telefone1: [string]
LGPD_Receber_Campanhas_Marketing: [bool]
LGPD_Receber_Contato_Situacao_Pedido: [bool]
LGPD_Telefone_Contato_Formatado: [string] (II) IIIII-IIII
Telefone2: [string]
Fax: [string]
EntregaCep: [string]
EntregaEndereco: [string]
EntregaNumero: [string]
EntregaComplemento: [string]
EntregaBairro: [string]
EntregaCidade: [string]
EntregaUf: [string]
EntregaPais: [string]
EntregaPontoRef1: [string]
EntregaPontoRef2: [string]
FaturamentoCep: [string]
FaturamentoEndereco: [string]
FaturamentoNumero: [string]
FaturamentoComplemento: [string]
FaturamentoBairro: [string]
FaturamentoCidade: [string]
FaturamentoUf: [string]
FaturamentoPais: [string]
FaturamentoPontoRef1: [string]
FaturamentoPontoRef2: [string]
IndicadorIE: 1, 2 ou 9 (Verificar descrição logo abaixo)
UrlContatos: [string]
Utiliza_Fidelidade: [bool]
FilialExclusiva: [bool]
CodigoFilial: [string]
CodigoClasse: [string]
TabelaPrecosPadrao: [string]
Indicador IE
1 – Contribuinte
2 – Isento
9 – Não contribuinte
* País: deixar em branco coloca o país como 1058 Brasil
<JSON/>
codigoGerado: [long]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigoGerado": 1562 } }
Atualizar Cliente
PUT /clientes
Parâmetros
Nenhum.
Parâmetros BODY
Content-Type: application/json
Único JSON:
Nome: [string]
Fantasia: [string]
Tipo: “C”, “F”, “R” – (Verificar descrição logo abaixo)
FisicaJuridica: “F” ou “J”
CpfCnpj: [string(14)]
Rg: [string]
Ie: [string]
Cep: [string(8)]
Endereco: [string]
Numero: [string]
Complemento: [string]
Bairro: [string]
Cidade: [string]
Uf: [string(2)]
Pais*: [string]
Telefone1: [string]
LGPD_Receber_Campanhas_Marketing: [bool]
LGPD_Receber_Contato_Situacao_Pedido: [bool]
LGPD_Telefone_Contato_Formatado: [string] (II) IIIII-IIII
Telefone2: [string]
Fax: [string]
EntregaCep: [string]
EntregaEndereco: [string]
EntregaNumero: [string]
EntregaComplemento: [string]
EntregaBairro: [string]
EntregaCidade: [string]
EntregaUf: [string]
EntregaPais: [string]
EntregaPontoRef1: [string]
EntregaPontoRef2: [string]
FaturamentoCep: [string]
FaturamentoEndereco: [string]
FaturamentoNumero: [string]
FaturamentoComplemento: [string]
FaturamentoBairro: [string]
FaturamentoCidade: [string]
FaturamentoUf: [string]
FaturamentoPais: [string]
FaturamentoPontoRef1: [string]
FaturamentoPontoRef2: [string]
IndicadorIE: 1, 2 ou 9 – (Verificar descrição logo abaixo)
UrlContatos: [string]
Utiliza_Fidelidade: [bool]
FilialExclusiva: [bool]
CodigoFilial: [string]
CodigoClasse: [string]
TabelaPrecosPadrao: [string]
Indicador IE
1 – Contribuinte
2 – Isento
9 – Não contribuinte
* País: deixar em branco coloca o país como 1058 Brasil
<JSON/>
codigoGerado: [long]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigoGerado": 1562 } }
Cadastrar Contato
POST /clientes/contatos/codigo
Parâmetros
codigo: Substituir pelo código do cliente para vincular a lista de contatos.
Parâmetros BODY
Content-Type: application/json
Lista JSON:
Sexo: M ou F
Cargo: [string]
DiaAniversario: [int(2)]
MesAniversario: [string(3)] (JAN até DEZ)
AnoAniversario: [int(4)]
Telefone: [string]
Ramal: [string]
TipoEmail: “E”, “P”, “F”, “N”, “M” – (Verificar descrição logo abaixo)
Email: [string]
Ordem: [int]
Codigo: [long]
Nome: [string]
Tipo Email
E – Empresa
P – Pessoal
F – Financeiro
N – NF-e
M – Mala Direta
<JSON/>
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ 7885 ] }
Atualizar Contato
PUT /clientes/contatos/codigo/ordem
Parâmetros
codigo: Substituir pelo código do cliente para vincular a lista de contatos.
ordem: Substituir pela ordem do contato
Parâmetros BODY
Content-Type: application/json
Único JSON:
Sexo: M ou F
Cargo: [string]
DiaAniversario: [int(2)]
MesAniversario: [string(3)] (JAN até DEZ)
AnoAniversario: [int(4)]
Telefone: [string]
Ramal: [string]
TipoEmail: “E”, “P”, “F”, “N”, “M” – (Verificar descrição logo abaixo)
Email: [string]
Ordem: [int]
Codigo: [long]
Nome: [string]
Tipo Email
E – Empresa
P – Pessoal
F – Financeiro
N – NF-e
M – Mala Direta
<JSON/>
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ 7885 ] }
Produtos
Para o cadastro de produtos é possível trazer os campos básicos de um cadastro, o estoque atual nas filiais liberadas, as fotos cadastradas e os preços das tabelas de preço cadastradas.
GET /produtos/detalhes/codigo
Parâmetros
codigo: Código do produto
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
codigo: [int]
nome: [string]
extra1: [string]
extra2: [string]
extra3: [string]
observacao1: [string]
observacao2: [string]
observacao3: [string]
tipo: 0 ou 1 (Normal, Grade)
codigoClasse: [int]
codigoSubclasse: [int]
codigoGrupo: [int]
codigoMoeda: [int]
codigoFamilia: [int]
codigoUnidadeVenda: [int]
codigoPesquisa1: [int]
codigoPesquisa2: [int]
codigoPesquisa3: [int]
pesoLiquido: [decimal]
pesoBruto: [decimal]
estoqueAtual: [decimal]
codigoFabricante: [int]
webObs1: [string]
webObs2: [string]
inativo: [bool]
altura: [decimal]
largura: [decimal]
comprimento: [decimal]
codigoAdicional1: [string]
codigoAdicional2: [string]
codigoAdicional3: [string]
codigoAdicional4: [string]
codigoAdicional5: [string]
codigoBarras: [string]
urlDetalhe: [string]
urlEstoqueDetalhe: [string]
urlTabelaPreco: [string]
urlPromocoes: [string]
urlFotos: [string]
precos:
[{
tabela: [string]
preco: [decimal]
promocional: [bool]
}]
nomeSite: [string]
codigoNCM: [string]
nomeUnidadeVendas: [string]
codigoPesquisa1: [int]
nomePesquisa1: [string]
eanTributavel: [string]
codigoFornecedor: [int]
nomeFornecedor: [string]
nomeClasse: [string]
nomeLocalizacao: [string]
fornecedores:
[{
nome: [string]
codigo: [int]
}]
Exemplo
{ "ordem": 1, "codigo": 123456, "nome": "Produto Exemplo", "extra1": "Detalhe extra 1", "extra2": "Detalhe extra 2", "extra3": "Detalhe extra 3", "observacao1": "Observação relevante 1", "observacao2": "Observação relevante 2", "observacao3": "Observação relevante 3", "tipo": 0, "codigoClasse": 10, "codigoSubclasse": 20, "codigoGrupo": 30, "codigoMoeda": 1, "codigoFamilia": 100, "codigoUnidadeVenda": 200, "codigoPesquisa1": 300, "codigoPesquisa2": 400, "codigoPesquisa3": 500, "pesoLiquido": 1.5, "pesoBruto": 1.7, "estoqueAtual": 100.0, "codigoFabricante": 999, "webObs1": "Observação web 1", "webObs2": "Observação web 2", "inativo": false, "altura": 10.0, "largura": 5.0, "comprimento": 20.0, "codigoAdicional1": "ADIC001", "codigoAdicional2": "ADIC002", "codigoAdicional3": "ADIC003", "codigoAdicional4": "ADIC004", "codigoAdicional5": "ADIC005", "codigoBarras": "1234567890123", "urlDetalhe": "produto/123456", "urlEstoqueDetalhe": "", "urlTabelaPreco": "", "urlPromocoes": "", "urlFotos": "", "precos": [ { "tabela": "Padrão", "preco": 100.0, "promocional": false }, { "tabela": "Promocional", "preco": 90.0, "promocional": true } ], "nomeSite": "Loja Exemplo" "nomeUnidadeVendas": "un", "nomePesquisa1": "30 ml", "eanTributavel": "192505072498", "codigoFornecedor": 5077, "nomeFornecedor": "Fornecedor Teste", "nomeClasse": "Exemplo", "nomeLocalizacao": "CD", "fornecedores": [ { "nome": "Fornecedor 2", "codigo": 5077 }, { "nome": "Fornecedor 3", "codigo": 5043 }, ] }
GET /produtos/pagina?datade=[data]&dataate=[data]
Parâmetros
pagina: A requisição trará sempre no máximo 20 registros por página do cadastro de produtos. Para pegar o cadastro completo deve ser feito o loop passando por todas as páginas (começando pela página 1) até que a requisição retorne o tipo “FIM_DE_PAGINA”.
datade (opcional): A data mínima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
dataate (opcional): A data máxima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
codigo: [int]
nome: [string]
extra1: [string]
extra2: [string]
extra3: [string]
observacao1: [string]
observacao2: [string]
observacao3: [string]
tipo: 0 ou 1 (Normal, Grade)
codigoClasse: [int]
codigoSubclasse: [int]
codigoGrupo: [int]
codigoMoeda: [int]
codigoFamilia: [int]
codigoUnidadeVenda: [int]
codigoPesquisa1: [int]
codigoPesquisa2: [int]
codigoPesquisa3: [int]
pesoLiquido: [decimal]
pesoBruto: [decimal]
estoqueAtual: [decimal]
codigoFabricante: [int]
webObs1: [string]
webObs2: [string]
inativo: [bool]
altura: [decimal]
largura: [decimal]
comprimento: [decimal]
codigoAdicional1: [string]
codigoAdicional2: [string]
codigoAdicional3: [string]
codigoAdicional4: [string]
codigoAdicional5: [string]
codigoBarras: [string]
urlDetalhe: [string]
urlEstoqueDetalhe: [string]
urlTabelaPreco: [string]
urlPromocoes: [string]
urlFotos: [string]
precos:
[{
tabela: [string]
preco: [decimal]
promocional: [bool]
}]
nomeSite: [string]
codigoNCM: [string]
nomeUnidadeVendas: [string]
codigoPesquisa1: [int]
nomePesquisa1: [string]
eanTributavel: [string]
codigoFornecedor: [int]
nomeFornecedor: [string]
nomeClasse: [string]
nomeLocalizacao: [string]
fornecedores:
[{
nome: [string]
codigo: [int]
}]
Exemplo
{ "ordem": 1, "codigo": 123456, "nome": "Produto Exemplo", "extra1": "Detalhe extra 1", "extra2": "Detalhe extra 2", "extra3": "Detalhe extra 3", "observacao1": "Observação relevante 1", "observacao2": "Observação relevante 2", "observacao3": "Observação relevante 3", "tipo": 0, "codigoClasse": 10, "codigoSubclasse": 20, "codigoGrupo": 30, "codigoMoeda": 1, "codigoFamilia": 100, "codigoUnidadeVenda": 200, "codigoPesquisa1": 300, "codigoPesquisa2": 400, "codigoPesquisa3": 500, "pesoLiquido": 1.5, "pesoBruto": 1.7, "estoqueAtual": 100.0, "codigoFabricante": 999, "webObs1": "Observação web 1", "webObs2": "Observação web 2", "inativo": false, "altura": 10.0, "largura": 5.0, "comprimento": 20.0, "codigoAdicional1": "ADIC001", "codigoAdicional2": "ADIC002", "codigoAdicional3": "ADIC003", "codigoAdicional4": "ADIC004", "codigoAdicional5": "ADIC005", "codigoBarras": "1234567890123", "urlDetalhe": "produto/123456", "urlEstoqueDetalhe": "", "urlTabelaPreco": "", "urlPromocoes": "", "urlFotos": "", "precos": [ { "tabela": "Padrão", "preco": 100.0, "promocional": false }, { "tabela": "Promocional", "preco": 90.0, "promocional": true } ], "nomeSite": "Loja Exemplo" "nomeUnidadeVendas": "un", "nomePesquisa1": "30 ml", "eanTributavel": "192505072498", "codigoFornecedor": 5077, "nomeFornecedor": "Fornecedor Teste", "nomeClasse": "Exemplo", "nomeLocalizacao": "CD", "fornecedores": [ { "nome": "Fornecedor 2", "codigo": 5077 }, { "nome": "Fornecedor 3", "codigo": 5043 }, ] }
Fotos
As requisições de fotos estão separadas em duas etapas. Primeiro você deve requisitar a lista de fotos disponíveis para o produto. Com base nessa lista deve requisitar a foto da posição desejada.
GET /fotos/codigoProduto
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
fotos:
[{
posicao: [int]
principal: [bool]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "fotos": [ { "posicao": 0, "principal": true } ] } }
GET /fotos/codigoProduto/posicao
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
posicao: O campo posição da requisição acima.
Parâmetros BODY
Nenhum.
<JSON/>
image/jpeg
(Imagem em Base64)
Preços
Os preços podem ser consultados tanto pela data de última alteração quanto apenas de um produto específico.
GET /precos/?datade=[data]&dataate=[data]
Parâmetros
datade: A data mínima de alteração para que sejam filtrados os resultados.
dataate: A data máxima de alteração para que sejam filtrados os resultados
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
precos:
[{
ordem_Prod_Serv: [string]
codigo_Prod_Serv: [string]
tabela: [string]
preco_Original: [decimal]
promocional: [bool]
preco_Promocional: [decimal]
dataInicio: [DateTime]
dataFim: [DateTime]
}]
Exemplo
{ "codigo": "PROD001", "precos": [ { "ordem_Prod_Serv": "001", "codigo_Prod_Serv": "PROD001, "tabela": "Tabela Padrão", "preco_Original": 150.00, "promocional": true, "preco_Promocional": 120.00, "dataInicio": "2024-01-01T00:00:00", "dataFim": "2024-01-15T23:59:59" }, { "ordem_Prod_Serv": "001", "codigo_Prod_Serv": "PROD001", "tabela": "Tabela Especial", "preco_Original": 180.00, "promocional": false, "preco_Promocional": 0.00, "dataInicio": "2024-02-01T00:00:00", "dataFim": "2024-02-28T23:59:59" } ] }
GET v2/precos/codigoProduto
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
precos:
[{
ordem_Prod_Serv: [string]
codigo_Prod_Serv: [string]
tabela: [string]
preco_Original: [decimal]
promocional: [bool]
preco_Promocional: [decimal]
dataInicio: [DateTime]
dataFim: [DateTime]
}]
Exemplo
{ "codigo": "PROD002", "precos": [ { "ordem_Prod_Serv": "002", "codigo_Prod_Serv": "PROD002", "tabela": "Tabela Varejo", "preco_Original": 200.00, "promocional": true, "preco_Promocional": 180.00, "dataInicio": "2024-03-01T00:00:00", "dataFim": "2024-03-10T23:59:59" }, { "ordem_Prod_Serv": "002", "codigo_Prod_Serv": "PROD002", "tabela": "Tabela Atacado", "preco_Original": 190.00, "promocional": false, "preco_Promocional": 0.00, "dataInicio": "2024-04-01T00:00:00", "dataFim": "2024-04-30T23:59:59" } ] }
Alteração de preços
Alterar Preços de Produtos e Serviços
PUT produtos/codigoProduto/tabelasprecos/ordemTabelaPreco
Parâmetros
codigoProduto: O campo código do produto.
ordemTabelaPreco: O campo ordem da Tabela de Preços.
Parâmetros BODY
precoAtualizado: [decimal]
Promoções
Estes serviços trarão apenas as promoções ativas.
GET /promocoes/ pagina?datade=[data]&dataate=[data]
Parâmetros
pagina: A requisição trará sempre no máximo 20 registros de promoções por página. Para pegar todas as promoções ativas deve ser feito o loop passando por todas as páginas (começando pela página 1) até que a requisição retorne o tipo “FIM_DE_PAGINA”.
datade (opcional): A data mínima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
dataate (opcional): A data máxima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
Parâmetros BODY
Nenhum.
<JSON/>
codigoProduto: [string]
tabelaPreco: [string]
dataInicio: [DateTime]
dataFim: [DateTime]
preco: [decimal]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigoProduto": "10007", "tabelaPreco": "CUSTO", "dataInicio": "2024-06-25T00:00:00-03:00", "dataFim": "2024-11-22T00:00:00-03:00", "preco": 1.0 }, { "codigoProduto": "10007", "tabelaPreco": "ESPECIAL", "dataInicio": "2024-06-25T00:00:00-03:00", "dataFim": "2024-11-22T00:00:00-03:00", "preco": 11.2 }, { "codigoProduto": "10007", "tabelaPreco": "VAREJISTA", "dataInicio": "2024-06-25T00:00:00-03:00", "dataFim": "2024-11-22T00:00:00-03:00", "preco": 8.88 } ] }
GET /promocoes/codigoProduto
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigoProduto: [string]
tabelaPreco: [string]
dataInicio: [DateTime]
dataFim: [DateTime]
preco: [decimal]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigoProduto": "10007", "tabelaPreco": "CUSTO", "dataInicio": "2024-06-25T00:00:00-03:00", "dataFim": "2024-11-22T00:00:00-03:00", "preco": 1.0 }, { "codigoProduto": "10007", "tabelaPreco": "ESPECIAL", "dataInicio": "2024-06-25T00:00:00-03:00", "dataFim": "2024-11-22T00:00:00-03:00", "preco": 11.2 }, { "codigoProduto": "10007", "tabelaPreco": "VAREJISTA", "dataInicio": "2024-06-25T00:00:00-03:00", "dataFim": "2024-11-22T00:00:00-03:00", "preco": 8.88 } ] }
Tabelas de Preço
Consultar Várias Tabelas de Preço Paginada
GET /tabelasprecos/pagina
Parâmetros
pagina: A requisição trará sempre no máximo 10 registros de Tabelas de Preço por página. Para pegar todos os registros deve ser feito o loop passando por todas as páginas (começando pela página 1) até que a requisição retorne o tipo “FIM_DE_PAGINA”.
Parâmetros BODY
Nenhum.
<JSON/>
[{
ordem: [int]
nome: [string]
tipo: [string]
ativo: [bool]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "ordem": 10, "nome": "ATACADO 3", "tipo": "V", "ativo": false }, { "ordem": 12, "nome": "ATACADO 4", "tipo": "V", "ativo": false }, ] }
Estoque
Os serviços para o estoque podem ser requisitados tanto por produto quanto por grade (quando o tipo do produto for “grade” no cadastro de produtos do Shop Control 9. Caso seja feito uma consulta do produto grade pela requisição de produtos normais, o estoque virá com a soma de todas as grades. O estoque será retornado apenas se a filial estiver configurada corretamente nas configurações do módulo Integrações.
Produtos Normais
GET /estoque/codigoProduto
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
tipoEstoque: [string] “N” (Normal)
estoqueFiliais:
[{
codigoFilial: [int]
estoqueAtual: [decimal]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "10001", "urlDetalhe": "", "tipoEstoque": "N", "estoqueFiliais": [ { "codigoFilial": 1, "estoqueAtual": 127.0 } ] } }
Produtos Grade
Todas as Grades
GET /estoque/codigoProduto/grade/
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 }, { "codigoCompleto": "001001", "codigoCor": "1", "codigoTamanho": "1", "estoqueAtual": 999000.0, "codigoFilial": 1 }, { "codigoCompleto": "001003", "codigoCor": "3", "codigoTamanho": "1", "estoqueAtual": 9000.0, "codigoFilial": 1 }, { "codigoCompleto": "002001", "codigoCor": "1", "codigoTamanho": "2", "estoqueAtual": 10000.0, "codigoFilial": 1 } ] } }
Grade da Cor
GET /estoque/codigoProduto/grade/cor/cor
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
cor: O código da cor requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 } ] } }
Grade do Tamanho
GET /estoque/codigoProduto/grade/tamanho/tamanho
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
tamanho: O código do tamanho requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 } ] } }
Grade Específica
GET /estoque/codigoProduto/grade/tamanho/tamanho/cor/cor
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
cor: O código da cor requisitado em Auxiliares.
tamanho: O código do tamanho requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 } ] } }
Estoque V2
Produtos Normais
GET v2/estoque/detalhes/codigoProduto
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
urlDetalhe: [string]
tipoEstoque: “N”, “G”, “S”, “E”, “L” – (Verificar descrição logo abaixo)
estoqueFiliais:
[{
codigoFilial: [int]
estoqueAtual: [decimal]
}]
Tipo Estoque
N – Normal
G – Grade
S – Série
E – Edição
L – Lote
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "10001", "urlDetalhe": "", "tipoEstoque": "N", "estoqueFiliais": [ { "codigoFilial": 1, "estoqueAtual": -301.0 } ] } }
Produtos Lote
Lote
GET v2/estoque/detalhes/codigoProduto/lote/lote
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
lote: O código do lote requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
lote: [string]
estoqueAtual: [int]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "20192", "lista": [ { "lote": "Lote1", "estoqueAtual": 12.0, "codigoFilial": 1 }, { "lote": "Lote2", "estoqueAtual": 28.0, "codigoFilial": 1 }, { "lote": "Lote3", "estoqueAtual": 30.0, "codigoFilial": 1 } ] } }
Produto Série
Série
GET v2/estoque/detalhe/codigoProduto/serie/serie
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
serie: O código da serie requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
serie: [string]
disponivel: [bool]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "20191", "lista": [ { "serie": "123ABC", "disponivel": true, "codigoFilial": 1 }, { "serie": "ABCDE12345", "disponivel": true, "codigoFilial": 1 } ] } }
Produto Edição
Edição
GET v2/estoque/detalhe/codigoProduto/edicao/edicao
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
edicao: O código da edicao requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigo: [int]
nome: [string]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "1123456789111", "lista": [ { "codigo": 1112, "nome": "Revista Teste", "estoqueAtual": 1222.0, "codigoFilial": 1 } ] } }
Produtos Grade
Todas as Grades
GET v2/estoque/detalhes/codigoProduto/grade/
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 }, { "codigoCompleto": "001001", "codigoCor": "1", "codigoTamanho": "1", "estoqueAtual": 999000.0, "codigoFilial": 1 }, { "codigoCompleto": "001003", "codigoCor": "3", "codigoTamanho": "1", "estoqueAtual": 9000.0, "codigoFilial": 1 } ] } }
Grade da Cor
GET v2/estoque/detalhes/codigoProduto/grade/cor/cor
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
cor: O código da cor requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 } ] } }
Grade do Tamanho
GET v2/estoque/detalhes/codigoProduto/grade/tamanho/tamanho
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
tamanho: O código do tamanho requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 } ] } }
Grade Específica
GET v2/estoque/detalhes/codigoProduto/grade/tamanho/tamanho/cor/cor
Parâmetros
codigoProduto: O campo código do produto requisitado em Produtos.
cor: O código da cor requisitado em Auxiliares.
tamanho: O código do tamanho requisitado em Auxiliares.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
lista:
[{
codigoCompleto: [string]
codigoCor: [int]
codigoTamanho: [int]
estoqueAtual: [decimal]
codigoFilial: [int]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "codigo": "111333", "lista": [ { "codigoCompleto": "001002", "codigoCor": "2", "codigoTamanho": "1", "estoqueAtual": 8990.0, "codigoFilial": 1 } ] } }
Paginado
Estoque Paginado
GET v2/estoque/pagina?datade=[datade]&dataate=[dataate]
Parâmetros
pagina: A requisição trará sempre no máximo 10 registros de estoque por página. Para pegar todas os registros deve ser feito o loop passando por todas as páginas (começando pela página 1) até que a requisição retorne o tipo “FIM_DE_PAGINA”.
datade (opcional): A data mínima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
dataate (opcional): A data máxima de alteração para que sejam filtrados os resultados. Recomendado para que sejam atualizados os resultados após a primeira sincronização.
Parâmetros BODY
Nenhum.
<JSON/>
codigo: [string]
urlDetalhe: [string]
tipoEstoque: “N”, “G”, “S”, “E”, “L” – (Verificar descrição logo abaixo)
estoqueFiliais:
[{
codigoCor: [int]
codigoTamanho: [int]
codigoFilial: [int]
estoqueAtual: [decimal]
}]
Tipo Estoque
N – Normal
G – Grade
S – Série
E – Edição
L – Lote
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "codigo": "10001", "urlDetalhe": "", "tipoEstoque": "N", "estoqueFiliais": [ { "codigoCor": null, "codigoTamanho": null, "codigoFilial": 1, "estoqueAtual": -301.0 } ] }, { "codigo": "10003", "urlDetalhe": "", "tipoEstoque": "N", "estoqueFiliais": [ { "codigoCor": null, "codigoTamanho": null, "codigoFilial": 1, "estoqueAtual": -276.99 } ] }, { "codigo": "10004", "urlDetalhe": "", "tipoEstoque": "N", "estoqueFiliais": [ { "codigoCor": null, "codigoTamanho": null, "codigoFilial": 1, "estoqueAtual": -78.0 } ] }, { "codigo": "111333", "urlDetalhe": "/estoque/111333/grade", "tipoEstoque": "G", "estoqueFiliais": [ { "codigoCor": "2", "codigoTamanho": "1", "codigoFilial": 1, "estoqueAtual": 8990.0 }, { "codigoCor": "1", "codigoTamanho": "1", "codigoFilial": 1, "estoqueAtual": 999000.0 }, { "codigoCor": "3", "codigoTamanho": "1", "codigoFilial": 1, "estoqueAtual": 9000.0 }, { "codigoCor": "1", "codigoTamanho": "3", "codigoFilial": 1, "estoqueAtual": 9000.0 } ] } ] }
Vendas
Enviar Venda
POST /vendas/
Parâmetros
Nenhum
Parâmetros BODY
Content-Type: application/json
Único JSON:
CodigoCliente: [long]
CodigoFilialEstoque: [long]
cpfCnpj: [string]
codigoOperacao: [int]
codigoCaixa: [int]
data: [data]
Observacao: [string]
Desconto_Total_Geral: [decimal]
Custo_Adicional_Ecommerce: [decimal]
CodigoVendedor_1: [int]
CodigoVendedor_2: [int]
CodigoIndicadorPresencial: [int] – (Verificar descrição logo abaixo)
ReferenciaInterna: [string]
produtos:
[{
codigo: [string]
codigoCor: [string]
codigoTamanho: [string]
quantidade: [decimal]
precoUnitario: [decimal]
descontoUnitario: [decimal]
}]
recebimentos:
[{
valorParcelas: [decimal]
valor: [decimal]
codigoContaBancaria: [int]
vencimento: [data]
codigoAdministradora: [int]
nsu: [string]
quantidadeParcelas: [int]
numeroCartao: [string]
tipo: [string] – (Verificar descrição logo abaixo)
}]
dadosEntrega:
[{
valor: [decimal]
opcoesFretePagoPor: [string] – (Verificar descrição logo abaixo)
pesoBruto: [decimal]
pesoLiquido: [decimal]
volume: [decimal]
dataEntrega: [data],
cnpjTransportadora: [string(14)]
naoSomarFreteTotalNota: [bool]
outroEndereco:
[{
cep: [string]
endereco: [string]
numero: [string]
complemento: [string]
bairro: [string]
cidade: [string]
uf: [string]
}]
OpçõesFreteTipoEndereco: [string]
}]
Código Indicador Presencial
0 – Não se Aplica
1 – Operação Presencial
2 – Operação não presencial, pela internet
3 – Operação não presencial, Teleatendimento
4 – NFC-e em operação com entrega em domícilio
5 – Operação presencial, fora do estabelecimento
9 – Operação não presencial, outros
Recebimentos – Tipo
B – Boleto
C – Cartão de Crédito
CB – Conta Bancária
CR – Crédito de Cliente
Frete Pago por
C – Pegar informação do cadastro de cliente
E – Sempre pelo emitente
D – Sempre pelo destinatário
O – Decidido pelo operador
<JSON/>
recibo: [GUID]
dataGeracao: [data/hora UTC]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "recibo": "1ff7b77b-4327-48cb-9c63-0f7b5cc87e3d", "dataGeracao": "2024-10-23T10:55:16.2297494-03:00" } }
Consultar Recibo
GET /vendas/recibo
Parâmetros
recibo: O GUID recebido como resposta da requisição Enviar Venda.
Parâmetros BODY
Nenhum.
<JSON/>
recibo: [GUID]
pedidoProcessado: [bool]
erros: [string]
sequenciaGerada: [string]
ordemMovimentoGerado: [string]
notaFiscal:
{
notaAutorizada: [bool]
chaveNfe: [string]
erros: [string]
numero: [string]
serie: [string]
xML_Documento: [string]
xMl_Autorizacao: [string]
XML_Cancelamento: [string]
}
Exemplo
{ "recibo": "d290f1ee-6c54-4b01-90e6-d701748f0851", "pedidoProcessado": true, "erros": "", "sequenciaGerada": "SEQ12345", "ordemMovimentoGerado": "MOV67890", "notaFiscal": { "notaAutorizada": true, "chaveNfe": "NFe35191000000000000000550010001234567890123456", "erros": "", "numero": "123456", "serie": "1", "xML_Documento": "", "xMl_Autorizacao": " ", "XML_Cancelamento": "" } }
Consulta de Vendas
GET /saidas/detalhes/Numero_Sequencia
Parâmetros
Numero_Sequencia: O número da sequência para retornar os dados.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
codigo_Vendedor_1: [int]
codigo_Vendedor_2: [int]
data: [DateTime]
total_Com_Desconto: [decimal]
total_Sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [int]
codigo: [string]
quantidade: [decimal]
preco_Unitario: [decimal]
preco_Final: [decimal]
preco_Final_Com_Desconto: [decimal]
desconto_Unitario: [decimal]
desconto_Total: [decimal]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [DateTime]
situacao: [string]
xML_Documento: [string]
xMl_Autorizacao: [string]
XML_Cancelamento: [string]
modelo: [string]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "ordem": 14157, "sequencia": 622, "tipo_Operacao": "VND", "codigo_Cliente": 1053, "codigo_Vendedor_1": 33, "codigo_Vendedor_2": 0, "data": "2020-11-23T14:56:08.53-03:00", "total_Com_Desconto": 800.0, "total_Sem_Desconto": 800.0, "desconto_Total_Geral": 0.0, "observacao": "", "produtos": [ { "ordem": 30528, "codigo": "10006", "quantidade": 2000.0, "preco_Unitario": 0.08, "preco_Final": 160.0, "preco_Final_Com_Desconto": 160.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 }, { "ordem": 30529, "codigo": "10004", "quantidade": 3000.0, "preco_Unitario": 0.08, "preco_Final": 240.0, "preco_Final_Com_Desconto": 240.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 }, { "ordem": 30530, "codigo": "10010", "quantidade": 3000.0, "preco_Unitario": 0.08, "preco_Final": 240.0, "preco_Final_Com_Desconto": 240.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 }, { "ordem": 30531, "codigo": "10103", "quantidade": 2000.0, "preco_Unitario": 0.08, "preco_Final": 160.0, "preco_Final_Com_Desconto": 160.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [ { "numero": "253", "data_Emissao": "2020-11-23T14:52:02-03:00", "situacao": "Autorizado o uso da NF-e", "xML_Documento": "", "xML_Cancelamento": "", "modelo": "55" } ] } }
Consultar Várias Sequências por Operação
GET /saidas/pagina/tipoOperacao
Parâmetros
tiposOperacao: VND, FPV, TRS, AJS, GRS, ORC, DAV, DOS, DVF, RSV, VEF, PVN, CNS, VPC, DCS, EVF, OTS, EPA e TCS.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
codigo_Vendedor_1: [int]
codigo_Vendedor_2: [int]
data: [DateTime]
total_Com_Desconto: [decimal]
total_Sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [int]
codigo: [string]
quantidade: [decimal]
preco_Unitario: [decimal]
preco_Final: [decimal]
preco_Final_Com_Desconto: [decimal]
desconto_Unitario: [decimal]
desconto_Total: [decimal]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [DateTime]
situacao: [string]
xML_Documento: [string]
xMl_Autorizacao: [string]
XML_Cancelamento: [string]
modelo: [string]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "ordem": 14157, "sequencia": 622, "tipo_Operacao": "VND", "codigo_Cliente": 1053, "codigo_Vendedor_1": 33, "codigo_Vendedor_2": 0, "data": "2020-11-23T14:56:08.53-03:00", "total_Com_Desconto": 800.0, "total_Sem_Desconto": 800.0, "desconto_Total_Geral": 0.0, "observacao": "", "produtos": [ { "ordem": 30528, "codigo": "10006", "quantidade": 2000.0, "preco_Unitario": 0.08, "preco_Final": 160.0, "preco_Final_Com_Desconto": 160.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 }, { "ordem": 30529, "codigo": "10004", "quantidade": 3000.0, "preco_Unitario": 0.08, "preco_Final": 240.0, "preco_Final_Com_Desconto": 240.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 }, { "ordem": 30530, "codigo": "10010", "quantidade": 3000.0, "preco_Unitario": 0.08, "preco_Final": 240.0, "preco_Final_Com_Desconto": 240.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 }, { "ordem": 30531, "codigo": "10103", "quantidade": 2000.0, "preco_Unitario": 0.08, "preco_Final": 160.0, "preco_Final_Com_Desconto": 160.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [ { "numero": "253", "data_Emissao": "2020-11-23T14:52:02-03:00", "situacao": "Autorizado o uso da NF-e", "xML_Documento": "", "xML_Cancelamento": "", "modelo": "55" } ] } }
Consultar Várias Sequências Paginada
GET /saidas/Numero_Pagina
Parâmetros
Numero_Pagina: Retornará sempre uma página com 10 sequências.
Parâmetros BODY
Nenhum.
<JSON/>
Consulta por Período
GET /saidas/?tipodata=A&datade=aaaa-MM-dd&dataate= aaaa-MM-dd
Parâmetros
tipodata=A: Data de Alteração da Sequência.
tipodata=C: Data de Criação da Sequência.
tipodata=E: Data de Efetivação da Sequência.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
codigo_Vendedor_1: [int]
codigo_Vendedor_2: [int]
data: [DateTime]
total_Com_Desconto: [decimal]
total_Sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [int]
codigo: [string]
quantidade: [decimal]
preco_Unitario: [decimal]
preco_Final: [decimal]
preco_Final_Com_Desconto: [decimal]
desconto_Unitario: [decimal]
desconto_Total: [decimal]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [DateTime]
situacao: [string]
xML_Documento: [string]
xMl_Autorizacao: [string]
XML_Cancelamento: [string]
modelo: [string]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "ordem": 20871, "sequencia": 1087, "tipo_Operacao": "VND", "codigo_Cliente": 1, "codigo_Vendedor_1": 2, "codigo_Vendedor_2": 0, "data": "2024-10-11T15:54:22.403-03:00", "total_Com_Desconto": 10000.0, "total_Sem_Desconto": 10000.0, "desconto_Total_Geral": 0.0, "observacao": "teste", "produtos": [ { "ordem": 37885, "codigo": "1", "quantidade": 1.0, "preco_Unitario": 10000.0, "preco_Final": 10000.0, "preco_Final_Com_Desconto": 10000.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [] }, { "ordem": 20873, "sequencia": 1088, "tipo_Operacao": "VND", "codigo_Cliente": 1, "codigo_Vendedor_1": 2, "codigo_Vendedor_2": 0, "data": "2024-10-21T13:28:56.41-03:00", "total_Com_Desconto": 1530.0, "total_Sem_Desconto": 1800.0, "desconto_Total_Geral": 270.0, "observacao": "", "produtos": [ { "ordem": 37886, "codigo": "1", "quantidade": 1.0, "preco_Unitario": 1800.0, "preco_Final": 1800.0, "preco_Final_Com_Desconto": 1530.0, "desconto_Unitario": 270.0, "desconto_Total": 270.0 } ], "documento_Fiscais": [] }, { "ordem": 21886, "sequencia": 1089, "tipo_Operacao": "VND", "codigo_Cliente": 1562, "codigo_Vendedor_1": 1, "codigo_Vendedor_2": 0, "data": null, "total_Com_Desconto": 1600.0, "total_Sem_Desconto": 1600.0, "desconto_Total_Geral": 0.0, "observacao": "Teste 123", "produtos": [ { "ordem": 38886, "codigo": "10001", "quantidade": 12.0, "preco_Unitario": 133.3333, "preco_Final": 1600.0, "preco_Final_Com_Desconto": 1600.0, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [] } ] }
Consulta de Devoluções
GET /devolucao/detalhes/Numero_Sequencia
Parâmetros
Numero_Sequencia: O número da sequência para retornar os dados.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
codigo_Vendedor_1: [int]
codigo_Vendedor_2: [int]
data: [DateTime]
total_Com_Desconto: [decimal]
total_Sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [int]
codigo: [string]
quantidade: [decimal]
preco_Unitario: [decimal]
preco_Final: [decimal]
preco_Final_Com_Desconto: [decimal]
desconto_Unitario: [decimal]
desconto_Total: [decimal]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [DateTime]
situacao: [string]
xML_Documento: [string]
xMl_Autorizacao: [string]
XML_Cancelamento: [string]
modelo: [string]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": { "ordem": 16373, "sequencia": 670, "tipo_Operacao": "DEV", "codigo_Cliente": 1, "codigo_Vendedor_1": 0, "codigo_Vendedor_2": 0, "data": "2020-12-29T09:26:20.243-03:00", "total_Com_Desconto": 10.23, "total_Sem_Desconto": 10.33, "desconto_Total_Geral": 0.1, "observacao": "", "produtos": [ { "ordem": 33254, "codigo": "10004", "quantidade": 5.0, "preco_Unitario": 2.0, "preco_Final": 10.0, "preco_Final_Com_Desconto": 9.9, "desconto_Unitario": 0.02, "desconto_Total": 0.1 }, { "ordem": 33255, "codigo": "20099", "quantidade": 10.0, "preco_Unitario": 0.0332, "preco_Final": 0.33, "preco_Final_Com_Desconto": 0.33, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [] } }
Consultar Várias Devoluções Paginada
GET /devolucao/Numero_Pagina
Parâmetros
Numero_Pagina: Retornará sempre uma página com 10 sequências.
Parâmetros BODY
Nenhum.
<JSON/>
Consulta por Período
GET /devolucao/?tipodata=A&datade=aaaa-MM-dd&dataate= aaaa-MM-dd
Parâmetros
tipodata=A: Data de Alteração da Sequência.
tipodata=C: Data de Criação da Sequência.
tipodata=E: Data de Efetivação da Sequência.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
codigo_Vendedor_1: [int]
codigo_Vendedor_2: [int]
data: [DateTime]
total_Com_Desconto: [decimal]
total_Sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [int]
codigo: [string]
quantidade: [decimal]
preco_Unitario: [decimal]
preco_Final: [decimal]
preco_Final_Com_Desconto: [decimal]
desconto_Unitario: [decimal]
desconto_Total: [decimal]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [DateTime]
situacao: [string]
xML_Documento: [string]
xMl_Autorizacao: [string]
XML_Cancelamento: [string]
modelo: [string]
}]
Exemplo
{ "sucesso": true, "mensagem": null, "tipo": null, "complementoTipo": null, "statusCode": 200, "dados": [ { "ordem": 16373, "sequencia": 670, "tipo_Operacao": "DEV", "codigo_Cliente": 1, "codigo_Vendedor_1": 0, "codigo_Vendedor_2": 0, "data": "2020-12-29T09:26:20.243-03:00", "total_Com_Desconto": 10.23, "total_Sem_Desconto": 10.33, "desconto_Total_Geral": 0.1, "observacao": "", "produtos": [ { "ordem": 33254, "codigo": "10004", "quantidade": 5.0, "preco_Unitario": 2.0, "preco_Final": 10.0, "preco_Final_Com_Desconto": 9.9, "desconto_Unitario": 0.02, "desconto_Total": 0.1 }, { "ordem": 33255, "codigo": "20099", "quantidade": 10.0, "preco_Unitario": 0.0332, "preco_Final": 0.33, "preco_Final_Com_Desconto": 0.33, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [] }, { "ordem": 16374, "sequencia": 671, "tipo_Operacao": "DEV", "codigo_Cliente": 1, "codigo_Vendedor_1": 0, "codigo_Vendedor_2": 0, "data": "2020-12-29T09:26:51.79-03:00", "total_Com_Desconto": 8.74, "total_Sem_Desconto": 8.74, "desconto_Total_Geral": 0.0, "observacao": "", "produtos": [ { "ordem": 33256, "codigo": "20002", "quantidade": 1.0, "preco_Unitario": 8.74, "preco_Final": 8.74, "preco_Final_Com_Desconto": 8.74, "desconto_Unitario": 0.0, "desconto_Total": 0.0 } ], "documento_Fiscais": [] } ] }
Editar Vendas
Ativar / Inativar Venda
PATCH /saidas/sequencia/ativar ou inativar
Parâmetros
sequencia: O número da sequência para editar os dados.
Parâmetros BODY
Nenhum.
<JSON/>
Editar Conferência
PUT /saidas/sequencia/conferencia
Parâmetros
sequencia: O número da sequência para editar os dados.
Parâmetros BODY
ordemProdServ: [int]
quantidadeConferida: [string]
<JSON/>
Contagem de Estoque
Consultar Contagem
Consultar Várias Contagens de Estoque Paginada
GET /contagemestoque/paginasituacao=A
Parâmetros
situacao=T: Mostrar todas as contagens.
situacao=C: Apenas contagens concluídas.
situacao=A: Apenas contagens em andamento.
Parâmetros BODY
Nenhum.
<JSON/>
numero: [int]
ordem: [int]
dataInicio: [data/hora UTC]
situacao: [string]
ordemFuncionarioAlteracao: [int]
qtdeProdutos: [int]
Consultar Contagem de Estoque por Número
GET /contagemestoque/detalhes/numero
Parâmetros
numero: O número da contagem de estoque requisitado.
ordem_tabela_preco (opcional): A ordem da tabela de preço para trazer o preço específico de uma tabela.
Parâmetros BODY
Nenhum.
<JSON/>
numero: [int]
ordem: [int]
dataInicio: [data/hora UTC]
situacao: [string]
ordemFuncionarioAlteracao: [int]
listaprodutos:
[{
OrdemContagemItem: [int]
OrdemProdServ: [int]
CodigoProduto: [string]
NomeProduto: [string]
NomeCor: [string](Grade)
NomeTamanho: [string](Grade)
NomeEdicao: [string](Edição)
NomeUnidadeVenda: [string]
CodigoBarras: [string]
QtdeEstoque: [decimal]
Preco: [decimal]
CodigoFilial: [int]
Pesquisa1: [string]
Tipo: [string]
}]
qtdeProdutos: [int]
Exemplo
{ "Numero": 206, "Ordem": 244, "DataInicio": "2025-01-14T13:56:48.48", "Situacao": "Em Andamento", "OrdemFuncionarioAlteracao": 1, "listaProdutos": [ { "OrdemContagemItem": 33347, "OrdemProdServ": 4, "CodigoProduto": "10003", "NomeProduto": "Argila Branca Nossa que Argila top a mais top das ", "NomeUnidadeVenda": "un", "CodigoBarras": "192505072733", "QtdeEstoque": -276.99, "CodigoFilial": 1, "Pesquisa1": "50 g", "Tipo": "N" }, { "OrdemContagemItem": 33348, "OrdemProdServ": 5, "CodigoProduto": "10004", "NomeProduto": "Argila Matriz branca granel", "NomeUnidadeVenda": "g", "CodigoBarras": "", "QtdeEstoque": -78.0, "CodigoFilial": 1, "Pesquisa1": "g", "Tipo": "N" } ], "qtdeProdutos": 2
Atualizar Contagem
Produtos Normais
PUT /contagemestoque/numero/itens
Parâmetros
numero: O número da contagem de estoque requisitado.
Parâmetros BODY
listaprodutos:
[{
ordemContagemItem: [int]
qtdeDigitada: [decimal]
}]
<JSON/>
Produtos Lotes
PUT /contagemestoque/numero/itens/lotes
Parâmetros
numero: O número da contagem de estoque requisitado.
Parâmetros BODY
listaprodutos:
[{
ordemContagemItem: [int]
qtdeDigitada: [decimal]
lotes:
[{
lote: [string]
qtde: [int]
dataFabricacao: [data/hora UTC]
dataValidade: [data/hora UTC]
}]
}]
<JSON/>
Bipagem
Atualizar Lista de Bipagem
Criar/Atualizar Lista de Bipagem
POST /bipagem/
Parâmetros BODY
ordemMovimento: [int]
listaProdutoBipagem:
[{
codigoDigitado: [string]
qtde: [decimal]
ordemProdServ: [int]
ordemFuncionarioAlteracao: [int]
}]
Entradas
Referente a movimentações de compra
Consulta de Entradas
Consulta de Entradas por Sequência
GET /entradas/detalhessequencia
Parâmetros
sequencia: O número da sequência para retornar os dados.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
data: [DateTime]
total_com_Desconto: [decimal]
total_sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [string]
codigo: [decimal]
quantidade: [bool]
preco_Unitario: [bool]
preco_Final: [bool]
preco_Final_Com_Desconto: [bool]
desconto_Unitario: [bool]
desconto_Total: [bool]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [decimal]
situacao: [bool]
xML_Documento: [bool]
xMl_autorizacao: [bool]
xML_cancelamento: [bool]
modelo: [bool]
}]
Exemplo
{ "Sucesso": true, "Mensagem": null, "Tipo": null, "ComplementoTipo": null, "StatusCode": 200, "Dados": { "Ordem": 165, "Sequencia": 28, "Tipo_Operacao": "COM", "Codigo_Cliente": 5057, "Data": "2019-11-06T14:10:25.25", "Total_Com_Desconto": 298.0, "Total_Sem_Desconto": 298.22, "Desconto_Total_Geral": 0.22, "Observacao": "", "Produtos": [ { "Ordem": 847, "Ordem_Prod_Serv": 220, "Codigo": "20127", "Quantidade": 7400.0, "Preco_Unitario": 0.0403, "Preco_Final": 298.22, "Preco_Final_Com_Desconto": 298.0, "Desconto_Unitario": 0.0, "Desconto_Total": 0.22 } ], "Documento_Fiscais": [ "numero": "NF123456", "data_Emissao": "2025-03-18T11:00:00Z", "situacao": "Autorizado", "xML_Documento": "Documento XML", "xMl_Autorizacao": "Autorizacao XML", "XML_Cancelamento": "", "modelo": "55" ] } }
Consulta de Várias Entradas Paginada
GET /entradas/pagina/tiposOperacao
Parâmetros
pagina: A requisição trará sempre no máximo 10 registros de Entradas por página. Para pegar todos os registros deve ser feito o loop passando por todas as páginas (começando pela página 1) até que a requisição retorne o tipo “FIM_DE_PAGINA”.
tipoOperacao: ACE, AJE, CNE, COM, CPC, CVE, DCE, DEV, GRE, INE, OTE, PED, TCE, TRE.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
data: [DateTime]
total_com_Desconto: [decimal]
total_sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [string]
codigo: [decimal]
quantidade: [bool]
preco_Unitario: [bool]
preco_Final: [bool]
preco_Final_Com_Desconto: [bool]
desconto_Unitario: [bool]
desconto_Total: [bool]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [decimal]
situacao: [bool]
xML_Documento: [bool]
xMl_autorizacao: [bool]
xML_cancelamento: [bool]
modelo: [bool]
}]
Exemplo
{ "Sucesso": true, "Mensagem": null, "Tipo": null, "ComplementoTipo": null, "StatusCode": 200, "Dados": [{ "Ordem": 165, "Sequencia": 28, "Tipo_Operacao": "COM", "Codigo_Cliente": 5057, "Data": "2019-11-06T14:10:25.25", "Total_Com_Desconto": 298.0, "Total_Sem_Desconto": 298.22, "Desconto_Total_Geral": 0.22, "Observacao": "", "Produtos": [ { "Ordem": 847, "Ordem_Prod_Serv": 220, "Codigo": "20127", "Quantidade": 7400.0, "Preco_Unitario": 0.0403, "Preco_Final": 298.22, "Preco_Final_Com_Desconto": 298.0, "Desconto_Unitario": 0.0, "Desconto_Total": 0.22 } ], "Documento_Fiscais": [ "numero": "NF123456", "data_Emissao": "2025-03-18T11:00:00Z", "situacao": "Autorizado", "xML_Documento": "Documento XML", "xMl_Autorizacao": "Autorizacao XML", "XML_Cancelamento": "", "modelo": "55" ] }, { "Ordem": 166, "Sequencia": 29, "Tipo_Operacao": "COM", "Codigo_Cliente": 11, "Data": "2019-11-06T14:10:25.25", "Total_Com_Desconto": 300.0, "Total_Sem_Desconto": 300.00, "Desconto_Total_Geral": 0.0, "Observacao": "", "Produtos": [ { "Ordem": 846, "Ordem_Prod_Serv": 221, "Codigo": "20000", "Quantidade": 1.0, "Preco_Unitario": 300.00, "Preco_Final": 300.00, "Preco_Final_Com_Desconto": 300.0, "Desconto_Unitario": 0.0, "Desconto_Total": 0.0 } ], "Documento_Fiscais": [ "numero": "NF1234562", "data_Emissao": "2025-03-18T11:00:00Z", "situacao": "Autorizado", "xML_Documento": "Documento XML", "xMl_Autorizacao": "Autorizacao XML", "XML_Cancelamento": "", "modelo": "55" ] } ] }
GET /entradas/pagina/?tipodata=tipoData&datade=dataDe&dataate=dataAte
Parâmetros
tipodata=A: Data de Alteração da Sequência.
tipodata=C: Data de Criação da Sequência.
tipodata=E: Data de Efetivação da Sequência.
Parâmetros BODY
Nenhum.
<JSON/>
ordem: [int]
sequencia: [int]
tipo_Operacao: [string]
codigo_Cliente: [long]
data: [DateTime]
total_com_Desconto: [decimal]
total_sem_Desconto: [decimal]
desconto_Total_Geral: [decimal]
observacao: [string]
produtos:
[{
ordem: [string]
codigo: [decimal]
quantidade: [bool]
preco_Unitario: [bool]
preco_Final: [bool]
preco_Final_Com_Desconto: [bool]
desconto_Unitario: [bool]
desconto_Total: [bool]
}]
documento_Fiscais:
[{
numero: [string]
data_Emissao: [decimal]
situacao: [bool]
xML_Documento: [bool]
xMl_autorizacao: [bool]
xML_cancelamento: [bool]
modelo: [bool]
}]
Exemplo
{ "Sucesso": true, "Mensagem": null, "Tipo": null, "ComplementoTipo": null, "StatusCode": 200, "Dados": [{ "Ordem": 165, "Sequencia": 28, "Tipo_Operacao": "COM", "Codigo_Cliente": 5057, "Data": "2019-11-06T14:10:25.25", "Total_Com_Desconto": 298.0, "Total_Sem_Desconto": 298.22, "Desconto_Total_Geral": 0.22, "Observacao": "", "Produtos": [ { "Ordem": 847, "Ordem_Prod_Serv": 220, "Codigo": "20127", "Quantidade": 7400.0, "Preco_Unitario": 0.0403, "Preco_Final": 298.22, "Preco_Final_Com_Desconto": 298.0, "Desconto_Unitario": 0.0, "Desconto_Total": 0.22 } ], "Documento_Fiscais": [ "numero": "NF123456", "data_Emissao": "2025-03-18T11:00:00Z", "situacao": "Autorizado", "xML_Documento": "Documento XML", "xMl_Autorizacao": "Autorizacao XML", "XML_Cancelamento": "", "modelo": "55" ] }, { "Ordem": 166, "Sequencia": 29, "Tipo_Operacao": "COM", "Codigo_Cliente": 11, "Data": "2019-11-06T14:10:25.25", "Total_Com_Desconto": 300.0, "Total_Sem_Desconto": 300.00, "Desconto_Total_Geral": 0.0, "Observacao": "", "Produtos": [ { "Ordem": 846, "Ordem_Prod_Serv": 221, "Codigo": "20000", "Quantidade": 1.0, "Preco_Unitario": 300.00, "Preco_Final": 300.00, "Preco_Final_Com_Desconto": 300.0, "Desconto_Unitario": 0.0, "Desconto_Total": 0.0 } ], "Documento_Fiscais": [ "numero": "NF1234562", "data_Emissao": "2025-03-18T11:00:00Z", "situacao": "Autorizado", "xML_Documento": "Documento XML", "xMl_Autorizacao": "Autorizacao XML", "XML_Cancelamento": "", "modelo": "55" ] } ] }
Enviar Entradas
POST /entradas/
Parâmetros
Nenhum.
Parâmetros BODY
codigoCliFor: [long]
codigoFilialEstoque: [int]
cpfCnpj: [string]
codigoOperacao: [int]
codigoCaixa: [int]
data: [DateTime]
observacao: [string]
descontoTotalGeral: [decimal]
referenciaInterna: [string]
produtos:
[{
codigo: [string]
codigoCor: [string]
codigoTamanho: [string]
quantidade: [decimal]
precoUnitario: [decimal]
descontoUnitario: [decimal]
codigoEdicao: [int]
lote: [string]
loteFabricacao: [DateTime]
loteValidade: [DateTime]
serie: [string]
}]
pagamentos:
[{
valorParcelas: [decimal]
valor: [decimal]
codigoContaBancaria: [int]
vencimento: [DateTime]
quantidade Parcelas: [int]
tipo: [string] – (Verificar descrição logo abaixo)
}]
dadosFrete:
[{
valor: [decimal]
opcoesFretePagoPor: [string]
opcoesFreteTipoRecebimento: [string]
pesoBruto: [decimal]
pesoLiquido: [decimal]
cnpjTransportadora: [string]
descricao: [string]
pagamentos:
[{
valorParcelas: [decimal]
valor: [decimal]
codigoContaBancaria: [int]
vencimento: [DateTime]
quantidadeParcelas: [int]
tipo: [string] – (Verificar descrição logo abaixo)
}]
}]
Pagamentos- Tipo
P – Parcelamento
CB – Conta Bancária
CR – Crédito
<JSON/>
Atualizar Entradas
Efetivar o Estoque
PATCH /entradas/sequencia/efetivarestoque
Parâmetros
sequencia: O número da sequência de entrada.
Parâmetros BODY
Nenhum.
<JSON/>
Efetivar o Financeiro
PATCH /entradas/sequencia/efetivarfinanceiro
Parâmetros
sequencia: O número da sequência de entrada.
Parâmetros BODY
Nenhum.
<JSON/>
Roteiro Teste
A IdealSoft disponibiliza uma base de dados com uma simulação dos dados de uma empresa de testes para que o desenvolvedor possa testar as chamadas para o serviço sem que altere os dados em produção. Antes de adquirir o módulo Integrações, iremos disponibilizar um número de série, um código de filial de testes e uma senha para montar as requisições no serviço web desenvolvido. Dessa forma, iremos certificar que o serviço web desenvolvido para a empresa estará em conformidade com esse manual técnico, e que irá realizar corretamente a comunicação com o módulo Integrações.
Para solicitar esse número de série e código de filial, envie um e-mail para suporte@idealsoft.com.br.
A URL a ser utilizada é a seguinte:
http://idealsoftexportaweb.eastus.cloudapp.azure.com:60500/
Aqui listaremos como deverá ser feita a requisição e o que a requisição deverá retornar para a base de testes da IdealSoft.
Autenticação Teste
Primeiramente deverá requisitar um token. O token será utilizado para todas as outras requisições. Vamos levar em consideração que:
A série recebida da IdealSoft é: HIAABB-100000-ABCD
O código da filial recebida da IdealSoft é: 1