Files
Reem-Notas/app/policies/consolidacao_policy.rb

43 lines
1.4 KiB
Ruby

# 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