# Product Component

Uma linha do que um produto inclui: outro produto, numa quantidade, por período.

Um Product Component é uma linha do que um Product inclui: o todo, a parte, uma quantidade e uma unidade. Um programa que inclui Keyword Tracking, 30 por dia, é uma linha; um kit que inclui uma peça, 2 unidades, é outra. O todo e a parte são Products. A mesma tabela guardará os ingredientes de um item de cardápio se o Inventory migrar; não há tabela separada de receita ou pacote. Tipo BDS: schema:TypeAndQuantityNode.

## Campos

| Campo | Armazenamento | Significado |
| --- | --- | --- |
| Name* | Texto | Digitado como todo - parte - quantidade unidade |
| Product* | Registros vinculados | [Product](/pt-br/systems/products/entity-product), o todo |
| Includes* | Registros vinculados | [Product](/pt-br/systems/products/entity-product), a parte |
| Quantity* | Número | Número inteiro da parte por unidade; numa faixa, o limite inferior |
| Unit* | Escolha única | each, per day, per week, per month, per quarter, per year |
| Notes° | Texto longo | O que o deck ou contrato diz que a quantidade não diz |
| Lifecycle Status* | Escolha única | Draft, Active, Archived |
| Component Check | Fórmula | Fragmentos ⚠ para entradas ausentes ou inválidas |
| Component (Name) | Fórmula | A parte com quantidade e unidade |
| Created At | Data de criação | Quando a linha foi criada |
| Intake Step | Fórmula | Encaminha linhas Draft ou sem status para o próximo passo de criação; vazio para Active e Archived |
| Tags° | Registros vinculados | [Tags (mirror)](/pt-br/systems/products/entity-tags); opcional |

Grid de consulta capturada em 2026-10-28, antes dos intakes e dos ajustes de nomes. Use os nomes atuais das views indicados neste guia.

[![Grid de Product Component: uma linha por parte, com quantidade e unidade.](/systems/products/screens/products-component-grid.png)](/systems/products/screens/products-component-grid.png)

## Regras calculadas

### Component Check

```text
IF(LEN({Product*} & "") = 0, "⚠ No product. ", "") &
IF(LEN({Includes*} & "") = 0, "⚠ Nothing included. ", "") &
IF(AND(LEN({Product*} & "") > 0, {Product*} & "" = {Includes*} & ""), "⚠ A product cannot include itself. ", "") &
IF({Quantity*} = BLANK(), "⚠ No quantity. ", "") &
IF(LEN({Unit*} & "") = 0, "⚠ No unit. ", "")
```

### Component (Name)

```text
IF(LEN({Includes*} & "") > 0, {Includes*} & " × " & {Quantity*} & " " & {Unit*}, "")
```

## Vínculos e cardinalidade

Cada linha deve vincular exatamente um todo e uma parte. Os dois campos aceitam vários registros; Component Check sinaliza vazios e o caso em que todo e parte vinculados têm o mesmo texto, não uma linha com duas partes, uma sobreposição parcial ou um laço indireto. Nos produtos, o todo mostra a linha em Components e a parte em Component Of.

## Roteamento do intake

O intake de criação usa estas fórmulas locais. Registros Active e Archived saem dos passos roteados; as mudanças de status continuam manuais.

### Intake Step

```text
IF(OR({Lifecycle Status*} = "Draft", {Lifecycle Status*} = BLANK()), IF(OR(LEN(TRIM({Name*} & "")) = 0, LEN({Product*} & "") = 0, LEN({Includes*} & "") = 0), "Create - 1", IF(OR(LEN({Quantity*} & "") = 0, LEN({Unit*} & "") = 0), "Create - 2", "Create - 3")), "")
```

## Ciclo de vida

[Crie este registro pelo intake](/pt-br/systems/products/intakes-and-checks).

Linhas novas começam como Draft. Active significa que o produto inclui esta parte hoje. Archived significa que não inclui mais; mantenha a linha porque o histórico pode apontar para ela. Name* é digitado, então reescreva-o depois de mudar um vínculo ou a quantidade.

## Exemplo

Name* = Example Program - Keyword Tracking - 30 per day; Product* = Example Program; Includes* = Keyword Tracking; Quantity* = 30; Unit* = per day; Component (Name) = Keyword Tracking × 30 per day; Component Check em branco.

## Próximos passos

[Compor um produto](/pt-br/systems/products/compose-product) · [Todas as entidades](/pt-br/systems/products/entities)