Atualização READ>ME
This commit is contained in:
80
README.md
80
README.md
@@ -511,3 +511,83 @@ docker-compose logs -f app # deve mostrar "Listening on http://0.0.0.0:3000"
|
|||||||
- **NUNCA** versione `.env`, `config/master.key` ou qualquer arquivo com senha
|
- **NUNCA** versione `.env`, `config/master.key` ou qualquer arquivo com senha
|
||||||
- Repositório **PRIVADO** em git.xenserver.com.br
|
- Repositório **PRIVADO** em git.xenserver.com.br
|
||||||
- Use sempre `ENV['VARIAVEL']` no código Ruby
|
- Use sempre `ENV['VARIAVEL']` no código Ruby
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆕 Atualização 17/06/2026 — Pagamentos, Operações, Dashboard financeiro e UI
|
||||||
|
|
||||||
|
Conjunto de melhorias para deixar o sistema pronto para entrega final.
|
||||||
|
|
||||||
|
### 💳 Status de pagamento (Pago / Parcial / Pendente)
|
||||||
|
- Migration `add_pagamento_to_consolidacao_motoristas`: colunas **`pago_em`**, **`pago_por`**,
|
||||||
|
**`forma_pagamento`** em `consolidacao_motoristas` (pagamento é **por motorista**).
|
||||||
|
- `ConsolidacaoMotorista`: `pago?`, `marcar_pago!(user, forma:)`, `cancelar_pagamento!`,
|
||||||
|
scopes `pagos`/`pendentes`, `belongs_to :pagador`.
|
||||||
|
- `Consolidacao#status_pagamento` (`:pendente`/`:parcial`/`:pago`), `valor_pago`, `valor_pendente`,
|
||||||
|
scopes `pagamento_pago`/`pagamento_pendente`/`pagamento_parcial` (filtro da lista).
|
||||||
|
- Tela **show**: marcar motorista individual **ou a operação inteira** (com `<select>` de forma);
|
||||||
|
estorno. Ações `registrar_pagamento`/`cancelar_pagamento` (admin/gerente).
|
||||||
|
- Helper `badge_pagamento`; filtro pago/pendente na **index**; selo no **holerite**.
|
||||||
|
- **Notificação de pagamento**: `NotificacaoService.notificar_pagamento` (WhatsApp + e-mail
|
||||||
|
`ConsolidacaoMailer#pagamento_efetuado`) — falhas só logam.
|
||||||
|
- **Aviso in-app no painel do motorista**: faixa "Pagamento confirmado" (últimos 7 dias) + selo
|
||||||
|
PAGO por consolidação.
|
||||||
|
|
||||||
|
### 🗂️ Consolidações por OPERAÇÃO (tabelas externas `gade_entregas_*`)
|
||||||
|
- PORO **`app/models/operacao.rb`**: descobre as tabelas via `information_schema`, com
|
||||||
|
**whitelist anti-injection** (`Operacao.sanitizar` + `quote_table_name`) — nunca interpolar
|
||||||
|
nome de tabela cru. `Operacao.todas`, `dados(tabelas)`, `agrupadas_por_mes`.
|
||||||
|
- `Entrega.da_operacoes(tabelas)`: junta por NF (`reference_id::text = nota_fiscal`).
|
||||||
|
- Coluna **`operacoes` (jsonb)** em `consolidacoes`; `Consolidacao.com_operacoes(ops)`.
|
||||||
|
- **Nova consolidação**: multi-seleção de operação **pré-preenche** motoristas/veículos/período
|
||||||
|
e **filtra** as entregas por NF; liberdade de marcar **um ou todos** os motoristas da operação.
|
||||||
|
- ENV opcional `OPERACOES_TABLE_PREFIX` (default `gade_entregas_`).
|
||||||
|
|
||||||
|
### 📊 Dashboard financeiro
|
||||||
|
- **Filtro de operação** no topo (multi-seleção, agrupada por mês, com "Limpar") aplicado a tudo.
|
||||||
|
- KPIs: **Custo total**, **Ticket médio/entrega**, **Pago**, **A pagar**.
|
||||||
|
- Gráficos (Chart.js): **custo por operação**, **composição por tipo**, **custo por motorista**,
|
||||||
|
**rosca pago × a pagar** + tabelas (pagos por data de pagamento, pendentes).
|
||||||
|
|
||||||
|
### 📅 Correção de data — usar `checkout` (data real), não `planned_date`
|
||||||
|
- `Entrega.no_periodo_checkout(inicio, fim)`: filtro pela **data real da conclusão**, com
|
||||||
|
**comparação naïve** (intervalo meio-aberto `>= início` e `< fim+1`), **sem conversão de fuso**
|
||||||
|
— igual à análise feita direto no banco.
|
||||||
|
- Aplicado em `contar_pagas`, elegibilidade do wizard, gráfico principal (`DATE(checkout)`) e na
|
||||||
|
exibição da data das entregas.
|
||||||
|
|
||||||
|
### 🧾 PDFs (Relatório e Holerite)
|
||||||
|
- **Relatório**: endereço completo com quebra de linha, larguras de coluna fixas, quebra de
|
||||||
|
página antes do RESUMO. **Rodapé via `canvas`** (na margem inferior — não sobrepõe mais o
|
||||||
|
conteúdo); margem inferior 72.
|
||||||
|
- **Holerite**: coluna **Unit.**, os 4 pilares sempre exibidos, **total de entregas + veículos**,
|
||||||
|
**selo de pagamento** (PAGO/PENDENTE) e **garantia de espaço para o QR Code**
|
||||||
|
(`start_new_page` se faltar espaço — o Prawn não pagina imagem sozinho).
|
||||||
|
|
||||||
|
### 🎨 UI / Identidade visual
|
||||||
|
- **Fonte base maior** para leitura: `html { font-size: 17px }` (desktop) e `18px` (mobile).
|
||||||
|
- **Contraste** elevado no dashboard (`text-gray-500/600` → `text-gray-400`).
|
||||||
|
- **Painel do motorista** redesenhado mobile-first (fontes maiores, botões full-width, alvos ≥48px).
|
||||||
|
- **Favicon** (van laranja): `public/favicon.png`.
|
||||||
|
- **Logo da Reem** na barra (sidebar + topo mobile): `public/logo-reem.png`.
|
||||||
|
- **Animação de abertura (splash) após login**: vídeo `public/login-animacao.{webm,mp4}` (WebM +
|
||||||
|
MP4 fallback), exibido **uma vez** via flag de sessão (`session[:mostrar_splash]`), com
|
||||||
|
`mix-blend-mode: screen` para "derrubar" o fundo preto do vídeo.
|
||||||
|
- `rack-mini-profiler` desativado em `config/initializers/rack_mini_profiler.rb`.
|
||||||
|
|
||||||
|
### 📌 Padrões a seguir (novos)
|
||||||
|
- **Tabelas externas / read-only**: acesso só por SELECT; nome de tabela em SQL **sempre** via
|
||||||
|
whitelist + `quote_table_name` (ver `Operacao`).
|
||||||
|
- **Datas financeiras**: usar **`checkout`** (`no_periodo_checkout`), comparação naïve sem fuso.
|
||||||
|
- **Gráficos**: Chart.js via CDN, padrão **IIFE** + `Chart.getChart(ctx)?.destroy()` (evita
|
||||||
|
"Canvas already in use" com Turbo).
|
||||||
|
- **Badges**: `badge_status` (consolidação) e `badge_pagamento` (pagamento).
|
||||||
|
- **Assets estáticos** (favicon, logo, vídeos) ficam em `public/` e são referenciados por caminho
|
||||||
|
absoluto (`/arquivo.ext`).
|
||||||
|
|
||||||
|
### Migrations adicionadas hoje
|
||||||
|
```
|
||||||
|
20260617000001_add_pagamento_to_consolidacao_motoristas.rb
|
||||||
|
20260617000002_add_operacoes_to_consolidacoes.rb
|
||||||
|
```
|
||||||
|
Aplicar com: `docker-compose exec app bundle exec rails db:migrate`
|
||||||
|
|||||||
Reference in New Issue
Block a user