winthor-api-wta
Version:
Pacote Integração com API do WTA do ERP Winthor
236 lines (198 loc) • 6.34 kB
Markdown
# winthor-api-wta
**Cliente Node.js para integração com a API WTA do ERP Winthor**
[](https://www.npmjs.com/package/winthor-wta-api)
[](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
```bash
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.
```javascript
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())
```javascript
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)
```javascript
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:**
```typescript
{
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:**
```typescript
{
codigofilial: number // Código da filial (opcional)
}
```
## `estoque()`
**Descrição:**
Retorna Estoque do produto e filial informados.
**Parâmetros:**
```typescript
{
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:**
```typescript
{
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:**
```typescript
{
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:**
```javascript
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:
```ini
WTA_HOST=https://servidor-winthor.com
WTA_LOGIN=usuario
WTA_SENHA=senha
```
```javascript
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)
```json
// config/default.json
{
"wta": {
"host": "https://servidor-winthor.com",
"login": "usuario_api",
"senha": "senha_ultra_secreta"
}
}
```
```javascript
// config/production.json (sobrescreve default.json em produção)
{
"wta": {
"host": "https://winthor-prod.totvs.com"
}
}
```
```javascript
// 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
* 🏢 [Documentação Oficial API Integrações Winthor](https://tdn.totvs.com/pages/releaseview.action?pageId=573185595)
* 🐙 [Meu GitHub](https://github.com/jtairone)
* 🖥️ [Portfólio](http://portfolio.moraiscasa.dev.br/)
### ***Obs.: Instale ou atualize os serviços no WTA (801)***
* winthor-pedido-venda
* winthor-estoque-vtex
* winthor-compras-produto
## 📜 Licença
[]()
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!)*