> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://ajuda.groner.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Variáveis de itens do kit

# Interpolação de itens do kit

Até agora, para mostrar os itens do kit na proposta você tinha uma opção só: `[[ItensKitSimulacao]]`, que imprime **a tabela inteira**, do jeito que ela é.

Agora existe uma forma de **perguntar** coisas ao kit e trazer só o que interessa:

> "Qual é o nome do inversor?"
> "Quantos módulos tem?"
> "Se tiver bateria, mostra o modelo — se não tiver, some com esse trecho."

Este artigo mostra como escrever essas perguntas nos seus modelos.

---

## 1. Onde escrever

Esses códigos vão **no modelo** (Proposta, Documento ou Contrato) — no mesmo lugar onde você já usa `[[NomeLead]]`, `[[PrecoSimulacao]]` e afins.

Quando a proposta é gerada, o sistema troca cada código pelo valor daquele kit específico.

Tudo o que este artigo ensina — os códigos `[[...KitSimulacao]]` **e** os blocos condicionais
`{{if}}` — funciona nos dois formatos: **editor visual (HTML)** e **modelo Word (.docx)**.

> 💡 O modelo é o "molde". Propostas **já geradas** não mudam — o código passa a valer nas próximas.

---

## 2. Anatomia do código

Todo código de item do kit tem esta forma:

```
[[Seletor(filtros)CampoKitSimulacao]]
```

Um exemplo real, peça por peça:

```
[[Item(categoria:contains:cabo)NomeKitSimulacao]]
```

| Parte | No exemplo | O que faz |
| ---- |
| **Seletor** | `Item` | Qual item pegar (o primeiro, o último, todos…) |
| **Filtros** | `(categoria:contains:cabo)` | Quais itens considerar |
| **Campo** | `Nome` | Qual informação mostrar |
| **Final** | `KitSimulacao` | Fixo, sempre termina assim |

Resultado: *"o **nome** do **primeiro** item cuja **categoria contém "cabo"**"*.

Os filtros são opcionais. Sem eles, a pergunta vale para o kit inteiro:

```
[[QtdKitSimulacao]]          →  quantos itens tem o kit
[[Item3NomeKitSimulacao]]    →  nome do 3º item do kit
```

---

## 3. Seletores: qual item pegar

| Seletor | O que traz | Exemplo |
| ---- |
| `Item` | O **primeiro** que corresponder | `[[Item(categoria:contains:inversor)NomeKitSimulacao]]` |
| `PrimeiroItem` | O primeiro (mesma coisa, mais explícito) | `[[PrimeiroItem(categoria:contains:cabo)NomeKitSimulacao]]` |
| `UltimoItem` | O **último** que corresponder | `[[UltimoItem(categoria:contains:cabo)NomeKitSimulacao]]` |
| `Item2`, `Item3`… | O **2º**, **3º**… que corresponder | `[[Item2(categoria:contains:modulo)NomeKitSimulacao]]` |
| `Item-1`, `Item-2` | Contando **de trás pra frente** (`-1` = último) | `[[Item-2(categoria:contains:cabo)NomeKitSimulacao]]` |
| `Lista` | **Todos**, separados por vírgula | `[[Lista(categoria:contains:cabo)NomeKitSimulacao]]` |
| `Soma` | **Soma** dos valores numéricos | `[[Soma(categoria:contains:modulo)QuantidadeKitSimulacao]]` |
| `Qtd` | **Quantos** itens correspondem | `[[Qtd(categoria:contains:cabo)KitSimulacao]]` |

---

## 4. Campos: qual informação mostrar

| Campo | O que traz |
| ---- |
| `Nome` | Nome do item — *CABO 6MM PVC 750V* |
| `Categoria` | Categoria do item — *MATERIAL CA* (também aceita `Tipo`) |
| `Codigo` | Código do item — *CABO6MM* |
| `Quantidade` | Quantidade no kit — *35* |
| `Valor` | Valor total do item no kit — *198,80* |
| `ValorUnitario` | Valor de uma unidade — *5,68* |
| `Potencia` | Potência do item — *620* |
| `Fabricante` | Fabricante — *GOODWE* |
| `Descricao` | Descrição cadastrada |
| `Funcao` | Função no projeto de engenharia — *Ramal de Entrada* (ver seção 5.1) |

**Se você não escrever campo nenhum**, o sistema assume:

* `Item`, `UltimoItem`, `Lista` → mostram o **Nome**
* `Soma` → soma a **Quantidade**
* `Qtd` → não usa campo (só conta)

Ou seja, `[[Item(categoria:contains:inversor)KitSimulacao]]` já traz o nome do inversor.

---

## 5. Filtros: quais itens considerar

O filtro tem três partes separadas por dois-pontos:

```
campo:operador:valor
```

### Operadores

