# frozen_string_literal: false

# module definition
module Accounting; end

# fetch the journal code matching the given resource
class Accounting::AccountingJournalService
  def initialize
    @journal_codes = {
      sales: Setting.get('accounting_sales_journal_code') || '',
      wallet: Setting.get('accounting_wallet_journal_code') || '',
      vat: Setting.get('accounting_VAT_journal_code') || '',
      payment: {
        card: Setting.get('accounting_payment_card_journal_code') || '',
        wallet: Setting.get('accounting_payment_wallet_journal_code') || '',
        other: Setting.get('accounting_payment_other_journal_code') || ''
      }
    }
  end

  def payment_journal(payment_mean)
    @journal_codes[:payment][payment_mean]
  end

  def vat_journal
    @journal_codes[:vat]
  end

  def sales_journal(object_type)
    case object_type
    when 'WalletTransaction'
      @journal_codes[:wallet]
    else
      @journal_codes[:sales]
    end
  end
end
