django-ledger 0.5.6.2__py3-none-any.whl → 0.5.6.4__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 (65) hide show
  1. django_ledger/__init__.py +1 -1
  2. django_ledger/admin/coa.py +3 -3
  3. django_ledger/forms/account.py +2 -0
  4. django_ledger/forms/coa.py +1 -6
  5. django_ledger/forms/transactions.py +3 -1
  6. django_ledger/io/io_core.py +95 -79
  7. django_ledger/io/io_digest.py +4 -5
  8. django_ledger/io/io_generator.py +5 -4
  9. django_ledger/io/io_library.py +241 -16
  10. django_ledger/io/roles.py +32 -10
  11. django_ledger/migrations/0015_remove_chartofaccountmodel_locked_and_more.py +22 -0
  12. django_ledger/models/accounts.py +13 -9
  13. django_ledger/models/bill.py +3 -3
  14. django_ledger/models/closing_entry.py +39 -28
  15. django_ledger/models/coa.py +244 -35
  16. django_ledger/models/entity.py +119 -51
  17. django_ledger/models/invoice.py +3 -2
  18. django_ledger/models/journal_entry.py +8 -4
  19. django_ledger/models/ledger.py +63 -11
  20. django_ledger/models/mixins.py +2 -2
  21. django_ledger/models/transactions.py +20 -11
  22. django_ledger/report/balance_sheet.py +1 -1
  23. django_ledger/report/cash_flow_statement.py +5 -5
  24. django_ledger/report/core.py +2 -2
  25. django_ledger/report/income_statement.py +2 -2
  26. django_ledger/static/django_ledger/bundle/djetler.bundle.js +1 -1
  27. django_ledger/static/django_ledger/bundle/djetler.bundle.js.LICENSE.txt +10 -11
  28. django_ledger/templates/django_ledger/account/account_create.html +17 -11
  29. django_ledger/templates/django_ledger/account/account_list.html +12 -9
  30. django_ledger/templates/django_ledger/account/tags/account_txs_table.html +6 -1
  31. django_ledger/templates/django_ledger/account/tags/accounts_table.html +97 -93
  32. django_ledger/templates/django_ledger/chart_of_accounts/coa_list.html +17 -0
  33. django_ledger/templates/django_ledger/{code_of_accounts → chart_of_accounts}/coa_update.html +1 -4
  34. django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html +74 -0
  35. django_ledger/templates/django_ledger/financial_statements/tags/cash_flow_statement.html +1 -1
  36. django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html +6 -6
  37. django_ledger/templates/django_ledger/includes/widget_ic.html +1 -1
  38. django_ledger/templates/django_ledger/invoice/invoice_list.html +91 -94
  39. django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html +16 -7
  40. django_ledger/templates/django_ledger/journal_entry/je_detail.html +1 -1
  41. django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html +10 -0
  42. django_ledger/templatetags/django_ledger.py +9 -8
  43. django_ledger/tests/base.py +134 -8
  44. django_ledger/tests/test_accounts.py +16 -0
  45. django_ledger/tests/test_auth.py +5 -7
  46. django_ledger/tests/test_bill.py +1 -1
  47. django_ledger/tests/test_chart_of_accounts.py +46 -0
  48. django_ledger/tests/test_closing_entry.py +16 -19
  49. django_ledger/tests/test_entity.py +3 -3
  50. django_ledger/tests/test_io.py +192 -2
  51. django_ledger/tests/test_transactions.py +290 -0
  52. django_ledger/urls/account.py +18 -3
  53. django_ledger/urls/chart_of_accounts.py +21 -1
  54. django_ledger/urls/ledger.py +7 -0
  55. django_ledger/views/account.py +29 -4
  56. django_ledger/views/coa.py +79 -4
  57. django_ledger/views/djl_api.py +4 -1
  58. django_ledger/views/journal_entry.py +1 -1
  59. django_ledger/views/mixins.py +3 -0
  60. {django_ledger-0.5.6.2.dist-info → django_ledger-0.5.6.4.dist-info}/METADATA +1 -1
  61. {django_ledger-0.5.6.2.dist-info → django_ledger-0.5.6.4.dist-info}/RECORD +65 -59
  62. {django_ledger-0.5.6.2.dist-info → django_ledger-0.5.6.4.dist-info}/AUTHORS.md +0 -0
  63. {django_ledger-0.5.6.2.dist-info → django_ledger-0.5.6.4.dist-info}/LICENSE +0 -0
  64. {django_ledger-0.5.6.2.dist-info → django_ledger-0.5.6.4.dist-info}/WHEEL +0 -0
  65. {django_ledger-0.5.6.2.dist-info → django_ledger-0.5.6.4.dist-info}/top_level.txt +0 -0
@@ -30,13 +30,31 @@ class BaseAccountModelViewQuerySetMixIn:
30
30
 
31
31
  def get_queryset(self):
32
32
  if self.queryset is None:
