# Fluxos: Modulo Finance - Configuracoes

---

## 16.1 Atualizar Data Certificado NF

```
POST /finance/settings/update-certificate-date
  → ConfigController@updateCertificateDate
  → FinanceConfig::update(certificate_date)
```
**Tabelas alteradas:** `finance_config`

---

## 16.2 Atualizar Percentual de Multa

```
POST /finance/settings/update-fine-percentage
  → ConfigController@updateFinePercentage
  → FinanceConfig::update(fine_percentage)
```
**Tabelas alteradas:** `finance_config`

---

## 16.3 Gerenciar Tipos de Cliente/Projeto

```
POST /finance/settings/update-client-types
POST /finance/settings/update-project-types
  → ConfigController@updateClientTypes / updateProjectTypes
  → FinanceConfig::update(client_type JSON / project_type JSON)
```
**Tabelas alteradas:** `finance_config`

---

## 16.4 Gerenciar Destinatarios de Email

```
POST /finance/settings/update-email-to
  → ConfigController@updateEmailTo
  → Validacao: notification_type, main_email, copies (array)
  → FinanceEmailTo::updateOrCreate
```
**Tabelas alteradas:** `finance_email_to`

---

## 16.5 Gerenciar Templates de Email

```
POST /finance/settings/update-email-template
  → ConfigController@updateEmailTemplate
  → Validacao: notification_type, template_subject, template_body
  → FinanceEmailTemplate::updateOrCreate
```
**Tabelas alteradas:** `finance_email_templates`

---

## 16.6 Enviar Email de Teste

```
POST /finance/settings/send-email-test
  → ConfigController@sendEmailTemplateTest
  → FinanceEmailTemplate::where(type)
  → SmtpCredentialService::getSignature
  → MailService::send()
```
**APIs chamadas:** SMTP

---

## 16.7 Gerenciar Contas Bancarias (Beneficiarios)

```
Usuario
  ↓
Finance → Config → Contas Bancarias → Novo
  ↓
POST /finance/settings/bank_account/store
  ↓
ConfigController@bankAccountStore
  ↓
Validacao condicional: register_type, payment_type, preference (ted|pix)
  Dados bancarios (TED) ou PIX key
  CPF/CNPJ (verifica duplicidade)
  ↓
DB::beginTransaction
FinanceTransferAccount::create
DB::commit
  ↓
JSON {success, redirect}
```
**Tabelas alteradas:** `finance_transfer_accounts` (INSERT)
**Possiveis erros:** CPF/CNPJ duplicado

---

## 16.8 Gerenciar Beneficiarios Recorrentes

```
POST /finance/settings/recurring-cost-expense/store
  → ConfigController@recurringCostExpenseStore
  → Validacao: type (Custo|Despesa), description, category, beneficiaries
  → FinanceConfigBeneficiary::create
```
**Tabelas alteradas:** `finance_config_beneficiaries` (INSERT)

---

## 16.9 Atualizar Limite MEI

```
POST /finance/settings/update-mei-limit
  → ConfigController@updateMeiLimit
  → FinanceMeiLimit::firstOrCreate → update(notification_percentage, limit_value)
```
**Tabelas alteradas:** `finance_mei_limit`

---

## 16.10 Teste de NFS-e

```
Usuario
  ↓
Finance → Config → NFS-e Teste → Preenche dados
  ↓
POST /finance/settings/invoice/test/store
  ↓
ConfigController@test_invoice_store
  ↓
FinanceInvoiceTest::create
AsaasApiController::asaasCreateInvoice
AsaasApiController::asaasApproveInvoice
FinanceInvoiceTest::update (id_nfs, nfs_url, status)
  ↓
JSON {success}
```
**Tabelas alteradas:** `finance_invoice_test` (INSERT + UPDATE)
**APIs chamadas:** Asaas (createInvoice, approveInvoice)

---

## 16.11 Cancelar NFS-e de Teste

```
POST /finance/settings/invoice/test/cancel
  → AsaasApiController::asaasCancelInvoice
  → FinanceInvoiceTest::update(status, log)
```
**Tabelas alteradas:** `finance_invoice_test`
**APIs chamadas:** Asaas (cancelInvoice)

---

## 16.12 Limites de Conta Corrente

```
POST /finance/settings/current-account-flow/limit/store
  → FinanceCAFlowLimit::firstOrCreate → update
```
**Tabelas alteradas:** `finance_ca_flow_limits`

---

## 16.13 Ordenar Contas Correntes

```
POST /finance/settings/current-account-order/update
  → FinanceConfig::update(current_account_order JSON)
```
**Tabelas alteradas:** `finance_config`
