# Nó local de impressão — Manual de configuração

O **nó local** é um pequeno programa que roda **numa máquina da loja** (na mesma rede da impressora) e resolve a
impressão do ERP_NETS / **PDV de auto-atendimento (totem)**: como o sistema é web, o navegador não fala direto com a
impressora — o nó puxa os cupons/comandas do servidor e manda pra impressora. Funciona com impressora **de rede** (IP)
ou **USB** (via Windows).

> É leve, não precisa de instalação pesada e roda em qualquer Windows da loja. Uma máquina do balcão já serve.

---

## 1. Pré-requisitos
- Uma máquina **Windows** ligada na mesma rede/loja da impressora (pode ser o próprio PC do caixa).
- A impressora térmica **ligada e funcionando** (rede com IP fixo, OU conectada por USB nessa máquina).
- O **CNPJ** da loja e o **PIN de instalação** (o mesmo usado nos outros produtos Nets & Notes) — ou, alternativamente,
  a **URL do ERP** + o **token do nó** (gerado na retaguarda).

---

## 2. Instalar o nó
1. Baixe o **`no_local.zip`** no canal de download e extraia numa pasta fixa, por exemplo `C:\NetsNotes\NoLocal\`.
2. Dentro dela ficam: `no_local.exe`, `config.exemplo.json` e este manual.

---

## 3. Preparar a impressora

### 3A. Impressora de REDE (Ethernet/Wi-Fi) — a mais simples
Não precisa de driver. Anote o **IP** da impressora (ela imprime uma folha de autoteste com o IP, ou veja no painel
dela). A porta padrão é **9100**.

### 3B. Impressora USB (Windows) — térmica conectada por cabo
Como o USB não tem IP, criamos uma **fila do Windows** e o nó imprime nela:
1. Descubra a porta USB da impressora (Painel de Controle → Dispositivos, ou PowerShell `Get-PnpDevice`). Costuma ser
   `USB001`, `USB002`, `USB003`…
2. Numa **PowerShell como Administrador**, crie a fila com o driver genérico de texto (RAW — não altera os bytes):
   ```
   Add-PrinterDriver -Name "Generic / Text Only"
   Add-Printer -Name "MinhaTermica" -DriverName "Generic / Text Only" -PortName "USB003"
   ```
   (troque `USB003` pela porta certa e `MinhaTermica` por um nome sem espaços).

---

## 4. Cadastrar a impressora na retaguarda
No ERP: **Retaguarda → 🖨️ Impressoras → Adicionar**:

| Campo | O que pôr |
|---|---|
| **Estação** | `balcão` (cupom do cliente) ou `cozinha` (comanda de produção). |
| **Nome** | livre, ex.: "Térmica balcão". |
| **Destino** | **rede:** o IP (ex.: `192.168.0.50`). **USB:** escolha no **dropdown "Impressora (USB encontradas)"** — o nó lista sozinho as impressoras do Windows, você não digita o nome. (Se preferir, ainda dá pra digitar `win:NomeDaFila`.) |
| **Porta** | `9100` (rede). No USB é ignorada. |
| **Largura** | `80mm (48)` ou `58mm (32)`, conforme o papel. |
| **Acentos** | `CP850` (padrão; cobre o português). |
| **Perfil** | **Completo** (térmica ESC/POS normal) ou **Básico** (ver abaixo). |
| **Margem** | recuo lateral em colunas (só no perfil Básico). Ex.: `4` ≈ 6 mm de cada lado. |

### Perfil Completo × Básico
- **Completo** (padrão): usa os recursos da impressora — letra grande na SENHA, negrito, centralização.
- **Básico**: para térmicas que **não entendem** os comandos de formatação e imprimem sujeira no papel (ex.: alguns
  modelos Diebold/IM453H). No Básico tudo é só texto: a centralização é feita por espaços e a SENHA sai numa moldura
  `====`. Se ao testar aparecerem caracteres estranhos tipo `®3!` ou a letra não aumentar, **troque para Básico**.

> Dica: depois de cadastrar, clique em **🖨️ testar** na linha da impressora — sai um **cupom de teste** na hora
> (não precisa fazer venda). Veja o papel e ajuste **Perfil** e **Margem** até ficar do seu gosto.
> No topo da tela, **"🟢 nó online"** confirma que a máquina de impressão está ligada e conectada.

---

## 5. Configurar o nó (`config.json`)
Copie `config.exemplo.json` para `config.json` na mesma pasta do exe e preencha. **Três formas (escolha uma):**

**Forma A — código de pareamento (a mais fácil):** na Retaguarda → 🖨️ Impressoras → **Gerar código**, pegue o
código curto (vale 10 min) e informe junto com a URL do ERP. O nó troca o código pelo token e **salva sozinho** —
no próximo boot nem precisa mais do código.
```json
{ "erp_url": "https://SEU-ERP", "codigo": "A3F9C1", "poll_seg": 3 }
```

**Forma B — token:** informe direto a URL do ERP e o token (Retaguarda → Impressoras → **Gerar / Regerar token**).
```json
{ "erp_url": "https://SEU-ERP", "token": "COLE_O_TOKEN_AQUI", "poll_seg": 3 }
```

**Forma C — autoprovisão:** o nó se configura sozinho pelo CNPJ + PIN (mesma credencial dos outros produtos N&N).
```json
{ "cerebro_url": "https://SEU-CEREBRO", "cnpj": "00000000000000", "pin": "1234", "poll_seg": 3 }
```

---

## 6. Rodar
- **Teste rápido:** dê um duplo-clique no `no_local.exe` (ou `no_local.exe config.json` no Prompt). Ele mostra
  `[no] iniciado -> ...` e, a cada pedido pago, `[no] impresso ...`.
- **Deixar sempre ligado:** coloque um atalho do `no_local.exe` na **pasta Inicializar** do Windows
  (`shell:startup`), para subir junto com a máquina. (Instalação como serviço do Windows pode ser feita depois.)

---

## 7. Teste e problemas comuns
| Sintoma | Causa provável | O que fazer |
|---|---|---|
| Nada imprime | impressora/fila errada, ou nó parado | confira o **Destino** no cadastro e se o `no_local.exe` está rodando. |
| Sai sujeira (`®3!`, `a` soltos) ou letra não aumenta | térmica não entende os comandos | troque o **Perfil** para **Básico**. |
| Acentos errados (`ç`, `ã` viram símbolo) | codepage | ajuste **Acentos** (CP850 cobre quase tudo). |
| Imprime colado na borda | sem margem | aumente a **Margem** (perfil Básico). |
| "token do nó inválido" | token/URL errados | gere o token de novo (Retaguarda) ou use a autoprovisão (CNPJ+PIN). |
| Impressora de rede não responde | IP/porta | confira o IP e a porta 9100; veja se a máquina do nó "pinga" a impressora. |

---

Suporte Nets & Notes — este nó é parte do PDV de auto-atendimento / impressão do ERP_NETS. Não altera nem acessa o
sistema legado.
