43 lines
1.4 KiB
Ruby
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
|