advpl-mvc-tlpplisted
Install: claude install-skill JoniPraia/plugadvpl
# advpl-mvc-tlpp — MVC do Protheus em TLPP (namespace)
Em `.tlpp` o framework MVC **muda o mecanismo de resolução**: o MVC clássico localiza `MenuDef`/`ModelDef`/`ViewDef` como `Static Function` pelo **nome do fonte** via `StaticCall` — e a `StaticCall` é **inibida em TLPP**. No TLPP, essas funções viram `User Function` dentro do `namespace`, e tudo que o framework recebe passa a ser **`namespace.funçãoPrincipal`** (a função do browse), nunca o nome do arquivo.
> O miolo do MVC (MPFormModel, AddFields/AddGrid, SetRelation, FWModelEvent, FWFormView) **não muda** — veja `[[advpl-mvc]]`. O que muda é a **casca de resolução**: declaração das *Def e as strings passadas ao framework.
## Pré-requisitos (cheque ANTES de escrever)
| Requisito | Mínimo | Se não atender |
|---|---|---|
| Release Protheus | **12.1.2410** (parcial na LIB 20240520) | MVC em `.tlpp` **não funciona** — orientação oficial TOTVS: mantenha o fonte em `.prw` |
| LIB (framework) | **20240520**+ | idem |
| Includes | FWMVCDEF.CH / tlpp-core.th **atualizados** da LIB nova | erros de compilação/resolução |
| Encoding do fonte | `.tlpp` = **UTF-8** | mojibake em acentos (veja `[[advpl-encoding]]`) |
Sintoma clássico de ambiente antigo (documentado pela TOTVS): **browse abre, mas o menu fica sem opções / Incluir não responde** — e o mesmo fonte renomeado pra `.prw` funciona.
## O que muda de .prw pra .tlpp
| Aspecto | `.prw` clássico | `.tlpp` com namespace |
|---|---|---|
| `MenuDef`/`ModelDef`/`ViewDef` | `St