# frozen_string_literal: true # Avoir is a special type of Invoice, which it inherits. It is used to # refund an user, based on a previous invoice, or to credit an user's wallet. class Avoir < Invoice belongs_to :invoice after_create :notify_admins_refund_created validates :payment_method, inclusion: { in: %w[stripe cheque transfer none cash wallet] } attr_accessor :invoice_items_ids def generate_reference self.reference = InvoiceReferenceService.generate_reference(self, date: created_at, avoir: true) end def expire_subscription user.subscription.expire(DateTime.current) end private def notify_admins_refund_created NotificationCenter.call type: 'notify_admin_refund_created', receiver: User.admins, attached_object: self end end