rock_books 0.6.1 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -10
  3. data/RELEASE_NOTES.md +57 -10
  4. data/assets/fonts/JetBrainsMono-Medium.ttf +0 -0
  5. data/lib/rock_books/cmd_line/command_line_interface.rb +15 -24
  6. data/lib/rock_books/cmd_line/main.rb +1 -9
  7. data/lib/rock_books/documents/book_set.rb +5 -2
  8. data/lib/rock_books/documents/chart_of_accounts.rb +29 -12
  9. data/lib/rock_books/documents/journal.rb +3 -8
  10. data/lib/rock_books/documents/journal_entry.rb +7 -2
  11. data/lib/rock_books/documents/journal_entry_builder.rb +4 -0
  12. data/lib/rock_books/helpers/book_set_loader.rb +3 -3
  13. data/lib/rock_books/reports/balance_sheet.rb +9 -43
  14. data/lib/rock_books/reports/book_set_reporter.rb +138 -106
  15. data/lib/rock_books/reports/data/bs_is_data.rb +61 -0
  16. data/lib/rock_books/reports/data/bs_is_section_data.rb +30 -0
  17. data/lib/rock_books/reports/data/journal_data.rb +38 -0
  18. data/lib/rock_books/reports/data/multidoc_txn_by_account_data.rb +40 -0
  19. data/lib/rock_books/reports/data/multidoc_txn_report_data.rb +39 -0
  20. data/lib/rock_books/reports/data/receipts_report_data.rb +47 -0
  21. data/lib/rock_books/reports/data/tx_one_account_data.rb +37 -0
  22. data/lib/rock_books/reports/helpers/erb_helper.rb +21 -0
  23. data/lib/rock_books/reports/helpers/receipts_hyperlink_converter.rb +59 -0
  24. data/lib/rock_books/reports/helpers/text_report_helper.rb +144 -0
  25. data/lib/rock_books/reports/income_statement.rb +9 -47
  26. data/lib/rock_books/reports/index_html_page.rb +27 -0
  27. data/lib/rock_books/reports/journal_report.rb +82 -0
  28. data/lib/rock_books/reports/multidoc_txn_by_account_report.rb +32 -0
  29. data/lib/rock_books/reports/multidoc_txn_report.rb +25 -0
  30. data/lib/rock_books/reports/receipts_report.rb +6 -55
  31. data/lib/rock_books/reports/templates/html/index.html.erb +158 -0
  32. data/lib/rock_books/reports/templates/html/report_page.html.erb +25 -0
  33. data/lib/rock_books/reports/templates/text/_receipt_section.txt.erb +17 -0
  34. data/lib/rock_books/reports/templates/text/_totals.txt.erb +8 -0
  35. data/lib/rock_books/reports/templates/text/balance_sheet.txt.erb +23 -0
  36. data/lib/rock_books/reports/templates/text/income_statement.txt.erb +23 -0
  37. data/lib/rock_books/reports/templates/text/journal.txt.erb +23 -0
  38. data/lib/rock_books/reports/templates/text/multidoc_txn_by_account_report.txt.erb +31 -0
  39. data/lib/rock_books/reports/templates/text/multidoc_txn_report.txt.erb +25 -0
  40. data/lib/rock_books/reports/templates/text/receipts_report.txt.erb +16 -0
  41. data/lib/rock_books/reports/templates/text/tx_one_account.txt.erb +21 -0
  42. data/lib/rock_books/reports/tx_one_account.rb +10 -45
  43. data/lib/rock_books/types/account.rb +13 -1
  44. data/lib/rock_books/types/account_type.rb +18 -7
  45. data/lib/rock_books/version.rb +2 -1
  46. data/manual.md +13 -16
  47. data/rock_books.gemspec +2 -0
  48. metadata +57 -10
  49. data/lib/rock_books/helpers/html_helper.rb +0 -29
  50. data/lib/rock_books/reports/index.html.erb +0 -156
  51. data/lib/rock_books/reports/multidoc_transaction_report.rb +0 -66
  52. data/lib/rock_books/reports/receipts.html.erb +0 -54
  53. data/lib/rock_books/reports/reporter.rb +0 -118
  54. data/lib/rock_books/reports/transaction_report.rb +0 -105
  55. data/lib/rock_books/reports/tx_by_account.rb +0 -82
