Gnucash

GnuCash 重新創建 Quicken 報告

  • May 1, 2019

我是一個希望轉移到 GnuCash 的快速使用者。我非常喜歡 GnuCash,但是在創建一些 (IMO) 很容易在 Quicken 中創建的特定報告時遇到了麻煩。

具體來說,我有幾間出租屋,在 Quicken 中,我為每個出租屋都有一個帳戶,正如我將(我假設)在 GnuCash 中一樣。我在 Quicken 中對應的“租金費用”和“租金收入”類別和子類別將成為 GnuCash 中的帳戶(和子類別子帳戶)。到了報稅時間,我想為每個出租物業賬戶製作上一年的收入和支出清單。我不需要(或通常不想)查看單個交易。而對於每個出租物業,我想要一個報告(或者在一個完美的世界中,一個單一的多列報告,每列代表一個出租物業),列出所有收入類別(帳戶)總計,並且理想情況下在它們下方縮進子類別(子帳戶)年的總數。

因此,對於財產 A,我將有一份報告,其中包括該年財產 A 的公用事業總支出(例如),理想情況下,在其下方縮進,即當年燃氣、水、電等的小計。類似地,一行該物業當年的總收入(最好是縮進的子類別/子賬戶行,如總租金、總滯納金等)。

我可以使用收入/支出報告在 GnuCash 中創建一個粗略的版本,但我不知道如何將其限制為僅針對財產 A 發生的那些交易,而不是匯總我所有的出租財產。

我對 MySQL 很熟悉,並且喜歡深入研究 DB 模式來推出我自己的報告/查詢。但這對於在 Quicken 中很容易完成的事情來說似乎是一個相當大的時間承諾。

我真的很想放棄 Quicken,但我猶豫不決,因為我對 GnuCash 報告缺乏了解,或者 GnuCash 報告缺乏能力。任何建議/提示或指向我學習的適當資源?

這是一個範例(擴展了一些類別/帳戶 - 例如勞動力 - 以顯示每筆交易,而其他類別/帳戶折疊 - 例如收到的租金 - 僅顯示總數。

出租物業A

還有一個我的(比如說)Property A 交易的可能不太有用的快照: 交易清單

Gnucash 首先是一個總賬系統。它跟踪賬戶中的資金,並允許您進行交易以在賬戶之間轉移資金,但它沒有稅收等事物的固有概念。這為您提供了很大的靈活性,可以按照您想要的方式組織您的帳戶層次結構,但也意味著有時可能需要一段時間才能確定您想要的帳戶層次結構。這個想法是你跟踪你從哪裡得到錢(收入賬戶),你有什麼結果(資產賬戶),然後跟踪你花了什麼錢(費用賬戶)。

聽起來您主要將費用視為特定財產的費用,因此我認為您希望將其用作層次結構的基礎。你可能想要這樣的東西(顯然我正在編造細節):

  • 資產

    • 檢查
    • 儲蓄
  • 收入

    • 銀行利息

    • 物業A

      • 收到的租金
      • 在物業 A 的沙發墊中發現的錢
    • 物業B

      • 收到的租金
      • 在物業B的沙發墊中發現的錢
  • 花費

    • 物業A

      • 保險

      • 勞動

      • 維修

      • 稅收

      • 實用程序

        • 電的
        • 氣體
    • 物業B

      • 保險

      • 勞動

      • 維修

      • 稅收

      • 實用程序

        • 電的
        • 氣體

現在,在執行交易報告或收入/支出報告時,您可以過濾到每個屬性的帳戶(和子帳戶),以獲得特定於該屬性的報告。

您提到有時您還想針對“所有燃氣費用,無論財產如何”進行報告,這樣做有點煩人。您可以執行報告,在選擇賬戶時,您必須單獨選擇所有 Gas 賬戶。聽起來你真的在尋找一種方法來將每筆交易分類到某種雙軸系統中,但總賬的工作方式是它只是一棵樹,所以你只需要選擇一個“主”軸來組織您的帳戶。

這是我整理的一個非常基本的 MySQL 查詢,它可以滿足我對收入/支出報告的要求。基本上,它報告的資訊與固定收入/支出報告相同,但限制了與特定帳戶(在我的情況下為出租物業)相關的收入/支出。我的主要抱怨是輸出“報告”非常難看。並且修改不同的出租物業需要更改程式碼(我可以傳遞參數等)。

同樣,我認為 GnuCash 收入/支出報告的主要“問題”是沒有過濾器來過濾您想要收入/支出的帳戶(出租物業),除非您設置帳戶樹以便每個出租物業都有自己的定義的收入和支出(即 PropertyA:Expense:Utility:electric)。

希望有人會指出我使用 GnuCash 中內置的報告生成器的更優雅的解決方案。謝謝!

SELECT a2.account_type , a4.name, a3.name, a2.name, SUM(ROUND(IF(a2.account_type='EXPENSE',- s2.value_num,ABS(s2.value_num))/s2.value_denom,2)) AS amt FROM ( SELECT s1.tx_guid FROM gnucash.accounts AS a1 INNER JOIN gnucash.splits AS s1 ON s1.account_guid = a1.guid WHERE a1.name='Property A' ) AS X INNER JOIN gnucash.splits s2 ON x.tx_guid = s2.tx_guid INNER JOIN gnucash.accounts a2 ON a2.guid=s2.account_guid INNER JOIN gnucash.transactions t ON t.guid=s2.tx_guid LEFT JOIN gnucash.accounts a3 ON a3.guid = a2.parent_guid LEFT JOIN gnucash.accounts a4 ON a4.guid = a3.parent_guid WHERE a2.name <> 'Property A' # get all the accounts associated with tx in Property A account (but not the actual Property A Bank duplicate entries. AND t.post_date BETWEEN CAST('2016-01-01' AS DATE) AND CAST('2016-12-31' AS DATE) GROUP BY a2.account_type ,a4.name, a3.name, a2.name WITH ROLLUP ;

這是輸出。希望有人有更好的建議方法!

在此處輸入圖像描述

引用自:https://money.stackexchange.com/questions/76865