# Inventário do repositório NoLapis

**Propósito:** documento de referência para consulta rápida sobre o que **existe de fato** no código (stack, rotas, models, migrations, controllers, views, módulos, status, lacunas). Não substitui os `Doc_Modulo_*.md` específicos; complementa com visão transversal.

**Última atualização:** 2026-06-08  
**Escopo da última revisão:** login SSO (Google/Microsoft), cadastro com OAuth, upgrade de plano, assinatura/cartão, DFC/DRE com gate por plano, forgot password (Brevo).

**Como manter este documento:** ao alterar arquitetura relevante (nova stack, rotas admin críticas, novo módulo, mudança multi-tenant), atualize a seção correspondente e incremente **Última atualização**. Se algo não puder ser afirmado só pelo código, use explicitamente: *Não foi possível confirmar pelo código analisado*.

---

## 1. Stack e arquitetura geral

| Aspecto | Situação |
|----------|----------|
| **Laravel** | `^12.0` (`composer.json`) |
| **PHP** | Requisito `^8.0.2`; runtime local analisado: 8.2.x (produção pode diferir) |
| **UI** | Blade + Livewire 3 (`livewire/livewire`) |
| **Auth** | `laravel/ui`, sessão; **SSO** Google/Microsoft (`laravel/socialite`, `SocialAuthController`); Spatie Permission; Sanctum; Passport no Composer — uso em `app/` parcial |
| **Pagamentos** | Pagar.me (`WebhookController`, `PagarMeService`, cadastro); `laravel/cashier` no Composer — uso em models de negócio não evidenciado na busca |
| **NFS-e** | Importação XML em venda (`NfseXmlImportService`); consulta ADN na Caixa de Entrada Fiscal |
| **Estrutura** | Monólito: `routes` → `Http/Controllers` → `Models` + `Services`; sem camada Repository |
| **Multi-tenant** | `idtenant` em `User`; `TenantScope` global em vários models; middleware `admin.tenant` |
| **Autorização** | Middleware `role` / Spatie; `AuthServiceProvider` policies vazio |
| **Form Requests** | Quase ausente: `app/Http/Requests/Admin/VeiculoRequest.php` |
| **Jobs / fila** | `ProcessarPontuacaoCampanhaJob`; `.env.example` → `QUEUE_CONNECTION=sync` |
| **Events** | Apenas `Registered` padrão em `EventServiceProvider` |
| **API REST** | Mínima em `routes/api.php` |
| **Testes** | Só exemplos em `tests/` |
| **Logs / auditoria** | `Log::` pontual; auditoria de conciliação; `EventoKanbanActivityLogger` / `evento_atividade` |

---

## 2. Rotas (referência)

**Arquivo principal:** `routes/web.php` (admin sob prefixo `admin`, `as` `admin.`, middleware `auth` + `single.session`).

**Resumo por grupo:**

- **Web pública / cadastro:** `/`, `cadastro/*`, webhook Pagar.me.
- **Auth / perfil:** `sign-in`, `sign-up`, `sign-out`, `password/*`, `profile`, `user-profile`, `alterar-senha/*`.
- **Dashboards:** `/dashboard`, `/dashboard/financeiro` (legado), `/dashboard/dfc`, `/dashboard/dre`, movimentação/extrato, rotas POST/GET **conciliação agência**, produto, evento, tags, veículo, veículocusto, ranking campanha; alias `dashboardfinanceiro`.
- **Admin (financeiro):** `admin/transferencias/*`, `admin/cartao-credito/*` (CRUD, dashboard, pagar fatura).
- **Agenda pública:** `GET /agendas/{pessoa}`, `POST /agenda/{agenda}/agendar`.
- **PDV:** `GET /PDV` (view); `POST /PDV/store` — **stub** (`dd`) no código analisado.
- **Admin:** dezenas de `resource` + `procurar` / `fetch` + rotas específicas (Kanban evento, NFS-e em venda, import NF-e, fluxo, lotes, etc.).

**API:** `routes/api.php` — `GET /api/getHorariosOcupados` (Agenda); `GET /api/user` (Sanctum).

