From c0908f454ac84f0fe33ba3f601dae99c33995ba8 Mon Sep 17 00:00:00 2001 From: Zach Gollwitzer Date: Fri, 9 Aug 2024 13:31:32 -0400 Subject: [PATCH] Temp fix for missing accountables on self hosted instances (#1071) * Temp fix #1068 * Cleanup --- app/models/account.rb | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index e71390d600c..0efa8542f0d 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -28,8 +28,6 @@ class Account < ApplicationRecord delegated_type :accountable, types: Accountable::TYPES, dependent: :destroy - delegate :value, :series, to: :accountable - class << self def by_group(period: Period.all, currency: Money.default_currency.iso_code) grouped_accounts = { assets: ValueGroup.new("Assets", currency), liabilities: ValueGroup.new("Liabilities", currency) } @@ -75,6 +73,31 @@ def create_with_optional_start_balance!(attributes:, start_date: nil, start_bala end end + # Start of temporary fix for #1068 + # ========================================================================== + + # TODO: Both `series` and `value` methods are a temporary fix for #1068, which appears to be a data corruption issue. + # Every account should have an accountable no matter what, but some self hosted instances seem to have missing accountables. + # When this is fixed, we can add this back to `delegate :value, :series, to: :accountable` + def series(period: Period.all, currency: self.currency) + if accountable.present? + accountable.series(period: period, currency: currency) + else + TimeSeries.new([]) + end + end + + def value + if accountable.present? + accountable.value + else + balance_money + end + end + + # ========================================================================== + # End of temporary fix for #1068 + def alert latest_sync = syncs.latest [ latest_sync&.error, *latest_sync&.warnings ].compact.first