Sha256: 15019e7c0c91862299267676068ec82bc761f7fdfc307786dcabab416f55e982

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

class TransactionType
  include EnumField::DefineEnum

  attr_reader :code

  def initialize(code)
    @code = code.to_sym
  end

  def title(params = {})
    I18n.t(code, params.merge(scope: [:account, :transaction_type, :title]))
  end

  def description(params = {})
    I18n.t(code, params.merge(scope: [:account, :transaction_type, :description]))
  end

  def translate(transaction)
    options = {
      order_id: transaction.order.number,
      amount: transaction.amount,
      content: transaction.content
    }

    I18n.t(code, options.merge(scope: [:account, :transactions]))
  end

  def css_class
    # case @code
    # when :income then 'paid'
    # when :payment then 'paid'
    # when :full_revert then 'paid'
    # when :partial_revert then 'paid'
    # when :reserv then 'paid'
    # else 'paid'
    # end
    'paid'
  end

  define_enum do |builder|
    # add in crm by hands
    builder.member :income, object: new('income')

    # creates after payment paid
    builder.member :payment, object: new('payment')

    # creates after full refund
    builder.member :full_revert, object: new('full_revert')

    # creates after partial refund
    builder.member :partial_revert, object: new('partial_revert')

    # exists while payment is not approved (technical status)
    builder.member :reserv, object: new('reserv')
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/models/enums/transaction_type.rb