| Operador | Quando usar | Exemplo |
| ---- |
| `contains` | Contém o texto (**recomendado**) | `categoria:contains:cabo` |
| `eq` | É exatamente igual | `categoria:eq:material ca` |
| `starts` | Começa com | `codigo:starts:INS` |

> ✅ **Prefira sempre `contains`.** Se a categoria estiver cadastrada como "MATERIAL CA" e você escrever `categoria:eq:cabo`, não encontra nada. Com `contains` você acerta mesmo sem lembrar o nome exato.

**Atalho:** se você omitir o operador, o sistema usa `contains` automaticamente:

```
[[Item(categoria:cabo)NomeKitSimulacao]]        ← mesma coisa que categoria:contains:cabo
```

### Acentos e maiúsculas não importam

Todos estes encontram a categoria **"ELETRO ELETRÔNICOS"**:

```
categoria:contains:eletro
categoria:contains:eletronicos
categoria:contains:ELETRÔNICOS
```

### Combinando filtros

Use `;` entre os filtros. Todos precisam ser verdadeiros ao mesmo tempo:

```
[[Item(categoria:contains:cabo;nome:contains:6mm)QuantidadeKitSimulacao]]
```
→ *quantidade do cabo de 6mm*

---

## 5.1. Buscar pela FUNÇÃO no projeto (recomendado para documentos técnicos)

Filtrar por nome ("o cabo que tem 6mm no nome") funciona — até alguém cadastrar o item com
outro nome. Para **projeto de engenharia, diagrama unifilar e memorial**, existe um jeito bem
mais confiável: buscar pelo **papel que o item cumpre no projeto**.

Cada insumo pode receber uma ou mais **Funções de Engenharia** — por exemplo *Ramal de Entrada*,
*String CC*, *Aterramento*, *Proteção CA*:

1. Cadastre as funções em **Configurações → Precificação → Funções de Engenharia**
2. Marque-as nos insumos — na **coluna Funções de engenharia da listagem** (jeito mais rápido
   para classificar vários) ou no detalhe do insumo

Depois, no modelo, é só pedir pela função:

```
Ramal de entrada: [[Item(funcao:contains:ramal de entrada)NomeKitSimulacao]]
Bitola: [[Item(funcao:contains:ramal de entrada)QuantidadeKitSimulacao]] m

Aterramento: [[Item(funcao:contains:aterramento)NomeKitSimulacao]]
String CC: [[Item(funcao:contains:string)NomeKitSimulacao]]
```

**Por que é melhor:** o nome do produto pode mudar (marca, bitola, fornecedor), mas o papel
dele no projeto continua o mesmo. O documento não erra o item.

> 💡 **Um insumo pode ter várias funções.** Um cabo 6mm pode ser *Ramal de Entrada* **e**
> *Circuito CA* — ele aparece nas duas buscas.

> ⚠️ A função vem do **seu catálogo de Insumos**. Itens que chegam prontos de kits de
> distribuidor não têm função cadastrada — para esses, continue usando `nome:` ou `categoria:`.

Para ver as funções de um item no documento: `[[Item(codigo:eq:cabo6)FuncaoKitSimulacao]]`
→ *Ramal de Entrada, Circuito CA*

> 📘 O passo a passo do cadastro e do vínculo está no artigo **"Funções de Engenharia"**.

---

## 6. Quando um kit ou modelo não é encontrado na cotação

Ao solicitar uma cotação, a Groner apenas envia a requisição ao fornecedor. Os kits e modelos exibidos dependem da resposta disponibilizada pelo fornecedor por meio da API; portanto, a Groner lista somente os itens que o fornecedor informa como disponíveis.

Se o kit ou modelo não for encontrado, verifique se o tipo de telhado está corretamente vinculado ao fornecedor. Essa associação é usada para filtrar os itens disponíveis durante a cotação. Se o resultado continuar igual ao testar outros tipos de estrutura, o fornecedor provavelmente não tem esse kit disponível.