**Detalhamento linha a linha:** ver `routes/web.php` e `routes/api.php` no repositório (lista extensa).

---

## 3. Models e tabelas (principais)

Models em `app/Models/` com `$table` explícito (referência rápida):

| Model | Tabela |
|-------|--------|
| `Tenant` | `tenant` |
| `Pessoa` | `pessoa` |
| `Empresa` | `empresa` |
| `Nf` | `nf` |
| `NfItem` | `nfitem` |
| `NfParcela` | `nfparcela` |
| `Nfe` | `nfes` |
| `NfeItem` | `nfeitems` |
| `Nfse` | `nfses` |
| `Contrato` | `contrato` |
| `ContratoItem` | `contratoitem` |
| `ProdutoServico` / `Produto` | `prodserv` |
| `TipoProdutoServico` | `prodservtipo` |
| `Evento` | `evento` |
| `EventoTipo` | `eventotipo` |
| `Agenda` | `agendas` |
| `Veiculo` | `veiculo` |
| `Agencia` | `agencia` |
| `FormaPagamento` | `formapagamento` |
| `CartaoCredito` / `CartaoFatura` | `cartao_credito`, `cartao_fatura` |
| `LinhaDre` | `linhadre` |
| `ClassificacaoContabilPadrao` | `classificacao_contabil_padrao` |
| `ConciliacaoAgenciaHistorico` | `conciliacao_agencia_historico` (nome conforme migration) |
| `Caixa` / `CaixaMovimento` | `caixas`, `caixa_movimentos` |
| `Venda` / `VendaItem` / `VendaPagamento` | `vendas`, `venda_items`, `venda_pagamentos` |
| `Fluxo`, `FluxoStatus`, `StatusFluxo` | `fluxo`, `fluxostatus`, `status` |
| `Lote` / `LoteTrans` | `lote`, `lotetrans` |
| `Plano`, `Funcionalidade`, `PlanoFuncionalidade` | `planos`, `funcionalidades`, `plano_funcionalidade` |
| `Obra` | `obra` |
| `UserHist` | `usershist` |

`User` usa tabela padrão `users`. Relacionamentos detalhados: ver cada model.

---

## 4. Semântica central da NF (`nf`)

Documento unificado de compra / pedido / venda (scopes em `App\Models\Nf`):

| Uso | Condição típica |
|-----|-----------------|
| **Compra** | `tipo` = `D` |
| **Pedido** | `tipo` = `C` e `saida` = `P` |
| **Venda** | `tipo` = `C` e `saida` = `V` |

Subdivisão venda mercadoria vs serviço: `tipo_documento_fiscal` (`NFE` / vazio vs `NFSE`).

---

## 5. Services (`app/Services/`)

Presentes (lista para grep): `BrasilApiService`, `CartaoFaturaService`, `ClassificacaoContabilService`, `ConciliacaoAgenciaService`, `ContratoService`, `DateRangeService`, `DfcHierarquiaService`, `DreHierarquiaService`, `DreNaturezaService`, `EstoqueService`, `ExtratoMovimentacaoService`, `FluxoService`, `LoteEstoqueService`, `NaturezaOperacaoNfService`, `NfeExtractorService`, `NfParcelaService`, `NfService`, `NfseXmlImportService`, `PagarMeService`, `PedidoService`, `PdvNfService`, `PessoaPadraoService`, `PessoaService`, `ProcessaPontuacaoCampanha` (classe de processamento), `TagRetiraService`, `TagService`, `EventoKanbanActivityLogger`, etc.

---

## 6. Controllers admin (raiz `app/Http/Controllers/Admin/`)

Inclui entre outros: `VendaController`, `NfController`, `PedidoController`, `ContratoController`, `EventoController`, `EventoKanbanCollaborationController`, `NfParcelaCreditoController`, `NfParcelaDebitoController`, `NfParcelaController`, `CartaoCreditoController`, `TransferenciaController`, `CampanhaController`, `ClienteController`, `FornecedorController`, `PessoaController`, `ProdutoServicoController`, `AgendaController`, `FluxoController`, `LoteController`, `NfeImportadorController`, `NfseIntegracaoController`, `ConciliacaoAgenciaController`, `TenantController`, `PlanoController`, `PlanoUpgradeController`, `UserController`, `PagamentoController`, `DashboardController`, `DashboardFinanceiroController`, `DashboardDfcController`, `DashboardDreController`, `DashboardMovimentacaoController`, outros `Dashboard*Controller`, `ObraController`, …

