internetee-registry/app/models/concerns/invoice/cancellable.rb
2021-05-31 15:33:55 +05:00

24 lines
414 B
Ruby

module Invoice::Cancellable
extend ActiveSupport::Concern
included do
scope :non_cancelled, -> { where(cancelled_at: nil) }
end
def cancellable?
unpaid? && not_cancelled?
end
def cancel
raise 'Invoice cannot be cancelled' unless cancellable?
update!(cancelled_at: Time.zone.now)
end
def cancelled?
cancelled_at.present?
end
def not_cancelled?
!cancelled?
end
end