1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 13:19:39 +02:00
Maybe/app/models/loan.rb

45 lines
1.1 KiB
Ruby
Raw Normal View History

class Loan < ApplicationRecord
include Accountable
SUBTYPES = {
"mortgage" => { short: "Mortgage", long: "Mortgage" },
"student" => { short: "Student", long: "Student Loan" },
"auto" => { short: "Auto", long: "Auto Loan" },
"other" => { short: "Other", long: "Other Loan" }
}.freeze
def monthly_payment
return nil if term_months.nil? || interest_rate.nil? || rate_type.nil? || rate_type != "fixed"
return Money.new(0, account.currency) if account.loan.original_balance.amount.zero? || term_months.zero?
annual_rate = interest_rate / 100.0
monthly_rate = annual_rate / 12.0
if monthly_rate.zero?
payment = account.loan.original_balance.amount / term_months
else
payment = (account.loan.original_balance.amount * monthly_rate * (1 + monthly_rate)**term_months) / ((1 + monthly_rate)**term_months - 1)
end
Money.new(payment.round, account.currency)
end
def original_balance
Money.new(account.first_valuation_amount, account.currency)
end
class << self
def color
"#D444F1"
end
def icon
"hand-coins"
end
def classification
"liability"
end
end
end