diff --git a/Erros/Action Controller_ Exception caught_quando aperta as configuraçoes .html b/Erros/Action Controller_ Exception caught_quando aperta as configuraçoes .html new file mode 100644 index 0000000..d75a32d --- /dev/null +++ b/Erros/Action Controller_ Exception caught_quando aperta as configuraçoes .html @@ -0,0 +1,4026 @@ + + + + + + + Action Controller: Exception caught + + + + + + +
+

+ NoMethodError + in Admin::ConfiguracoesController#index +

+
+ +
+
+
undefined method `admin_ou_gerente?' for #<ConfiguracaoPolicy:0x00007efdbb16abb0 @user=#<User id: 1, email: "admin@gade.com", nome: "Administrador Gade", telefone: nil, pin_code: nil, role: "admin", ativo: true, tema_preferido: "dark", created_at: "2026-06-11 23:00:11.605256000 -0300", updated_at: "2026-06-11 23:00:11.605256000 -0300", login_token: nil>, @record=Configuracao(id: integer, chave: string, valor: string, descricao: string, updated_by: integer, created_at: datetime, updated_at: datetime)>
+
+ + + + + +
+
+ Extracted source (around line #4): +
+
+ + + + + +
+
+2
+3
+4
+5
+6
+7
+              
+
+
+
class ConfiguracaoPolicy < ApplicationPolicy +
def index? +
admin_ou_gerente? +
end +
+
def edit? +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Rails.root: /app

+ +
+ Application Trace | + Framework Trace | + Full Trace + + + + + + +
+ + + + +

Request

+

Parameters:

None
+ +
+ + +
+ +
+ + +
+ +

Response

+

Headers:

None
+ +
+ + + + diff --git a/Erros/Action Controller_ Exception caught_quando aperta nos usuarios .html b/Erros/Action Controller_ Exception caught_quando aperta nos usuarios .html new file mode 100644 index 0000000..3f57202 --- /dev/null +++ b/Erros/Action Controller_ Exception caught_quando aperta nos usuarios .html @@ -0,0 +1,5440 @@ + + + + + + + Action Controller: Exception caught + + + + + + +
+

+ NoMethodError in + Admin::Usuarios#index +

+
+ +
+

+ Showing /app/app/views/admin/usuarios/index.html.erb where line #57 raised: +

+
undefined method `badge_role' for #<ActionView::Base:0x0000000000fc80>
+ + +
+
+ Extracted source (around line #58): +
+
+ + + + + +
+
+56
+57
+58
+59
+60
+61
+              
+
+
+
@output_buffer.safe_append=' </td> +
<td class="px-6 py-4"> +
'.freeze; @output_buffer.append=( badge_role(usuario.role) ); @output_buffer.safe_append=' +
</td> +
<td class="px-6 py-4"> +
'.freeze; @output_buffer.append=( badge_status_usuario(usuario.ativo?) ); @output_buffer.safe_append=' +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + +

Rails.root: /app

+ +
+ Application Trace | + Framework Trace | + Full Trace + + + + + + +
+ +

Request

+

Parameters:

None
+ +
+ + +
+ +
+ + +
+ +

Response

+

Headers:

None
+ +
+ + + + diff --git a/Imagens para correção /Imagem colada (4).png b/Imagens para correção /Imagem colada (4).png new file mode 100644 index 0000000..12ccf6b Binary files /dev/null and b/Imagens para correção /Imagem colada (4).png differ diff --git a/Imagens para implantação /Imagem colada (2).png b/Imagens para implantação /Imagem colada (2).png new file mode 100644 index 0000000..1608c25 Binary files /dev/null and b/Imagens para implantação /Imagem colada (2).png differ diff --git a/README.md b/README.md index 65d5e77..7cf7a33 100644 --- a/README.md +++ b/README.md @@ -217,7 +217,7 @@ config/routes.rb # ATUALIZADO — rotas do wi 🟧 Laranja = Entrega Normal · 🟫 Laranja escuro = Retirada · ⬜ Branco = Bônus · ⬛ Preto = Desconto **Regras implementadas:** -- Entregas elegíveis: `status='completed'` AND `checkin IS NOT NULL` (somente leitura da tabela existente) +- Entregas elegíveis: `status='completed'` AND `checkout IS NOT NULL` (somente leitura da tabela existente) - Não permite finalizar consolidação com entregas não classificadas (botão desabilitado + validação server-side) - Consolidação finalizada não pode ser editada por operadores (Pundit) - Todas ações críticas registradas em `auditoria_logs` @@ -357,6 +357,31 @@ docker-compose exec app bundle exec rspec --- +## 🔧 Correções + funcionalidades (16/06/2026) + +### 🔴 Erros de runtime corrigidos (reportados em prints) +- **Logout** dava `No route matches [GET] /auth/logout` — o link usava `method: :delete` (rails-ujs), ignorado pelo Turbo. Agora usa `data-turbo-method`. +- **/admin/usuarios** e **/admin/configuracoes** estouravam `NoMethodError: admin_ou_gerente?` — helpers de papel (`admin?`, `admin_ou_gerente?`) movidos para a `ApplicationPolicy`. +- **Listagem de usuários** chamava o helper inexistente `badge_role` — criado em `ApplicationHelper`. +- **Nova consolidação** estourava `NoMethodError: new?` — `ApplicationPolicy` agora define `new? = create?` e `edit? = update?`. +- **Login do motorista (PIN)** derrubava `/motorista` com `PG::UndefinedTable: relation "consolidacao_motorista" does not exist` — o inflector pt-BR resolvia o composto no singular. `self.table_name` fixado explicitamente em `Consolidacao`, `ConsolidacaoMotorista`, `ConsolidacaoEntrega` e `Configuracao`. + +### 🆕 Funcionalidades +- **Dashboard com filtro de faixa de datas** (Flatpickr, modo range) no lugar da navegação por mês; o controller passou a consultar por período e a respeitar `.da_conta_gade`. +- **Regra de pagamento por checkout:** `Entrega.pagas` agora é `status='completed' AND checkout IS NOT NULL` (antes era `checkin`). Vale para dashboard, painel do motorista, job de 1h e elegibilidade das consolidações. +- **Consolidação por veículo:** o filtro/identificação passou de rota (`route_id`, UUID) para **veículo** (`vehicle`). Migration troca `consolidacoes.route_ids` por `vehicle_ids`. + +### ⚙️ Automação / diagnóstico +- `docker-compose.yml`: o boot roda `rails db:prepare` antes do servidor — **não precisa mais rodar `db:migrate` na mão** após o `up`. +- `rake reem:diagnostico`: checa a tabela externa por conta/período/status/checkout e o intervalo de datas disponível (útil para depurar dashboard vazio). + +```bash +docker-compose exec app bundle exec rake reem:diagnostico +docker-compose exec app bundle exec rake reem:diagnostico INICIO=2026-02-01 FIM=2026-06-30 +``` + +--- + ## 🗄️ Banco existente — referência rápida | Campo | Uso | @@ -365,12 +390,13 @@ docker-compose exec app bundle exec rspec | `reference_id` | Número da NF | | `planned_date` | Data da entrega (filtro principal) | | `driver` | Nome do motorista | -| `status` | `'completed'` = entrega paga | -| `checkin` | NULL = motorista não registrou chegada | -| `route_id` | UUID da operação (UBS SUL, EMAD, etc.) | +| `status` | `'completed'` = entrega concluída | +| `checkout` | NULL = motorista não finalizou (define elegibilidade de pagamento) | +| `vehicle` | Veículo da entrega (usado no filtro de consolidação) | +| `route_id` | UUID da operação (não usado no app — substituído por `vehicle`) | | `contact_name` | Nome do local (UBS SACOMA, EMAD VELEIROS…) | -**Regra de pagamento:** `status = 'completed'` AND `checkin IS NOT NULL` +**Regra de pagamento:** `status = 'completed'` AND `checkout IS NOT NULL` ---