# app/policies/consolidacao_policy.rb class ConsolidacaoPolicy < ApplicationPolicy def index? = pode?('consolidacao.ver') def arquivadas? = index? def show? = index? def create? = pode?('consolidacao.criar') def new? = create? # Editar uma consolidação JÁ FINALIZADA é outra permissão: mexer depois do # fechamento muda o valor que o motorista vai receber. Antes isso era "operador # não pode, gerente pode" cravado no código. def update? pode?('consolidacao.editar') && (!record_finalizada? || pode?('consolidacao.editar_finalizada')) end def edit? = update? def finalizar? = pode?('consolidacao.finalizar') def finalizar_parcial? = finalizar? def arquivar? = pode?('consolidacao.arquivar') def reativar? = arquivar? def destroy? = pode?('consolidacao.excluir') def excluir_motorista? = destroy? # Pagamento: registrar e estornar são chaves distintas — estornar desfaz algo # que já foi comunicado ao motorista. def registrar_pagamento? = pode?('consolidacao.registrar_pagamento') def cancelar_pagamento? = pode?('consolidacao.cancelar_pagamento') # Quem entra e quem sai do fechamento (sem excluir de vez). def gerir_motoristas? = pode?('consolidacao.gerir_motoristas') && update? def exportar_pdf? = pode?('consolidacao.exportar_pdf') private def record_finalizada? record.respond_to?(:finalizada?) && record.finalizada? end end