# Fluxos: Modulo Finance - Conta Corrente

---

## 12.1 Visualizar Extrato Iugu

```
Usuario
  ↓
Finance → Conta Corrente → Iugu
  ↓
GET /finance/current_account/iugu/bank_statement
  ↓
CurrentAccountController@iuguExtractView
  ↓
View: pages/finance/current_account/iugu/bank_statement
  ↓
AJAX: POST .../list/ajax (com filtros de data e tipo)
  ↓
CurrentAccountController@iuguExtractAjax
  ↓
FinanceCAStatement (bank_account='iugu', com iuguStatement)
  ↓
JSON {data, summary (saldo inicial, creditos, tarifas, debitos, saldo final), chart_data}
```

**Resultado esperado:** Extrato com grafico de fluxo e resumo financeiro

---

## 12.2 Visualizar Extrato Asaas

```
GET /finance/current_account/asaas/bank_statement
  ↓
CurrentAccountController@asaasExtractView
  ↓
AJAX: POST .../list/ajax
  ↓
FinanceCAStatement (bank_account='asaas')
  ↓
JSON {data, summary, chart_data}
```

---

## 12.3 Visualizar Extrato Manual (BTG/Itau/C6)

```
GET /finance/current_account/{btg|itau|c6_bank}/bank_statement
  ↓
CurrentAccountController@manualExtractView
  ↓
AJAX: POST .../list/ajax
  ↓
FinanceCAStatement (bank_account=param) + FinanceBankBalance
  ↓
JSON {data, summary, chart_data}
```

---

## 12.4 Sincronizar Extrato Iugu (Manual)

```
Usuario
  ↓
Extrato Iugu → Botao "Sincronizar Hoje"
  ↓
POST /finance/current_account/iugu/bank_statement/sync/ajax
  ↓
CurrentAccountController@iuguSyncToday
  ↓
IuguStatementService::handle()
  → LogService
  → FinanceCAStatement (create/update)
  → FinanceIuguStatements (create/update)
  → FinanceCharge (reconciliacao)
  → FinanceTransaction (reconciliacao)
  ↓
JSON {result, pending_count}
```

**Tela inicial:** Extrato Iugu
**Acao do usuario:** Clica sincronizar
**Services:** IuguStatementService, LogService
**Tabelas alteradas:** `finance_ca_statement`, `finance_iugu_statements`
**APIs chamadas:** Iugu API (extrato)

---

## 12.5 Sincronizar Extrato Asaas (Manual)

```
POST /finance/current_account/asaas/bank_statement/sync/ajax
  ↓
CurrentAccountController@asaasSyncToday
  ↓
AsaasStatementService::handle()
  ↓
JSON {result, pending_count}
```

**Services:** AsaasStatementService
**Tabelas alteradas:** `finance_ca_statement`
**APIs chamadas:** Asaas API (extrato)

---

## 12.6 Lancamento Manual no Extrato

```
Usuario
  ↓
Conta Corrente → Lancamento Manual
  ↓
GET /finance/current_account/{bank}/statement_entry
  ↓
View: pages/finance/current_account/statement_entry
  ↓
Preenche entradas (tipo, descricao, categoria, beneficiario, valor, data)
  ↓
POST /finance/current_account/statement_entry/store
  ↓
CurrentAccountController@statementEntryStore
  ↓
Validacao: bank_account, entries[] (tipo, descricao, valor, data)
  ↓
Para CADA entrada:
  FinanceCAStatement::create ou update
  FinanceIuguStatements::update(is_reconciled) se vinculada
  ↓
JSON {success}
```

**Tela inicial:** Lancamento Manual
**Acao do usuario:** Adiciona entradas manuais ao extrato
**Requisicao:** `POST /finance/current_account/statement_entry/store`
**Tabelas alteradas:** `finance_ca_statement` (INSERT/UPDATE), `finance_iugu_statements` (is_reconciled)
**Nota:** Para Asaas/Iugu, apenas reconcilia entradas existentes (nao cria livres)

---

## 12.7 Gerenciar Saldo Bancario Inicial

```
POST /finance/current_account/bank_balance/store
  ↓
FinanceBankBalance::updateOrCreate(bank_account, initial_balance)
  ↓
JSON {success}

DELETE /finance/current_account/bank_balance/{id}
  ↓
FinanceBankBalance::delete
  ↓
JSON {success}
```

**Tabelas alteradas:** `finance_bank_balance` (INSERT/UPDATE/DELETE)