@@ -1,105 +0,0 @@
1
- require_relative 'reporter'
2
- require_relative 'report_context'
3
-
4
- module RockBooks
5
-
6
- class TransactionReport
7
-
8
- include Reporter
9
-
10
- attr_accessor :journal, :context
11
-
12
-
13
- def initialize(journal, report_context)
14
- @journal = journal
15
- @context = report_context
16
- end
17
-
18
-
19
- def generate_header
20
-
21
- code = journal.account_code
22
- name = journal.chart_of_accounts.name_for_code(code)
23
- title = "Transactions for Account ##{code} -- #{name}"
24
-
25
- lines = [banner_line]
26
- lines << center(context.entity || 'Unspecified Entity')
27
- lines << center(journal.title) if journal.title && journal.title.length > 0
28
- lines << center(title)
29
- lines << banner_line
30
- lines << ''
31
- lines << ''
32
- lines << ''
33
- lines.join("\n")
34
- end
35
-
36
-
37
- def format_entry_first_acct_amount(entry)
38
- entry.date.to_s \
39
- << ' ' \
40
- << format_acct_amount(entry.acct_amounts.last) \
41
- << "\n"
42
- end
43
-
44
-
45
- # Formats an entry like this, with entry description added on additional line(s) if it exists:
46
- # 2018-05-21 $120.00 701 Office Supplies
47
- def format_entry_no_split(entry)
48
- output = format_entry_first_acct_amount(entry)
49
-
50
- if entry.description && entry.description.length > 0
51
- output << entry.description
52
- end
53
- output
54
- end
55
-
56
-
57
- # Formats an entry like this, with entry description added on additional line(s) if it exists::
58
- # 2018-05-21 $120.00 95.00 701 Office Supplies
59
- # 25.00 751 Gift to Customer
60
- def format_entry_with_split(entry)
61
- output = format_entry_first_acct_amount(entry)
62
- indent = ' ' * 12
63
-
64
- entry.acct_amounts[1..-1].each do |acct_amount|
65
- output << indent << format_acct_amount(acct_amount) << "\n"
66
- end
67
-
68
- if entry.description && entry.description.length > 0
69
- output << entry.description
70
- end
71
- end
72
-
73
-
74
- def format_entry(entry)
75
- if entry.acct_amounts.size > 2
76
- format_entry_with_split(entry)
77
- else
78
- format_entry_no_split(entry)
79
- end
80
- end
81
-
82
-
83
- def generate_report(filter = nil)
84
- sio = StringIO.new
85
- sio << generate_header
86
-
87
- entries = journal.entries
88
- if filter
89
- entries = entries.select { |entry| filter.(entry) }
90
- end
91
-
92
- entries.each do |entry|
93
- sio << format_entry(entry) << "\n"
94
- end
95
- totals = AcctAmount.aggregate_amounts_by_account(JournalEntry.entries_acct_amounts(entries))
96
- sio << generate_and_format_totals('Totals', totals)
97
- sio.string
98
- end
99
-
100
-
101
- alias_method :to_s, :generate_report
102
- alias_method :call, :generate_report
103
- end
104
-
105
- end
@@ -1,82 +0,0 @@
1
- require_relative '../documents/chart_of_accounts'
2
- require_relative '../documents/journal'
3
- require_relative 'reporter'
4
- require_relative 'report_context'
5
-
6
- module RockBooks
7
-
8
- class TxByAccount
9
-
10
- include Reporter
11
-
12
- attr_accessor :context
13
-
14
-
15
- def initialize(report_context)
16
- @context = report_context
17
- end
18
-
19
-
20
- def generate_header
21
- lines = [banner_line]
22
- lines << center(context.entity || 'Unspecified Entity')
23
- lines << center("Transactions by Account")
24
- lines << banner_line
25
- lines << ''
26
- lines << ''
27
- lines << ''
28
- lines.join("\n")
29
- end
30
-
31
-
32
- def account_header(account, account_total)
33
- total_string = "%.2f" % account_total
34
- title = "Total: #{total_string} -- #{account_code_name_type_string(account)}"
35
-
36
- <<~HEREDOC
37
- #{banner_line}
38
- #{center(title)}
39
- #{banner_line}
40
-
41
- HEREDOC
42
- end
43
-
44
-
45
- def account_total_line(account_code, account_total)
46
- account_name = context.chart_of_accounts.name_for_code(account_code)
47
- "%.2f Total for account: %s - %s" % [account_total, account_code, account_name]
48
- end
49
-
50
-
51
- def generate_report
52
- output = generate_header
53
-
54
- all_entries = Journal.entries_in_documents(context.journals)
55
-
56
- context.chart_of_accounts.accounts.each do |account|
57
- code = account.code
58
- account_entries = JournalEntry.entries_containing_account_code(all_entries, code)
59
- account_total = JournalEntry.total_for_code(account_entries, code)
60
- output << account_header(account, account_total)
61
-
62
- account_entries.each do |entry|
63
- output << format_multidoc_entry(entry) << "\n"
64
- output << "\n" if entry.description && entry.description.length > 0
65
- end
66
- output << account_total_line(code, account_total) << "\n"
67
- output << "\n\n\n"
68
- end
69
-
70
- totals = AcctAmount.aggregate_amounts_by_account(JournalEntry.entries_acct_amounts(all_entries))
71
- output << generate_and_format_totals('Totals', totals)
72
-
73
- output
74
- end
75
-
76
- alias_method :to_s, :generate_report
77
- alias_method :call, :generate_report
78
-
79
-
80
- end
81
-
82
- end