33
- self.queryset = AccountModel.objects.for_entity(
33
+ qs = AccountModel.objects.for_entity(
34
34
  entity_slug=self.kwargs['entity_slug'],
35
35
  user_model=self.request.user,
36
- ).select_related('coa_model', 'coa_model__entity').order_by(
36
+ ).select_related(
37
+ 'coa_model',
38
+ 'coa_model__entity'
39
+ ).order_by(
37
40
  'coa_model', 'role', 'code').not_coa_root()
41
+
42
+ if self.kwargs.get('coa_slug'):
43
+ qs = qs.filter(coa_model__slug__exact=self.kwargs.get('coa_slug'))
44
+
45
+ self.queryset = qs
38
46
  return super().get_queryset()
39
47
 
48
+ def get_context_data(self, *args, **kwargs):
49
+ context = super().get_context_data(*args, **kwargs)
50
+ entity_model = self.get_authorized_entity_instance()
51
+ if self.kwargs.get('coa_slug'):
52
+ coa_model_qs = entity_model.chartofaccountmodel_set.all()
53
+ context['coa_model'] = get_object_or_404(coa_model_qs, slug__exact=self.kwargs['coa_slug'])
54
+ else:
55
+ context['coa_model'] = entity_model.default_coa
56
+ return context
57
+
40
58
 
41
59
  # Account Views ----
42
60
  class AccountModelListView(DjangoLedgerSecurityMixIn, BaseAccountModelViewQuerySetMixIn, ListView):
@@ -105,6 +123,11 @@ class AccountModelCreateView(DjangoLedgerSecurityMixIn, BaseAccountModelViewQuer
105
123
  **self.get_form_kwargs()
106
124
  )
107
125
 
126
+ def get_context_data(self, *args, **kwargs):
127
+ context = super().get_context_data(*args, **kwargs)
128
+ context['header_subtitle'] = f'CoA: {context["coa_model"].name}'
129
+ return context
130
+
108
131
  def form_valid(self, form):
109
132
  EntityModel = lazy_loader.get_entity_model()
110
133
  entity_model_qs = EntityModel.objects.for_user(user_model=self.request.user).select_related('default_coa')
@@ -115,7 +138,7 @@ class AccountModelCreateView(DjangoLedgerSecurityMixIn, BaseAccountModelViewQuer
115
138
  entity_model.create_chart_of_accounts(assign_as_default=True, commit=True)
116
139
 
117
140
  coa_model = entity_model.default_coa
118
- coa_model.create_account(account_model=account_model)
141
+ coa_model.allocate_account(account_model=account_model)
119
142
  return HttpResponseRedirect(self.get_success_url())
120
143
 
121
144
  def get_success_url(self):
@@ -161,7 +184,9 @@ class AccountModelYearDetailView(DjangoLedgerSecurityMixIn,
161
184
  context['header_title'] = f'Account {account.code} - {account.name}'
162
185
  context['page_title'] = f'Account {account.code} - {account.name}'
163
186
  account_model: AccountModel = self.object
164
- txs_qs = account_model.transactionmodel_set.posted().order_by('journal_entry__timestamp')
187
+ txs_qs = account_model.transactionmodel_set.posted().order_by(
188
+ 'journal_entry__timestamp').select_related(
189
+ 'journal_entry', 'journal_entry__entity_unit')
165
190
  txs_qs = txs_qs.from_date(self.get_from_date())
166
191
  txs_qs = txs_qs.to_date(self.get_to_date())
167
192
  context['transactions'] = txs_qs
@@ -5,10 +5,13 @@ Copyright© EDMA Group Inc licensed under the GPLv3 Agreement.
5
5
  Contributions to this module:
6
6
  Miguel Sanda <msanda@arrobalytics.com>
7
7
  """
8
-
8
+ from django.contrib import messages
9
+ from django.core.exceptions import ImproperlyConfigured, ValidationError
10
+ from django.db.models import Count, Q
9
11
  from django.urls import reverse
10
12
  from django.utils.translation import gettext_lazy as _
11
- from django.views.generic import UpdateView
13
+ from django.views.generic import UpdateView, ListView, RedirectView
14
+ from django.views.generic.detail import SingleObjectMixin
12
15
 
13
16
  from django_ledger.forms.coa import ChartOfAccountsModelUpdateForm
14
17
  from django_ledger.models.coa import ChartOfAccountModel
@@ -23,14 +26,49 @@ class ChartOfAccountsModelModelViewQuerySetMixIn:
23
26
  self.queryset = ChartOfAccountModel.objects.for_entity(
24
27
  entity_slug=self.kwargs['entity_slug'],
25
28
  user_model=self.request.user,
26
- ).select_related('entity')
29
+ ).select_related('entity').order_by('-updated')
27
30
  return super().get_queryset()
28
31
 
29
32
 
33
+ class ChartOfAccountsListView(DjangoLedgerSecurityMixIn, ChartOfAccountsModelModelViewQuerySetMixIn, ListView):
34
+ template_name = 'django_ledger/chart_of_accounts/coa_list.html'
35
+ extra_context = {
36
+ 'header_title': _('Chart of Account List'),
37
+ }
38
+ context_object_name = 'coa_list'
39
+
40
+ def get_context_data(self, *, object_list=None, **kwargs):
41
+ context = super().get_context_data(object_list=None, **kwargs)
42
+ context['header_subtitle'] = self.AUTHORIZED_ENTITY_MODEL.name
43
+ context['header_subtitle_icon'] = 'gravity-ui:hierarchy'
44
+ return context
45
+
46
+ def get_queryset(self):
47
+ qs = super().get_queryset()
48
+ return qs.annotate(
49
+ accountmodel_total__count=Count(
50
+ 'accountmodel',
51
+ # excludes coa root accounts...
52
+ filter=Q(accountmodel__depth__gt=2)
53
+ ),
54
+ accountmodel_locked__count=Count(
55
+ 'accountmodel',
56
+ # excludes coa root accounts...
57
+ filter=Q(accountmodel__depth__gt=2) & Q(accountmodel__locked=True)
58
+ ),
59
+ accountmodel_active__count=Count(
60
+ 'accountmodel',
61
+ # excludes coa root accounts...
62
+ filter=Q(accountmodel__depth__gt=2) & Q(accountmodel__active=True)
63
+ ),
64
+
65
+ )
66
+
67
+
30
68
  class ChartOfAccountsUpdateView(DjangoLedgerSecurityMixIn, ChartOfAccountsModelModelViewQuerySetMixIn, UpdateView):
31
69
  context_object_name = 'coa'
32
70
  slug_url_kwarg = 'coa_slug'
33
- template_name = 'django_ledger/code_of_accounts/coa_update.html'
71
+ template_name = 'django_ledger/chart_of_accounts/coa_update.html'
34
72
  form_class = ChartOfAccountsModelUpdateForm
35
73
 
36
74
  def get_context_data(self, **kwargs):
@@ -45,3 +83,40 @@ class ChartOfAccountsUpdateView(DjangoLedgerSecurityMixIn, ChartOfAccountsModelM
45
83
  kwargs={
46
84
  'entity_slug': entity_slug
47
85
  })
86
+
87
+
88
+ # todo: centralize this functionality into a separate class for ALL Action views...
89
+ class CharOfAccountModelActionView(DjangoLedgerSecurityMixIn,
90
+ RedirectView,
91
+ ChartOfAccountsModelModelViewQuerySetMixIn,
92
+ SingleObjectMixin):
93
+ http_method_names = ['get']
94
+ slug_url_kwarg = 'coa_slug'
95
+ action_name = None
96
+ commit = True
97
+
98
+ def get_redirect_url(self, *args, **kwargs):
99
+ return reverse('django_ledger:coa-list',
100
+ kwargs={
101
+ 'entity_slug': kwargs['entity_slug']
102
+ })
103
+
104
+ def get(self, request, *args, **kwargs):
105
+ kwargs['user_model'] = self.request.user
106
+ if not self.action_name:
107
+ raise ImproperlyConfigured('View attribute action_name is required.')
108
+ response = super(CharOfAccountModelActionView, self).get(request, *args, **kwargs)
109
+ coa_model: ChartOfAccountModel = self.get_object()
110
+
111
+ try:
112
+ getattr(coa_model, self.action_name)(commit=self.commit, **kwargs)
113
+ messages.add_message(request, level=messages.SUCCESS, extra_tags='is-success',
114
+ message=_('Successfully updated {} Default Chart of Account to '.format(
115
+ self.AUTHORIZED_ENTITY_MODEL.name) +
116
+ '{}'.format(coa_model.name)))
117
+ except ValidationError as e:
118
+ messages.add_message(request,
119
+ message=e.message,
120
+ level=messages.ERROR,
121
+ extra_tags='is-danger')
122
+ return response
@@ -38,7 +38,10 @@ class PnLAPIView(DjangoLedgerSecurityMixIn, EntityUnitMixIn, View):
38
38
  by_period=True,
39
39
  process_groups=True,
40
40
  from_date=self.request.GET.get('fromDate'),
41
- to_date=self.request.GET.get('toDate')
41
+ to_date=self.request.GET.get('toDate'),
42
+
43
+ # todo: For PnL to display proper period values must not use closing entries.
44
+ use_closing_entries=False
42
45
  )
43
46
 
44
47
  io_data = io_digest.get_io_data()
@@ -130,7 +130,7 @@ class JournalEntryUpdateView(DjangoLedgerSecurityMixIn, JournalEntryModelModelVi
130
130
 
131
131
  def get_form(self, form_class=None):
132
132
  je_model: JournalEntryModel = self.object
133
- if not je_model.can_edit_timestamp():
133
+ if not je_model.can_edit():
134
134
  return JournalEntryModelCannotEditForm(
135
135
  entity_slug=self.kwargs['entity_slug'],
136
136
  ledger_model=je_model.ledger,
@@ -304,6 +304,9 @@ class DjangoLedgerSecurityMixIn(PermissionRequiredMixin):
304
304
  user_model=self.request.user).only(
305
305
  'uuid', 'slug', 'name', 'default_coa', 'admin')
306
306
 
307
+ def get_authorized_entity_instance(self) -> Optional[EntityModel]:
308
+ return self.AUTHORIZED_ENTITY_MODEL
309
+
307
310
  def has_permission(self):
308
311
  if self.request.user.is_superuser:
309
312
  if 'entity_slug' in self.kwargs:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-ledger
3
- Version: 0.5.6.2
3
+ Version: 0.5.6.4
4
4
  Summary: Bookkeeping & Financial analysis backend for Django. Balance Sheet, Income Statements, Chart of Accounts, Entities
5
5
  Author-email: Miguel Sanda <msanda@arrobalytics.com>
6
6
  Maintainer-email: Miguel Sanda <msanda@arrobalytics.com>
@@ -48,13 +48,13 @@ assets/node_modules/node-gyp/gyp/tools/pretty_gyp.py,sha256=2ZCRPW-MZfK7gdnCIaqh
48
48
  assets/node_modules/node-gyp/gyp/tools/pretty_sln.py,sha256=b_Fxm-SXUCPL3Tix4EyNwZNmQ-zkeRIFFmuL0R5wFhw,5482
49
49
  assets/node_modules/node-gyp/gyp/tools/pretty_vcproj.py,sha256=AwQrxK1F-jhjsbbT35XQjrvWNbc3IBFaKXoJogqMh_o,10633
50
50
  assets/node_modules/node-gyp/test/fixtures/test-charmap.py,sha256=5raXzaQnO2eJnrlFtlDtWftryhZX7Fj0amFW3hdSnhE,547
51
- django_ledger/__init__.py,sha256=6ETFmJRJUHso9M2hPN6rSaOBr-n39plUo4PpugsxtUk,458
51
+ django_ledger/__init__.py,sha256=lgYvWX2ILX9Xn-HrVfrYM0NTDF43wtg7NYkYvNlVuWs,458
52
52
  django_ledger/apps.py,sha256=H-zEWUjKGakgSDSZmLIoXChZ2h6e0dth0ZO5SpoT-8U,163
53
53
  django_ledger/exceptions.py,sha256=rML8sQQ0Hq-DYMLZ76dfw2RYSAsXWUoyHuyC_yP9o1o,491
54
54
  django_ledger/settings.py,sha256=KLujLYwEC3fxfj5u9HnVDsr1rBjE5OAI--bu0MYi4JE,6221
55
55
  django_ledger/utils.py,sha256=l8xq-uSvUdJNpyDjC_0UrsSfjeEpwf7B-tavbnt40a8,4305
56
56
  django_ledger/admin/__init__.py,sha256=MipzxmBhXswpx63uf3Ai2amyBMAP5fZL7mKXKxjNRIY,458
57
- django_ledger/admin/coa.py,sha256=t3NglcPvhXHRUzQaN1UpLiSgUx0via0gqgGEwGjuVeY,3542
57
+ django_ledger/admin/coa.py,sha256=BcBsvNs4Z1hOyZy4YqCtIfk1aw8DejrI1bAEH93Tkjc,3542
58
58
  django_ledger/admin/entity.py,sha256=Iw7nIjCqqSZZNVyl24fDvCSWjy1YGS7P77r6hfaRNSU,5817
59
59
  django_ledger/admin/ledger.py,sha256=ecwmnuW4119StZDR_1QaK9jdZXw2dEvza-dnx1bHWDM,7876
60
60
  django_ledger/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -93,13 +93,13 @@ django_ledger/contrib/django_ledger_graphene/unit/schema.py,sha256=orR4tn1ORTfzL
93
93
  django_ledger/contrib/django_ledger_graphene/vendor/mutations.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
94
  django_ledger/contrib/django_ledger_graphene/vendor/schema.py,sha256=Y20FR0gut0yNsROL_f1LSHdzn7wM4_voKQv--evVGG4,1453
95
95
  django_ledger/forms/__init__.py,sha256=N7iaeMO5xTU-q7RXTVYUy-fu8nMZbiIJ9QEtDCjsTdI,205
96
- django_ledger/forms/account.py,sha256=WGgJAKBRYg3NTz50FSVyn1clWb1d2gAtqHo8RHcsENk,4980
96
+ django_ledger/forms/account.py,sha256=n5ZaxRJZqfFmwFtq4sjIzm9_qvWNiwhaQmd0i6pdmSg,5023
97
97
  django_ledger/forms/app_filters.py,sha256=fHmftiuR1Ei28LhGuu7LoxS4Q5pVjj1wiT0fF4GUcUI,2293
98
98
  django_ledger/forms/auth.py,sha256=HaJDEIRFoAHEAv-s_ZfTe0rZbhzIQ7GkKnaBX1qiAW4,736
99
99
  django_ledger/forms/bank_account.py,sha256=dmmx1BzGq9IeD0jpYOmE83Gat6D3IUeTc0z0jJ7roR4,4513
100
100
  django_ledger/forms/bill.py,sha256=aTAlMWtVA3eI-w0e9Vuxk2GSVey7pmAropPzrQ4OzcI,11007
101
101
  django_ledger/forms/closing_entry.py,sha256=AwEEhphjQ-D4pQ6lRk2zGSmMSMkoamIVICnUY8rgqKU,1494
102
- django_ledger/forms/coa.py,sha256=rdjie9VWEXsdgRChhVDLguxmkPGoNYKj7OAzqW4q3Pc,1485
102
+ django_ledger/forms/coa.py,sha256=-w0GbVde1ve0lEgWCc7kAIfDDVP_nBYgrxykfC301Gw,1312
103
103
  django_ledger/forms/customer.py,sha256=4Ce0J2d3hH5vfT1kdJbspUveIPEsRX_JktzIIu4rNks,2502
104
104
  django_ledger/forms/data_import.py,sha256=6fAS-_kDm3wMgTyQx0SlrU8Cw_hLTsFrdJ76_thlUxY,5635
105
105
  django_ledger/forms/entity.py,sha256=b0QirmsFSnaM8YWDO4V6GQXfFgR_MLmdq27I2q2sGQ0,6880
@@ -110,19 +110,19 @@ django_ledger/forms/item.py,sha256=BuZkJKRwlg4JZr4tgP8CbnpgoGrzTQ3v49HAqUEcV80,1
110
110
  django_ledger/forms/journal_entry.py,sha256=RMFC9QWMwaYH-ZQkZcHldtHCAVJE-MjWlizyyq3Ogjs,2975
111
111
  django_ledger/forms/ledger.py,sha256=jz2Ipdj-6hDBGeU4X0rodFT0yPQcFwTQ0EeUqDpKC6g,1739
112
112
  django_ledger/forms/purchase_order.py,sha256=XIi7v6ZaBd9nYgcWLmgNKm9751XBXpbwmUtlpPJklHI,7479
113
- django_ledger/forms/transactions.py,sha256=hj7IHRiPy7Pu6n-U_FUyHRs2p_jtBmG5iLMEyd0QZC4,3316
113
+ django_ledger/forms/transactions.py,sha256=DD2TJthArTKTuzd4A43ZbugepcB8iuJ4Q_PSRYGVIXI,3336
114
114
  django_ledger/forms/unit.py,sha256=rXUefjpuAmUU0vPOqu1ObO4k-bN-_Q6kOqHJ4kp_Vlg,1131
115
115
  django_ledger/forms/utils.py,sha256=sgkwBZs15_rZ5NT7h-8Z7wi3-ItM1E1sqoVDo3NQ5Jc,513
116
116
  django_ledger/forms/vendor.py,sha256=Nuh8MmSpz4ycMZwiVe--U9Ec6ezIsfACHDkhA2SyiZ4,2215
117
117
  django_ledger/io/__init__.py,sha256=Y9R-mY4peg8EpxmlXKaBER1IHMU-Nos8_dII41Kj0Ho,445
118
- django_ledger/io/io_core.py,sha256=-FV7MocH24pOy7w6_uVRXmiEQsw18wCoQRlI1J_gobM,45651
119
- django_ledger/io/io_digest.py,sha256=zL6y6llyQK2tYPg9VnMXhJe5iq_9YSJH9x5St3iBkMM,4281
120
- django_ledger/io/io_generator.py,sha256=j-Mf_CDzQ-Dy0nLq4MLgQWaernKX28uFwQ1-wLxK-tE,34548
121
- django_ledger/io/io_library.py,sha256=udfsqhKcTen4ePcu1uSKjSZr8D8WGtLrjRkgo2TFEjQ,12316
118
+ django_ledger/io/io_core.py,sha256=zVTBxQE-RZS6UlDogJyPXih4KCdx1BCwvw2aqHvXQmU,46379
119
+ django_ledger/io/io_digest.py,sha256=aQxDVbEt8WsQ6S1b9LYn-5YRtqAeHVMBrd4TY3gcXCg,4273
120
+ django_ledger/io/io_generator.py,sha256=JF4plsABUkCIrtI2X-YD7o5eNghRIgLUseNcBIGOj3U,34613
121
+ django_ledger/io/io_library.py,sha256=kZt61TV6McxH2Ly1INYRmb-T1hNuEKe4WI0YB_YHeKk,20564
122
122
  django_ledger/io/io_middleware.py,sha256=3bMTjmBiwoXxyEo5ER-jZxWxT_xbcrtv4F__vJLsVXs,20096
123
123
  django_ledger/io/ofx.py,sha256=JnmDjhIpLySoixK1WVe6DivRuu02rYsBjqI8yi5Opzs,1488
124
124
  django_ledger/io/ratios.py,sha256=dsuCv9-r73SMLv3OrxeoT5JebfRmrDsRKG_YzHggWFw,3542
125
- django_ledger/io/roles.py,sha256=FdvRUMGlOZESJy32Egmv6RcLZNaahTd3bWjCkCy-5fI,20150
125
+ django_ledger/io/roles.py,sha256=RrErn0-cDOr90UrMBGl-PM_PxG2o_KYbGYeK4Dpwsek,20690
126
126
  django_ledger/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  django_ledger/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  django_ledger/management/commands/generate_oauth2_codes.py,sha256=H92pSOMA0VFjdCLXOqdIWql-aKU12uaAPdXgz2DB9Go,1495
@@ -140,25 +140,26 @@ django_ledger/migrations/0011_importjobmodel_alter_accountmodel_role_and_more.py
140
140
  django_ledger/migrations/0012_stagedtransactionmodel_activity.py,sha256=Tv0rXC1He6_lOVpv-RWT2tKoUTvJVSsM7T1SJR0qxcI,986
141
141
  django_ledger/migrations/0013_stagedtransactionmodel_bundle_split.py,sha256=7Uxd5JEKbP31vSnlP1Us_JA6mtJzAwFnr0XNCKYJDao,469
142
142
  django_ledger/migrations/0014_ledgermodel_ledger_xid_and_more.py,sha256=UHuEQrnFr1dV4p2mxeUtWk39psSnqwBymDz_xt57sZc,663
143
+ django_ledger/migrations/0015_remove_chartofaccountmodel_locked_and_more.py,sha256=GZDKJDjpqo52pY7sXusHpyvXsUwsuvoZqTQNda9Eo1I,560
143
144
  django_ledger/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
145
  django_ledger/models/__init__.py,sha256=8mn-OGhAVgLs8YASEBwo8dpX6tHyGtMxRHVPGDGECVU,793
145
- django_ledger/models/accounts.py,sha256=_uMTFFXSSU-efF_KwWOxLBlr_GL3me3VajMeX97hzlM,28516
146
+ django_ledger/models/accounts.py,sha256=Ie5LTiT4zbmJndq1AJC6kZplgaklkXFusgl4LnIkIbQ,28687
146
147
  django_ledger/models/bank_account.py,sha256=0-eTBxxRyvUKOVVNcGqWV1kiOKcXA2KPQIdiVHDUDCY,7678
147
- django_ledger/models/bill.py,sha256=RuQ610ieOXRtulCWOfbFABVQzP8Ym2jh9x7nwCq48L8,63541
148
- django_ledger/models/closing_entry.py,sha256=wDBJorDqeXr7OQIDLgc3S4G5NO09_gmEP3L6vaC3B7c,17351
149
- django_ledger/models/coa.py,sha256=2CIP0ex4pypwm_ytX8NWAyDM1c0yFOIwwdrTWBXhZQY,13969
148
+ django_ledger/models/bill.py,sha256=vaXdTEfow9SPzactNs6mZdm4tJc8uamKufT9tQGFpJg,63541
149
+ django_ledger/models/closing_entry.py,sha256=52BLvK4Jr8aXrB4kgFqrqHozkw13gwu0hm9RXWnLYE8,17732
150
+ django_ledger/models/coa.py,sha256=IBoBDbZqWFpRZwrIllivjvXn_7r1Bd3CDSy52AEGqT8,20247
150
151
  django_ledger/models/coa_default.py,sha256=4Zj8OMhgBiYuREjM82cFfyGWd8uCAeqggVkeNhg4SLU,27338
151
152
  django_ledger/models/customer.py,sha256=JQOktcYKUlENJv4frek9rAW6sRerrQ0xXHlC5KPmhWk,11807
152
153
  django_ledger/models/data_import.py,sha256=2H-4oTVLa7qXq03m9fd7T5zSQLkZKOAn2OAeOQBzMPA,19477
153
- django_ledger/models/entity.py,sha256=EVC3i5XNFHTxk88zZlUJvloqmFY2FTBwtymWFMc6ymM,119267
154
+ django_ledger/models/entity.py,sha256=zw8vJ-sjmFAPLcXWDwi60FaSa12QB6aEoCk0VzAo910,121191
154
155
  django_ledger/models/estimate.py,sha256=-qB5t2cEdyYpFUq7tOUQnFqvE6EDUiVdTtzjEbESwEQ,55829
155
- django_ledger/models/invoice.py,sha256=YyYo64BMp2SNpWvYBrO6dbtC11dWeDfyYkjLb8oCn-4,61388
156
+ django_ledger/models/invoice.py,sha256=FZ7ZxAjyrM2NUwiR3wIX0PnbPXV27F63u8sESb4qM20,61389
156
157
  django_ledger/models/items.py,sha256=JLPFGPQvTKiq3r09wgG2cxBB4ZmcEXK6LyqMUhzWj3k,54938
157
- django_ledger/models/journal_entry.py,sha256=RYbZ4IJS9EPXJDUYMGuY0NE1rCpxhEeBw0Q08MnbFOk,50864
158
- django_ledger/models/ledger.py,sha256=h3YX8qSd0sUDftjUMG23yGIlPfmBUkMBFSRZzyJm5KA,21437
159
- django_ledger/models/mixins.py,sha256=0cNYxAeOi-PX7WMkfeOaPTyS5v-MYXJI7VCZsEoWTL0,51901
158
+ django_ledger/models/journal_entry.py,sha256=VfXXvm3tUFuy2Z6j3PLlDk9ndHqsZgn_PuhrxTNqaiY,50918
159
+ django_ledger/models/ledger.py,sha256=qjORKpXHn7d393OLS62F2joyyfZyh7tCg7wc67nAu50,23042
160
+ django_ledger/models/mixins.py,sha256=8hxkYDG1MMrCo5uXCeoojYiEkJz-YvAV8Ly8NXKDqFU,51911
160
161
  django_ledger/models/purchase_order.py,sha256=CDibi90e7Yhpv_UiyP32mMcsQ0EUElXJ2r8pLzuS7yE,42729
161
- django_ledger/models/transactions.py,sha256=nY6dJbyedXAvWZ80SzpJvwXsSdwP8SIDbKlzm4jwhe4,20619
162
+ django_ledger/models/transactions.py,sha256=SqPDJtPx3AJCMCIAKOkR9EVoe2v8mi4WlVjBuuUzVbI,20969
162
163
  django_ledger/models/unit.py,sha256=x5FFJXgOi1OdajQejIakW6wGY4DjrJhL3S0Pm5OimMk,8074
163
164
  django_ledger/models/utils.py,sha256=0Vbmkkidjc5ATBjE1JtdXZRcnBlCNHyWvvLoqONK1LM,6857
164
165
  django_ledger/models/vendor.py,sha256=akJCO86GIwjlZ_jPUZCDXlMeuJe-8zKTm-52aJXGFpg,11320
@@ -168,12 +169,12 @@ django_ledger/models/schemas/net_payable.py,sha256=2FcfLaaJySjZ3Yk_IMu8SxYWNO_sn
168
169
  django_ledger/models/schemas/net_receivable.py,sha256=JCdi2ZrFy6ORR_6xrze4Yz3KxhIAseM1J5ext_aUflQ,967
169
170
  django_ledger/models/schemas/pnl.py,sha256=_M5qZtgXca4LQLsjS0weUAzLX98M4-5HCCGM0HKfKmw,573
170
171
  django_ledger/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
- django_ledger/report/balance_sheet.py,sha256=I-smcYGxjvqYKfTzXjQM1uAgwklyMRVpQV2NdtCzTWc,8432
172
- django_ledger/report/cash_flow_statement.py,sha256=Rdw0CmzhnRpQoeGfmFe_d1iS4NXRH4dX26TYm7UlSaA,8697
173
- django_ledger/report/core.py,sha256=78OldZZp_6hAXWROY_kf-hZP1TYekq4QdvrYoMRfZSY,7427
174
- django_ledger/report/income_statement.py,sha256=iX_zITduWA9jo4RDv63oyZlZP0uB3oFPgQZWx4PS8Sw,11148
175
- django_ledger/static/django_ledger/bundle/djetler.bundle.js,sha256=HeZMi7ZWfB1r_oqT19NgXf0xgj9YGraVRu5dQ6UKVxo,533512
176
- django_ledger/static/django_ledger/bundle/djetler.bundle.js.LICENSE.txt,sha256=n3DD-kA6sB9e6RAqd3XlyCmcsRhYeraVVjCMStDCKdY,695
172
+ django_ledger/report/balance_sheet.py,sha256=iw8VOcJfJJHcKwFmdR9p2uYj5iKyX6avUjVSBrT0nZc,8436
173
+ django_ledger/report/cash_flow_statement.py,sha256=GosnBzMZWlqNGitOlxvDiHxkT4JrNm0FH3uXfjmXPG8,8717
174
+ django_ledger/report/core.py,sha256=tpVdAOXTx4DGEcTeG-SWRO9af7ZTXdmW0-vhwJDY8hQ,7435
175
+ django_ledger/report/income_statement.py,sha256=m4pG0Yjpl7SELx3-yYKT4dCluKt6nT2bkD9gay9tNKI,11156
176
+ django_ledger/static/django_ledger/bundle/djetler.bundle.js,sha256=1UzHryjoKN43wUa5b6N2ia2yoE-TCrtfNMnuPIf9Im8,547613
177
+ django_ledger/static/django_ledger/bundle/djetler.bundle.js.LICENSE.txt,sha256=YMfGVlI2rGhmdUNumICn7hTQB2SpYAvQ07nJ_F-tAgE,513
177
178
  django_ledger/static/django_ledger/bundle/styles.bundle.js,sha256=myDLVMYHwKTxypheUretM6MZ4HhK8Yn0BqB_OGUW3KU,506543
178
179
  django_ledger/static/django_ledger/img/daniel-weiss-aj2Os9mYgJU-unsplash.jpg,sha256=zYNOMM56QE4AdRkvdGRNifDqj4OJcUA49oebJqsRjuQ,276317
179
180
  django_ledger/static/django_ledger/img/made-with-bulma.png,sha256=eHFH1XGGq3Wn9sN35Jok2jxaCQu7nIravVVHNTAr7n0,19456
@@ -195,13 +196,13 @@ django_ledger/static/django_ledger/logo/django-ledger-text@2x.png,sha256=QJVyPER
195
196
  django_ledger/static/django_ledger/logo/django-ledger-text@3x.png,sha256=ddWSMY9dXrAMPTS3LZ6K4sDVvJpYFW4KrVUTqJKU-wg,67707
196
197
  django_ledger/static/django_ledger/logo/django-ledger-text@4x.png,sha256=d5hPUkvmJS_5LXPGgJ5VhcI_2CeteVsiNABv1Q2R6aw,99253
197
198
  django_ledger/static/django_ledger/logo/favicon.png,sha256=7QIRzizQUig3PHi9zyV1tK8kXid410_mmin-WZ3zY4M,6434
198
- django_ledger/templates/django_ledger/account/account_create.html,sha256=MttdEu5epZYKOi89Okz4UNn-_2us4TAKz0PDawgqnt0,860
199
+ django_ledger/templates/django_ledger/account/account_create.html,sha256=3-5LgVrvOm6YhryVGgtYltyHMA98dSNt7_vOvsxSRvU,1166
199
200
  django_ledger/templates/django_ledger/account/account_create_child.html,sha256=i1tBc-N44D2mKnm61nrI11pXxo2STF1ezV9fVckB_qY,1089
200
201
  django_ledger/templates/django_ledger/account/account_detail.html,sha256=m-UTWD9YqoM9JWKug4alY4DIql13jYFrJG2BmdYSZ7s,934
201
- django_ledger/templates/django_ledger/account/account_list.html,sha256=yl63yMHA5oIkw7iyhARlbQeMRVh9G05jdq7Pn0VhfGQ,796
202
+ django_ledger/templates/django_ledger/account/account_list.html,sha256=MGOcUREvq2fAif-f6lLQDRsc7o8Al6cchVkDt975G50,1091
202
203
  django_ledger/templates/django_ledger/account/account_update.html,sha256=HmFhp7Xi_taIeNsjijrFVkxmmrDNHoAOZK0qGRtsqUI,851
203
- django_ledger/templates/django_ledger/account/tags/account_txs_table.html,sha256=JNrSQgV1EINHIgDxOD_AdN9_sXhhzKbLbQZ4VcdtyHc,3098
204
- django_ledger/templates/django_ledger/account/tags/accounts_table.html,sha256=BtnmnwDA0bghAnGV1ByT33m9iqC30Huk8dXJ23ECGt4,6626
204
+ django_ledger/templates/django_ledger/account/tags/account_txs_table.html,sha256=ywGyB-LdCLAfT5vbFyTjPD7tNGwdQEZwrHq0Dtp6zoA,3373
205
+ django_ledger/templates/django_ledger/account/tags/accounts_table.html,sha256=33rqgVfnfi43l6u3JGOyydF0xH6QXNM2-QQqNK9Cnkg,7476
205
206
  django_ledger/templates/django_ledger/auth/login.html,sha256=UYV2rxjEn9cXBbG6Ww93k6yMPJtOo5vpX6sod61ewKs,1849
206
207
  django_ledger/templates/django_ledger/bank_account/bank_account_create.html,sha256=zoCvV-_2aBAXCnCfHTFI18Pn7hbEcOkgtcgYOQ2IJIg,1258
207
208
  django_ledger/templates/django_ledger/bank_account/bank_account_list.html,sha256=FuwnbPZ8J6paQw02ddSYEpKUy97SKP-00mFDPMghgJI,701
@@ -216,6 +217,9 @@ django_ledger/templates/django_ledger/bills/bill_void.html,sha256=iQt9Nq1DL-Lovk
216
217
  django_ledger/templates/django_ledger/bills/includes/card_bill.html,sha256=7bUT7Sx7oFHAs9ko1x3wBBhrOZnTAmrGR55S1vksm8g,14029
217
218
  django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html,sha256=tmBNZoaHhk6EsCtcdqAQdHJ0XyDFaFRYqxdCf2Xi5KU,4082
218
219
  django_ledger/templates/django_ledger/bills/tags/bill_table.html,sha256=aGy5iMUmlZ1D7L3qnQlOC2L8ScQCoLENEfBqHV-vJvE,2864
220
+ django_ledger/templates/django_ledger/chart_of_accounts/coa_list.html,sha256=v-g1zdj-0JT8FWUcvmfGgJUqpuIIsYoCciettI3UdgE,490
221
+ django_ledger/templates/django_ledger/chart_of_accounts/coa_update.html,sha256=S5RX0z_BGhCwdMuwjLWqWDihkKlhI2d3r_zgDfX1n9k,863
222
+ django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html,sha256=pWqa53tUwf2t0pR8tqu-8S0XMPz0dgw-JI0Rw0Tv66o,3166
219
223
  django_ledger/templates/django_ledger/closing_entry/closing_entry_create.html,sha256=lBx2gKnKLT_12g-dJn1N6xmR_Nnk3Nm2kXjIK0PorMs,1338
220
224
  django_ledger/templates/django_ledger/closing_entry/closing_entry_delete.html,sha256=4PzrIVBUnI6k7NBPiQto3TPM18T2jmTk5rZbx-RRqZo,1087
221
225
  django_ledger/templates/django_ledger/closing_entry/closing_entry_detail.html,sha256=mnyVPRoQh9L6F5dB87ZfuoXjkreac9JRMK4cH6FUnqE,1599
@@ -224,7 +228,6 @@ django_ledger/templates/django_ledger/closing_entry/closing_entry_update.html,sh
224
228
  django_ledger/templates/django_ledger/closing_entry/includes/card_closing_entry.html,sha256=qVmHjS2eKTwyuNl0zN9l4EWNjiJ1Y1lqLzTlVrY0T9U,3814
225
229
  django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html,sha256=277jBIuib2yEA6eHF27DTMFizK8_MJ5QiqzwZ87c120,3109
226
230
  django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html,sha256=Jdeh-d00htUIxcjFq52S1YcNCcwDfd4NIclti5Qoh6E,1212
227
- django_ledger/templates/django_ledger/code_of_accounts/coa_update.html,sha256=ow9HaBcchzdNPtWlWKX4zuTuZqIZklyS2wxHJuqvUkQ,867
228
231
  django_ledger/templates/django_ledger/components/activity_form.html,sha256=J9TNqRp1qKrxsFZKgX3ESK7r5QbjMQi4eE1D-0AOe9U,772
229
232
  django_ledger/templates/django_ledger/components/breadcrumbs.html,sha256=hfaGk-MPGX8PZuhKRbkKaThshJmkJd_maGhMq7QgU10,1147
230
233
  django_ledger/templates/django_ledger/components/chart_container.html,sha256=z0kaTfHYEwJGbQnNVZhCUPRg-sSeaW8HU-QWyoV3CnM,115
@@ -273,8 +276,8 @@ django_ledger/templates/django_ledger/financial_statements/balance_sheet.html,sh
273
276
  django_ledger/templates/django_ledger/financial_statements/cash_flow.html,sha256=zeu7OcXl2T_vDoFyJvb0htFIjQz0IfyJBiOcck2skus,3031
274
277
  django_ledger/templates/django_ledger/financial_statements/income_statement.html,sha256=pfrv12Bu_PmU-MrL7JXYX7Wv4PZ06fKvOdydzzgeEnw,2731
275
278
  django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html,sha256=76H_MfmbT2If1ycH4k6Zzn_OxpbgmdCOVUqs6unBNys,6431
276
- django_ledger/templates/django_ledger/financial_statements/tags/cash_flow_statement.html,sha256=s6cXSNBeM-sk_GDOEfLSY_dm_BNUbGo7ChOdu2Rv9Ms,8943
277
- django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html,sha256=98iLaZwb4G8qmFI3GT0aqcH5yMngz_kXLX6mtSbEDo0,10408
279
+ django_ledger/templates/django_ledger/financial_statements/tags/cash_flow_statement.html,sha256=elJsMVmVJHZbZVhuo-bSykrrLoSZrN0JpUYm0LukY80,8961
280
+ django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html,sha256=kLmnxHN5G9H7xYKFANLbfM0jAtNsmfhIrdltW-bhoPY,10442
278
281
  django_ledger/templates/django_ledger/includes/breadcrumbs.html,sha256=mSzAPpn7uCx33oXuNhbM-MQdam3QFOxl9TRH93hrS4w,183
279
282
  django_ledger/templates/django_ledger/includes/card_markdown.html,sha256=wKihCko89-F_gU4jJzsqjxDrjxgzVYFXK39cQPv8Sjc,804
280
283
  django_ledger/templates/django_ledger/includes/footer.html,sha256=k6NGiXxLldvQPZMRGxnCHzu72pWHtm8__uShZIzwhkw,523
@@ -282,7 +285,7 @@ django_ledger/templates/django_ledger/includes/messages.html,sha256=N_7BlYw9pJfz
282
285
  django_ledger/templates/django_ledger/includes/nav.html,sha256=Vo0ois6-bQiuHvPixqtXqTuxPp6IeesZSHkPJsZArwU,1818
283
286
  django_ledger/templates/django_ledger/includes/page_header.html,sha256=q2tL3SvFebET4CB_gJB_qRocMbDdijrNCoowoHCgthM,2353
284
287
  django_ledger/templates/django_ledger/includes/widget_bs.html,sha256=UxLVF8rdKwONQaRIE3IrWLYXD0XBs6wEMRGeLevbHwk,949
285
- django_ledger/templates/django_ledger/includes/widget_ic.html,sha256=ZT3hPFEuHaNU2Z9gN6KZy6i4MG77VMWh1sA25BKvvmI,1129
288
+ django_ledger/templates/django_ledger/includes/widget_ic.html,sha256=IWSnAcMJMoAg9kf_XCBPBNGYUSXtgGurgPotkdsVrEM,1129
286
289
  django_ledger/templates/django_ledger/includes/widget_ratios.html,sha256=aoMU4luFPAia6lkBJkimu2f3t4a8Y8j2LEf0uSUn9zI,3252
287
290
  django_ledger/templates/django_ledger/inventory/inventory_item_create.html,sha256=esmE1aRhraUrwfnqv44Z_NfdkMYpjc6KSnDd4Szc06A,1438
288
291
  django_ledger/templates/django_ledger/inventory/inventory_item_list.html,sha256=huO-VyCxpi_ZRqjT9KQntmuVeiNKP4Iveljq7ND9Vxg,883
@@ -294,18 +297,18 @@ django_ledger/templates/django_ledger/inventory/tags/inventory_table.html,sha256
294
297
  django_ledger/templates/django_ledger/invoice/invoice_create.html,sha256=p6I2SF-tW8Gq6vez_5jG1phudOjVqia6F-TNrTMM4_I,2125
295
298
  django_ledger/templates/django_ledger/invoice/invoice_delete.html,sha256=qkhsW6lPiA4BxbWzHgncN8A6p8EU7MjjFyXZnQa1tF0,1482
296
299
  django_ledger/templates/django_ledger/invoice/invoice_detail.html,sha256=tfJjGtMazJQlnLhvkd_NKdlcotm0Mogzo3B7piP9X7A,10547
297
- django_ledger/templates/django_ledger/invoice/invoice_list.html,sha256=hbS71LNjLFGlVTVA4SJLI8FGa7Q0vB_Z4e8ft4T7_ak,6356
300
+ django_ledger/templates/django_ledger/invoice/invoice_list.html,sha256=b5ysuDP-avrls4OSarSusySAKDFT1sM-jkQgWPPxpNw,5888
298
301
  django_ledger/templates/django_ledger/invoice/invoice_update.html,sha256=cVuth_WbELKi3RWDrIKLcfDAe0RH3OV8N5AireHK298,8640
299
302
  django_ledger/templates/django_ledger/invoice/includes/card_invoice.html,sha256=OHs3XcWxkYT6Sb4rQmNo_EiUVLksuj94AwG6PNtYaTY,13021
300
303
  django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html,sha256=ba4J_WINrpYmCaHAyKWDKwZ6ETQXI3NkQ_AV6Y5-2uM,3413
301
304
  django_ledger/templates/django_ledger/invoice/tags/invoice_table.html,sha256=fO1EKOAg26LxIztnfbT41I8N_wyIga-tGsCQ9tBoS5A,2596
302
305
  django_ledger/templates/django_ledger/journal_entry/je_create.html,sha256=UiKc0Uq4UJxjoO6iVDjyeMrT7uwvRmqfY3R0Y9zzPyg,1121
303
306
  django_ledger/templates/django_ledger/journal_entry/je_delete.html,sha256=zy6N1dCtC3j8SSDDda8lXiPkh9RrOJSVtnnSHwo_SmI,1086
304
- django_ledger/templates/django_ledger/journal_entry/je_detail.html,sha256=fabWnBy_QVzKqNmXc8QAeKjFCgl3E84m4CXjnCEs7SU,1997
307
+ django_ledger/templates/django_ledger/journal_entry/je_detail.html,sha256=Bkr5MMrIleWSTml10nR3HfkXFnQhm8Iqn5EiA-xpgUY,2004
305
308
  django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html,sha256=UcPDx8QBK2T-d9loND8ritCt8bNgywg-AYO3fNaqy-Q,4903
306
309
  django_ledger/templates/django_ledger/journal_entry/je_list.html,sha256=2nxNBmcGKMF_YqRgpqkqZbGmsrg6cPsNRZZURIGRzLA,7870
307
310
  django_ledger/templates/django_ledger/journal_entry/je_update.html,sha256=YwSgSaQb5d2ogPsHtD_ZUCDvKKuoxYKEvU7FnZZ5oeA,927
308
- django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html,sha256=r22ZF60YPGfKWz3Ti1_CsNR56Zaf5QmobYUxp0ckkos,2418
311
+ django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html,sha256=PU-tOMBuQcwxP73uXyNePaCF8aY0KutWuuAdYUWJofw,2547
309
312
  django_ledger/templates/django_ledger/journal_entry/tags/je_table.html,sha256=zD5pKiucZ4rFM1mNRXu5XLbuoYmGu7EGOwkpN0Xg2cw,5584
310
313
  django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html,sha256=MVkUb_zPHwXmkAftqEmbmdHwPxHlzNFGQShliQ8rX4w,3019
311
314
  django_ledger/templates/django_ledger/layouts/base.html,sha256=SaqRxA4MvJZTOkM94gJvJVAY5KF0zwGFcQChLHmaZFM,1773
@@ -315,7 +318,7 @@ django_ledger/templates/django_ledger/ledger/ledger_create.html,sha256=eyfmLniuA
315
318
  django_ledger/templates/django_ledger/ledger/ledger_delete.html,sha256=StFckXTo5OSGYzw9XaVvwjnm4aIdJ5aGZIwbxwsexj4,1073
316
319
  django_ledger/templates/django_ledger/ledger/ledger_list.html,sha256=AI-Nf9r_PtHmMtfBa17RX7N2lI--H_1HH8jLzP7zWho,8834
317
320
  django_ledger/templates/django_ledger/ledger/ledger_update.html,sha256=7uim15tUJQsbo61f_nn3uwqztjK8rJE9q6oqBTccLoY,921
318
- django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html,sha256=nphQYdQb3Lp7eqtJi1Bl-hlRFLftb-tLYOLHRkr9p8E,7577
321
+ django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html,sha256=A_E7tFMrR0W09FO0_1nZ--4mwhu5v-RLD7x82iMrxus,8304
319
322
  django_ledger/templates/django_ledger/product/product_create.html,sha256=IE7g53HKPajeQIotebATuX6TH1QAao2ApWTkRAOgenQ,1431
320
323
  django_ledger/templates/django_ledger/product/product_delete.html,sha256=ufGF2LkroxYjdiWW7Am-jkPntu6zFB_uYSqCS7s3qE0,1147
321
324
  django_ledger/templates/django_ledger/product/product_list.html,sha256=3ScXpeZ8ALK3EuHYkT-eFyaaAjV-zfykrjiNIiRbUFg,855
@@ -350,23 +353,26 @@ django_ledger/templates/django_ledger/vendor/vendor_update.html,sha256=4kBUlGgrg
350
353
  django_ledger/templates/django_ledger/vendor/includes/card_vendor.html,sha256=oCXyuqyF7CnJnDQdK0G0jdYLqtPWYSzwlv8oddyGJg8,1290
351
354
  django_ledger/templates/django_ledger/vendor/tags/vendor_table.html,sha256=YC-3T5x4oua3VBg1q690CRzoogKL8qFgQRp5jTKLFgk,3400
352
355
  django_ledger/templatetags/__init__.py,sha256=N7iaeMO5xTU-q7RXTVYUy-fu8nMZbiIJ9QEtDCjsTdI,205
353
- django_ledger/templatetags/django_ledger.py,sha256=Lt9H4UQxMQZ6mhMvQQGyxx2c-9N4gYbOxB3RSVoibpE,31649
356
+ django_ledger/templatetags/django_ledger.py,sha256=9lIsihiSJeu7zhdmbgwEaMfQ3c735CYmOv2Rpy-ELno,31693
354
357
  django_ledger/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
355
- django_ledger/tests/base.py,sha256=1VuXQ7IH8SpU0SNbd36K2-0Rgv3k4Lr5RG6B08R92Zg,5026
356
- django_ledger/tests/test_auth.py,sha256=6vLkH-ooRFJleorYU5-kVjbqcaD3eZ9c1EU-Kb4tPmU,3059
357
- django_ledger/tests/test_bill.py,sha256=EvnaGJf3wPThUNWsiMVTRdNU8JF5EOA6MYWiPxCXqr0,18140
358
- django_ledger/tests/test_closing_entry.py,sha256=L2vqX2xgf0lbbVgY0mDVFAaNYLgnKWEzKlFquhGfnv4,2690
359
- django_ledger/tests/test_entity.py,sha256=XgGZrl0sSbJY8SJMNMc9thRlh8wqmjheiqwkUS93gzA,13450
360
- django_ledger/tests/test_io.py,sha256=shiHiqu39ovvCNHXD2HijZCY0yNSg4EQ-n-2_zZ0yi0,164
358
+ django_ledger/tests/base.py,sha256=Be7BS_bc_m-hCTkBRnvHYfvAfgCcVOsU-He9ON6rOCc,10279
359
+ django_ledger/tests/test_accounts.py,sha256=WznTiYkxGcmeZ0W75ATpMsZGWrtmNV4voe4oLMCpveo,717
360
+ django_ledger/tests/test_auth.py,sha256=MP4mugLgL0wVFIID8NA0XiQVEtWsCUCCHQn_RsrMF3g,3028
361
+ django_ledger/tests/test_bill.py,sha256=K61HXbSbOpEfbi0Ia9JtCgLUfDb1MlEQcKmz47gm4Qw,18140
362
+ django_ledger/tests/test_chart_of_accounts.py,sha256=bTo7AXL_wAr_ywku_NwwxS6rgQyBLnJDxiGryhiDMWo,1952
363
+ django_ledger/tests/test_closing_entry.py,sha256=qrCmzGdXEY1MgbOiyAF1B18no-g6SN9XW_e7fgdJqlc,2540
364
+ django_ledger/tests/test_entity.py,sha256=do7YXRmd1vj2-q1PzC-Fhjr71dx3TqvxXWMiw9YhHaI,13450
365
+ django_ledger/tests/test_io.py,sha256=OLZnlC1vKCj226QHecn3q2aRSisy5YaHhTRT__jUNxk,7000
361
366
  django_ledger/tests/test_purchase_order.py,sha256=vPjPthS6nS8Q1KmZW5zUFogqQKR1MZG4nx8OvHUJpjw,8043
367
+ django_ledger/tests/test_transactions.py,sha256=qeIJr0q43IpI_9YrzjVcnltnk_7puGvdhmH-hDePgEc,11721
362
368
  django_ledger/tests/bdd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
363
369
  django_ledger/tests/bdd/features/steps/README.py,sha256=4HMdVjjflcKQBf0LeZbc5i3TXbe5qGxYBcGmHn4i3jU,599
364
370
  django_ledger/urls/__init__.py,sha256=98Dk0iQPeK2chSTY8H-7yuk9OycoUoZJdbpuR0Wv2rw,1994
365
- django_ledger/urls/account.py,sha256=DZ4tvo9us9fBi0MiSvKChMgxm7k2xytop48M3q1OurE,1849
371
+ django_ledger/urls/account.py,sha256=9G6m2mkki8sNtC_mlNIHcn2SCSoG7ienbQ5qg2kHWg0,2399
366
372
  django_ledger/urls/auth.py,sha256=8dY2h6PQkMayUL81guu9JCxm--Tj0rglvvxg9Qh03aY,230
367
373
  django_ledger/urls/bank_account.py,sha256=-dJsrnwej8H96Gc8xltLf3NwUxKk_xG0Mq4mxhe8Cqs,887
368
374
  django_ledger/urls/bill.py,sha256=wvdRqSgnHp1CLdX6Sudu1IiIx4M1Pe8OupanA-9a-nI,2890
369
- django_ledger/urls/chart_of_accounts.py,sha256=K6SCbhn3qOuEtX9q8U-wRGlDxmwkM2PFLA80k521fNY,199
375
+ django_ledger/urls/chart_of_accounts.py,sha256=pbOWG18j1MwyOcddrzfiYmw0ZmajNg1BVLa0GXK8JOQ,1085
370
376
  django_ledger/urls/closing_entry.py,sha256=3W0fCuAWGB3h8cWg0cxOb9EClVrydeIdHEX0q9rge60,1765
371
377
  django_ledger/urls/customer.py,sha256=I3tWSb5Gmdr-boBSlCst_5cvCHz6JhpGxuwglqJeaG0,426
372
378
  django_ledger/urls/data_import.py,sha256=bOi6U8gN2adxQUjOeNCJGuDRB--hwWeUIQOYTMbFarw,780
@@ -380,21 +386,21 @@ django_ledger/urls/inventory.py,sha256=n7d4lX_8thDikWbQIGE4gyZIrjpSY1kVO0qYpjLBr
380
386
  django_ledger/urls/invoice.py,sha256=Yf11g0Up_8uaosfyi1w0oc1YWEJSPk8Jo3HDldcE2KU,2999
381
387
  django_ledger/urls/item.py,sha256=PZxdnaUMCegk17b7eSwKpd9k74apHFbzz12KRdp1ryo,2609
382
388
  django_ledger/urls/journal_entry.py,sha256=sKuYtKDSaAVcW--iIe8GQecuVZ7wF6W3vOtgATUIr0c,2094
383
- django_ledger/urls/ledger.py,sha256=hn2N_dCidrADhmLCGvyi11WO_tnGO_YzAMnRm0R7hfs,2456
389
+ django_ledger/urls/ledger.py,sha256=9OD7jvR3D3F6KY9RU-Hj6asvH4OiapQzvwaG3IS7haY,2801
384
390
  django_ledger/urls/purchase_order.py,sha256=iUNdzy8dcxkkmDAOt2fO4Up3e0pHDqZNSf9JOKbO4Wo,2388
385
391
  django_ledger/urls/transactions.py,sha256=e_x_z5qbkR6i7o8OWWdXshDiY_WVmu9WVhR9A96fnhI,80
386
392
  django_ledger/urls/unit.py,sha256=EaBd1EcSeQYbOH1rTQZdyDEEtLVi7-QfC_wpRPwTpuE,1499
387
393
  django_ledger/urls/vendor.py,sha256=ODHpAwe5lomluj8ZCqbMtugTeeRsv0Yo9SqkZEmfYaw,393
388
394
  django_ledger/views/__init__.py,sha256=l5Pm2_oAW6Q_jJbXf-BiHA3ilCbiGb6gkXCm73K5DGY,1158
389
- django_ledger/views/account.py,sha256=F1bf0iwC1lsfDZpf9d3_Hp_0NeR--dob8ap1879K2qs,8581
395
+ django_ledger/views/account.py,sha256=qdfyKpcjj_yDQJ_2KK2fmIbnhIGM_R9XdvOIldiTU9w,9554
390
396
  django_ledger/views/auth.py,sha256=-zTjMlLpyxHGPlY9EXFQyeVHMmyeJ2H9RptcW7PDeDg,771
391
397
  django_ledger/views/bank_account.py,sha256=bMgqrDydz6WuXina4L27uV-cmQicW0_JoPaXxlO7uN4,5176
392
398
  django_ledger/views/bill.py,sha256=-WWAPF6PKqfaApAJBFwNMmIveDajXD-5a12d-LbcqFA,23087
393
399
  django_ledger/views/closing_entry.py,sha256=y78azZesVgdUoQmaSEYiP7MBaPRE45qAAHPDlcThlUs,8103
394
- django_ledger/views/coa.py,sha256=VY6oO4o5GgLj6ht9teLAE-7P1HUeA2vr1NI7hwpl6t4,1708
400
+ django_ledger/views/coa.py,sha256=EtLA2kVx_GTemxeBYML3cloiqBRZvaWLXzDW6b2OW2A,5016
395
401
  django_ledger/views/customer.py,sha256=RoBsXBxZC9b79DSNNHaoSZtQ2AoXf7DJAGmZEO3xdxs,3672
396
402
  django_ledger/views/data_import.py,sha256=_H8gjGRIE2Jm97ivvEQn0uEWrM3VvKkYQeXQ1GbKn3g,11950
397
- django_ledger/views/djl_api.py,sha256=LjTwecDizre2euXQwZRz3PsWLcuYiCbh39IJQAcHk5M,4273
403
+ django_ledger/views/djl_api.py,sha256=6ADX9fBK8DroTeg8UIeCf2x4wt6-AF5xLlDQnqXBfsM,4411
398
404
  django_ledger/views/entity.py,sha256=YCAcgzlg66pk8mYCnhnVHbkWkGFuYHkJ-Vy6H8ea9og,9422
399
405
  django_ledger/views/estimate.py,sha256=ZFG0k2_nAV10EjO-p8yp7EVMa4x2qOcFSHl2xFpNDaM,12811
400
406
  django_ledger/views/feedback.py,sha256=qoIN44fJnblPx-pJFe5yYeO-dMqp-FReFZiyw0qQb_s,2460
@@ -403,16 +409,16 @@ django_ledger/views/home.py,sha256=WGSMUY-Pz7I7hNxLWYz4AdiH7fJ3QE_Sl4oTLbDesRA,1
403
409
  django_ledger/views/inventory.py,sha256=ZyCmrkdYLu-D7Fnt0if0-wW6-wSWMgK9EQivVATASVQ,4771
404
410
  django_ledger/views/invoice.py,sha256=iUzTG-EbdYqNX-eYwHBnQRUD_1wTOGutw0BfDMKcI6s,20304
405
411
  django_ledger/views/item.py,sha256=FY53vk_giTRgvJ47FRqChQ8vyDYPDp4DGTvVhGAb36E,21347
406
- django_ledger/views/journal_entry.py,sha256=gGbNAaOrtd1sZCAROaO0hryvgk2d3FfqT2kkhjUzv-g,12145
412
+ django_ledger/views/journal_entry.py,sha256=21kuiRBlhlkgv8xZKM4mj9djv0Fu0BhB80QOEOHCa-w,12135
407
413
  django_ledger/views/ledger.py,sha256=k3cK9zgGNnPwMPx0uqj_pRMFbM71lbYi7bi-l6B2M5s,12681
408
- django_ledger/views/mixins.py,sha256=dGJ_-AEUGxRGLgZ1fRbNNOMuaMvVfv5ts9LOYRxrYdA,21090
414
+ django_ledger/views/mixins.py,sha256=1siJsvSJNpcxzOo2s9vj_Da4wSNIorU1DhanR4wh5Hg,21206
409
415
  django_ledger/views/purchase_order.py,sha256=1J3u4QnCkM7z1Y6DePijVdM67x4CQgfmQJcs3Y4kclU,21082
410
416
  django_ledger/views/transactions.py,sha256=5taQRGLSMkM_N8paQJ07HMspI_Nl7PawF8OohCiRmao,206
411
417
  django_ledger/views/unit.py,sha256=_RgPJO9mR6v5ohBXlnL3T8nTWgS1lwlCvERQcHk0wHE,10232
412
418
  django_ledger/views/vendor.py,sha256=gUdBPTFLeSwlNfdHSA1KFdE_y3QpwpkFhEB0r3-UYdI,3461
413
- django_ledger-0.5.6.2.dist-info/AUTHORS.md,sha256=SRM2cynD89ZfEsL09zrbUVeO17r9zE2ZM7y6ReMqVRo,713
414
- django_ledger-0.5.6.2.dist-info/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
415
- django_ledger-0.5.6.2.dist-info/METADATA,sha256=QNv-TUt3z71dssahlWvzmBlN6Q-FZDPJfyPVSqXq8xE,12619
416
- django_ledger-0.5.6.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
417
- django_ledger-0.5.6.2.dist-info/top_level.txt,sha256=fmHWehb2HfoDncQ3eQtYzeYc-gJMywf6q_ZpKBjwzoQ,38
418
- django_ledger-0.5.6.2.dist-info/RECORD,,
419
+ django_ledger-0.5.6.4.dist-info/AUTHORS.md,sha256=SRM2cynD89ZfEsL09zrbUVeO17r9zE2ZM7y6ReMqVRo,713
420
+ django_ledger-0.5.6.4.dist-info/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
421
+ django_ledger-0.5.6.4.dist-info/METADATA,sha256=Tbu1lJGU5YdfamLcoC2neaAlJsRNhfC8SaFSnuYvTcc,12619
422
+ django_ledger-0.5.6.4.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
423
+ django_ledger-0.5.6.4.dist-info/top_level.txt,sha256=fmHWehb2HfoDncQ3eQtYzeYc-gJMywf6q_ZpKBjwzoQ,38
424
+ django_ledger-0.5.6.4.dist-info/RECORD,,