Consulte também: [Como correlacionar os tipos de telhado com os fornecedores?](https://ajuda.groner.app/pt-br/article/como-correlacionar-os-tipos-de-telhado-com-os-fornecedores-1a8sb06/)

### Quando nenhum item corresponder a um filtro

Se nenhum item corresponder ao filtro, o comportamento padrão é:

* `Item`, `UltimoItem`, `Lista` → mostram `-`
* `Soma`, `Qtd` → mostram `0`

Você pode escolher o texto que aparece nesse caso com **`senao:`**:

```
[[Item(categoria:contains:bateria;senao:Não incluso)NomeKitSimulacao]]
```

* Com bateria no kit → *"GROWATT AXE 5.0L"*
* Sem bateria → *"Não incluso"*

Outro exemplo:

```
Cabeamento: [[Lista(categoria:contains:cabo;senao:conforme projeto)NomeKitSimulacao]]
```

---

## 7. Mostrar um trecho só se o item existir (`{{if}}`)

Às vezes você não quer só trocar a palavra — quer **fazer sumir um trecho inteiro** quando o item não existe (o título, a linha, a seção).

Para isso use o bloco condicional:

```
{{if condição}}
   ...aparece quando a condição é verdadeira...
{{endif}}
```

### O padrão mais usado: "se existir esse tipo de item"

```
{{if [[Qtd(categoria:contains:bateria)KitSimulacao]] > 0}}
Sistema com armazenamento: [[Item(categoria:contains:bateria)NomeKitSimulacao]]
{{endif}}
```

* Kit **com** bateria → *"Sistema com armazenamento: GROWATT AXE 5.0L"*
* Kit **sem** bateria → a linha inteira desaparece da proposta

> 💡 A regra de ouro: use `[[Qtd(...)KitSimulacao]] > 0` para dizer **"se existir"**.

### Com alternativa (`{{else}}`)

```
{{if [[Qtd(categoria:contains:bateria)KitSimulacao]] > 0}}
Seu sistema é HÍBRIDO, com backup de energia.
{{else}}
Seu sistema é ON-GRID, conectado à rede.
{{endif}}
```

### Operadores disponíveis na condição

| Tipo | Operadores |
| ---- |
| Comparação | `==` &nbsp; `!=` &nbsp; `>` &nbsp; `<` &nbsp; `>=` &nbsp; `<=` |
| Texto | `Contains` &nbsp; `Not Contains` &nbsp; `StartsWith` &nbsp; `EndsWith` |
| Preenchimento | `IsEmpty` &nbsp; `IsNotEmpty` |
| Combinação | `AND` &nbsp; `OR` &nbsp; `NOT` e parênteses |

Exemplos:

```
{{if [[Qtd(categoria:contains:bateria)KitSimulacao]] > 0 AND [[Qtd(categoria:contains:inversor)KitSimulacao]] > 0}}
Kit híbrido completo.
{{endif}}

{{if [[Item(categoria:contains:inversor)FabricanteKitSimulacao]] == 'GOODWE'}}
Equipamento GoodWe — 12 anos de garantia.
{{endif}}
```

### Condicionais dentro de condicionais

```
{{if [[Qtd(categoria:contains:inversor)KitSimulacao]] > 0}}
  {{if [[Qtd(categoria:contains:inversor)KitSimulacao]] > 1}}
  São [[Qtd(categoria:contains:inversor)KitSimulacao]] inversores.
  {{else}}
  Inversor: [[Item(categoria:contains:inversor)NomeKitSimulacao]]
  {{endif}}
{{endif}}
```

> ⚠️ Todo `{{if}}` precisa do seu `{{endif}}`. O `{{else}}` é opcional.

---

## 8. Casos de uso prontos

### Ficha técnica dos equipamentos principais

```
Módulos: [[Soma(categoria:contains:modulo)QuantidadeKitSimulacao]]x [[Item(categoria:contains:modulo)NomeKitSimulacao]]
Inversor: [[Item(categoria:contains:inversor)NomeKitSimulacao]]
Estrutura: [[Item(categoria:contains:estrutura;senao:conforme projeto)NomeKitSimulacao]]
```

### Item extra (opcional) que só aparece quando foi vendido

```
{{if [[Qtd(categoria:contains:eletro)KitSimulacao]] > 0}}
BRINDE INCLUSO: [[Item(categoria:contains:eletro)NomeKitSimulacao]] — R$ [[Item(categoria:contains:eletro)ValorKitSimulacao]]
{{endif}}
```

### Lista de materiais elétricos

```
Materiais CA inclusos ([[Qtd(categoria:contains:material ca)KitSimulacao]] itens):
[[Lista(categoria:contains:material ca)NomeKitSimulacao]]
```

### Bateria com detalhes ou aviso

```
{{if [[Qtd(categoria:contains:bateria)KitSimulacao]] > 0}}
ARMAZENAMENTO
Modelo: [[Item(categoria:contains:bateria)NomeKitSimulacao]]
Unidades: [[Soma(categoria:contains:bateria)QuantidadeKitSimulacao]]
Investimento: R$ [[Soma(categoria:contains:bateria)ValorKitSimulacao]]
{{else}}
Este sistema não inclui banco de baterias. Consulte-nos para adicionar.
{{endif}}
```

### Cabos de 6mm (item específico dentro da categoria)

```
Cabo 6mm: [[Item(categoria:contains:cabo;nome:contains:6mm)QuantidadeKitSimulacao]] metros
```

### Resumo do investimento em extras

```
{{if [[Qtd(categoria:contains:eletro)KitSimulacao]] > 0}}
Itens adicionais: [[Lista(categoria:contains:eletro)NomeKitSimulacao]]
Total em adicionais: R$ [[Soma(categoria:contains:eletro)ValorKitSimulacao]]
{{endif}}
```

---

## 9. Categorias mais comuns

As categorias vêm do cadastro de **Insumos** (coluna *Categoria*). As mais usadas:

| Categoria | Filtro sugerido |
| ---- |
| Módulo | `categoria:contains:modulo` |
| Inversor | `categoria:contains:inversor` |
| Estrutura | `categoria:contains:estrutura` |
| Material CA | `categoria:contains:material ca` |
| Material CC | `categoria:contains:material cc` |
| Bateria | `categoria:contains:bateria` |

> 💡 Não sabe o nome exato da categoria? Abra **Insumos**, veja a coluna *Categoria* e use um pedaço do nome com `contains`.

---

## 10. Deu problema? Comece por aqui

### Aparece `-` no lugar do valor

Significa: *"procurei e não encontrei"*. Quase sempre é o filtro.

1. Teste primeiro sem filtro nenhum:

```
[[QtdKitSimulacao]]
```

* Veio um número (ex.: `29`)? Os itens estão lá — o problema é o filtro. Siga para o passo 2.
* Veio `0`? O kit não tem itens estruturados. Reabra a proposta, ajuste o kit e salve.

2. Confira a categoria em **Insumos** e use `contains` com um pedaço curto do nome:

```
[[Qtd(categoria:contains:cabo)KitSimulacao]]
```

3. Ainda `-`? Tente pelo nome do item em vez da categoria:

```
[[Item(nome:contains:cabo)NomeKitSimulacao]]
```

### O trecho do `{{if}}` sumiu inteiro

* Confira se existe `{{endif}}` fechando o bloco.
* Confira se a condição usa `[[Qtd(...)KitSimulacao]] > 0` (e não um campo de texto).

### Aparece `0` onde deveria ter valor

`Soma` e `Qtd` retornam `0` quando nada corresponde — mesma investigação do `-` acima.

### O nome do item aparece, mas o valor vem vazio

O valor só existe para itens com preço cadastrado. Confira o insumo em **Insumos → Preço de venda**.

---

## 11. Referência rápida

```
SELETORES
[[Item(...)CampoKitSimulacao]]          primeiro que corresponder
[[UltimoItem(...)CampoKitSimulacao]]    último
[[Item2(...)CampoKitSimulacao]]         o 2º  (Item-1 = último)
[[Lista(...)CampoKitSimulacao]]         todos, separados por vírgula
[[Soma(...)CampoKitSimulacao]]          soma numérica
[[Qtd(...)KitSimulacao]]                contagem

CAMPOS
Nome · Categoria · Codigo · Quantidade · Valor
ValorUnitario · Potencia · Fabricante · Descricao

FILTROS
categoria:contains:cabo        contém (padrão)
categoria:eq:material ca       igual exato
codigo:starts:INS              começa com
a:contains:x;b:contains:y      dois filtros (E)
senao:Não incluso              texto quando não encontra

CONDICIONAL
{{if [[Qtd(categoria:contains:bateria)KitSimulacao]] > 0}}
  tem bateria
{{else}}
  não tem
{{endif}}
```

---

## 12. Bônus: coordenadas do projeto

Para memoriais, pranchas e documentos de homologação, o local do projeto também pode ser
interpolado — inclusive em **UTM**, calculado automaticamente a partir da latitude/longitude
cadastrada (você não precisa preencher nada além delas).

| Código | Traz | Exemplo |
| ---- |
| `[[LatitudeProjeto]]` | Latitude como cadastrada | -23.5505 |
| `[[LongitudeProjeto]]` | Longitude como cadastrada | -46.6333 |
| `[[LatitudePontoProjeto]]` | Latitude sempre com **ponto** decimal | -23.5505 |
| `[[LongitudePontoProjeto]]` | Longitude sempre com **ponto** decimal | -46.6333 |
| `[[UTMEastingProjeto]]` | Coordenada **E** (Este), em metros | 333.287,92 |
| `[[UTMNorthingProjeto]]` | Coordenada **N** (Norte), em metros | 7.394.588,32 |
| `[[UTMZonaProjeto]]` | **Zona UTM** (fuso + hemisfério) | 23S |

Exemplo de uso em memorial:

```
Coordenadas UTM: E [[UTMEastingProjeto]] / N [[UTMNorthingProjeto]] — Zona [[UTMZonaProjeto]]
```

> 💡 Sempre informe a **zona** junto do par E/N: sem ela, a coordenada é ambígua.
> Se o projeto não tiver latitude/longitude preenchidas, os três códigos retornam `-`.

---

Ficou com dúvida em algum modelo específico? Chame o suporte da Groner com o **nome do modelo** e o **código que você escreveu** — a gente ajusta junto.
