← ClaudeAtlas

advpl-mvclisted

Padrões MVC em ADVPL/TLPP — MenuDef/ModelDef/ViewDef, MPFormModel, FWFormStruct, FWMVCMenu pra aRotina automático, FWExecView (tela interativa) vs FWMVCRotAuto (headless), e o padrão MODERNO de hooks via FWModelEvent + InstallEvent (substitui bCommit/bTudoOk descontinuados). Use ao criar/editar cadastros MVC, adicionar validação ou gatilho, ou refatorar AxCadastro/Modelo2/Modelo3 legados.
JoniPraia/plugadvpl · ★ 12 · Web & Frontend · score 66
Install: claude install-skill JoniPraia/plugadvpl
# advpl-mvc — Framework MVC do Protheus A partir do release 11 da TOTVS, cadastros e processos no Protheus usam o framework **MVC** (FWMVC). O padrão legado `AxCadastro`/`Modelo2`/`Modelo3` é deprecado (catalogado como `MOD-004` no lint). Uma rotina MVC tem **3 funções estáticas obrigatórias** + um menu: - `MenuDef()` → retorna `aRotina` (entradas de menu, ações disponíveis). - `ModelDef()` → retorna `oModel` (estrutura de dados, validações, hooks). - `ViewDef()` → retorna `oView` (interface gráfica, vinculação ao model). ## Quando usar - Criar/editar cadastro Protheus (CRUD) — sempre MVC pra código novo. - Adicionar validação a cadastro existente (via PE `<Rotina>MOD` ou InstallEvent). - Trabalhar com sub-models (cabeçalho/itens, ex: pedido + itens). - Refatorar `AxCadastro`/`Modelo2`/`Modelo3` legado (`MOD-004`). - Edit em arquivo MVC identificado por `/plugadvpl:tables` ou `/plugadvpl:arch`. ## Estrutura mínima moderna (TLPP-style) ```advpl #include "TOTVS.CH" #include "FWMVCDef.CH" User Function XYZCAD() Local oBrowse := FWMBrowse():New() oBrowse:SetAlias("ZZZ") oBrowse:SetMenuDef("XYZCAD") // referencia a propria MenuDef oBrowse:SetDescription("Cadastro XYZ") oBrowse:Activate() Return Nil Static Function MenuDef() Return FWMVCMenu("XYZCAD") // gera aRotina padrao (View/Insert/Update/Delete/Print/Copy) End Static Function ModelDef() Local oModel := MPFormModel():New("XYZCADMD") // 5 params; hoje passa só cIDModel