**Fora de `Admin/` (auth e onboarding):** `CadastroController`, `SocialAuthController`, `SessionsController`, `ForgotPasswordController` — ver **`Doc_Modulo_Planos_Assinatura_Pagamento.md`**, **`Doc_Modulo_Pessoa_Usuario.md`** § 6.5–6.6, **`Doc_Modulo_Tenant.md`** § 11.

**Lacuna conhecida:** `ObraController` existe com views `admin.obras.*`, mas **rotas para obras não constam** em `routes/web.php` na revisão que originou este inventário — ver também `Doc_INDICE.md` (lacunas).

---

## 7. Views e Livewire

- **Dashboards:** `resources/views/dashboard/*.blade.php`
- **Admin:** `resources/views/admin/<modulo>/*` (muitos `index`, `create`, `edit`, `_form`)
- **Menu:** `resources/views/components/navbars/sidebar.blade.php` (grupos Painéis, Comercial, Suprimentos, Faturamento, Financeiro, Cadastros, Fiscal/Contábil, Configurações)
- **Livewire:** `app/Livewire/*` + `resources/views/livewire/*` (PDV, gráficos, parcelas, import XML, etc.)

---

## 8. Agendamentos (scheduler)

`app/Console/Kernel.php`:

- `assinatura:gerar-cobrancas` — a cada minuto
- `app:encerrar-campanhas-expiradas` — diário 02:00
- `cartao:faturas-gerar --meses=2 --historico=2` — diário 03:00
- `dfe:sincronizar` — diário (horário em `config/dfe.php`)

Comando manual: `contabilidade:sincronizar-classificacao`. Detalhes: **`Doc_Jobs_e_Agendamento.md`**.

---

## 9. Status (consistência — alto nível)

| Área | Campo | Valores / notas |
|------|--------|-----------------|
| **Venda (`nf.status`)** | string | Pipeline: `PENDENTE`, `APROVADO`, `FATURADO`, `EM_SEPARACAO`, `EM_ENVIO`, `ENTREGUE`, `CONCLUIDO` / `CONCLUÍDO` (legado), `CANCELADO`, `INATIVO` em listagens — ver `Nf::opcoesStatusVendaSelect` |
| **Parcela (`nfparcela.status`)** | string | Migração normaliza para `PENDENTE`, `PROGRAMADO`, `QUITADO`, `CANCELADO` (legado `CONCLUÍDO`/`INATIVO` tratado em migration) |
| **Contrato** | `contrato.status` | `PENDENTE`, `ATIVO`, `INATIVO` no controller; possível menção a `CONCLUÍDO` em views — conferir consistência |
| **Pessoa / User** | `status` | `ATIVO` (scopes) |
| **NFS-e** | `nfses.status` | Existe no fillable — valores por integração: confirmar em `NfseIntegracaoController` / serviço |

---

## 10. Módulos funcionais (lista consolidada)

1. Multi-tenant / SaaS (tenant, planos, funcionalidades, cadastro, webhook)  
2. Cadastros (pessoa, empresa, usuários, clientes, fornecedores, funcionários, representantes)  
3. Compras / pedidos / vendas (NF unificada)  
4. Financeiro (parcelas, agências, transferências, cartão, conciliação)  
5. Contratos e recorrência (`ContratoService`, comando assinatura)  
6. Estoque / lotes  
7. Fiscal (CFOP, finalidade fiscal, natureza operação, CTN, NF-e importada, NFS-e import XML / Caixa de Entrada)  
8. Agenda (pública + API horários)  
9. Eventos / Kanban / time tracking / atividades  
10. Campanhas / pontuação  
11. Tags / retiradas  
12. Veículos / custos  
13. Fluxo configurável (status, transições, paleta)  
14. PDV (tela + Livewire; rota store stub)  
15. Dashboards e relatórios visuais (Livewire)  
16. Permissões (Spatie + CRUD permissions)  
17. Obras (código presente; rota ausente na revisão)

