# 1. T2TiERP-2-Delphi

- Model: llamacpp:qwen3.8-27b
- Persona: spec_writer
- Repos: T2TiERP-2-Delphi
- Created: 2026-10-21T18:56:06.561367+00:00

## User

Write a layered technical-to-business specification for `T2TiERP-2-Delphi` of repo `T2TiERP-2-Delphi`.

## Assistant

# 🏭 T2TiERP-2-Delphi — Réteges specifikáció (műszaki → üzleti)

> **Repo:** `T2TiERP-2-Delphi` · **Tartomány:** teljes repo · **Nyelvek:** Delphi, SQL
> **Állapot:** Tervezet

## Röviden (TL;DR)
A `T2TiERP-2-Delphi` egy Delphiban írt, ~989 000 sorkódos ERP- és pénztárrendszer: a `Retaguarda` a háttéri üzleti modulok (vétel, vásárlás, pénzügy, béres, könyvelés, adó) hordozója, a `Frente de Caixa` pedig négy párhuzamos pénztári variáns (PAF-ECF, PAF-ECF-SN, NFC-e, SAT) plusz PDV-integráció. Nincs indexelt HTTP interfész: az alkalmazások közös Delphi-egységeken és közös MySQL-adatbázison keresztül kommunikálnak. A fő kockázat a magas összekapcsoltság: egyetlen közönséges egység (pl. `Atributos`, 1071 használat) vagy a legösszetettebb `UCaixa.pas` módosítása nagy területet érint.

## A. Műszaki réteg

### A1. Stack és nyelvek

| Nyelv | Fájlok | Sor | Szerep a rendszerben |
|---|---|---|---|
| Delphi | 2458 | 989 023 | teljes alkalmazás: VCL UI (`Tela`), Controller, VO, Util, DataModule; 1895 indexelt unit |
| SQL | 2 | 15 698 | `DUMP_MySQL.sql` adatbázis-snapshotok (742 tábla/nézet/eljárás), kizárólag a `Frente de Caixa` mappában |

Java és Python nincs a repóban.

### A2. Architektúra és egységek

A repo két nagy Delphi "service"-ből és négy kis segédprojektből áll:

- **`Retaguarda`** (1354 fájl) — a háttéri ERP:
  - `Retaguarda/Comum`: közös doménrét — `VO` (424 fájl), `Controller` (295 fájl), `DTO` (7), `DataModule` (1).
  - `Retaguarda/Cliente`: 33 üzleti modulmappa — pl. `Cadastros`, `Financeiro`, `Contabilidade`, `Ponto`, `Folha`, `BalcaoPAF`, `NF-e`, `CT-e`, `NFS-e`, `Escrita Fiscal`, `Sped`, `eSocial`, `WMS`, `PCP`, `Vendas`, `Compras`, `Estoque`, `Contratos`, `Patrimonio`, `Loja Virtual`, `NFC-e Mobile`, `GED`, `Agenda`, `Comissoes`, `Inventario`.
  - `Retaguarda/Servidor`: a `T2Ti_ServidorAplicacao.dpr` alkalmazásszerver-projekt (6 delphi fájl).
- **`Frente de Caixa`** (529 fájl) — a pénztár, 4 párhuzamos, ugyanolyan felépítésű (VO / Controller / Tela / Util / DataModule) variáns: `PAF-ECF` (132), `PAF-ECF-SN` (130), `NFC-e` (117), `SAT` (117), plusz `IntegracaoPDV` (25) és `Configurador` (8).
- **Segédprojekt:** `T2Ti ERP - Data Pump` (4 fájl), `T2Ti ERP - Exportador` (4), `T2Ti ERP - Gerador` (3), `T2Ti ERP - Gerador - Copia` (3).

Rét-szerkezet (egymásra mutató irányok):

```
Tela (VCL form/keret, UI)
   │ használ
   ▼
Controller (TController leszármazott, ORM-hívások)
   │ használ
   ▼
T2TiORM + VO (view objectek)
   │ használ
   ▼
Util (Atributos, Constantes, Biblioteca, Tipos) → UDataModule (DBXMySql, DBClient/Provider)
```

Legfontosabb, leginkább függött egységek:

