mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
*** empty log message ***
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2157 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
50134d0df8
commit
38fcb8da8f
498
po/de.po
498
po/de.po
@ -230,7 +230,6 @@ msgstr ""
|
||||
" ist leer."
|
||||
|
||||
#: messages-i18n.c:39
|
||||
#, fuzzy
|
||||
msgid "Changes have been made since the last Save. Save the data to file?"
|
||||
msgstr ""
|
||||
"Es wurden Veränderungen seit der letzten Speicherung vorgenommen. "
|
||||
@ -358,9 +357,8 @@ msgid "Are you sure you want to delete the current transaction?"
|
||||
msgstr "Sind sie sicher das sie das %s Konto löschen wollen?"
|
||||
|
||||
#: messages-i18n.c:57
|
||||
#, fuzzy
|
||||
msgid "Recalculate Transaction"
|
||||
msgstr "Buchung löschen"
|
||||
msgstr "Buchung neu kalkulieren"
|
||||
|
||||
#: messages-i18n.c:58
|
||||
msgid ""
|
||||
@ -504,12 +502,10 @@ msgid "Enter the total value of the shares"
|
||||
msgstr "Geben sie den Gesamtwert der Anteile ein"
|
||||
|
||||
#: messages-i18n.c:86
|
||||
#, fuzzy
|
||||
msgid "Enter the account to transfer from, or choose one from the list"
|
||||
msgstr "Geben sie ein Transferkonto ein oder wählen sie aus der Liste"
|
||||
|
||||
#: messages-i18n.c:87
|
||||
#, fuzzy
|
||||
msgid "Enter the account to transfer to, or choose one from the list"
|
||||
msgstr "Geben sie ein Transferkonto ein oder wählen sie aus der Liste"
|
||||
|
||||
@ -870,9 +866,8 @@ msgid "Cash"
|
||||
msgstr "Bargeld"
|
||||
|
||||
#: messages-i18n.c:176
|
||||
#, fuzzy
|
||||
msgid "Changed"
|
||||
msgstr "Belastung"
|
||||
msgstr "Geändert"
|
||||
|
||||
#: messages-i18n.c:177
|
||||
msgid "Charge"
|
||||
@ -1232,9 +1227,8 @@ msgid "Second Option"
|
||||
msgstr "Zweite Option"
|
||||
|
||||
#: po/guile_strings.txt:3
|
||||
#, fuzzy
|
||||
msgid "Cost"
|
||||
msgstr "Schliessen"
|
||||
msgstr "Kosten"
|
||||
|
||||
#: po/guile_strings.txt:5
|
||||
msgid "Status"
|
||||
@ -1263,7 +1257,6 @@ msgid "Stock Portfolio Valuation"
|
||||
msgstr ""
|
||||
|
||||
#: po/guile_strings.txt:15
|
||||
#, fuzzy
|
||||
msgid "Stock Portfolio"
|
||||
msgstr "Portfolio"
|
||||
|
||||
@ -1383,7 +1376,6 @@ msgid "Income-Salary-Taxable"
|
||||
msgstr "zu versteuerndes Einkommen"
|
||||
|
||||
#: po/guile_strings.txt:45
|
||||
#, fuzzy
|
||||
msgid "_Stock Portfolio"
|
||||
msgstr "Portfolio"
|
||||
|
||||
@ -1396,9 +1388,8 @@ msgid "US-style: mm/dd/yyyy"
|
||||
msgstr "US-Stil : Monat/Tag/Jahr"
|
||||
|
||||
#: po/guile_strings.txt:48
|
||||
#, fuzzy
|
||||
msgid "You have not selected an account."
|
||||
msgstr "Wählen sie ein Konto zum Ausbuchen"
|
||||
msgstr "Sie haben kein Konto ausgewählt"
|
||||
|
||||
#: po/guile_strings.txt:49
|
||||
msgid "By default, show every transaction in an account."
|
||||
@ -1449,7 +1440,6 @@ msgid "Display the Hello, World report."
|
||||
msgstr "Den 'Hallo Welt'-Report anzeigen"
|
||||
|
||||
#: po/guile_strings.txt:64
|
||||
#, fuzzy
|
||||
msgid "Gain"
|
||||
msgstr "Gewinn/Verlust"
|
||||
|
||||
@ -1511,7 +1501,6 @@ msgid "Import QIF File - Scripted in Guile."
|
||||
msgstr "Importieren einer Quicken-Datei (QIF) - Skriptsprache Guile"
|
||||
|
||||
#: po/guile_strings.txt:79
|
||||
#, fuzzy
|
||||
msgid "Category"
|
||||
msgstr "QIF Kategorie"
|
||||
|
||||
@ -1555,9 +1544,8 @@ msgid "The background color for the active transaction in single mode"
|
||||
msgstr "Hintergrundfarbe für die aktive Transaktion im 'Single-Mode'"
|
||||
|
||||
#: po/guile_strings.txt:88
|
||||
#, fuzzy
|
||||
msgid "Loss"
|
||||
msgstr "Gewinn/Verlust"
|
||||
msgstr "Verlust"
|
||||
|
||||
#: po/guile_strings.txt:89
|
||||
msgid "Credit Accounts"
|
||||
@ -1580,19 +1568,17 @@ msgid "Save window sizes and positions."
|
||||
msgstr "Speichere Fenstergrössen und -positionen"
|
||||
|
||||
#: po/guile_strings.txt:95
|
||||
#, fuzzy
|
||||
msgid "Number Option"
|
||||
msgstr "Berichtsoptionen"
|
||||
msgstr "Zahlenoptionen"
|
||||
|
||||
#: po/guile_strings.txt:96
|
||||
#, fuzzy
|
||||
msgid "There are no accounts to report on."
|
||||
msgstr "Es wurden keine Konten in der Kontenliste ausgewählt."
|
||||
msgstr "Es gibt keine Konten für den Bericht."
|
||||
|
||||
#: po/guile_strings.txt:97
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Report for %s."
|
||||
msgstr "Berichte"
|
||||
msgstr "Bericht für %s."
|
||||
|
||||
#: po/guile_strings.txt:98
|
||||
msgid "Reverse Income and Expense Accounts"
|
||||
@ -1690,9 +1676,8 @@ msgid "Date Format Display"
|
||||
msgstr "Datumsformat-Anzeige"
|
||||
|
||||
#: po/guile_strings.txt:124
|
||||
#, fuzzy
|
||||
msgid "Ending"
|
||||
msgstr "Zunehmend"
|
||||
msgstr "Endend"
|
||||
|
||||
#: po/guile_strings.txt:125
|
||||
msgid "Reversed-balance account types"
|
||||
@ -1723,9 +1708,8 @@ msgid "Calculate balance sheet up to this date"
|
||||
msgstr ""
|
||||
|
||||
#: po/guile_strings.txt:133
|
||||
#, fuzzy
|
||||
msgid "Transaction Report"
|
||||
msgstr "Transaktion"
|
||||
msgstr "Transaktionsbericht"
|
||||
|
||||
#: po/guile_strings.txt:134
|
||||
msgid "Alternate the even and odd colors with each transaction, not each row"
|
||||
@ -1816,14 +1800,12 @@ msgid "Do transaction report on this account"
|
||||
msgstr "Sie können nicht von und zu dem selben Konto transferieren !"
|
||||
|
||||
#: po/guile_strings.txt:157
|
||||
#, fuzzy
|
||||
msgid "Recent Price"
|
||||
msgstr "Verkaufspreis"
|
||||
msgstr "letzter Preis"
|
||||
|
||||
#: po/guile_strings.txt:158
|
||||
#, fuzzy
|
||||
msgid "Net Inflow"
|
||||
msgstr "Datei Info"
|
||||
msgstr "Preis aus dem Netz"
|
||||
|
||||
#: po/guile_strings.txt:159
|
||||
msgid "Single mode default even row background"
|
||||
@ -1896,9 +1878,9 @@ msgid "Show both icons and text"
|
||||
msgstr "Sowohl Icons, als auch Text anzeigen"
|
||||
|
||||
#: po/guile_strings.txt:180
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "The number option is %s."
|
||||
msgstr "Die Datums-Option ist %s."
|
||||
msgstr "Die Zahlen-Option ist %s."
|
||||
|
||||
#: po/guile_strings.txt:181
|
||||
#, c-format
|
||||
@ -1938,9 +1920,8 @@ msgid "Primary Sort Order"
|
||||
msgstr "Hauptsortier-Reihenfolge"
|
||||
|
||||
#: po/guile_strings.txt:191
|
||||
#, fuzzy
|
||||
msgid "Name"
|
||||
msgstr "Nummer"
|
||||
msgstr "Name"
|
||||
|
||||
#: po/guile_strings.txt:192
|
||||
msgid "Descending"
|
||||
@ -2073,9 +2054,8 @@ msgid "First Option"
|
||||
msgstr "Erste Option"
|
||||
|
||||
#: po/guile_strings.txt:225
|
||||
#, fuzzy
|
||||
msgid "Display the Stock Portfolio report."
|
||||
msgstr "Den 'Hallo Welt'-Report anzeigen"
|
||||
msgstr "Den Portfolio-Bericht anzeigen"
|
||||
|
||||
#: po/guile_strings.txt:226
|
||||
msgid ""
|
||||
@ -2165,9 +2145,8 @@ msgid "Primary Key"
|
||||
msgstr "Primärschlüssel"
|
||||
|
||||
#: po/guile_strings.txt:247
|
||||
#, fuzzy
|
||||
msgid "Ticker"
|
||||
msgstr "Zeit"
|
||||
msgstr "Ticker"
|
||||
|
||||
#: po/guile_strings.txt:248
|
||||
msgid "Time and Date Option"
|
||||
@ -2230,19 +2209,16 @@ msgid "Average Balance"
|
||||
msgstr "Durchschnitt"
|
||||
|
||||
#: po/guile_strings.txt:265
|
||||
#, fuzzy
|
||||
msgid "Totals"
|
||||
msgstr "Gesamt"
|
||||
|
||||
#: po/guile_strings.txt:266
|
||||
#, fuzzy
|
||||
msgid "Profit/Loss"
|
||||
msgstr "Saldo Einnahmen/Ausgaben"
|
||||
|
||||
#: po/guile_strings.txt:267
|
||||
#, fuzzy
|
||||
msgid "Shares"
|
||||
msgstr "Belastung"
|
||||
msgstr "Anteile"
|
||||
|
||||
#: po/guile_strings.txt:268
|
||||
msgid "Show All Transactions"
|
||||
@ -2377,9 +2353,8 @@ msgstr ""
|
||||
"Zeige Kreditkarten-, Schulden-, Ausgleichs- und Einkommenskonten umgedreht"
|
||||
|
||||
#: po/guile_strings.txt:300
|
||||
#, fuzzy
|
||||
msgid "This is a number option."
|
||||
msgstr "Dies ist eine boolsche Option"
|
||||
msgstr "Dies ist eine Zahlen Option"
|
||||
|
||||
#: po/guile_strings.txt:302
|
||||
msgid "Multi mode active split background"
|
||||
@ -2416,7 +2391,6 @@ msgid "Something is very wrong with QIF Importing."
|
||||
msgstr "Es ist etwas nicht in Ordnung mit dem QIF-Import."
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:74
|
||||
#, fuzzy
|
||||
msgid "Import QIF Files"
|
||||
msgstr "QIF-File importieren"
|
||||
|
||||
@ -2518,16 +2492,14 @@ msgid "Categories"
|
||||
msgstr "Kategorien"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:506
|
||||
#, fuzzy
|
||||
msgid "Select Account"
|
||||
msgstr "Konto löschen"
|
||||
msgstr "Konto auswählen"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:564
|
||||
msgid "Selected account:"
|
||||
msgstr "Ausgewähltes Konto:"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:573
|
||||
#, fuzzy
|
||||
msgid "Description:"
|
||||
msgstr "Beschreibung:"
|
||||
|
||||
@ -2540,7 +2512,6 @@ msgid "Mutual"
|
||||
msgstr "Investmentfonds"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:700
|
||||
#, fuzzy
|
||||
msgid "Print Preview"
|
||||
msgstr "Vorschau"
|
||||
|
||||
@ -2585,403 +2556,390 @@ msgid "Preview"
|
||||
msgstr "Vorschau"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1036
|
||||
#, fuzzy
|
||||
msgid "Select Paper Size"
|
||||
msgstr "Drucker auswählen"
|
||||
msgstr "Papiergrösse auswählen"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1149
|
||||
#, fuzzy
|
||||
msgid "Print Check"
|
||||
msgstr "Einstellungen drucken"
|
||||
msgstr "Scheck drucken"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1178
|
||||
#, fuzzy
|
||||
msgid "Check format:"
|
||||
msgstr "Datumsformat:"
|
||||
msgstr "Scheckformat:"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1186 src/gnome/glade-gnc-dialogs.c:1356
|
||||
#, fuzzy
|
||||
msgid "Check position:"
|
||||
msgstr "Girokonto"
|
||||
msgstr "Scheckposition:"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1216
|
||||
msgid "Quicken/QuickBooks (tm)"
|
||||
msgstr ""
|
||||
msgstr "Quicken/Quickbooks (tm)"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1219 src/gnome/glade-gnc-dialogs.c:1240
|
||||
#: src/gnome/glade-gnc-dialogs.c:1276
|
||||
#, fuzzy
|
||||
msgid "Custom"
|
||||
msgstr "AutoDepot"
|
||||
msgstr "Üblich"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1231
|
||||
#, fuzzy
|
||||
msgid "Top"
|
||||
msgstr "Zu"
|
||||
msgstr "Anfang/Oben"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1234
|
||||
#, fuzzy
|
||||
msgid "Middle"
|
||||
msgstr "Datei"
|
||||
msgstr "Mittig"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1237
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
msgstr "Unten/Ende"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1252
|
||||
msgid "December 31, 2000"
|
||||
msgstr ""
|
||||
msgstr "Dezember 31., 2000"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1255
|
||||
msgid "31 December, 2000"
|
||||
msgstr ""
|
||||
msgstr "31. Dezember, 2000"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1258
|
||||
#, fuzzy
|
||||
msgid "Dec 31, 2000"
|
||||
msgstr "Dezimal (1,000.00)"
|
||||
msgstr "Dez 31, 2000"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1261
|
||||
msgid "31 Dec, 2000"
|
||||
msgstr ""
|
||||
msgstr "31. Dez, 2000"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1264
|
||||
msgid "12/31/2000"
|
||||
msgstr ""
|
||||
msgstr "12/31/2000"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1267
|
||||
msgid "12/31/00"
|
||||
msgstr ""
|
||||
msgstr "12/31/00"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1270
|
||||
msgid "31/12/2000"
|
||||
msgstr ""
|
||||
msgstr "31/12/2000"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1273
|
||||
msgid "31/12/00"
|
||||
msgstr ""
|
||||
msgstr "31/12/00"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1281
|
||||
msgid "Custom check parameters"
|
||||
msgstr ""
|
||||
msgstr "Allgemeine Scheck-Parameter"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1316
|
||||
#, fuzzy
|
||||
msgid "Payee:"
|
||||
msgstr "Belastung"
|
||||
msgstr "Zahlungsempfänger"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1324
|
||||
#, fuzzy
|
||||
msgid "Date:"
|
||||
msgstr "Datum"
|
||||
msgstr "Datum:"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1332
|
||||
msgid "Amount (words):"
|
||||
msgstr ""
|
||||
msgstr "Betrag (in Worten):"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1340
|
||||
msgid "Amount (numbers):"
|
||||
msgstr ""
|
||||
msgstr "Betrag (in Zahlen):"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1348
|
||||
#, fuzzy
|
||||
msgid "Memo:"
|
||||
msgstr "Memo"
|
||||
msgstr "Memo:"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1372
|
||||
msgid "Units:"
|
||||
msgstr ""
|
||||
msgstr "Einheiten:"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1387
|
||||
msgid "x"
|
||||
msgstr ""
|
||||
msgstr "x"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1457
|
||||
#, fuzzy
|
||||
msgid "Inches"
|
||||
msgstr "Zunahme"
|
||||
msgstr "Inches"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1460
|
||||
msgid "Centimeters"
|
||||
msgstr ""
|
||||
msgstr "Zentimeter"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1463
|
||||
msgid "Millimeters"
|
||||
msgstr ""
|
||||
msgstr "Millimeter"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1466
|
||||
#, fuzzy
|
||||
msgid "Points"
|
||||
msgstr "Saldo Einnahmen/Ausgaben"
|
||||
msgstr "Punkte"
|
||||
|
||||
#: src/gnome/glade-gnc-dialogs.c:1478
|
||||
msgid "y"
|
||||
msgstr ""
|
||||
msgstr "y"
|
||||
|
||||
#: src/gnome/print-session.c:230
|
||||
msgid "You must select a printer first."
|
||||
msgstr "Sie müssen erst einen Drucker auswählen"
|
||||
|
||||
#~ msgid "Double line mode with multi-line cursor"
|
||||
#~ msgstr "Doppel-Zeilen Modus mit Multi-Zeilen-Cursor"
|
||||
msgid "Double line mode with multi-line cursor"
|
||||
msgstr "Doppel-Zeilen Modus mit Multi-Zeilen-Cursor"
|
||||
|
||||
#~ msgid "Single line mode with multi-line cursor"
|
||||
#~ msgstr "Einzel-Zeilen Modus mit Multi-Zeilen-Cursor"
|
||||
msgid "Single line mode with multi-line cursor"
|
||||
msgstr "Einzel-Zeilen Modus mit Multi-Zeilen-Cursor"
|
||||
|
||||
#~ msgid "Adjust the balance of the selected account"
|
||||
#~ msgstr "Saldo anpassen"
|
||||
msgid "Adjust the balance of the selected account"
|
||||
msgstr "Saldo anpassen"
|
||||
|
||||
#~ msgid "Adjust the balance of the main account for this register"
|
||||
#~ msgstr "Anpassen des Saldo"
|
||||
msgid "Adjust the balance of the main account for this register"
|
||||
msgstr "Anpassen des Saldo"
|
||||
|
||||
#~ msgid "Move to the blank transaction at the bottom of the register"
|
||||
#~ msgstr "Springe zur ersten freien Zeile"
|
||||
msgid "Move to the blank transaction at the bottom of the register"
|
||||
msgstr "Springe zur ersten freien Zeile"
|
||||
|
||||
#~ msgid "Cancel the current transaction"
|
||||
#~ msgstr "Buchung nicht ausführen"
|
||||
msgid "Cancel the current transaction"
|
||||
msgstr "Buchung nicht ausführen"
|
||||
|
||||
#~ msgid "Close this register window"
|
||||
#~ msgstr "Fenster schliessen"
|
||||
msgid "Close this register window"
|
||||
msgstr "Fenster schliessen"
|
||||
|
||||
#~ msgid "Set the date range of this register"
|
||||
#~ msgstr "Den Datumsbereich dieses Registers setzen"
|
||||
msgid "Set the date range of this register"
|
||||
msgstr "Den Datumsbereich dieses Registers setzen"
|
||||
|
||||
#~ msgid "Delete selected account"
|
||||
#~ msgstr "Gewähltes Konto löschen."
|
||||
msgid "Delete selected account"
|
||||
msgstr "Gewähltes Konto löschen."
|
||||
|
||||
#~ msgid "Delete the current transaction"
|
||||
#~ msgstr "Buchung löschen"
|
||||
msgid "Delete the current transaction"
|
||||
msgstr "Buchung löschen"
|
||||
|
||||
#~ msgid "Make a copy of the current transaction"
|
||||
#~ msgstr "Aktuelle Buchung kopieren"
|
||||
msgid "Make a copy of the current transaction"
|
||||
msgstr "Aktuelle Buchung kopieren"
|
||||
|
||||
#~ msgid "Edit the selected account"
|
||||
#~ msgstr "Gewähltes Konto bearbeiten."
|
||||
msgid "Edit the selected account"
|
||||
msgstr "Gewähltes Konto bearbeiten."
|
||||
|
||||
#~ msgid "Edit the main account for this register"
|
||||
#~ msgstr "Bearbeiten des Hauptkonto"
|
||||
msgid "Edit the main account for this register"
|
||||
msgstr "Bearbeiten des Hauptkonto"
|
||||
|
||||
#~ msgid "Exit GnuCash"
|
||||
#~ msgstr "GnuCash verlassen."
|
||||
msgid "Exit GnuCash"
|
||||
msgstr "GnuCash verlassen."
|
||||
|
||||
#~ msgid "Open the GnuCash help window"
|
||||
#~ msgstr "Das GnuCash-Hilfe-Fenster öffnen"
|
||||
msgid "Open the GnuCash help window"
|
||||
msgstr "Das GnuCash-Hilfe-Fenster öffnen"
|
||||
|
||||
#~ msgid "Import a Quicken QIF file"
|
||||
#~ msgstr "Importieren einer Quicken QIF-Datei"
|
||||
msgid "Import a Quicken QIF file"
|
||||
msgstr "Importieren einer Quicken QIF-Datei"
|
||||
|
||||
#~ msgid "Jump to the corresponding transaction in the other account"
|
||||
#~ msgstr "Zur passenden Gegentransaktion im Gegenkonto springen"
|
||||
msgid "Jump to the corresponding transaction in the other account"
|
||||
msgstr "Zur passenden Gegentransaktion im Gegenkonto springen"
|
||||
|
||||
#~ msgid "Create a new account"
|
||||
#~ msgstr "Ein neues Konto eröffnen."
|
||||
msgid "Create a new account"
|
||||
msgstr "Ein neues Konto eröffnen."
|
||||
|
||||
#~ msgid "Create a new file"
|
||||
#~ msgstr "Eine neue Datei anlegen"
|
||||
msgid "Create a new file"
|
||||
msgstr "Eine neue Datei anlegen"
|
||||
|
||||
#~ msgid "Open the selected account"
|
||||
#~ msgstr "Gewähltes Konto löschen."
|
||||
msgid "Open the selected account"
|
||||
msgstr "Gewähltes Konto löschen."
|
||||
|
||||
#~ msgid "Open the selected account and all its subaccounts"
|
||||
#~ msgstr "Öffne das gewählte Konto und alle Sub-Konten"
|
||||
msgid "Open the selected account and all its subaccounts"
|
||||
msgstr "Öffne das gewählte Konto und alle Sub-Konten"
|
||||
|
||||
#~ msgid "Open a file"
|
||||
#~ msgstr "Datei öffnen"
|
||||
msgid "Open a file"
|
||||
msgstr "Datei öffnen"
|
||||
|
||||
#~ msgid "Open the global preferences dialog"
|
||||
#~ msgstr "Allgemeine Optionen"
|
||||
msgid "Open the global preferences dialog"
|
||||
msgstr "Allgemeine Optionen"
|
||||
|
||||
#~ msgid "Reconcile the selected account"
|
||||
#~ msgstr "Gewähltes Konto ausgleichen"
|
||||
msgid "Reconcile the selected account"
|
||||
msgstr "Gewähltes Konto ausgleichen"
|
||||
|
||||
#~ msgid "Reconcile the main account for this register"
|
||||
#~ msgstr "Ausgleichen des Hauptkontos"
|
||||
msgid "Reconcile the main account for this register"
|
||||
msgstr "Ausgleichen des Hauptkontos"
|
||||
|
||||
#~ msgid "Record the current transaction"
|
||||
#~ msgstr "Buchung durchführen"
|
||||
msgid "Record the current transaction"
|
||||
msgstr "Buchung durchführen"
|
||||
|
||||
#~ msgid "Save the file to disk"
|
||||
#~ msgstr "Speichern dieser Datei"
|
||||
msgid "Save the file to disk"
|
||||
msgstr "Speichern dieser Datei"
|
||||
|
||||
#~ msgid "Identify and fix problems in the account"
|
||||
#~ msgstr "Identifizieren und Beseitigen von Problemen in diesem Konto"
|
||||
msgid "Identify and fix problems in the account"
|
||||
msgstr "Identifizieren und Beseitigen von Problemen in diesem Konto"
|
||||
|
||||
#~ msgid "Identify and fix problems in all the accounts"
|
||||
#~ msgstr "Identifizieren und Beseitigen von Problemen in allen Konten"
|
||||
msgid "Identify and fix problems in all the accounts"
|
||||
msgstr "Identifizieren und Beseitigen von Problemen in allen Konten"
|
||||
|
||||
#~ msgid "Identify and fix problems in the account and its subaccounts"
|
||||
#~ msgstr ""
|
||||
#~ "Identifizieren und Beseitigen von Problemen in diesem Konto und in den "
|
||||
#~ "Unterkonten"
|
||||
msgid "Identify and fix problems in the account and its subaccounts"
|
||||
msgstr ""
|
||||
"Identifizieren und Beseitigen von Problemen in diesem Konto und in den "
|
||||
"Unterkonten"
|
||||
|
||||
#~ msgid "Identify and fix problems in the accounts of this register"
|
||||
#~ msgstr "Identifizieren und Beseitigen von Problemen in diesem Konto"
|
||||
msgid "Identify and fix problems in the accounts of this register"
|
||||
msgstr "Identifizieren und Beseitigen von Problemen in diesem Konto"
|
||||
|
||||
#~ msgid "Show all of the transactions in the account"
|
||||
#~ msgstr "Alle Buchungen anzeigen"
|
||||
msgid "Show all of the transactions in the account"
|
||||
msgstr "Alle Buchungen anzeigen"
|
||||
|
||||
#~ msgid "Sort by Amount, then Date, then Num"
|
||||
#~ msgstr "Sortieren nach Betrag, Datum und danach nach Nummer"
|
||||
msgid "Sort by Amount, then Date, then Num"
|
||||
msgstr "Sortieren nach Betrag, Datum und danach nach Nummer"
|
||||
|
||||
#~ msgid "Sort by Date, then Num, then Amount"
|
||||
#~ msgstr "Sortieren nach Datum, Nummer und danach nach Summe"
|
||||
msgid "Sort by Date, then Num, then Amount"
|
||||
msgstr "Sortieren nach Datum, Nummer und danach nach Summe"
|
||||
|
||||
#~ msgid "Sort by Description, then Date, then Num"
|
||||
#~ msgstr "Sortieren nach Beschreibung, Datum und danach nach Nummer"
|
||||
msgid "Sort by Description, then Date, then Num"
|
||||
msgstr "Sortieren nach Beschreibung, Datum und danach nach Nummer"
|
||||
|
||||
#~ msgid "Sort by Memo, then Date, then Num"
|
||||
#~ msgstr "Sortieren nach Memo, Datum und danach nach Nummer"
|
||||
msgid "Sort by Memo, then Date, then Num"
|
||||
msgstr "Sortieren nach Memo, Datum und danach nach Nummer"
|
||||
|
||||
#~ msgid "Sort by Num, then Date, then Amount"
|
||||
#~ msgstr "Sortieren nach Nummer, Datum und danach nach Betrag"
|
||||
msgid "Sort by Num, then Date, then Amount"
|
||||
msgstr "Sortieren nach Nummer, Datum und danach nach Betrag"
|
||||
|
||||
#~ msgid "Keep normal account order"
|
||||
#~ msgstr "Beibehalten der normalen Kontoreihenfolge"
|
||||
msgid "Keep normal account order"
|
||||
msgstr "Beibehalten der normalen Kontoreihenfolge"
|
||||
|
||||
#~ msgid "Transfer funds from one account to another"
|
||||
#~ msgstr "Transferieren von Währungen von einem Konto zu einem anderen"
|
||||
msgid "Transfer funds from one account to another"
|
||||
msgstr "Transferieren von Währungen von einem Konto zu einem anderen"
|
||||
|
||||
#~ msgid "_Account"
|
||||
#~ msgstr "Konto"
|
||||
msgid "_Account"
|
||||
msgstr "Konto"
|
||||
|
||||
#~ msgid "_Accounts"
|
||||
#~ msgstr "_Konten"
|
||||
msgid "_Accounts"
|
||||
msgstr "_Konten"
|
||||
|
||||
#~ msgid "_Blank"
|
||||
#~ msgstr "Leer"
|
||||
msgid "_Blank"
|
||||
msgstr "Leer"
|
||||
|
||||
#~ msgid "_Cancel"
|
||||
#~ msgstr "Abbrechen"
|
||||
msgid "_Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#~ msgid "_Date Range"
|
||||
#~ msgstr "Datumsbereich"
|
||||
msgid "_Date Range"
|
||||
msgstr "Datumsbereich"
|
||||
|
||||
#~ msgid "_Delete Account"
|
||||
#~ msgstr "Konto löschen"
|
||||
msgid "_Delete Account"
|
||||
msgstr "Konto löschen"
|
||||
|
||||
#~ msgid "_Delete"
|
||||
#~ msgstr "Löschen"
|
||||
msgid "_Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#~ msgid "D_uplicate"
|
||||
#~ msgstr "Wiederholen"
|
||||
msgid "D_uplicate"
|
||||
msgstr "Wiederholen"
|
||||
|
||||
#~ msgid "_Edit Account"
|
||||
#~ msgstr "_Konto bearbeiten"
|
||||
msgid "_Edit Account"
|
||||
msgstr "_Konto bearbeiten"
|
||||
|
||||
#~ msgid "_Help"
|
||||
#~ msgstr "_Hilfe"
|
||||
msgid "_Help"
|
||||
msgstr "_Hilfe"
|
||||
|
||||
#~ msgid "_Jump"
|
||||
#~ msgstr "Springe"
|
||||
msgid "_Jump"
|
||||
msgstr "Springe"
|
||||
|
||||
#~ msgid "_Open Account"
|
||||
#~ msgstr "_Konto öffnen"
|
||||
msgid "_Open Account"
|
||||
msgstr "_Konto öffnen"
|
||||
|
||||
#~ msgid "Open S_ubaccounts"
|
||||
#~ msgstr "Öffnen Unterkonten"
|
||||
msgid "Open S_ubaccounts"
|
||||
msgstr "Öffnen Unterkonten"
|
||||
|
||||
#~ msgid "_Record"
|
||||
#~ msgstr "Eintragen"
|
||||
msgid "_Record"
|
||||
msgstr "Eintragen"
|
||||
|
||||
#~ msgid "_Register"
|
||||
#~ msgstr "Register"
|
||||
msgid "_Register"
|
||||
msgstr "Register"
|
||||
|
||||
#~ msgid "_Scrub"
|
||||
#~ msgstr "Ausbuchen"
|
||||
msgid "_Scrub"
|
||||
msgstr "Ausbuchen"
|
||||
|
||||
#~ msgid "Scrub A_ccount"
|
||||
#~ msgstr "Konto ausbuchen"
|
||||
msgid "Scrub A_ccount"
|
||||
msgstr "Konto ausbuchen"
|
||||
|
||||
#~ msgid "Scrub A_ll"
|
||||
#~ msgstr "Ausbuchen"
|
||||
msgid "Scrub A_ll"
|
||||
msgstr "Ausbuchen"
|
||||
|
||||
#~ msgid "Scrub Su_baccounts"
|
||||
#~ msgstr "Ausbuchen Unterkonten"
|
||||
msgid "Scrub Su_baccounts"
|
||||
msgstr "Ausbuchen Unterkonten"
|
||||
|
||||
#~ msgid "Show _All"
|
||||
#~ msgstr "Alle anzeigen"
|
||||
msgid "Show _All"
|
||||
msgstr "Alle anzeigen"
|
||||
|
||||
#~ msgid "Sort _Order"
|
||||
#~ msgstr "Sortierreihenfolge"
|
||||
msgid "Sort _Order"
|
||||
msgstr "Sortierreihenfolge"
|
||||
|
||||
#~ msgid "_Style"
|
||||
#~ msgstr "Stil"
|
||||
msgid "_Style"
|
||||
msgstr "Stil"
|
||||
|
||||
#~ msgid "_Transaction"
|
||||
#~ msgstr "Transaktion"
|
||||
msgid "_Transaction"
|
||||
msgstr "_Transaktion"
|
||||
|
||||
#~ msgid "New File"
|
||||
#~ msgstr "Datei öffnen"
|
||||
msgid "New File"
|
||||
msgstr "Neue Datei"
|
||||
|
||||
#~ msgid "Sort by Amount"
|
||||
#~ msgstr "Sortiere nach Betrag"
|
||||
msgid "Sort by Amount"
|
||||
msgstr "Sortiere nach Betrag"
|
||||
|
||||
#~ msgid "Sort by Date"
|
||||
#~ msgstr "Sortiere nach Datum"
|
||||
msgid "Sort by Date"
|
||||
msgstr "Sortiere nach Datum"
|
||||
|
||||
#~ msgid "Sort by Description"
|
||||
#~ msgstr "Sortiere nach Beschreibung"
|
||||
msgid "Sort by Description"
|
||||
msgstr "Sortiere nach Beschreibung"
|
||||
|
||||
#~ msgid "Sort by Memo"
|
||||
#~ msgstr "Sortiere nach Memo"
|
||||
msgid "Sort by Memo"
|
||||
msgstr "Sortiere nach Memo"
|
||||
|
||||
#~ msgid "Sort by Num"
|
||||
#~ msgstr "Sortiere nach Nummer"
|
||||
msgid "Sort by Num"
|
||||
msgstr "Sortiere nach Nummer"
|
||||
|
||||
#~ msgid "Standard order"
|
||||
#~ msgstr "Standard Order"
|
||||
msgid "Standard order"
|
||||
msgstr "Standard Order"
|
||||
|
||||
#~ msgid "Blank"
|
||||
#~ msgstr "Leer"
|
||||
msgid "Blank"
|
||||
msgstr "Leer"
|
||||
|
||||
#~ msgid "Cancel"
|
||||
#~ msgstr "Abbrechen"
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#~ msgid "Close"
|
||||
#~ msgstr "Schliessen"
|
||||
msgid "Close"
|
||||
msgstr "Schliessen"
|
||||
|
||||
#~ msgid "Delete"
|
||||
#~ msgstr "Löschen"
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#~ msgid "Duplicate"
|
||||
#~ msgstr "Wiederholen"
|
||||
msgid "Duplicate"
|
||||
msgstr "Wiederholen"
|
||||
|
||||
#~ msgid "Edit"
|
||||
#~ msgstr "Bearbeiten"
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#~ msgid "Exit"
|
||||
#~ msgstr "Beenden"
|
||||
msgid "Exit"
|
||||
msgstr "Beenden"
|
||||
|
||||
#~ msgid "Import"
|
||||
#~ msgstr "QIF-File importieren"
|
||||
msgid "Import"
|
||||
msgstr "QIF-File importieren"
|
||||
|
||||
#~ msgid "Jump"
|
||||
#~ msgstr "Sprung"
|
||||
msgid "Jump"
|
||||
msgstr "Sprung"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Neu"
|
||||
msgid "New"
|
||||
msgstr "Neu"
|
||||
|
||||
#~ msgid "Open"
|
||||
#~ msgstr "Öffnen"
|
||||
msgid "Open"
|
||||
msgstr "Öffnen"
|
||||
|
||||
#~ msgid "Record"
|
||||
#~ msgstr "Eintragen"
|
||||
msgid "Record"
|
||||
msgstr "Eintragen"
|
||||
|
||||
#~ msgid "Save"
|
||||
#~ msgstr "Sichern"
|
||||
msgid "Save"
|
||||
msgstr "Sichern"
|
||||
|
||||
#~ msgid "Transfer"
|
||||
#~ msgstr "Transfer"
|
||||
msgid "Transfer"
|
||||
msgstr "Transfer"
|
||||
|
||||
#~ msgid "Show transactions on multiple lines with one line for each split"
|
||||
#~ msgstr "Transaktionen im Multi-Mode mit einer Zeile pro Split anzeigen"
|
||||
msgid "Show transactions on multiple lines with one line for each split"
|
||||
msgstr "Transaktionen im Multi-Mode mit einer Zeile pro Split anzeigen"
|
||||
|
||||
#~ msgid "__gui"
|
||||
#~ msgstr "__gui"
|
||||
msgid "__gui"
|
||||
msgstr "__gui"
|
||||
|
||||
#~ msgid "Print Dialog"
|
||||
#~ msgstr "Dialog ausdrucken"
|
||||
msgid "Print Dialog"
|
||||
msgstr "Dialog ausdrucken"
|
||||
|
||||
#~ msgid "Failed to load QIF file. Are you sure it's a QIF file?"
|
||||
#~ msgstr ""
|
||||
#~ "QIF-Import fehlgeschlagen.Sind sie sicher, dass es eine QIF-Datei ist?"
|
||||
msgid "Failed to load QIF file. Are you sure it's a QIF file?"
|
||||
msgstr ""
|
||||
"QIF-Import fehlgeschlagen.Sind sie sicher, dass es eine QIF-Datei ist?"
|
||||
|
@ -2070,10 +2070,10 @@ xaccSRLoadRegister (SplitRegister *reg, Split **slist,
|
||||
gncBoolean dynamic;
|
||||
|
||||
unsigned int changed;
|
||||
int save_phys_col;
|
||||
int type, style;
|
||||
int phys_row;
|
||||
int vrow;
|
||||
int type, style;
|
||||
int save_phys_col;
|
||||
int i;
|
||||
|
||||
xaccSplitRegisterConfigColors (reg);
|
||||
@ -2107,6 +2107,8 @@ xaccSRLoadRegister (SplitRegister *reg, Split **slist,
|
||||
/* paranoia */
|
||||
if (save_phys_col < 0)
|
||||
save_phys_col = 0;
|
||||
if (save_phys_col >= table->num_phys_cols)
|
||||
save_phys_col = table->num_phys_cols - 1;
|
||||
|
||||
/* count the number of rows, looking for the place we want to go. */
|
||||
found_split = xaccSRCountRows (reg, slist, find_trans, find_split);
|
||||
|
40
src/backup.txt
Normal file
40
src/backup.txt
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
Currently, backups and log files are automatically stored by the engine
|
||||
with date/time stamps every time the user hits 'save' in the gui.
|
||||
|
||||
(The actual file writing is done by xaccWriteAccountGroupFile() in
|
||||
in src/engine/FileIOP.h)
|
||||
|
||||
Proposed design changes:
|
||||
------------------------
|
||||
a) Allow user to configure which directory backups should be put into.
|
||||
(currently, this is same as current directory). Requires changes to
|
||||
engine FileIOP.h as well as GUI.
|
||||
|
||||
One possible default is ~/.gnucash/data/ (Which is supposed to
|
||||
be the place where files are saved if no directory is specified.!?)
|
||||
|
||||
b) Prompt the user to make a backup every third save. Make this number
|
||||
configurable. If no default backup path set, prompt to set it,
|
||||
with suggested path being ~/.gnucash/backups/
|
||||
|
||||
c) If save format was XML text, then could use RCS ...
|
||||
Alternately,
|
||||
For those that don't know, xdelta is like RCS, but it's designed to
|
||||
handle any kind of data, including binary, is supposed to work really
|
||||
well, and transparently handles gzipped data with some form of MD5sum
|
||||
verification. It's also available in library form. Like RCS it would
|
||||
give us the ability to do cool things like snapshot the data every so
|
||||
often for nearly no cost. Want to see what things looked like 6
|
||||
months ago? Just enter the right date into the "time-warp" dialog :>
|
||||
|
||||
For those on Debian systems, just install the xdelta and
|
||||
libxdelta2-dev packages. Others can get the source from
|
||||
ftp://www.xcf.berkeley.edu/pub/xdelta/, or just go to
|
||||
ftp.debian.org:/pub/debian/dists/unstable/main/source/utils/xdelta*.tar.gz
|
||||
|
||||
|
||||
d) Could monitor how many changes (records altered) the user has made,
|
||||
and could prompt for more frequent saves if lots of editing has
|
||||
ocurred...
|
||||
|
@ -57,6 +57,7 @@
|
||||
|
||||
;; like map, but restricted to one dimension, and
|
||||
;; guaranteed to have inorder semantics.
|
||||
;; note: map-in-order is in a SRFI.
|
||||
(define (gnc:inorder-map the-list fn)
|
||||
(let loop ((rest the-list)
|
||||
(collected '()))
|
||||
|
@ -3,26 +3,32 @@
|
||||
;; Report on budget
|
||||
;; Bryan Larsen (blarsen@ada-works.com)
|
||||
|
||||
;; situations I want to handle
|
||||
;; lunch M-F -- funny period
|
||||
;; xmas gifts & birthday gifts in same budget line
|
||||
;; car repairs -- contingency
|
||||
;; car fuel-ups -- known amount, variable period
|
||||
;; paychecks & rent payments -- specific dates
|
||||
;; TODO
|
||||
;; properly handle income as well
|
||||
;; proper totals
|
||||
;; "upcoming/overdue bills" report
|
||||
;; druids to enter budget
|
||||
;; save/load budget
|
||||
;; internationalization
|
||||
;; speedup: replace linear search with hash,
|
||||
;; create structure functions on load,
|
||||
;; move subexpressions outside loops
|
||||
;; clean up report
|
||||
;; graph budget progress
|
||||
|
||||
(require 'sort)
|
||||
(require 'record)
|
||||
(gnc:depend "report-utilities.scm")
|
||||
(gnc:depend "html-generator.scm")
|
||||
(gnc:depend "date-utilities.scm")
|
||||
(gnc:depend "acc-create.scm")
|
||||
|
||||
;; budget types
|
||||
;(define gnc:budget-recurring 1) ; regular, recurring budget expenses
|
||||
; that happen once per period
|
||||
;(define gnc:budget-contingency 2) ; a budget item where you estimate a
|
||||
; value over a long period for
|
||||
; unexpected expenses.
|
||||
|
||||
;;(define gnc:budget-recurring 1) ; regular, recurring budget expenses
|
||||
;; that happen once per period
|
||||
;;(define gnc:budget-contingency 2) ; a budget item where you estimate a
|
||||
;; value over a long period for
|
||||
;; unexpected expenses.
|
||||
;; convert a date to a defined fraction
|
||||
(define (gnc:date-to-N-fraction caltime type)
|
||||
(case type
|
||||
@ -126,92 +132,151 @@
|
||||
(define budget-entry-structure
|
||||
(make-record-type
|
||||
"budget-entry-structure"
|
||||
'(description amount accounts period period-type budget-type
|
||||
window-start window-end)))
|
||||
'(description accounts subentries)))
|
||||
|
||||
(define (make-budget-entry desc amt acct per ptype budget-type start end)
|
||||
(define budget-subentry-structure
|
||||
(make-record-type
|
||||
"budget-subentry-structure"
|
||||
'(description amount period period-type mechanism)))
|
||||
|
||||
(define budget-recurring-mechanism-structure
|
||||
(make-record-type
|
||||
"budget-recurring-mechanism-structure"
|
||||
'()))
|
||||
|
||||
(define budget-bill-mechanism-structure
|
||||
(make-record-type
|
||||
"budget-bill-mechanism-structure"
|
||||
'(window-start-day window-end-day)))
|
||||
|
||||
(define budget-contingency-mechanism-structure
|
||||
(make-record-type
|
||||
"budget-contingency-mechanism-structure"
|
||||
'()))
|
||||
|
||||
(define (make-budget-entry desc acct subentries)
|
||||
((record-constructor budget-entry-structure)
|
||||
desc amt acct per ptype budget-type start end))
|
||||
desc acct subentries))
|
||||
|
||||
(define (make-budget-subentry desc amt per ptype mech)
|
||||
((record-constructor budget-subentry-structure)
|
||||
desc amt per ptype mech))
|
||||
|
||||
(define (make-recurring-mechanism)
|
||||
((record-constructor budget-recurring-mechanism-structure)))
|
||||
|
||||
(define (make-bill-mechanism window-start-day window-end-day)
|
||||
((record-constructor budget-bill-mechanism-structure)
|
||||
window-start-day window-end-day))
|
||||
|
||||
(define (make-contingency-mechanism)
|
||||
((record-constructor budget-contingency-mechanism-structure)))
|
||||
|
||||
(define gnc:budget-entries
|
||||
(list
|
||||
(make-budget-entry "lunch" 8 '("Food:Lunch") 1
|
||||
'gnc:budget-day 'gnc:budget-recurring 1 0)
|
||||
(make-budget-entry "junk food" 0.50 '("Food:Junk") 1
|
||||
'gnc:budget-day 'gnc:budget-recurring 1 0)
|
||||
(make-budget-entry "car repairs" 2500 '("Car:Repairs") 5
|
||||
'gnc:budget-year 'gnc:budget-contingency 1 0)
|
||||
(make-budget-entry "rent" 312.50 '("Household:Rent") 1
|
||||
'gnc:budget-month 'gnc:budget-trigger -1 2)
|
||||
(make-budget-entry "car payments" 374.80 '("Car:Loan Payments") 1
|
||||
'gnc:budget-month 'gnc:budget-trigger 13 17)
|
||||
(make-budget-entry "car 2" 374.80 '("Car:Loan Payments") 1
|
||||
'gnc:budget-month 'gnc:budget-trigger 20 20)))
|
||||
;; first line is always the "other" collector.
|
||||
(make-budget-entry "other" '()
|
||||
(list
|
||||
(make-budget-subentry "" 3 1 'gnc:budget-day
|
||||
(make-recurring-mechanism))))
|
||||
(make-budget-entry "lunch" '("Expense:Food:Lunch" "Expense:Food:Junk")
|
||||
(list
|
||||
(make-budget-subentry "" 8 1 'gnc:budget-day
|
||||
(make-recurring-mechanism))))
|
||||
(make-budget-entry "car repairs" '("Expense:Car:Repairs")
|
||||
(list
|
||||
(make-budget-subentry "contingency" 2500 5 'gnc:budget-year
|
||||
(make-contingency-mechanism))
|
||||
(make-budget-subentry "maintenance" 50 6 'gnc:budget-month
|
||||
(make-recurring-mechanism))))
|
||||
(make-budget-entry "rent" '("Expense:Household:Rent")
|
||||
(list
|
||||
(make-budget-subentry "" 312.50 1 'gnc:budget-month
|
||||
(make-bill-mechanism 0 2))))
|
||||
(make-budget-entry "car payments" '("Expense:Car:Loan Payments")
|
||||
(list
|
||||
(make-budget-subentry "" 374.80 1 'gnc:budget-month
|
||||
(make-bill-mechanism 13 17))))))
|
||||
|
||||
(define (budget-entry-get-description budget-entry)
|
||||
((record-accessor budget-entry-structure 'description) budget-entry))
|
||||
|
||||
(define (budget-entry-get-amount budget-entry)
|
||||
((record-accessor budget-entry-structure 'amount) budget-entry))
|
||||
(define (budget-subentry-get-description subentry)
|
||||
((record-accessor budget-subentry-structure 'description) subentry))
|
||||
|
||||
(define (budget-entry-get-accounts budget-entry)
|
||||
((record-accessor budget-entry-structure 'accounts) budget-entry))
|
||||
|
||||
(define (budget-entry-get-period budget-entry)
|
||||
((record-accessor budget-entry-structure 'period) budget-entry))
|
||||
(define (budget-entry-get-subentries budget-entry)
|
||||
((record-accessor budget-entry-structure 'subentries) budget-entry))
|
||||
|
||||
(define (budget-entry-get-period-type budget-entry)
|
||||
((record-accessor budget-entry-structure 'period-type) budget-entry))
|
||||
(define (budget-subentry-get-amount subentry)
|
||||
((record-accessor budget-subentry-structure 'amount) subentry))
|
||||
|
||||
(define (budget-entry-get-window-start budget-entry)
|
||||
((record-accessor budget-entry-structure 'window-start) budget-entry))
|
||||
(define (budget-subentry-get-period subentry)
|
||||
((record-accessor budget-subentry-structure 'period) subentry))
|
||||
|
||||
(define (budget-entry-get-window-end budget-entry)
|
||||
((record-accessor budget-entry-structure 'window-end) budget-entry))
|
||||
(define (budget-subentry-get-period-type subentry)
|
||||
((record-accessor budget-subentry-structure 'period-type) subentry))
|
||||
|
||||
(define (budget-bill-get-window-start-day bill)
|
||||
((record-accessor budget-bill-mechanism-structure 'window-start-day) bill))
|
||||
|
||||
(define (budget-bill-get-window-end-day bill)
|
||||
((record-accessor budget-bill-mechanism-structure 'window-end-day) bill))
|
||||
|
||||
(define (budget-subentry-get-mechanism subentry)
|
||||
((record-accessor budget-subentry-structure 'mechanism) subentry))
|
||||
|
||||
(define (budget-description-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-generic-cell #f #f #f
|
||||
(budget-entry-get-description
|
||||
(budget-line-get-entry budget-line)))))
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-generic-cell #f #f #f (budget-entry-get-description entry))))
|
||||
|
||||
(define (budget-amount-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-currency-cell #f #f (budget-entry-get-amount
|
||||
(budget-line-get-entry budget-line)))))
|
||||
(define (budget-sub-description-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-generic-cell #f #f #f (budget-subentry-get-description subentry))))
|
||||
|
||||
;; fixme -- only returns the first account in the list
|
||||
(define (budget-accounts-html-proc)
|
||||
(lambda (budget-line)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-generic-cell
|
||||
#f #f #f
|
||||
(car (budget-entry-get-accounts (budget-line-get-entry budget-line))))))
|
||||
(list->string (budget-entry-get-accounts entry)))))
|
||||
|
||||
(define (budget-amount-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-subentry-get-amount subentry))))
|
||||
|
||||
(define (budget-period-html-proc)
|
||||
(lambda (budget-line)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-number-cell
|
||||
#f #f "%i" (budget-entry-get-period (budget-line-get-entry budget-line)))))
|
||||
#f #f "%i" (budget-subentry-get-period subentry))))
|
||||
|
||||
(define (budget-period-type-html-proc)
|
||||
(lambda (budget-line)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-generic-cell
|
||||
#f #f #f
|
||||
(gnc:date-describe-type
|
||||
(budget-entry-get-period-type (budget-line-get-entry budget-line))))))
|
||||
(budget-subentry-get-period-type subentry)))))
|
||||
|
||||
(define (budget-window-start-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-number-cell
|
||||
#f #f "%i" (budget-entry-get-window-start (budget-line-get-entry budget-line)))))
|
||||
(define (budget-window-start-day-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(let ((mechanism (budget-subentry-get-mechanism subentry)))
|
||||
(if ((record-predicate budget-bill-mechanism-structure) mechanism)
|
||||
(html-number-cell
|
||||
#f #f "%i" (budget-bill-get-window-start-day mechanism))
|
||||
(html-generic-cell #f #f #f "")))))
|
||||
|
||||
(define (budget-window-end-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-number-cell
|
||||
#f #f "%i" (budget-entry-get-window-end (budget-line-get-entry budget-line)))))
|
||||
(define (budget-window-end-day-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(let ((mechanism (budget-subentry-get-mechanism subentry)))
|
||||
(if ((record-predicate budget-bill-mechanism-structure) mechanism)
|
||||
(html-number-cell
|
||||
#f #f "%i" (budget-bill-get-window-end-day mechanism))
|
||||
(html-generic-cell #f #f #f "")))))
|
||||
|
||||
;; budget report: a vector with indexes corresponding to the budget
|
||||
;; 0 - actual: the amount spend / recieved
|
||||
;; 1 - budgeted: the budgeted amount. Simply the periods * amount
|
||||
;; 1 - nominal: the nominal budgeted amount. Simply the periods * amount
|
||||
;; 2 - num-periods: the number of periods for the line in the report
|
||||
;; 3 - mimimum-expected: minimum you expected to spend during the
|
||||
;; report period
|
||||
@ -222,83 +287,88 @@
|
||||
(define budget-report-structure
|
||||
(make-record-type
|
||||
"budget-report-structure"
|
||||
'(actual budgeted num-periods minimum-expected maximum-expected
|
||||
time-remaining num-triggers-upper num-triggers-lower)))
|
||||
'(actual nominal minimum-expected maximum-expected subreports)))
|
||||
|
||||
(define (make-empty-budget-report)
|
||||
(define budget-subreport-structure
|
||||
(make-record-type
|
||||
"budget-subreport-structure"
|
||||
'(nominal minimum-expected maximum-expected)))
|
||||
|
||||
(define (make-empty-budget-report entry)
|
||||
((record-constructor budget-report-structure)
|
||||
0 0 0 0 0 0 0 0))
|
||||
0 0 0 0
|
||||
(map
|
||||
(lambda (subentry)
|
||||
(make-empty-subreport))
|
||||
(budget-entry-get-subentries entry))))
|
||||
|
||||
(define (make-empty-subreport)
|
||||
((record-constructor budget-subreport-structure)
|
||||
0 0 0))
|
||||
|
||||
(define (budget-report-get-subreports brep)
|
||||
((record-accessor budget-report-structure 'subreports) brep))
|
||||
|
||||
(define (budget-report-get-actual brep)
|
||||
((record-accessor budget-report-structure 'actual) brep))
|
||||
|
||||
(define (budget-report-get-budgeted brep)
|
||||
((record-accessor budget-report-structure 'budgeted) brep))
|
||||
(define (budget-report-get-nominal brep)
|
||||
((record-accessor budget-report-structure 'nominal) brep))
|
||||
|
||||
(define (budget-report-get-num-periods brep)
|
||||
((record-accessor budget-report-structure 'num-periods) brep))
|
||||
(define (budget-subreport-get-nominal brep)
|
||||
((record-accessor budget-subreport-structure 'nominal) brep))
|
||||
|
||||
(define (budget-report-get-minimum-expected brep)
|
||||
((record-accessor budget-report-structure 'minimum-expected) brep))
|
||||
|
||||
(define (budget-subreport-get-minimum-expected brep)
|
||||
((record-accessor budget-subreport-structure 'minimum-expected) brep))
|
||||
|
||||
(define (budget-report-get-maximum-expected brep)
|
||||
((record-accessor budget-report-structure 'maximum-expected) brep))
|
||||
|
||||
(define (budget-report-get-time-remaining brep)
|
||||
((record-accessor budget-report-structure 'time-remaining) brep))
|
||||
|
||||
(define (budget-report-get-num-triggers-upper brep)
|
||||
((record-accessor budget-report-structure 'num-triggers-upper) brep))
|
||||
|
||||
(define (budget-report-get-num-triggers-lower brep)
|
||||
((record-accessor budget-report-structure 'num-triggers-lower) brep))
|
||||
(define (budget-subreport-get-maximum-expected brep)
|
||||
((record-accessor budget-subreport-structure 'maximum-expected) brep))
|
||||
|
||||
(define (budget-actual-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-currency-cell #f #f (budget-report-get-actual
|
||||
(budget-line-get-report budget-line)))))
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-report-get-actual report))))
|
||||
|
||||
(define (budget-budgeted-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-currency-cell #f #f (budget-report-get-budgeted
|
||||
(budget-line-get-report budget-line)))))
|
||||
|
||||
(define (budget-num-periods-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-number-cell #f #f "%.6f" (budget-report-get-num-periods
|
||||
(budget-line-get-report budget-line)))))
|
||||
(define (budget-nominal-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-report-get-nominal report))))
|
||||
|
||||
(define (budget-minimum-expected-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-currency-cell #f #f (budget-report-get-minimum-expected
|
||||
(budget-line-get-report budget-line)))))
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-report-get-minimum-expected report))))
|
||||
|
||||
(define (budget-maximum-expected-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-currency-cell #f #f (budget-report-get-maximum-expected
|
||||
(budget-line-get-report budget-line)))))
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-report-get-maximum-expected report))))
|
||||
|
||||
(define (budget-time-remaining-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-number-cell #f #f "%.1f" (budget-report-get-time-remaining
|
||||
(budget-line-get-report budget-line)))))
|
||||
(define (budget-sub-nominal-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-subreport-get-nominal subreport))))
|
||||
|
||||
(define (budget-num-triggers-upper-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-number-cell #f #f "%.0f" (budget-report-get-num-triggers-upper
|
||||
(budget-line-get-report budget-line)))))
|
||||
(define (budget-sub-minimum-expected-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-subreport-get-minimum-expected subreport))))
|
||||
|
||||
(define (budget-num-triggers-lower-html-proc)
|
||||
(lambda (budget-line)
|
||||
(html-number-cell #f #f "%.0f" (budget-report-get-num-triggers-lower
|
||||
(budget-line-get-report budget-line)))))
|
||||
(define (budget-sub-maximum-expected-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-currency-cell #f #f (budget-subreport-get-maximum-expected subreport))))
|
||||
|
||||
(define (budget-null-html-proc)
|
||||
(lambda (entry subentry report subreport)
|
||||
(html-generic-cell
|
||||
#f #f #f "")))
|
||||
|
||||
(define budget-line-structure
|
||||
(make-record-type "budget-line-structure"
|
||||
'(entry report)))
|
||||
|
||||
(define (make-budget-line entry report)
|
||||
((record-constructor budget-line-structure) entry report))
|
||||
((record-constructor budget-line-structure) entry report))
|
||||
|
||||
(define (budget-line-get-entry line)
|
||||
((record-accessor budget-line-structure 'entry) line))
|
||||
@ -306,6 +376,53 @@
|
||||
(define (budget-line-get-report line)
|
||||
((record-accessor budget-line-structure 'report) line))
|
||||
|
||||
(define report-spec-structure
|
||||
(make-record-type
|
||||
"report-spec-structure"
|
||||
'(header format-proc type)))
|
||||
|
||||
(define (make-report-spec header format-proc type)
|
||||
((record-constructor report-spec-structure)
|
||||
header format-proc type))
|
||||
|
||||
(define (report-spec-get-header spec)
|
||||
((record-accessor report-spec-structure 'header) spec))
|
||||
|
||||
(define (report-spec-get-format-proc spec)
|
||||
((record-accessor report-spec-structure 'format-proc) spec))
|
||||
|
||||
(define (report-spec-get-type spec)
|
||||
((record-accessor report-spec-structure 'type) spec))
|
||||
|
||||
(define (budget-line-html line report-specs)
|
||||
(let ((entry (budget-line-get-entry line))
|
||||
(report (budget-line-get-report line)))
|
||||
;;(map-in-order
|
||||
(map
|
||||
(lambda (subentry subreport)
|
||||
(html-table-row-manual
|
||||
(map
|
||||
(lambda (specs)
|
||||
(case (report-spec-get-type specs)
|
||||
((gnc:report-all)
|
||||
((report-spec-get-format-proc specs)
|
||||
entry subentry report subreport))
|
||||
((gnc:report-first)
|
||||
(if (eqv? subreport (car (budget-report-get-subreports report)))
|
||||
((report-spec-get-format-proc specs)
|
||||
entry subentry report subreport)
|
||||
((budget-null-html-proc)
|
||||
entry subentry report subreport)))
|
||||
((gnc:report-last)
|
||||
(if (= (cdr subentry) '())
|
||||
((report-spec-get-format-proc specs)
|
||||
entry subentry report subreport)
|
||||
((budget-null-html-proc)
|
||||
entry subentry report subreport)))
|
||||
(else (gnc:debug "budget-line-html: invalid type"))))
|
||||
report-specs)))
|
||||
(budget-entry-get-subentries entry)
|
||||
(budget-report-get-subreports report))))
|
||||
|
||||
;; add a value to the budget accumulator
|
||||
(define (budget-report-accumulate-actual! value budget-line)
|
||||
@ -313,56 +430,90 @@
|
||||
(budget-line-get-report budget-line)
|
||||
(+ value (budget-report-get-actual (budget-line-get-report budget-line)))))
|
||||
|
||||
;; calculate the # of periods on a budget line.
|
||||
;; dates are in # seconds after 1970
|
||||
(define (budget-calculate-periods! budget-line begin-date end-date)
|
||||
(let ((entry (budget-line-get-entry budget-line)))
|
||||
((record-modifier budget-report-structure 'num-periods)
|
||||
(budget-line-get-report budget-line)
|
||||
(/ (gnc:date-N-delta begin-date end-date
|
||||
(budget-entry-get-period-type entry))
|
||||
(budget-entry-get-period entry)))))
|
||||
(define (budget-subreport-set-min-expected! subreport min-expected)
|
||||
((record-modifier budget-subreport-structure 'minimum-expected)
|
||||
subreport min-expected))
|
||||
|
||||
;; calculate the budgeted value.
|
||||
;; dependency: budget-calculate-periods!
|
||||
(define (budget-calculate-budgeted! budget-line)
|
||||
((record-modifier budget-report-structure 'budgeted)
|
||||
(define (budget-subreport-set-max-expected! subreport max-expected)
|
||||
((record-modifier budget-subreport-structure 'maximum-expected)
|
||||
subreport max-expected))
|
||||
|
||||
(define (budget-report-accumulate-min-expected! report min-expected)
|
||||
((record-modifier budget-report-structure 'minimum-expected) report
|
||||
(+ min-expected (budget-report-get-minimum-expected report))))
|
||||
|
||||
(define (budget-report-accumulate-max-expected! report max-expected)
|
||||
((record-modifier budget-report-structure 'maximum-expected) report
|
||||
(+ max-expected (budget-report-get-maximum-expected report))))
|
||||
|
||||
;; return the # of budget periods over the report period
|
||||
(define (budget-num-periods subentry begin-date end-date)
|
||||
(/ (gnc:date-N-delta begin-date end-date
|
||||
(budget-subentry-get-period-type subentry))
|
||||
(budget-subentry-get-period subentry)))
|
||||
|
||||
|
||||
(define (budget-calculate-expected! budget-line begin-date end-date)
|
||||
(let ((entry (budget-line-get-entry budget-line))
|
||||
(report (budget-line-get-report budget-line)))
|
||||
(for-each
|
||||
(lambda (subentry subreport)
|
||||
(let ((mechanism (budget-subentry-get-mechanism subentry)))
|
||||
(cond (((record-predicate
|
||||
budget-bill-mechanism-structure) mechanism)
|
||||
(budget-calculate-bill!
|
||||
subentry subreport mechanism begin-date end-date))
|
||||
(((record-predicate
|
||||
budget-recurring-mechanism-structure) mechanism)
|
||||
(budget-calculate-recurring!
|
||||
subentry subreport mechanism begin-date end-date))
|
||||
(((record-predicate
|
||||
budget-contingency-mechanism-structure) mechanism)
|
||||
(budget-calculate-contingency!
|
||||
subentry subreport mechanism begin-date end-date))
|
||||
(else (gnc:debug "invalid mechanism!")))
|
||||
(budget-report-accumulate-min-expected!
|
||||
report (budget-subreport-get-minimum-expected subreport))
|
||||
(budget-report-accumulate-max-expected!
|
||||
report (budget-subreport-get-maximum-expected subreport))))
|
||||
(budget-entry-get-subentries entry)
|
||||
(budget-report-get-subreports report))))
|
||||
|
||||
;; calculate the nominal value.
|
||||
(define (budget-calculate-nominal! budget-line begin-date end-date)
|
||||
((record-modifier budget-report-structure 'nominal)
|
||||
(budget-line-get-report budget-line)
|
||||
(* (budget-entry-get-amount (budget-line-get-entry budget-line))
|
||||
(budget-report-get-num-periods (budget-line-get-report budget-line)))))
|
||||
(apply +
|
||||
(map
|
||||
(lambda (subentry subreport)
|
||||
(let ((t (* (budget-subentry-get-amount subentry)
|
||||
(budget-num-periods subentry begin-date end-date))))
|
||||
((record-modifier budget-subreport-structure 'nominal)
|
||||
subreport t)
|
||||
t))
|
||||
(budget-entry-get-subentries (budget-line-get-entry budget-line))
|
||||
(budget-report-get-subreports (budget-line-get-report budget-line))))))
|
||||
|
||||
;; calculate the values for minimum-expected and maxmimum-expected
|
||||
;; dependency: budget-calculate-periods!
|
||||
(define (budget-calculate-expected! budget-line)
|
||||
(let ((brep (budget-line-get-report budget-line))
|
||||
(entry (budget-line-get-entry budget-line)))
|
||||
; fixme: contingency type budget entries may have a lower minimum
|
||||
((record-modifier budget-report-structure 'minimum-expected) brep
|
||||
(* (budget-entry-get-amount entry)
|
||||
(floor (budget-report-get-num-periods brep))))
|
||||
((record-modifier budget-report-structure 'maximum-expected) brep
|
||||
(* (budget-entry-get-amount entry)
|
||||
(ceiling (budget-report-get-num-periods brep))))))
|
||||
(define (budget-calculate-recurring! subentry subreport mechanism begin end)
|
||||
(let ((np (budget-num-periods subentry begin end))
|
||||
(amount (budget-subentry-get-amount subentry)))
|
||||
(budget-subreport-set-min-expected! subreport (* amount (floor np)))
|
||||
(budget-subreport-set-max-expected! subreport (* amount (ceiling np)))))
|
||||
|
||||
;; calculate the amount of time remaining in the budget period
|
||||
;; dependency: budget-calculate-periods!
|
||||
(define (budget-calculate-time-remaining! budget-line)
|
||||
(let* ((entry (budget-line-get-entry budget-line))
|
||||
(brep (budget-line-get-report budget-line))
|
||||
(periods (budget-report-get-num-periods brep)))
|
||||
((record-modifier budget-report-structure 'time-remaining) brep
|
||||
(* (- (ceiling periods) periods)
|
||||
(budget-entry-get-period entry)))))
|
||||
(define (budget-calculate-contingency! subentry subreport mechanism begin end)
|
||||
(let ((np (budget-num-periods subentry begin end))
|
||||
(amount (budget-subentry-get-amount subentry)))
|
||||
(let ((min
|
||||
(max 0 (* (- np 1.0) amount))))
|
||||
(budget-subreport-set-min-expected! subreport min)
|
||||
(budget-subreport-set-max-expected! subreport (+ min amount)))))
|
||||
|
||||
;; calculate the number of times the trigger window occurs in the budget
|
||||
;; period
|
||||
(define (budget-calculate-num-triggers! budget-line begin-date end-date)
|
||||
(let ((entry (budget-line-get-entry budget-line)))
|
||||
(let ((brep (budget-line-get-report budget-line))
|
||||
(N-type (budget-entry-get-period-type entry))
|
||||
(window-start (budget-entry-get-window-start entry))
|
||||
(window-end (budget-entry-get-window-end entry))
|
||||
(psize (budget-entry-get-period entry)))
|
||||
(define (budget-calculate-bill! subentry subreport mechanism begin-date end-date)
|
||||
(let ((N-type (budget-subentry-get-period-type subentry))
|
||||
(window-start (budget-bill-get-window-start-day mechanism))
|
||||
(window-end (budget-bill-get-window-end-day mechanism))
|
||||
(psize (budget-subentry-get-period subentry))
|
||||
(amount (budget-subentry-get-amount subentry)))
|
||||
; convert negative numbers to positive numbers
|
||||
(let ((trig-start-A (if (> window-start 0)
|
||||
window-start
|
||||
@ -431,26 +582,33 @@
|
||||
(floor (/ (gnc:date-to-N-fraction
|
||||
begin-date N-type) psize))))))))
|
||||
; now save 'em into the record
|
||||
((record-modifier budget-report-structure 'num-triggers-lower) brep
|
||||
sure)
|
||||
((record-modifier budget-report-structure 'num-triggers-upper) brep
|
||||
(+ sure possible))))))
|
||||
(budget-subreport-set-min-expected! subreport
|
||||
(* amount sure))
|
||||
(budget-subreport-set-max-expected! subreport
|
||||
(* amount (+ sure possible))))))
|
||||
|
||||
;; given an account name, return the budget line
|
||||
;; return #f if there is no budget line for that account
|
||||
(define (budget-get-line account-name budget)
|
||||
(cond ((null? budget) #f)
|
||||
(else
|
||||
(let loop2
|
||||
((accounts (budget-entry-get-accounts
|
||||
(budget-line-get-entry (car budget)))))
|
||||
(cond ((null? accounts) #f)
|
||||
(else
|
||||
(cond ((or (string=? account-name (car accounts))
|
||||
(loop2 (cdr accounts)))
|
||||
(car budget))
|
||||
(else
|
||||
(budget-get-line account-name (cdr budget))))))))))
|
||||
(define (budget-get-line account-name budg)
|
||||
(let loop1 ((budget budg))
|
||||
(cond ((null? budget) #f)
|
||||
(else
|
||||
(cond ((budget-get-line-2 account-name (car budget))
|
||||
(car budget))
|
||||
(else (loop1 (cdr budget))))))))
|
||||
|
||||
;; I should be able to put this inside budget-get-line, but for some
|
||||
;; reason, it screws up.
|
||||
(define (budget-get-line-2 account-name budget-line)
|
||||
(let loop2
|
||||
((accounts (budget-entry-get-accounts
|
||||
(budget-line-get-entry budget-line))))
|
||||
(cond ((null? accounts) #f)
|
||||
(else
|
||||
(cond ((or (string=? account-name (car accounts))
|
||||
(loop2 (cdr accounts)))
|
||||
budget-line)
|
||||
(else #f))))))
|
||||
|
||||
|
||||
;; register a configuration option for the budget report
|
||||
@ -503,6 +661,73 @@
|
||||
"How are you doing on your budget?"))))
|
||||
gnc:*budget-report-options*)
|
||||
|
||||
(define gnc:budget-full-report-specs
|
||||
(list
|
||||
(make-report-spec
|
||||
"Description" (budget-description-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Accounts" (budget-accounts-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Description (subs)" (budget-sub-description-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Amount" (budget-amount-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Period" (budget-period-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"" (budget-period-type-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Window Start Day" (budget-window-start-day-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Window End Day" (budget-window-end-day-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Actual" (budget-actual-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Nominal (total)" (budget-nominal-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Nominal" (budget-sub-nominal-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Upper Limit (total)" (budget-maximum-expected-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Upper Limit" (budget-sub-maximum-expected-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Lower Limit (total)" (budget-minimum-expected-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Lower Limit" (budget-sub-minimum-expected-html-proc) 'gnc:report-all)))
|
||||
|
||||
(define gnc:budget-balance-report-specs
|
||||
(list
|
||||
(make-report-spec
|
||||
"Description" (budget-description-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Accounts" (budget-accounts-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Description (subs)" (budget-sub-description-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Amount" (budget-amount-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Period" (budget-period-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"" (budget-period-type-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Window Start Day" (budget-window-start-day-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Window End Day" (budget-window-end-day-html-proc) 'gnc:report-all)
|
||||
(make-report-spec
|
||||
"Nominal (total)" (budget-nominal-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Nominal" (budget-sub-nominal-html-proc) 'gnc:report-all)))
|
||||
|
||||
(define gnc:budget-status-report-specs
|
||||
(list
|
||||
(make-report-spec
|
||||
"Description" (budget-description-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Upper Limit" (budget-maximum-expected-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Lower Limit" (budget-minimum-expected-html-proc) 'gnc:report-first)
|
||||
(make-report-spec
|
||||
"Actual" (budget-actual-html-proc) 'gnc:report-first)))
|
||||
|
||||
(gnc:define-report
|
||||
;; version
|
||||
1
|
||||
@ -520,124 +745,59 @@
|
||||
(gnc:option-value enddate))))
|
||||
(budget-list (map
|
||||
(lambda (entry)
|
||||
(make-budget-line entry (make-empty-budget-report)))
|
||||
(make-budget-line entry (make-empty-budget-report entry)))
|
||||
gnc:budget-entries)))
|
||||
|
||||
(let loop ((group (gnc:get-current-group)))
|
||||
(if (not (pointer-token-null? group))
|
||||
(gnc:group-map-accounts
|
||||
(lambda (account)
|
||||
(let ((line
|
||||
(budget-get-line
|
||||
(gnc:account-get-full-name account)
|
||||
budget-list)))
|
||||
(if line
|
||||
(if (eqv? (gnc:account-type->symbol (gnc:account-get-type account))
|
||||
'EXPENSE)
|
||||
(let* ((line
|
||||
(budget-get-line
|
||||
(gnc:account-get-full-name account)
|
||||
budget-list))
|
||||
(line2 (if line line (car budget-list))))
|
||||
(gnc:for-each-split-in-account
|
||||
account
|
||||
(lambda (split)
|
||||
(budget-report-accumulate-actual!
|
||||
(gnc:split-get-value split) line))))
|
||||
(loop (gnc:account-get-children account))))
|
||||
(budget-report-accumulate-actual!
|
||||
(gnc:split-get-value split) line2)))))
|
||||
(loop (gnc:account-get-children account)))
|
||||
group)))
|
||||
|
||||
(for-each
|
||||
(lambda (line)
|
||||
(begin
|
||||
(budget-calculate-periods! line begin-date-secs end-date-secs)
|
||||
(budget-calculate-budgeted! line)
|
||||
(budget-calculate-expected! line)
|
||||
(budget-calculate-time-remaining! line)
|
||||
(budget-calculate-num-triggers! line begin-date-secs end-date-secs)))
|
||||
(budget-calculate-nominal! line begin-date-secs end-date-secs)
|
||||
(budget-calculate-expected! line begin-date-secs end-date-secs)))
|
||||
budget-list)
|
||||
|
||||
(let ((report-headers '())
|
||||
(report-procs '()))
|
||||
(case (gnc:option-value
|
||||
(gnc:lookup-option options "Report Options" "View"))
|
||||
((full)
|
||||
(set! report-headers (list
|
||||
"Description"
|
||||
"Amount"
|
||||
"Accounts"
|
||||
"Period"
|
||||
""
|
||||
"Actual"
|
||||
"Window Start"
|
||||
"Window End"
|
||||
"Budgeted"
|
||||
"Number of Periods"
|
||||
"Lower Limit"
|
||||
"Upper Limit"
|
||||
"Time Remaining"
|
||||
""
|
||||
"Num Triggers Upper"
|
||||
"Num Triggers Lower"))
|
||||
(set! report-procs (list
|
||||
budget-description-html-proc
|
||||
budget-amount-html-proc
|
||||
budget-accounts-html-proc
|
||||
budget-period-html-proc
|
||||
budget-period-type-html-proc
|
||||
budget-actual-html-proc
|
||||
budget-window-start-html-proc
|
||||
budget-window-end-html-proc
|
||||
budget-budgeted-html-proc
|
||||
budget-num-periods-html-proc
|
||||
budget-minimum-expected-html-proc
|
||||
budget-maximum-expected-html-proc
|
||||
budget-time-remaining-html-proc
|
||||
budget-period-type-html-proc
|
||||
budget-num-triggers-upper-html-proc
|
||||
budget-num-triggers-lower-html-proc)))
|
||||
((balancing)
|
||||
(set! report-headers (list
|
||||
"Description"
|
||||
"Accounts"
|
||||
"Period"
|
||||
""
|
||||
"Amount"
|
||||
"Number of Periods"
|
||||
"Budgeted"))
|
||||
(set! report-procs (list
|
||||
budget-description-html-proc
|
||||
budget-accounts-html-proc
|
||||
budget-period-html-proc
|
||||
budget-period-type-html-proc
|
||||
budget-amount-html-proc
|
||||
budget-num-periods-html-proc
|
||||
budget-budgeted-html-proc)))
|
||||
((status)
|
||||
(set! report-headers (list
|
||||
"Description"
|
||||
"Time Remaining"
|
||||
""
|
||||
"Lower Limit"
|
||||
"Upper Limit"
|
||||
"Actual"))
|
||||
(set! report-procs (list
|
||||
budget-description-html-proc
|
||||
budget-time-remaining-html-proc
|
||||
budget-period-type-html-proc
|
||||
budget-minimum-expected-html-proc
|
||||
budget-maximum-expected-html-proc
|
||||
budget-actual-html-proc)))
|
||||
(else
|
||||
(gnc:debug "Invalid view option")))
|
||||
(let ((report-specs
|
||||
(case (gnc:option-value
|
||||
(gnc:lookup-option options "Report Options" "View"))
|
||||
((full) gnc:budget-full-report-specs)
|
||||
((balancing) gnc:budget-balance-report-specs)
|
||||
((status) gnc:budget-status-report-specs)
|
||||
(else (gnc:debug (list "Invalid view option"
|
||||
(gnc:option-value
|
||||
(gnc:lookup-option options "Report Options" "View"))))))))
|
||||
(list
|
||||
(html-start-document)
|
||||
"<p>This is a budget report. It is very preliminary, but you may find it useful. To actually change the budget, currently you have to edit budget-report.scm.</p>"
|
||||
(html-start-table)
|
||||
(html-table-row-manual
|
||||
(map-in-order
|
||||
(lambda (item) (html-cell-header item))
|
||||
report-headers))
|
||||
(map-in-order
|
||||
;;(map-in-order
|
||||
(map
|
||||
(lambda (spec)
|
||||
(html-cell-header
|
||||
(report-spec-get-header spec)))
|
||||
report-specs))
|
||||
;;(map-in-order
|
||||
(map
|
||||
(lambda (line)
|
||||
(html-table-row-manual
|
||||
(map-in-order
|
||||
(lambda (proc)
|
||||
((proc) line))
|
||||
report-procs)))
|
||||
(budget-line-html line report-specs))
|
||||
budget-list)
|
||||
(html-end-table)
|
||||
(html-end-document))))))
|
||||
(html-end-document))))))
|
@ -1019,7 +1019,7 @@
|
||||
|
||||
|
||||
;;; We extend MAP to handle arguments of unequal length.
|
||||
(define map map-in-order)
|
||||
;; (define map map-in-order)
|
||||
|
||||
|
||||
;;; filter, remove, partition
|
||||
|
Loading…
Reference in New Issue
Block a user