Catálogo de pontos de interação
Todos os IPs do Core: código, const SDK, tela, serviço, wired, canDeny e timeout.
Fonte: ENTRY_POINT_CATALOG (farmus-api) alinhado a SdkEntryPoint (@m3r/sdk 0.5.0). Timeout de processo 2000 ms; tela/ação de vendas 400 ms (exceto IP.EXT.SCREEN.ON_LOAD, 2000 ms).
Patch allowlist em vendas (header): observation, customerName, deliveryDate. Demais módulos: lista vazia (observam; não patcheiam documento).
Wired = o Core invoca hoje. Sem handler, fail-open (allow: true), salvo IPs BEFORE/ACTION de vendas (failPolicy: closed no catálogo do host).
Declare no m3r.json com o código IP.… ou o const; o validate resolve os dois.
Como ler a tabela
| Coluna | Significado |
|---|---|
| Alias | código PE legado (PE410SV) |
| Tela | screen no catálogo (host UI) |
| Serviço | quem chama invoke no backend |
| W | wired |
| N | canDeny |
Vendas — processo
| Código | Const | Alias | Serviço | W | N |
|---|---|---|---|---|---|
IP.SALES.ORDER.BEFORE_CREATE | SalesOrderBeforeCreate | PE410INC | SalesOrderService | sim | sim |
IP.SALES.ORDER.AFTER_CREATE | SalesOrderAfterCreate | PE410INC2 | SalesOrderService | sim | não |
IP.SALES.ORDER.BEFORE_SAVE | SalesOrderBeforeSave | PE410SV | SalesOrderService | sim | sim |
IP.SALES.ORDER.AFTER_SAVE | SalesOrderAfterSave | PE410SV2 | SalesOrderService | sim | não |
IP.SALES.ORDER.VALIDATE | SalesOrderValidate | PE410TOK | — | não | sim |
IP.SALES.ORDER.BEFORE_DELETE | SalesOrderBeforeDelete | PE410DEL | — | não | sim |
IP.SALES.ORDER.BEFORE_FULFILL | SalesOrderBeforeFulfill | PE410FAT | SalesOrderService | sim | sim |
IP.SALES.ORDER.AFTER_FULFILL | SalesOrderAfterFulfill | PE410FAT2 | SalesOrderService | sim | não |
IP.SALES.ORDER.BEFORE_CANCEL | SalesOrderBeforeCancel | PE410CAN | SalesOrderService | sim | sim |
IP.SALES.ORDER.AFTER_CANCEL | SalesOrderAfterCancel | PE410CAN2 | SalesOrderService | sim | não |
IP.SALES.ORDER.BEFORE_CONVERT_QUOTE | SalesOrderBeforeConvertQuote | PE410ORC | — | não | sim |
IP.SALES.ORDER.AFTER_CONVERT_QUOTE | SalesOrderAfterConvertQuote | PE410ORC2 | — | não | não |
IP.SALES.ORDER.BEFORE_ASSIGN_CUSTOMER | SalesOrderBeforeAssignCustomer | PE410CLI | — | não | sim |
IP.SALES.ITEM.BEFORE_ADD | SalesItemBeforeAdd | PE410ITM | — | não | sim |
IP.SALES.ITEM.VALIDATE | SalesItemValidate | PE410ITV | — | não | sim |
IP.SALES.ITEM.PRICE_RESOLVE | SalesItemPriceResolve | PE410PRC | — | não | não |
IP.SALES.RETURN.BEFORE_CREATE | SalesReturnBeforeCreate | PE070INC | ReturnsService | sim | sim |
IP.SALES.PDV.BEFORE_CLOSE | SalesPdvBeforeClose | PEPDV1 | PdvService | sim | sim |
IP.SALES.PDV.AFTER_CLOSE | SalesPdvAfterClose | PEPDV2 | PdvService | sim | não |
IP.SALES.EXIT.BEFORE_CONFIRM | SalesExitBeforeConfirm | PE003CNF | ExitDocumentService | não | sim |
IP.SALES.GROUP.BEFORE_CREATE | SalesGroupBeforeCreate | PE410GRP | — | não | sim |
IP.SALES.PRICE.BEFORE_RELEASE | SalesPriceBeforeRelease | PE410LIB | PriceReleaseService | não | sim |
Permissões típicas: sales.order.create|update|fulfill|cancel, sales.return.create, sales.pdv.finish, sales.quote.convert, sales.exit.confirm, sales.price.release.
Vendas — tela e ação
Tela ERP: pedido /apps/sales, /apps/sales/add, /apps/sales/[id]; lista /apps/sales; faturar /apps/sales/fulfill; Pedido Rápido; PDV /apps/pdv. Hook useInteractionPoint no web.
| Código | Const | Alias | screen | W | N |
|---|---|---|---|---|---|
IP.SALES.ORDER.SCREEN.ON_LOAD | SalesOrderScreenOnLoad | PE410PBO | sales.order | sim | não |
IP.SALES.ORDER.SCREEN.ON_FIELD_CHANGE | SalesOrderScreenOnFieldChange | PE410FLD | sales.order | sim | não |
IP.SALES.ORDER.SCREEN.BEFORE_SUBMIT | SalesOrderScreenBeforeSubmit | PE410PAI | sales.order | sim | sim |
IP.SALES.ORDER.ACTION.SAVE | SalesOrderActionSave | PE410BTN | sales.order | sim | sim |
IP.SALES.ORDER.ACTION.FULFILL | SalesOrderActionFulfill | PE410BFAT | sales.fulfill | sim | sim |
IP.SALES.ORDER.ACTION.CANCEL | SalesOrderActionCancel | PE410BCAN | sales.order | sim | sim |
IP.SALES.ORDER.TOOLBAR | SalesOrderToolbar | PE410BAR | sales.order | sim | não |
IP.SALES.ORDER.TAB | SalesOrderTab | PE410TAB | sales.order | não | não |
IP.SALES.LIST.ON_LOAD | SalesListOnLoad | PE410LST | sales.list | sim | não |
IP.SALES.LIST.ROW_ACTION | SalesListRowAction | PE410ROW | sales.list | sim | não |
IP.SALES.FULFILL.SCREEN.ON_LOAD | SalesFulfillScreenOnLoad | PE410FSC | sales.fulfill | sim | não |
IP.SALES.QUICK_SALE.SCREEN.ON_LOAD | SalesQuickSaleScreenOnLoad | PE410QS | sales.quick-sale | sim | não |
IP.SALES.APPROVAL.SCREEN.ON_LOAD | SalesApprovalScreenOnLoad | PE410APR | sales.approval | não | não |
IP.SALES.FUTURE_DELIVERY.SCREEN.ON_LOAD | SalesFutureDeliveryScreenOnLoad | PE410FUT | sales.future-delivery | não | não |
IP.SALES.PDV.SCREEN.ON_LOAD | SalesPdvScreenOnLoad | PEPDVSC | sales.pdv | não | não |
Compras (catalogado, host ainda não chama)
Tela: /apps/purchase. Permissão purchase.order.update. Timeout 2000 ms.
| Código | Const | Alias | W | N |
|---|---|---|---|---|
IP.PURCHASE.ORDER.BEFORE_SAVE | PurchaseOrderBeforeSave | PE120SV | não | sim |
IP.PURCHASE.ORDER.AFTER_SAVE | PurchaseOrderAfterSave | PE120SV2 | não | não |
Quando o Core ligar: mesmo entryPoints.invoke(code, payload) do dispatcher de vendas. Não copiar dispatcher.
Estoque (catalogado, host ainda não chama)
Writer: StockService.postMovementInTransaction. Tela de movimentos / kardex. Permissão stock.movement.create.
| Código | Const | Alias | W | N |
|---|---|---|---|---|
IP.STOCK.MOVEMENT.BEFORE_POST | StockMovementBeforePost | PE020MOV | não | sim |
IP.STOCK.MOVEMENT.AFTER_POST | StockMovementAfterPost | PE020MOV2 | não | não |
Financeiro (catalogado, host ainda não chama)
Tela: /apps/financeiro/contas-a-pagar e contas-a-receber. Permissões financial.title.create, financial.payment.create.
| Código | Const | Alias | W | N |
|---|---|---|---|---|
IP.FINANCIAL.TITLE.BEFORE_CREATE | FinancialTitleBeforeCreate | PE012INC | não | sim |
IP.FINANCIAL.PAYMENT.BEFORE_REGISTER | FinancialPaymentBeforeRegister | PE012PAG | não | sim |
Fiscal (wired, fail-open, canDeny=false, contract v1)
Permissão padrão fiscal.nfe.emit. Não alteram base/vNF na Onda 0. NFS-e não reutiliza códigos NFE e não patcheia XML.
| Código | Const | Alias | W | N | Nota |
|---|---|---|---|---|---|
IP.FISCAL.CALC.BEFORE | FiscalCalcBefore | PE055CB | sim | não | antes do cálculo do item |
IP.FISCAL.CALC.AFTER | FiscalCalcAfter | PE055CA | sim | não | trilha já montada |
IP.FISCAL.VALIDATE | FiscalValidate | PE055VAL | sim | não | CST×CFOP, ST sem CEST, DIFAL |
IP.FISCAL.ITEM.BEFORE_SAVE | FiscalItemBeforeSave | PE055IBS | sim | não | persistir impostos |
IP.FISCAL.ITEM.AFTER_SAVE | FiscalItemAfterSave | PE055IAS | sim | não | |
IP.FISCAL.LANCAMENTO.BEFORE_CREATE | FiscalLancamentoBeforeCreate | PE055LBC | sim | não | rascunho FAY002 |
IP.FISCAL.LANCAMENTO.AFTER_CREATE | FiscalLancamentoAfterCreate | PE055LAC | sim | não | não dispara no no-op de idempotência |
IP.FISCAL.LANCAMENTO.AFTER_STATUS | FiscalLancamentoAfterStatus | PE055LAS | sim | não | conferido/cancelado/estornado |
IP.FISCAL.NFE.BEFORE_SIGN | FiscalNfeBeforeSign | PE055XML | não | sim | fail-closed; sem hosting |
IP.FISCAL.NFE.AFTER_AUTHORIZE | FiscalNfeAfterAuthorize | PE055AUT | sim | não | lançamento → conferido |
IP.FISCAL.NFE.AFTER_REJECT | FiscalNfeAfterReject | PE055REJ | sim | não | lançamento → cancelado |
IP.FISCAL.NFE.AFTER_CANCEL | FiscalNfeAfterCancel | PE055CAN | sim | não | origem estornada |
IP.FISCAL.NFE.AFTER_INUTILIZE | FiscalNfeAfterInutilize | PE055INU | sim | não | |
IP.FISCAL.ENTRY.BEFORE_CLASSIFY | FiscalEntryBeforeClassify | PE055ECL | sim | não | item de entrada |
IP.FISCAL.APURACAO.BEFORE_CLOSE | FiscalApuracaoBeforeClose | PE055ABC | sim | não | FAY002 conferido → apurado |
IP.FISCAL.APURACAO.AFTER_CLOSE | FiscalApuracaoAfterClose | PE055AAC | sim | não | |
IP.FISCAL.NFSE.BEFORE_TRANSMIT | FiscalNfseBeforeTransmit | PE056XML | sim | não | não altera XML |
IP.FISCAL.NFSE.AFTER_AUTHORIZE | FiscalNfseAfterAuthorize | PE056AUT | sim | não | |
IP.FISCAL.NFSE.AFTER_REJECT | FiscalNfseAfterReject | PE056REJ | sim | não | |
IP.FISCAL.NFSE.AFTER_CANCEL | FiscalNfseAfterCancel | PE056CAN | sim | não |
Extensão (UI declarativa)
| Código | Const | Alias | screen | W | N |
|---|---|---|---|---|---|
IP.EXT.SCREEN.ON_LOAD | ExtScreenOnLoad | PEEXTPBO | extension | sim | não |
Payload: screen, table, values e document se a tela abriu a partir de um pedido. Permissão extension.storage.read. Host: /apps/extensions/[code].
Exemplo (save de pedido)
Typo no código → SdkValidationError. Inventar IP.SALES.ORDR… não compila.
Admin: GET /developer/entry-points/subscriptions e /invocations. Extensão desligada (FADEV13) some do menu e o host não invoca IP.