| Egység | Hely | Használó egységek |
|---|---|---|
| `Atributos` | [`Frente de Caixa/NFC-e/Util/Atributos.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/Util/Atributos.pas#L36) | 1071 |
| `VO` | [`Frente de Caixa/NFC-e/VO/VO.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/VO/VO.pas#L36) | 841 |
| `Constantes` | [`Frente de Caixa/NFC-e/Util/Constantes.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/Util/Constantes.pas#L36) | 746 |
| `Controller` | [`Frente de Caixa/NFC-e/Controller/Controller.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/Controller/Controller.pas#L36) | 622 |
| `UDataModule` | [`Frente de Caixa/Configurador/UDataModule.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/Configurador/UDataModule.pas#L36) | 461 |
| `T2TiORM` | [`Frente de Caixa/NFC-e/Util/T2TiORM.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/Util/T2TiORM.pas#L36) | 375 |
| `UTelaCadastro` | [`Retaguarda/Cliente/Comum/Tela/UTelaCadastro.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Cliente/Comum/Tela/UTelaCadastro.pas#L36) | 243 |
| `Biblioteca` | [`Frente de Caixa/NFC-e/Util/Biblioteca.pas:37`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/Util/Biblioteca.pas#L37) | 210 |
| `Tipos` | [`Frente de Caixa/NFC-e/Util/Tipos.pas:1`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/Util/Tipos.pas#L1) | 194 |
| `ULookup` | [`Retaguarda/Cliente/Comum/Tela/ULookup.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Cliente/Comum/Tela/ULookup.pas#L36) | 124 |

Közületi (szolgáltatásközi) függőségek (unit-használat élek száma): `Retaguarda` → `Frente de Caixa` (30 862), `Frente de Caixa` → `Retaguarda` (5221), mindkettő → `T2Ti ERP - Gerador` / `Gerador - Copia` (390–1213), `T2Ti ERP - Data Pump` ↔ `T2Ti ERP - Exportador` (6-6). Megfigyelés: a közös `Util`/`VO`/`Controller` egységek fizikailag a `Frente de Caixa/NFC-e` mappában élnek, ezért a Retaguarda referenciáit ez az oldal hordozza — a közös réteget gyakorlatilag a pénztári mappa "szolgálja".

### A3. Adatmodell

742 SQL objektum két fájlban: [`Frente de Caixa/NFC-e/DUMP_MySQL.sql`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/DUMP_MySQL.sql#L23) és `Frente de Caixa/SAT/DUMP_MySQL.sql` (azonos tartalom, más helyen). Kiemelt táblák (válogatás):

| Tábla | Oszlopok (kulcs: `ID int(10)`) | Referált táblák | Használó |
|---|---|---|---|
| `cliente` | `ID_PESSOA`, `LIMITE_CREDITO`, `GERA_FINANCEIRO`, `TIPO_FRETE`, `CLASSIFICACAO_CONTABIL_CONTA` | — (nem indexelt) | — |
| `colaborador` | `ID_CARGO`, `FGTS_OPTANTE`, `PIS_NUMERO`, `CTPS_NUMERO`, `CATEGORIA_SEFIP`, `DATA_DEMISSAO` | — (nem indexelt) | — |
| `compra_requisicao_detalhe` | `ID_COMPRA_REQUISICAO`, `ID_PRODUTO`, `QUANTIDADE_COTADA`, `ITEM_COTADO` | — (nem indexelt) | `CompraRequisicaoController` |
| `compra_cotacao` / `compra_pedido` | `DATA_COTACAO`, `SITUACAO` / `VALOR_TOTAL_PEDIDO`, `VALOR_ICMS`, `QUANTIDADE_PARCELAS` | — (nem indexelt) | — |
| `contabil_conta` | `ID_PLANO_CONTA`, `CLASSIFICACAO`, `NATUREZA`, `CODIGO_EFD` | — (nem indexelt) | — |
| `centro_resultado`, `conta_caixa`, `condicoes_pagamento` | `SOFRE_RATEIRO` / `LIMITE_CREDITO`, `TIPO` / `DIAS_TOLERANCIA`, `PRAZO_MEDIO` | — (nem indexelt) | — |
| `nfe_configuracao` | `EMAIL_SERVIDOR_SMTP` (4661. sor) | — (nem indexelt) | — |
| `ecf_configuracao` | `IP_SERVIDOR` (1563. sor) | — (nem indexelt) | — |
| `auditoria` | `ID_USUARIO`, `JANELA_CONTROLLER`, `ACAO`, `CONTEUDO` | — (nem indexelt) | — |
| `cfop`, `cnae`, `cbo`, `cep`, `banco`, `agencia_banco` | adóközi/nyilvántartási kódok, banki adatok | — (nem indexelt) | — |

A táblák közötti referencia-élek a dump-ban nagyrészt nem indexeltek (a látható objektumok `references` mezője üres), egyetlen `used_by` kapcsolat kaptam: `compra_requisicao_detalhe` → `CompraRequisicaoController`.

### A4. Integrációs pontok

| Irány | Metódus + útvonal / könyvtár | Társ | Hely |
|---|---|---|---|
| kimenő | FireDAC `DBXMySql` (MySQL) | közös ERP-adatbázis | [`Frente de Caixa/NFC-e/DataModule/UDataModuleConexao.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/NFC-e/DataModule/UDataModuleConexao.pas#L36) |
| kimenő | `ACBrECF`, `ACBrBase` | brazil fizetőszerkesztés (DAV/ECF/NFC-e) | `UDataModule` (minden pénztári változat), `UCaixa.pas` |
| kimenő | `ACBrSpedFiscal`, `ACBrSintegra`, `ACBrSpedContabil` | SPED-adatszolgáltatás, Sintegra | `UDataModule`, Sped modulok |
| kimenő | `Datasnap.DBClient` / `DBClient`+`Provider` | adatcsatlakozás | a DataModule-ek külső unit-jai |
| belső | `T2Ti ERP - Data Pump` ↔ `T2Ti ERP - Exportador` | adatpump/export segédalkalmazások | 6-6 használati él |
| belső | `IntegracaoPDV`: `ImportaController`, `LogImportacaoController` | külső PDV eladásainak importja (`EcfVendaCabecalhoVO`, `R02VO`, `Sintegra60MVO`) | [`Frente de Caixa/IntegracaoPDV/Controller/ImportaController.pas:36`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/IntegracaoPDV/Controller/ImportaController.pas#L36) |
| belső | `Retaguarda/Servidor/T2Ti_ServidorAplicacao.dpr:1` | alkalmazásszerver-projekt | `Retaguarda/Servidor` |
| — | indexelt HTTP route-ok / kliens metódusok | — | — |

Az indexben **nincs indexelt HTTP route és kliens metódus** (`routes: {}`, `clients: {}`): ez asztali (VCL) rendszer, a runtime-kommunikáció közös unitokon és a közös adatbázison keresztül történik (a DataSnap-referenciák alapján DataSnap-szolgáltatást feltételezhetni, de a route-ok nem indexeltek — lásd C4).

### A5. Komplexitás

> **Tartomány pontszám:** — · **Legkomplexebb:** [`Frente de Caixa/PAF-ECF-SN/Tela/UCaixa.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/PAF-ECF-SN/Tela/UCaixa.pas) (93) · **Legkevésbé komplex:** [`Retaguarda/Comum/Tipos.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Comum/Tipos.pas) (0)

| Szint | Elem | Pont | Sor | Használ (fan-out) | Használja (fan-in) | Miért |
|---|---|---|---|---|---|---|
| fájl | [`UCaixa.pas` (PAF-ECF-SN/Tela)](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/PAF-ECF-SN/Tela/UCaixa.pas) | 93 | 3013 | 41 | 42 | a legnagyobb fájlok egyike, 106 szimbólum, `ACBrECF` — a PAF-ECF-SN eladási főképernyő |
| fájl | [`PAFUtil.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/PAF-ECF-SN/Util/PAFUtil.pas) | 93 | 1459 | 24 | 16 | 1459 sor + 3 database-könyvtár (`DB`, `DBClient`, `SQLExpr`) |
| fájl | [`UEfetuaPagamento.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Frente de Caixa/PAF-ECF-SN/Tela/UEfetuaPagamento.pas) | 91 | 1124 | 14 | 8 | 1124 sor, a pénztári fizetés képernyője |
| fájl | [`UTelaCadastro.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Cliente/Comum/Tela/UTelaCadastro.pas#L36) | 91 | 906 | 10 | 342 | **342 használat**: szinte minden Retaguarda-cadastre-képernyő alap-osztálya |
| fájl | [`UNFe.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Cliente/BalcaoPAF/Tela/UNFe.pas) | 89 | 3020 | 48 | 6 | a repo legnagyobb fájlja (3020 sor), 48 használat — a háttéri NF-e képernyő |
| fájl | [`NfeCabecalhoController.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Comum/Controller/NfeCabecalhoController.pas#L36) | 91 | 1049 | 37 | 33 | NF-e fejléc-összeállító controller, 33 használó modul |
| fájl | [`Retaguarda/Comum/Tipos.pas`](https://github.com/alberteije/T2TiERP-2-Delphi/blob/277a36dea23ed2de1f651aa99cd7fb797743c576/Retaguarda/Comum/Tipos.pas) | 0 | 19 | 0 | 0 | tiszta típusdeklaráció, 19 sor, függőségmentes |

Hogyan kell olvasni: a pontszámok 0–100 közötti, **percentilis rangsor a repón belül** (0 = a repo egyszerűsége, 100 = itt a legkomplexebb), nem abszolút minősítés; a soraszámok az indexelt unit-ekból származnak. A súlyozás: sor (0,4) + fan-out (0,25) + fan-in (0,15) + szimbólumok (0,1) + könyvtárak (0,1). A magas pontszámú fájlok kettős kockázatot jelentenek: vagy óriásiak (`UCaixa.pas`, `UNFe.pas`), vagy kritikus csomópontok (`UTelaCadastro` 342 fan-in: a módosítása a Retaguarda szinte minden cadastro-képernyőjét érinti; `NfeCabecalhoController` a 27+ modult kapcsol az NF-e-hez). A karbantartás és a tesztelés szempontjából ezek a változási kockázat fókuszai: kezdeti egyszerűsítésnek a 3000 sor körüli `UCaixa.pas`/`UNFe.pas` felbontása és az `UTelaCadastro` körüli függőségek szűkítése adnak jó kiindulópontot. A legkisebb pontszámú egységek (pl. `Tipos`) alacsony kockázatúak.

## B. Funkcionális réteg

### B1. Funkciók / use case-ek

| Funkció | Trigger (route / oldal / egység) | Olvas | Ír |
|---|---|---|---|
| Pénztári eladás (4 fiscal-modus) | `UCaixa`, `UEfetuaPagamento` (PAF-ECF, PAF-ECF-SN, NFC-e, SAT) | `produto`, `cliente`, fiscal-konfiguráció | ecf/nfce mozgás, fizetés, DAV/NFC-e |
| Mozgáskezelés (nyitás/zárás, `sangria`, `suprimento`) | `UIniciaMovimento`, `UEncerraMovimento`, `EcfFechamentoController`, `NfceFechamentoController` | `EcfConfiguracao` | `Fechamento`, `Sangria`, `Suprimento` rekordok |
| NFC-e lista, DAV-kiadás | `UListaNFCe`, `UCarregaDAV` | nfc-e/DAV-adatok | DAV-nyomtatási nyilvántartás |
| NF-e kiállítás | `UNFe` → `NfeCabecalhoController` (`Retaguarda`) | `NfeEmitenteVO`, `NfeDetalheVO`, adó-VO-k, `nfe_fatura` | `nfe_*` táblák (pl. `nfe_configuracao` környéke), ACBr-XML |
| Beérkező számla bevitele | `UEntradaNF` | külső NF-adatok | számla/kereskedelmi adatok |
| CT-e, NFS-e kiállítás | `UCTe`, `UNFSe` | szállítás/szolgáltatás adatok | cte/nfse rekordok |
| Alapadatok (pessoa, produto, colaborador, banco) | `UTelaCadastro` leszármazottai: `UPessoa`, `UProduto`, `UColaborador`, `UBanco`, `UCargo`, `UAlmoxarifado` | cadastro-táblák | cadastro-táblák |
| Pénzügy (kifizetendő/bekövetkezendő, törlesztés, beszedés) | `UFinLancamentoPagar`, `UFinLancamentoReceber`, `UFinParcelaPagamento`, `UFinParcelaRecebimento`, `UFinCobranca` | `fin_lancamento`-adatok | törlesztési tételek, fizetések |
| Vásárlási folyamat | `UCompraRequisicao`, `UCompraPedido` | `produto`, `fornecedor` | `compra_requisicao*`, `compra_cotacao*`, `compra_pedido*` |
| Vezetési eladás | `UVenda`, `UOrcamentoPedidoVenda`, `UPreVenda` | `produto`, `cliente` | árckérés/pedigó/elő-eladás |
| Készlet (WMS, inventáris, `ControleEstoqueController`) | Estoque, WMS, Inventario modulok | készlet-táblák | készletszállítások |
| Bér és munkaidő | `UFolhaPpp`, `UPontoEspelho`, `UPontoTratamentoArquivoAFD` | `colaborador`, AFD-pontfájlok | bér- (`folha`) és SEFIP-adatok |
| Könyvelés és adócompliance (SPED, Escrita Fiscal, eSocial, Conciliação) | `SpedFiscalController`, `SpedContribuicoesController`, Contabilidade modulok | `contabil_*`, forgalmi adatok | SPED-fájlok (`ACBrSpedFiscal`), DRE-adatok |
| Adózási beállítások | `UTributacao`, `UTributIcmsCustomizado`, `UTributOperacaoFiscal` | adócsoportok | adózási szabályok |
| PDV-integráció | `Integracao.dpr` + `ImportaController`, `LogImportacaoController` | külső PDV forgalom (`EcfVendaCabecalhoVO`, `R02VO`, `Sintegra60MVO`) | ecf-táblák, import-log |
| PAF-ECF konfiguráció | `UConfiguracao`, `EcfConfiguracaoController` | `ecf_configuracao` | `ecf_configuracao` |
| Szolgáltatási szerződések, munkalapok, agenda, jutalék, PCP, vagyon, GED | `UContrato`, `UOSAbertura`, `UAgendaCompromisso` stb. (a `Retaguarda/Cliente` modulok) | modul-adatok | modul-adatok |

### B2. Folyamatok

**1. Pénztári eladás (`Frente de Caixa`):**
1. Az operátor elindítja a helyhez illő variánst (pl. `NFCe.dpr` vagy a PAF-ECF-SN program); a `UDataModule`/`UConfigConexao` összekapcsolja a MySQL-t.
2. `UIniciaMovimento` megnyitja a pénztári mozgást.
3. `UCaixa`: termékválasztás (vagy `UImportaProduto`), ügyfél azonosítása (`UIdentificaCliente`, `ClienteController`).
4. `UEfetuaPagamento`: fizetési mód (szükség szerint `UParcelamento`); ACBr (`ACBrECF` stb.) kiadja a DAV-t/NFC-e-t.
5. A Controller-ek (`EcfMovimentoController`/`NfceMovimentoController`, `VendaController`, `ControleEstoqueController`) írják a forgalmat, fizetéseket és készlethelyzetet.
6. `UEncerraMovimento` lezárja a mozgást, a `Fechamento` Controller-ek rögzítik az összesítettet.

**2. Háttéri NF-e (`Retaguarda`):**
1. Eladási dokumentum készül (`UVenda` / `UOrcamentoPedidoVenda` / `UPreVenda`).
2. `UNFe` képernyő → `NfeCabecalhoController` összegyűjti az `NfeEmitenteVO`, `NfeDetalheVO`, az adó-részleteket (`Icms/Ipi/Cofins/Pis/Issqn`) és a `nfe_fatura` adatokat.
3. A controller írja az `nfe_*` adatokat; az ACBr generálja az XML-t. Beérkező dokumentumokat az `UEntradaNF` vitel be.

**3. Vásárlás:** `UCompraRequisicao` (kérés, `compra_requisicao_detalhe`) → ajánlatkérés/cotação (`compra_cotacao*`) → `UCompraPedido` (`compra_pedido`), a kérés részlekeinél a `QUANTIDADE_COTADA`/`ITEM_COTADO` követi a státuszt.

## C. Üzleti réteg

### C1. Cél és szereplők

A T2Ti ERP brazil kkv-knak (vagy hasonló piaci környezetnek) szóló, az eladástól az adócompliance-ig terjedő üzletirányítási rendszer: egy adatbázison fut a pénztár (4 fiscal-modussal) és a teljes háttér (vétel, vásárlás, készlet, pénzügy, béres, könyvelés, adó). Szereplők: pénztáros/vendéglátó (`UCaixa`, `UEfetuaPagamento`), `gerente/supervisor` (külön bejelentkező képernyő: `ULoginGerenteSupervisor`), vevő, vásárló (`UCompraRequisicao`), pénzügyi (kifizetési/beszedési képernyők), HR (`UColaborador`, `UFolhaPpp`, Ponto), könyvelő/adószakértő (Contabilidade, Sped, Escrita Fiscal, eSocial), rendszeradminisztrátor (Configurador, alapkódok: `cfop`, `cnae`, `cbo`, `cep`).

### C2. Üzleti szabályok

1. **BR-1** — A pénztári forgalmat csak megnyitott mozgáson belül lehet lebonyolítani; a mozgás lezárása az összesítettet rögzíti (B2-1; `UIniciaMovimento`, `UEncerraMovimento`, `EcfFechamentoController`, `NfceFechamentoController`).
2. **BR-2** — A fizetőszerkesztés kiadása a telepített fiscal-modusnak megfelelő, önálló alkalmazási szaggal történik: PAF-ECF, PAF-ECF-SN, NFC-e, SAT (A2; mindegyik saját VO/Controller/Tela/Util réteggel).
3. **BR-3** — A beszerzés kérés → ajánlat → rendelés sorrendben halad; a kérés tételei követik a leadott mennyiséget (`compra_requisicao_detalhe.QUANTIDADE_COTADA`, `ITEM_COTADO`) (A3, B2-3).
4. **BR-4** — Az alkalmazotti (`colaborador`) nyilvántartásnak bér- és adóalapkészleteket tartalmaznia kell: `FGTS_OPTANTE`, `PIS_NUMERO`, `CTPS_NUMERO`, `CATEGORIA_SEFIP`, `DATA_DEMISSAO` (A3).
5. **BR-5** — A fiscal-környezet beállítása adatbázisban tárolt konfiguráció: pl. `ecf_configuracao.IP_SERVIDOR`, `nfe_configuracao.EMAIL_SERVIDOR_SMTP` (A3).
6. **BR-6** — A háttér adócompliance-tevékenységet biztosít könyvelési, SPED-, Escrita Fiscal- és eSocial-modulokkal (A2: `SpedFiscalController`, `SpedContribuicoesController`, az illető `Retaguarda/Cliente` mappák).

### C3. Elfogadási kritériumok

- [ ] **Adott** egy megnyitott pénztári mozgás, **amikor** a pénztáros a `UEfetuaPagamento`-val lezárt egy eladást, **akkor** a rendszer kiadja a DAV-t/NFC-e-t és frissíti a mozgás összesítettet; lezárás után a `Fechamento` rekord rögzíti az összegeket.
- [ ] **Adott** egy rögzített `compra_requisicao`, **amikor** az ajánlatból rendeléssé alakul (`UCompraPedido`), **akkor** a `compra_cotacao`/`compra_pedido` tételek létrejönnek, és a kérés részleinél a `QUANTIDADE_COTADA`/`ITEM_COTADO` mezők a leadott mennyiséget mutatják.
- [ ] **Adott** egy `UNFe`-en összeállított NF-e, **amikor** a kiadás mentésre kerül, **akkor** a `NfeCabecalhoController` a `nfe_*` adatokat (emitente, részletek, adók, `nfe_fatura`) írja, és az ACBr az XML-dokumentumot előállítja.

### C4. Nyitott kérdések és kockázatok

> ⚠️ A eszközök nem erősítették meg:
> - **Runtime-kommunikáció:** nincs indexelt HTTP route/kliens (`routes: {}`, `clients: {}`), tehát a `Retaguarda` és a `Frente de Caixa` pontos runtime-kapcsolata (közösségi adatbázis? DataSnap?) nem bizonyított — a `Datasnap.DBClient`- és `T2Ti_ServidorAplicacao`-referenciák alapján DataSnap-szolgáltatást feltételeztem, de nem erősítettem meg.
> - **`T2Ti ERP - Gerador` és `Gerador - Copia`:** két azonos nevű `Gerador.dpr` program (az egyik "Copia" mappában); céljuk (kódgenerálás?) a néven és a kölcsönös referenciákon kívül nem derül ki.
> - **`Data Pump` és `Exportador`:** a funkciójukat (adatmigráció/export) csak a név és a 6-6 reciprocos él jelenti.
> - **Fiscal-modus választás:** melyik telepítésen melyik variáns (PAF-ECF vs NFC-e vs SAT) a mérvadó, üzleti/szabályozási döntés; a választási logika a repóból nem látszik. A SAT variáns érvényessége különösen nyitott kérdés.
> - **`auditoria` tábla:** létezik (`ID_USUARIO`, `JANELA_CONTROLLER`, `ACAO`), de hogy az alkalmazás valóban ír rá, nem erősített meg.
> - **`ULoginGerenteSupervisor`:** a képernyő létezik, de mely műveletekhez kötelezi a `gerente/supervisor` bejelentkezést, nem derül ki.
> - **SQL-referenciák:** a 742 SQL objektum közt a referencia-élek nagyrészt nem indexeltek, az adatmodell kapcsolatait ezért csak részben lehet nyomon követni.
> - **Feltételezés:** a "Retaguarda = háttér, Frente de Caixa = pénztár" szerepeltetést a mappanevekből és a függőségi irányokból vontam le; a dokumentáció nem volt része ennek a specifikációnak.

---
[Megnyitás a Dashboardon](https://blueprint.graphtrek.co/code-vault/T2TiERP-2-Delphi)
