django-ledger 0.7.2__py3-none-any.whl → 0.7.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of django-ledger might be problematic. Click here for more details.

Files changed (75) hide show
  1. django_ledger/__init__.py +1 -1
  2. django_ledger/forms/account.py +4 -1
  3. django_ledger/io/io_core.py +3 -1
  4. django_ledger/models/data_import.py +1 -0
  5. django_ledger/models/mixins.py +5 -5
  6. django_ledger/static/django_ledger/bundle/djetler.bundle.js +1 -1
  7. django_ledger/static/django_ledger/bundle/styles.bundle.js +1 -1
  8. django_ledger/templates/django_ledger/account/tags/account_txs_table.html +1 -1
  9. django_ledger/templates/django_ledger/bills/bill_update.html +1 -1
  10. django_ledger/templates/django_ledger/components/icon.html +1 -1
  11. django_ledger/templates/django_ledger/data_import/tags/data_import_job_txs_imported.html +8 -1
  12. django_ledger/templates/django_ledger/financial_statements/balance_sheet.html +1 -0
  13. django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html +4 -4
  14. django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html +118 -0
  15. django_ledger/templates/django_ledger/includes/nav.html +9 -5
  16. django_ledger/templates/django_ledger/invoice/includes/card_invoice.html +69 -69
  17. django_ledger/templatetags/django_ledger.py +11 -3
  18. django_ledger/views/account.py +1 -1
  19. django_ledger/views/mixins.py +6 -18
  20. {django_ledger-0.7.2.dist-info → django_ledger-0.7.3.dist-info}/METADATA +1 -1
  21. {django_ledger-0.7.2.dist-info → django_ledger-0.7.3.dist-info}/RECORD +25 -75
  22. assets/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  23. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -367
  24. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  25. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1270
  26. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1547
  27. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  28. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -153
  29. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -271
  30. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -574
  31. assets/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -666
  32. assets/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -654
  33. assets/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -78
  34. assets/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -165
  35. assets/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -109
  36. assets/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  37. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  38. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -808
  39. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1173
  40. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1321
  41. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -120
  42. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -103
  43. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -464
  44. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -89
  45. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -58
  46. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2518
  47. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3978
  48. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  49. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2936
  50. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -55
  51. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1394
  52. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -25
  53. assets/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3137
  54. assets/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -98
  55. assets/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -771
  56. assets/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1271
  57. assets/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  58. assets/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  59. assets/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -374
  60. assets/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1939
  61. assets/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -302
  62. assets/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3197
  63. assets/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -65
  64. assets/node_modules/node-gyp/gyp/setup.py +0 -42
  65. assets/node_modules/node-gyp/gyp/test_gyp.py +0 -260
  66. assets/node_modules/node-gyp/gyp/tools/graphviz.py +0 -102
  67. assets/node_modules/node-gyp/gyp/tools/pretty_gyp.py +0 -156
  68. assets/node_modules/node-gyp/gyp/tools/pretty_sln.py +0 -181
  69. assets/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +0 -339
  70. assets/node_modules/node-gyp/test/fixtures/test-charmap.py +0 -31
  71. assets/node_modules/node-gyp/update-gyp.py +0 -46
  72. {django_ledger-0.7.2.dist-info → django_ledger-0.7.3.dist-info}/AUTHORS.md +0 -0
  73. {django_ledger-0.7.2.dist-info → django_ledger-0.7.3.dist-info}/LICENSE +0 -0
  74. {django_ledger-0.7.2.dist-info → django_ledger-0.7.3.dist-info}/WHEEL +0 -0
  75. {django_ledger-0.7.2.dist-info → django_ledger-0.7.3.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,7 @@
23
23
  <td>
24
24
  <div class="dropdown is-right is-hoverable" id="tx-action-{{ tx.uuid }}">
25
25
  <div class="dropdown-trigger">
26
- <button class="button is-small is-rounded is-outlined"
26
+ <button class="button is-small is-rounded"
27
27
  aria-haspopup="true"
28
28
  aria-controls="dropdown-menu">
29
29
  <span>{% trans 'Actions' %}</span>
@@ -7,7 +7,7 @@
7
7
  <div class="container">
8
8
  <div class="columns is-multiline">
9
9
  <div class="column is-12">
10
- {% include 'django_ledger/includes/../vendor/includes/card_vendor.html' with vendor=bill_model.vendor %}
10
+ {% include 'django_ledger/vendor/includes/card_vendor.html' with vendor=bill_model.vendor %}
11
11
  </div>
12
12
  <div class="column is-12">
13
13
  {% include 'django_ledger/bills/includes/card_bill.html' with bill=bill_model style='bill-detail' entity_slug=view.kwargs.entity_slug %}
@@ -1 +1 @@
1
- <i class="iconify djl-icon-{{ size }}" data-icon="{{ icon }}" data-toggle="true"></i>
1
+ <iconify-icon class="djl-icon djl-icon-{{ size }}" icon="{{ icon }}"></iconify-icon>
@@ -7,6 +7,8 @@
7
7
  <th>Dated Posted</th>
8
8
  <th>Description</th>
9
9
  <th>Amount</th>
10
+ <th>Activity</th>
11
+ <th>Entity Unit</th>
10
12
  <th>Map To</th>
11
13
  <th>TX</th>
12
14
  <th>Actions</th>
@@ -19,10 +21,15 @@
19
21
  <td>{{ imported_tx.name }}</td>
20
22
  <td class="{% if imported_tx.get_amount < 0.00 %}has-text-danger{% endif %} has-text-centered">
21
23
  ${{ imported_tx.get_amount }}</td>
24
+ <td>{% if imported_tx.activity %}
25
+ {{ imported_tx.get_activity_display }}
26
+ {% endif %}</td>
27
+ <td>{% if imported_tx.entity_unit %}{{ imported_tx.entity_unit }}{% endif %}</td>
22
28
  <td>{{ imported_tx.account_model }}</td>
23
29
  <td>{{ imported_tx.transaction_model }}</td>
24
30
  <td class="has-text-centered">
25
- <a href="{% url 'django_ledger:je-detail' entity_slug=entity_slug ledger_pk=imported_tx.transaction_model.journal_entry.ledger_id je_pk=imported_tx.transaction_model.journal_entry_id %}" class="button is-small is-primary">{% trans 'View JE' %}</a>
31
+ <a href="{% url 'django_ledger:je-detail' entity_slug=entity_slug ledger_pk=imported_tx.transaction_model.journal_entry.ledger_id je_pk=imported_tx.transaction_model.journal_entry_id %}"
32
+ class="button is-small is-primary">{% trans 'View JE' %}</a>
26
33
  </td>
27
34
  </tr>
28
35
  {% endfor %}
@@ -42,6 +42,7 @@
42
42
  </div>
43
43
 
44
44
  {% balance_sheet_statement io_model=object %}
45
+
45
46
  {% if entity %}
46
47
  <a class="button is-fullwidth is-dark mb-1"
47
48
  href="{% url 'django_ledger:entity-dashboard' entity_slug=view.kwargs.entity_slug %}">{% trans 'Go Back' %}</a>
@@ -49,9 +49,9 @@
49
49
  <td class="has-text-centered">{{ acc.balance_type.0 | upper }}</td>
50
50
  <td class="has-text-right">{% currency_symbol %}{{ acc.balance | currency_format }}</td>
51
51
  <td>
52
- <div class="dropdown is-right is-hoverable" id="account-action-{{ account.uuid }}">
52
+ <div class="dropdown is-hoverable" id="account-action-{{ account.uuid }}">
53
53
  <div class="dropdown-trigger">
54
- <button class="button is-small is-rounded is-outlined"
54
+ <button class="button is-small is-rounded"
55
55
  aria-haspopup="true"
56
56
  aria-controls="dropdown-menu">
57
57
  <span>{% trans 'Actions' %}</span>
@@ -60,9 +60,9 @@
60
60
  </div>
61
61
  <div class="dropdown-menu" id="dropdown-menu-{{ acc.uuid }}" role="menu">
62
62
  <div class="dropdown-content">
63
- <a href="{{ acc.get_absolute_url }}"
63
+ <a href="{% url 'django_ledger:account-detail' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
64
64
  class="dropdown-item has-text-success">{% trans 'Detail' %}</a>
65
- <a href="{{ acc.get_update_url }}"
65
+ <a href="{% url 'django_ledger:account-update' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
66
66
  class="dropdown-item has-text-warning">{% trans 'Update' %}</a>
67
67
  </div>
68
68
  </div>
@@ -12,6 +12,7 @@
12
12
  {% endif %}
13
13
  <th>{% trans 'Balance Type' %}</th>
14
14
  <th>{% trans 'Balance' %}</th>
15
+ <th>{% trans 'Actions' %}</th>
15
16
  </tr>
16
17
 
17
18
  {# OPERATING INCOME #}
@@ -23,7 +24,9 @@
23
24
  {% endif %}
24
25
  <td></td>
25
26
  <td></td>
27
+ <td></td>
26
28
  </tr>
29
+
27
30
  {% for acc in tx_digest.income_statement.operating.revenues %}
28
31
  <tr>
29
32
  <td class="has-text-right">{{ acc.code }}</td>
@@ -39,8 +42,29 @@
39
42
  {% endif %}
40
43
  </td>
41
44
  <td>{% currency_symbol %}{{ acc.balance | currency_format }}</td>
45
+ <td>
46
+ <div class="dropdown is-hoverable" id="account-action-{{ account.uuid }}">
47
+ <div class="dropdown-trigger">
48
+ <button class="button is-small is-rounded"
49
+ aria-haspopup="true"
50
+ aria-controls="dropdown-menu">
51
+ <span>{% trans 'Actions' %}</span>
52
+ <span class="icon is-small">{% icon 'bi:arrow-down' 24 %}</span>
53
+ </button>
54
+ </div>
55
+ <div class="dropdown-menu" id="dropdown-menu-{{ acc.uuid }}" role="menu">
56
+ <div class="dropdown-content">
57
+ <a href="{% url 'django_ledger:account-detail' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
58
+ class="dropdown-item has-text-success">{% trans 'Detail' %}</a>
59
+ <a href="{% url 'django_ledger:account-update' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
60
+ class="dropdown-item has-text-warning">{% trans 'Update' %}</a>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </td>
42
65
  </tr>
43
66
  {% endfor %}
67
+
44
68
  <tr>
45
69
  <td></td>
46
70
  {% if tx_digest.by_unit %}
@@ -50,6 +74,7 @@
50
74
  <td><h2 class="is-size-5 has-text-right">{% trans 'Net Operating Revenues' %}</h2></td>
51
75
  <td class="is-size-5 has-text-weight-bold">
52
76
  {% currency_symbol %}{{ tx_digest.income_statement.operating.net_operating_revenue | currency_format }}</td>
77
+ <td></td>
53
78
  </tr>
54
79
 
55
80
  {# COGS #}
@@ -61,6 +86,7 @@
61
86
  {% endif %}
62
87
  <td></td>
63
88
  <td></td>
89
+ <td></td>
64
90
  </tr>
65
91
  {% for acc in tx_digest.income_statement.operating.cogs %}
66
92
  <tr>
@@ -77,8 +103,29 @@
77
103
  {% endif %}
78
104
  </td>
79
105
  <td>{% currency_symbol %}{{ acc.balance | reverse_sign | currency_format }}</td>
106
+ <td>
107
+ <div class="dropdown is-hoverable" id="account-action-{{ account.uuid }}">
108
+ <div class="dropdown-trigger">
109
+ <button class="button is-small is-rounded"
110
+ aria-haspopup="true"
111
+ aria-controls="dropdown-menu">
112
+ <span>{% trans 'Actions' %}</span>
113
+ <span class="icon is-small">{% icon 'bi:arrow-down' 24 %}</span>
114
+ </button>
115
+ </div>
116
+ <div class="dropdown-menu" id="dropdown-menu-{{ acc.uuid }}" role="menu">
117
+ <div class="dropdown-content">
118
+ <a href="{% url 'django_ledger:account-detail' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
119
+ class="dropdown-item has-text-success">{% trans 'Detail' %}</a>
120
+ <a href="{% url 'django_ledger:account-update' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
121
+ class="dropdown-item has-text-warning">{% trans 'Update' %}</a>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ </td>
80
126
  </tr>
81
127
  {% endfor %}
128
+
82
129
  <tr>
83
130
  <td></td>
84
131
  {% if tx_digest.by_unit %}
@@ -88,6 +135,7 @@
88
135
  <td><h2 class="is-size-5 has-text-right">{% trans 'Net COGS' %}</h2></td>
89
136
  <td class="is-size-5 has-text-weight-bold">
90
137
  {% currency_symbol %}{{ tx_digest.income_statement.operating.net_cogs | currency_format }}</td>
138
+ <td></td>
91
139
  </tr>
92
140
 
93
141
  {# GROSS PROFIT #}
@@ -100,6 +148,7 @@
100
148
  <td><h2 class="is-size-4 has-text-right">{% trans 'Gross Profit' %}</h2></td>
101
149
  <td class="is-size-4 has-text-weight-bold">
102
150
  {% currency_symbol %}{{ tx_digest.income_statement.operating.gross_profit | currency_format }}</td>
151
+ <td></td>
103
152
  </tr>
104
153
 
105
154
  {# OPERATING EXPENSES #}
@@ -111,6 +160,7 @@
111
160
  {% endif %}
112
161
  <td></td>
113
162
  <td></td>
163
+ <td></td>
114
164
  </tr>
115
165
  {% for acc in tx_digest.income_statement.operating.expenses %}
116
166
  <tr>
@@ -127,6 +177,26 @@
127
177
  {% endif %}
128
178
  </td>
129
179
  <td>{% currency_symbol %}{{ acc.balance | reverse_sign | currency_format }}</td>
180
+ <td>
181
+ <div class="dropdown is-hoverable" id="account-action-{{ account.uuid }}">
182
+ <div class="dropdown-trigger">
183
+ <button class="button is-small is-rounded"
184
+ aria-haspopup="true"
185
+ aria-controls="dropdown-menu">
186
+ <span>{% trans 'Actions' %}</span>
187
+ <span class="icon is-small">{% icon 'bi:arrow-down' 24 %}</span>
188
+ </button>
189
+ </div>
190
+ <div class="dropdown-menu" id="dropdown-menu-{{ acc.uuid }}" role="menu">
191
+ <div class="dropdown-content">
192
+ <a href="{% url 'django_ledger:account-detail' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
193
+ class="dropdown-item has-text-success">{% trans 'Detail' %}</a>
194
+ <a href="{% url 'django_ledger:account-update' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
195
+ class="dropdown-item has-text-warning">{% trans 'Update' %}</a>
196
+ </div>
197
+ </div>
198
+ </div>
199
+ </td>
130
200
  </tr>
131
201
  {% endfor %}
132
202
  <tr>
@@ -138,6 +208,7 @@
138
208
  <td><h2 class="is-size-5 has-text-right">{% trans 'Net Operating Expenses' %}</h2></td>
139
209
  <td class="is-size-5 has-text-weight-bold">
140
210
  {% currency_symbol %}{{ tx_digest.income_statement.operating.net_operating_expenses | reverse_sign | currency_format }}</td>
211
+ <td></td>
141
212
  </tr>
142
213
 
143
214
 
@@ -151,6 +222,7 @@
151
222
  <td><h2 class="is-size-4 has-text-right">{% trans 'Net Operating Income (Loss)' %}</h2></td>
152
223
  <td class="is-size-3">
153
224
  {% currency_symbol %}{{ tx_digest.income_statement.operating.net_operating_income| currency_format }}</td>
225
+ <td></td>
154
226
  </tr>
155
227
 
156
228
  {# OTHER REVENUES #}
@@ -162,6 +234,7 @@
162
234
  {% endif %}
163
235
  <td></td>
164
236
  <td></td>
237
+ <td></td>
165
238
  </tr>
166
239
  {% for acc in tx_digest.income_statement.other.revenues %}
167
240
  <tr>
@@ -178,6 +251,26 @@
178
251
  {% endif %}
179
252
  </td>
180
253
  <td class="is-size-5">{% currency_symbol %}{{ acc.balance | currency_format }}</td>
254
+ <td>
255
+ <div class="dropdown is-hoverable" id="account-action-{{ account.uuid }}">
256
+ <div class="dropdown-trigger">
257
+ <button class="button is-small is-rounded"
258
+ aria-haspopup="true"
259
+ aria-controls="dropdown-menu">
260
+ <span>{% trans 'Actions' %}</span>
261
+ <span class="icon is-small">{% icon 'bi:arrow-down' 24 %}</span>
262
+ </button>
263
+ </div>
264
+ <div class="dropdown-menu" id="dropdown-menu-{{ acc.uuid }}" role="menu">
265
+ <div class="dropdown-content">
266
+ <a href="{% url 'django_ledger:account-detail' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
267
+ class="dropdown-item has-text-success">{% trans 'Detail' %}</a>
268
+ <a href="{% url 'django_ledger:account-update' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
269
+ class="dropdown-item has-text-warning">{% trans 'Update' %}</a>
270
+ </div>
271
+ </div>
272
+ </div>
273
+ </td>
181
274
  </tr>
182
275
  {% endfor %}
183
276
  <tr>
@@ -189,6 +282,7 @@
189
282
  <td><h2 class="is-size-5 has-text-right">{% trans 'Net Other Revenues' %}</h2></td>
190
283
  <td class="is-size-5 has-text-weight-bold">
191
284
  {% currency_symbol %}{{ tx_digest.income_statement.other.net_other_revenues | currency_format }}</td>
285
+ <td></td>
192
286
  </tr>
193
287
 
194
288
 
@@ -201,6 +295,7 @@
201
295
  {% endif %}
202
296
  <td></td>
203
297
  <td></td>
298
+ <td></td>
204
299
  </tr>
205
300
  {% for acc in tx_digest.income_statement.other.expenses %}
206
301
  <tr>
@@ -217,6 +312,26 @@
217
312
  {% endif %}
218
313
  </td>
219
314
  <td class="is-size-5">{% currency_symbol %}{{ acc.balance | reverse_sign | currency_format }}</td>
315
+ <td>
316
+ <div class="dropdown is-hoverable" id="account-action-{{ account.uuid }}">
317
+ <div class="dropdown-trigger">
318
+ <button class="button is-small is-rounded"
319
+ aria-haspopup="true"
320
+ aria-controls="dropdown-menu">
321
+ <span>{% trans 'Actions' %}</span>
322
+ <span class="icon is-small">{% icon 'bi:arrow-down' 24 %}</span>
323
+ </button>
324
+ </div>
325
+ <div class="dropdown-menu" id="dropdown-menu-{{ acc.uuid }}" role="menu">
326
+ <div class="dropdown-content">
327
+ <a href="{% url 'django_ledger:account-detail' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
328
+ class="dropdown-item has-text-success">{% trans 'Detail' %}</a>
329
+ <a href="{% url 'django_ledger:account-update' entity_slug=entity_slug coa_slug=acc.coa_slug account_pk=acc.account_uuid %}"
330
+ class="dropdown-item has-text-warning">{% trans 'Update' %}</a>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </td>
220
335
  </tr>
221
336
  {% endfor %}
222
337
  <tr>
@@ -228,6 +343,7 @@
228
343
  <td><h2 class="is-size-5 has-text-right">{% trans 'Net Other Expenses' %}</h2></td>
229
344
  <td class="is-size-5 has-text-weight-bold">
230
345
  {% currency_symbol %}{{ tx_digest.income_statement.other.net_other_expenses | currency_format }}</td>
346
+ <td></td>
231
347
  </tr>
232
348
 
233
349
  {# NET OTHER INCOME/LOSS #}
@@ -240,6 +356,7 @@
240
356
  <td><h2 class="is-size-4 has-text-right">{% trans 'Net Other Income (Loss)' %}</h2></td>
241
357
  <td class="is-size-3">
242
358
  {% currency_symbol %}{{ tx_digest.income_statement.other.net_other_income | currency_format }}</td>
359
+ <td></td>
243
360
  </tr>
244
361
 
245
362
 
@@ -255,6 +372,7 @@
255
372
  <td><h2 class="is-size-3 has-text-right">{% trans 'Net Income' %}</h2></td>
256
373
  <td class="is-size-3 has-text-weight-bold">
257
374
  {% currency_symbol %}{{ tx_digest.income_statement.net_income| currency_format }}</td>
375
+ <td></td>
258
376
  </tr>
259
377
 
260
378
  </table>
@@ -28,11 +28,15 @@
28
28
  <div class="navbar-item">CE TO: {{ tx_digest_context.IO_RESULT.ce_to_date | date }}</div>
29
29
  {% endif %}
30
30
  <div class="navbar-item">
31
- <a href="{% url 'django_ledger:logout' %}"
32
- id="djl-el=logout-button-nav"
33
- class="button is-small is-danger is-outlined">
34
- {% trans 'Logout' %}
35
- </a>
31
+ <form action="{% url 'django_ledger:logout' %}" method="POST">
32
+ {% csrf_token %}
33
+ <button
34
+ id="djl-el=logout-button-nav"
35
+ class="button is-small is-danger is-outlined"
36
+ type="submit">
37
+ {% trans 'Logout' %}
38
+ </button>
39
+ </form>
36
40
  </div>
37
41
  <div class="navbar-item">{% feedback_button %}</div>
38
42
  <div class="navbar-item">v{% current_version %}</div>
@@ -53,85 +53,85 @@
53
53
  {% trans 'Invoice Info' %}</h2>
54
54
  </div>
55
55
  <div class="card-content has-text-centered">
56
- {% if invoice.is_draft %}
57
- <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-warning">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
58
- <p class="is-size-3 has-text-dark">{% trans 'Amount Due' %}:
59
- <span class="has-text-weight-bold">
56
+ {% if invoice.is_draft %}
57
+ <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-warning">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
58
+ <p class="is-size-3 has-text-dark">{% trans 'Amount Due' %}:
59
+ <span class="has-text-weight-bold">
60
60
  {% currency_symbol %}{{ invoice.amount_due | currency_format }}
61
61
  </span>
62
- </p>
63
- <p class="is-size-3 has-text-dark">{% trans 'Due Date' %}:
64
- <span class="has-text-weight-bold">{{ invoice.date_due | timeuntil }}</span>
65
- </p>
66
- <p class="is-size-3">{% trans 'Is Accrued' %}:
67
- {% if invoice.accrue %}
68
- <span class="icon has-text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
69
- {% else %}
70
- <span class="icon has-text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
71
- {% endif %}
72
- </p>
73
- {% elif invoice.is_review %}
74
- <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-warning">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
75
- <p class="is-size-3 has-text-dark">{% trans 'Amount Due' %}:
76
- <span class="has-text-weight-bold">
62
+ </p>
63
+ <p class="is-size-3 has-text-dark">{% trans 'Due Date' %}:
64
+ <span class="has-text-weight-bold">{{ invoice.date_due | timeuntil }}</span>
65
+ </p>
66
+ <p class="is-size-3">{% trans 'Is Accrued' %}:
67
+ {% if invoice.accrue %}
68
+ <span class="icon has-text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
69
+ {% else %}
70
+ <span class="icon has-text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
71
+ {% endif %}
72
+ </p>
73
+ {% elif invoice.is_review %}
74
+ <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-warning">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
75
+ <p class="is-size-3 has-text-dark">{% trans 'Amount Due' %}:
76
+ <span class="has-text-weight-bold">
77
77
  {% currency_symbol %}{{ invoice.amount_due | currency_format }}
78
78
  </span>
79
- </p>
80
- <p class="is-size-3 has-text-dark">{% trans 'Due Date' %}:
81
- <span class="has-text-weight-bold">{{ invoice.date_due | timeuntil }}</span>
82
- </p>
83
- <p class="is-size-3">{% trans 'Is Accrued' %}:
84
- {% if invoice.accrue %}
85
- <span class="icon has-text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
86
- {% else %}
87
- <span class="icon has-text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
88
- {% endif %}
89
- </p>
90
- {% if invoice.xref %}
91
- <p class="is-size-5 is-italic">{% trans 'External Ref' %}: {{ invoice.xref }}</p>
79
+ </p>
80
+ <p class="is-size-3 has-text-dark">{% trans 'Due Date' %}:
81
+ <span class="has-text-weight-bold">{{ invoice.date_due | timeuntil }}</span>
82
+ </p>
83
+ <p class="is-size-3">{% trans 'Is Accrued' %}:
84
+ {% if invoice.accrue %}
85
+ <span class="icon has-text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
86
+ {% else %}
87
+ <span class="icon has-text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
92
88
  {% endif %}
89
+ </p>
90
+ {% if invoice.xref %}
91
+ <p class="is-size-5 is-italic">{% trans 'External Ref' %}: {{ invoice.xref }}</p>
92
+ {% endif %}
93
93
 
94
- {% elif invoice.is_approved %}
95
- <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-info">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
96
- <p class="is-size-3 has-text-dark">{% trans 'Amount Due' %}:
97
- <span class="has-text-weight-bold">
94
+ {% elif invoice.is_approved %}
95
+ <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-info">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
96
+ <p class="is-size-3 has-text-dark">{% trans 'Amount Due' %}:
97
+ <span class="has-text-weight-bold">
98
98
  {% currency_symbol %}{{ invoice.amount_due | currency_format }}
99
99
  </span>
100
- </p>
101
- <p class="is-size-3 has-text-dark">{% trans 'Due Date' %}:
102
- <span class="has-text-weight-bold">{{ invoice.date_due | timeuntil }}</span>
103
- </p>
104
- <p class="is-size-3">{% trans 'Is Accrued' %}:
105
- {% if invoice.accrue %}
106
- <span class="icon has-text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
107
- {% else %}
108
- <span class="icon has-text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
109
- {% endif %}
110
- </p>
111
- <p class="is-size-3 has-text-weight-bold">{% trans 'Amount Paid' %}:
112
- {% currency_symbol %}{{ invoice.amount_paid | currency_format }}</p>
113
- <p class="is-size-5">{% trans 'Progressed' %}: {{ invoice.get_progress | percentage }}</p><br>
114
- <progress class="progress is-medium is-success"
115
- value="{{ invoice.get_progress_percent }}"
116
- max="100">
117
- {{ invoice.get_progress | percentage }}
118
- </progress>
119
- {% elif invoice.is_paid %}
120
- <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-success">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
121
- <p class="is-size-3 has-text-dark">{% trans 'Amount Paid' %}:
122
- <span class="has-text-weight-bold">
100
+ </p>
101
+ <p class="is-size-3 has-text-dark">{% trans 'Due Date' %}:
102
+ <span class="has-text-weight-bold">{{ invoice.date_due | timeuntil }}</span>
103
+ </p>
104
+ <p class="is-size-3">{% trans 'Is Accrued' %}:
105
+ {% if invoice.accrue %}
106
+ <span class="icon has-text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
107
+ {% else %}
108
+ <span class="icon has-text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
109
+ {% endif %}
110
+ </p>
111
+ <p class="is-size-3 has-text-weight-bold">{% trans 'Amount Paid' %}:
112
+ {% currency_symbol %}{{ invoice.amount_paid | currency_format }}</p>
113
+ <p class="is-size-5">{% trans 'Progressed' %}: {{ invoice.get_progress | percentage }}</p><br>
114
+ <progress class="progress is-medium is-success"
115
+ value="{{ invoice.get_progress_percent }}"
116
+ max="100">
117
+ {{ invoice.get_progress | percentage }}
118
+ </progress>
119
+ {% elif invoice.is_paid %}
120
+ <h3 class="is-size-3 has-text-centered has-text-weight-bold has-text-success">{% trans 'This invoice is' %} {{ invoice.get_invoice_status_display }}</h3>
121
+ <p class="is-size-3 has-text-dark">{% trans 'Amount Paid' %}:
122
+ <span class="has-text-weight-bold">
123
123
  {% currency_symbol %}{{ invoice.amount_paid | currency_format }}
124
124
  </span>
125
- </p>
126
- <p class="is-size-3 has-text-dark">{% trans 'Paid Date' %}:
127
- <span class="has-text-weight-bold">{{ invoice.date_paid | date }}</span>
128
- {% else %}
129
- <p class="is-size-3 has-text-dark">Invoice Amount:
130
- <span class="has-text-weight-bold">{% currency_symbol %}{{ invoice.amount_due | currency_format }}</span>
131
- </p>
132
- <p class="is-size-3 has-text-danger-dark">{{ invoice.get_invoice_status_display | upper }}</p>
133
- {% endif %}
134
- </div>
125
+ </p>
126
+ <p class="is-size-3 has-text-dark">{% trans 'Paid Date' %}:
127
+ <span class="has-text-weight-bold">{{ invoice.date_paid | date }}</span>
128
+ {% else %}
129
+ <p class="is-size-3 has-text-dark">Invoice Amount:
130
+ <span class="has-text-weight-bold">{% currency_symbol %}{{ invoice.amount_due | currency_format }}</span>
131
+ </p>
132
+ <p class="is-size-3 has-text-danger-dark">{{ invoice.get_invoice_status_display | upper }}</p>
133
+ {% endif %}
134
+ </div>
135
135
  <footer class="card-footer">
136
136
  <a href="{% url 'django_ledger:invoice-update' entity_slug=entity_slug invoice_pk=invoice.uuid %}"
137
137
  class="card-footer-item has-text-primary has-text-centered">{% trans 'Update' %}</a>
@@ -106,7 +106,9 @@ def balance_sheet_statement(context, io_model, to_date=None):
106
106
  balance_sheet_statement=True)
107
107
 
108
108
  return {
109
- 'tx_digest': io_digest.get_io_data()
109
+ 'entity_slug': entity_slug,
110
+ 'user_model': user_model,
111
+ 'tx_digest': io_digest.get_io_data(),
110
112
  }
111
113
 
112
114
 
@@ -131,6 +133,8 @@ def cash_flow_statement(context, io_model):
131
133
  process_groups=True)
132
134
 
133
135
  return {
136
+ 'entity_slug': entity_slug,
137
+ 'user_model': user_model,
134
138
  'tx_digest': io_digest.get_io_data()
135
139
  }
136
140
 
@@ -162,6 +166,8 @@ def income_statement_table(context, io_model, from_date=None, to_date=None):
162
166
  )
163
167
 
164
168
  return {
169
+ 'entity_slug': entity_slug,
170
+ 'user_model': user_model,
165
171
  'tx_digest': io_digest.get_io_data()
166
172
  }
167
173
 
@@ -389,10 +395,12 @@ def default_entity(context):
389
395
  def session_entity_name(context, request=None):
390
396
  session_key = get_default_entity_session_key()
391
397
  if not request:
392
- request = context['request']
393
- session = request.session
398
+ request = context.get('request')
394
399
  try:
400
+ session = request.session
395
401
  entity_name = session.get(session_key)['entity_name']
402
+ except AttributeError:
403
+ entity_name = 'Django Ledger'
396
404
  except KeyError:
397
405
  entity_name = 'Django Ledger'
398
406
  except TypeError:
@@ -186,7 +186,7 @@ class AccountModelYearDetailView(BaseAccountModelBaseView,
186
186
  account_model: AccountModel = context['object']
187
187
  context['header_title'] = f'Account {account_model.code} - {account_model.name}'
188
188
  context['page_title'] = f'Account {account_model.code} - {account_model.name}'
189
- txs_qs = account_model.transactionmodel_set.all().posted().order_by(
189
+ txs_qs = account_model.transactionmodel_set.all().not_closing_entry().posted().order_by(
190
190
  'journal_entry__timestamp'
191
191
  ).select_related(
192
192
  'journal_entry',
@@ -147,12 +147,8 @@ class QuarterlyReportMixIn(YearMixin, ContextFromToDateMixin, EntityModelFiscalP
147
147
  quarter_end = self.get_quarter_end_date(year=year, quarter=quarter)
148
148
  context['quarter_start'] = quarter_start
149
149
  context['quarter_end'] = quarter_end
150
-
151
- if self.get_from_date_context_name() not in context:
152
- context[self.get_from_date_context_name()] = quarter_start
153
- if self.get_to_date_context_name() not in context:
154
- context[self.get_to_date_context_name()] = quarter_end
155
-
150
+ context[self.get_from_date_context_name()] = quarter_start
151
+ context[self.get_to_date_context_name()] = quarter_end
156
152
  context['has_quarter'] = True
157
153
  return context
158
154
 
@@ -217,12 +213,8 @@ class MonthlyReportMixIn(YearlyReportMixIn, ContextFromToDateMixin, MonthMixin):
217
213
  month_end = self.get_month_end_date(year=year, month=month)
218
214
  context['month_start'] = month_start
219
215
  context['month_end'] = month_end
220
-
221
- if self.get_from_date_context_name() not in context:
222
- context[self.get_from_date_context_name()] = month_start
223
- if self.get_to_date_context_name() not in context:
224
- context[self.get_to_date_context_name()] = month_end
225
-
216
+ context[self.get_from_date_context_name()] = month_start
217
+ context[self.get_to_date_context_name()] = month_end
226
218
  context['has_month'] = True
227
219
  return context
228
220
 
@@ -236,12 +228,8 @@ class DateReportMixIn(MonthlyReportMixIn, ContextFromToDateMixin, DayMixin):
236
228
  context['next_day'] = view_date + timedelta(days=1)
237
229
  context['previous_day'] = view_date - timedelta(days=1)
238
230
  context['view_date'] = view_date
239
-
240
- if self.get_from_date_context_name() not in context:
241
- context[self.get_from_date_context_name()] = view_date
242
- if self.get_to_date_context_name() not in context:
243
- context[self.get_to_date_context_name()] = view_date
244
-
231
+ context[self.get_from_date_context_name()] = view_date
232
+ context[self.get_to_date_context_name()] = view_date
245
233
  return context
246
234
 
247
235
  def get_date(self) -> date:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-ledger
3
- Version: 0.7.2
3
+ Version: 0.7.3
4
4
  Summary: Double entry accounting system built on the Django Web Framework.
5
5
  Author-email: Miguel Sanda <msanda@arrobalytics.com>
6
6
  Maintainer-email: Miguel Sanda <msanda@arrobalytics.com>