npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

winthor-api-wta

v1.0.5

Published

Pacote Integração com API do WTA do ERP Winthor

Readme

winthor-api-wta

Cliente Node.js para integração com a API WTA do ERP Winthor

npm version
License

Biblioteca para conexão e consumo da API WTA do Winthor (TOTVS), facilitando operações como consulta de clientes, produtos, pedidos e outros recursos.


📦 Instalação

npm install winthor-api-wta
# ou
yarn add winthor-api-wta

🚀 Utilização

Configuração Inicial Configure suas credenciais (recomendado usar variáveis de ambiente ou arquivos de configuração como .env):

  • lembrar de informar host + porta e também se é http ou https host completo.
const Wint = require('winthor-api-wta');

const config = {
  host: 'https://seu-servidor-winthor.com',
  login: 'usuario',
  senha: 'senha'
};

const wta = new Wint(config);

Exemplo com Promises (.then())

wta.conectar()
  .then(() => wta.cliente({ codigocliente: 22940 }))
  .then(cliente => console.log('Dados do cliente:', cliente))
  .catch(err => console.error('Erro:', err));

Exemplo com Async/Await (Recomendado)

async function buscarCliente(id) {
try {
  await wta.conectar();
  const cliente = await wta.cliente({ codigocliente: id });
  console.log(cliente);
  return cliente;
} catch (error) {
  console.error('Falha na requisição:', error);
  throw error;
}
}

buscarCliente(22);

📚 Métodos Disponíveis

conectar()

Descrição:
Autentica na API WTA.
Parâmetros:
Nenhum


cliente()

Descrição:
Retorna dados completos de um cliente, incluindo endereço de entrega quando solicitado.

Parâmetros:

{
  codigocliente: number    // Código do cliente (obrigatório)
  enderecoEntrega: boolean // Retorna endereço se true (opcional)
}

filiais()

Descrição:
Retorna dados da(s) Filial.

Parâmetros:

{
  codigofilial: number    // Código da filial (opcional)
}

estoque()

Descrição:
Retorna Estoque do produto e filial informados.

Parâmetros:

{
  codigofilial: number    // Código da filial (Obrigatório)
  codigoproduto: number    // Código da produto (Obrigatório)
}

preco()

Descrição:
Retorna Preço do produto na filial informados.

Parâmetros:

{
  codigofilial: number    // Código da filial (Obrigatório)
  codigoproduto: number    // Código da produto (Obrigatório)
  precoporembalagem: boolean  // Calcula o preço pelo fator de embalagem ou não (opcional)
}

buscaXml()

Descrição:
Retorna XML em formato String ou Base64.

Parâmetros:

{
  numeropedido: number    // Número Pedido de Venda (Obrigatório)
  numerotransacao: number    // Número Transação Venda (Obrigatório)
  retornabase64: boolean  // Retorna String *padrão ou Base64 se informado true (opcional)
}

**Só precisa informar o número do pedido ou número da transação de venda não precisa informar os dois!

cadastrarAtualizarCliente(params)

Descrição:
Cadastra ou atualiza um cliente. Se o CNPJ já existir, os dados serão atualizados.

Parâmetros críticos:
| Parâmetro | Tipo | Obrigatório? |
|-----------|------|--------------|
| CNPJ | string (18 chars) | ✅ Sim |
| CODIGOATIVIDADE | number | ✅ Sim |
| NOMECLIENTE | string (60 chars) | ✅ Sim |
| INSCRICAOESTADUAL | string (15 chars) | ✅ Sim (ou "ISENTO") |
| ENDERECOCOBRANCA | string (40 chars) | ✅ Sim |
| CEPCOBRANCA | string (9 chars) | ✅ Sim |
| BAIRROCOMERCIAL | string (40 chars) | ✅ Sim |
| CODIGOCIDADE | number | ✅ Sim |
| ENDERECOCOMERCIAL | string (40 chars) | ✅ Sim |
| CEPCOMERCIAL | string (9 chars) | ✅ Sim |
| CODIGOPAIS | number | ✅ Sim (default: 1058) |
| EMAIL | string (100 chars) | ✅ Sim |
| CODIGOPRACA | number | ✅ Sim |
| CODIGOVENDEDOR | number | ✅ Sim |

Exemplo:

await cadastrarAtualizarCliente({
  CNPJ: '12345678901234',
  CODIGOATIVIDADE: 1,
  NOMECLIENTE: 'Empresa Teste'
});

🔒 Boas Práticas

Nunca armazene credenciais no código: Use arquivos .env (com dotenv).

Exemplo com .env:

WTA_HOST=https://servidor-winthor.com
WTA_LOGIN=usuario
WTA_SENHA=senha
require('dotenv').config();
const config = {
  host: process.env.WTA_HOST,
  login: process.env.WTA_LOGIN,
  senha: process.env.WTA_SENHA
};

Opção 2: Usando config (ideal para ambientes múltiplos)

// config/default.json
{
  "wta": {
    "host": "https://servidor-winthor.com",
    "login": "usuario_api",
    "senha": "senha_ultra_secreta"
  }
}
// config/production.json (sobrescreve default.json em produção)
{
  "wta": {
    "host": "https://winthor-prod.totvs.com"
  }
}
// Uso no código
const config = require('config');

const wta = new Wint({
  host: config.get('wta.host'),
  login: config.get('wta.login'),
  senha: config.get('wta.senha')
});

⚠️ Importante:

Adicione .env e /config/*.json no seu .gitignore

Tratamento de Erros:

Sempre capture erros com try/catch ou .catch() para evitar falhas silenciosas.

📚 Recursos Úteis

Obs.: Instale ou atualize os serviços no WTA (801)

  • winthor-pedido-venda
  • winthor-estoque-vtex
  • winthor-compras-produto

📜 Licença

Licença Livre

Este projeto não possui licença restritiva - sinta-se livre para:

  • Usar em projetos comerciais
  • Modificar e redistribuir
  • Incorporar em outros sistemas

(Sugira novos métodos em Issues!)