Documentação por módulo (quando existir): ver **`Doc_INDICE.md`**.

---

## 11. Checklist ERP (existência no código)

| Tema | Situação |
|------|----------|
| Clientes, fornecedores, produtos/serviços | Sim |
| Compras, vendas, pedidos, parcelas | Sim (vendas também em tabela `vendas` para PDV — segundo eixo) |
| Contas a pagar/receber | Sim (via parcelas D/C) |
| Fluxo de caixa / DFC gerencial | Sim (`/dashboard/dfc`, FCO/FCI/FCF; exclusões P/T/`transferkey`; não SPED) |
| DRE gerencial com drill-down | Sim (`/dashboard/dre`, `linhadre`; mesmas exclusões via `paraDemonstrativoGerencial`) |
| Estoque | Sim (lotes + serviços) |
| NF-e importada | Sim |
| NFS-e | Sim (import XML + Caixa de Entrada ADN) |
| NFC-e | Não confirmado |
| Agenda, eventos, recorrência contrato | Sim / parcial SaaS |
| Usuários, permissões, dashboards | Sim |
| Multi-tenant, planos, integrações | Sim |
| Importação XML | Sim (NF-e; import NFS-e em rota de venda) |
| Passports/Cashier “em uso” | Não confirmado além da dependência |

---

## 12. Riscos e lacunas técnicas (factual)

- Controllers grandes (`VendaController`, `NfController`, `ContratoController`, `Evento*`).  
- Dois conceitos de “venda”: `nf` (principal) vs `vendas` (PDV).  
- Legado de acentuação em status (`CONCLUIDO` / `CONCLUÍDO`).  
- Fila `sync` no exemplo de env.  
- PDV: POST `/PDV/store` não implementado para persistência.  
- Obras sem rota registrada na revisão.  
- Dependências opcionais (Passport, Cashier, Telescope) sem evidência clara de uso em `app/`.

---

## 13. Próximas verificações sugeridas

- [ ] Revalidar rotas após qualquer refactor de `web.php`.  
- [ ] Confirmar emissão NF-e vs só importação.  
- [ ] Confirmar rota ou remoção intencional de **Obras**.  
- [ ] Confirmar fluxo real de gravação do **PDV** (Livewire vs API).  
- [ ] Atualizar seção Passport/Cashier se passarem a ser usados.  
- [ ] Sincronizar com novos `Doc_Modulo_*.md` ao criá-los.

---

## 14. Inventário executivo (1 página)

| # | Item |
|---|------|
| 1 | **Arquitetura:** Laravel 12, PHP 8+, Blade/Livewire, multi-tenant por scope, services sem repository. |
| 2 | **Módulos:** lista na seção 10. |
| 3 | **Tabelas principais:** seção 3 + migrations. |
| 4 | **Controllers:** Admin volumoso; lista na seção 6. |
| 5 | **Views:** `resources/views/dashboard`, `admin`, `livewire`, sidebar. |
| 6 | **Rotas:** `web.php` (massa), `api.php` (mínima). |
| 7 | **Confirmado:** CRUD admin, NF unificada, parcelas+fluxo, import NF-e, NFS-e import XML, contrato+scheduler, campanhas+job, agenda API, Kanban, conciliação, Pagar.me cadastro. |
| 8 | **Parcial:** PDV persistência, emissão SEFAZ completa, limitação por plano na UI, Passport/Cashier, relatórios exportáveis. |
| 9 | **Não confirmado:** NFC-e, testes de domínio, activity log global. |
| 10 | **Riscos:** seção 12. |
| 11 | **Próxima etapa:** seção 13. |
| 12 | **Perguntas de negócio:** definição de “assinatura” (SaaS vs contrato cliente); fila em produção; roadmap Obras/PDV. |

---

*Documento gerado para consulta contínua. Atualizar cabeçalho **Última atualização** a cada revisão significativa.*
