django-ledger 0.5.5.4__py3-none-any.whl → 0.5.6.0__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.
- django_ledger/__init__.py +1 -1
- django_ledger/admin/__init__.py +10 -0
- django_ledger/admin/coa.py +135 -0
- django_ledger/admin/entity.py +199 -0
- django_ledger/admin/ledger.py +283 -0
- django_ledger/forms/entity.py +4 -12
- django_ledger/forms/ledger.py +19 -0
- django_ledger/forms/transactions.py +1 -1
- django_ledger/io/__init__.py +4 -1
- django_ledger/io/{io_mixin.py → io_core.py} +95 -35
- django_ledger/io/io_digest.py +15 -0
- django_ledger/io/{data_generator.py → io_generator.py} +51 -8
- django_ledger/io/io_library.py +317 -0
- django_ledger/io/{io_context.py → io_middleware.py} +16 -9
- django_ledger/migrations/0001_initial.py +413 -132
- django_ledger/migrations/0014_ledgermodel_ledger_xid_and_more.py +22 -0
- django_ledger/models/accounts.py +68 -7
- django_ledger/models/bank_account.py +12 -11
- django_ledger/models/bill.py +5 -9
- django_ledger/models/closing_entry.py +14 -14
- django_ledger/models/coa.py +60 -18
- django_ledger/models/customer.py +5 -11
- django_ledger/models/data_import.py +12 -6
- django_ledger/models/entity.py +90 -12
- django_ledger/models/estimate.py +12 -9
- django_ledger/models/invoice.py +10 -4
- django_ledger/models/items.py +11 -6
- django_ledger/models/journal_entry.py +61 -18
- django_ledger/models/ledger.py +90 -24
- django_ledger/models/mixins.py +2 -3
- django_ledger/models/purchase_order.py +11 -7
- django_ledger/models/transactions.py +3 -1
- django_ledger/models/unit.py +22 -13
- django_ledger/models/vendor.py +12 -11
- django_ledger/report/cash_flow_statement.py +1 -1
- django_ledger/report/core.py +3 -2
- django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html +1 -1
- django_ledger/templates/django_ledger/journal_entry/je_list.html +3 -0
- django_ledger/templatetags/django_ledger.py +1 -1
- django_ledger/tests/base.py +1 -1
- django_ledger/tests/test_entity.py +1 -1
- django_ledger/urls/ledger.py +3 -0
- django_ledger/views/entity.py +9 -3
- django_ledger/views/ledger.py +14 -7
- django_ledger/views/mixins.py +9 -1
- {django_ledger-0.5.5.4.dist-info → django_ledger-0.5.6.0.dist-info}/METADATA +9 -9
- {django_ledger-0.5.5.4.dist-info → django_ledger-0.5.6.0.dist-info}/RECORD +51 -46
- {django_ledger-0.5.5.4.dist-info → django_ledger-0.5.6.0.dist-info}/top_level.txt +0 -1
- django_ledger/admin.py +0 -160
- {django_ledger-0.5.5.4.dist-info → django_ledger-0.5.6.0.dist-info}/AUTHORS.md +0 -0
- {django_ledger-0.5.5.4.dist-info → django_ledger-0.5.6.0.dist-info}/LICENSE +0 -0
- {django_ledger-0.5.5.4.dist-info → django_ledger-0.5.6.0.dist-info}/WHEEL +0 -0
|
@@ -15,7 +15,6 @@ UserModel = get_user_model()
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class EntityModelTests(DjangoLedgerBaseTest):
|
|
18
|
-
N = 1
|
|
19
18
|
|
|
20
19
|
def setUp(self) -> None:
|
|
21
20
|
super(EntityModelTests, self).setUp()
|
|
@@ -26,6 +25,7 @@ class EntityModelTests(DjangoLedgerBaseTest):
|
|
|
26
25
|
|
|
27
26
|
# CLOSING ENTRY Tests...
|
|
28
27
|
def test_closing_entry_dates_meta_key(self):
|
|
28
|
+
self.logger.info('test_closing_entry_dates_meta_key...')
|
|
29
29
|
for entity_model in self.ENTITY_MODEL_QUERYSET:
|
|
30
30
|
self.assertTrue(isinstance(entity_model.meta, dict))
|
|
31
31
|
self.assertTrue(entity_model.META_KEY_CLOSING_ENTRY_DATES in entity_model.meta)
|
django_ledger/urls/ledger.py
CHANGED
|
@@ -20,6 +20,9 @@ urlpatterns = [
|
|
|
20
20
|
path('<slug:entity_slug>/create/',
|
|
21
21
|
views.LedgerModelCreateView.as_view(),
|
|
22
22
|
name='ledger-create'),
|
|
23
|
+
path('<slug:entity_slug>/detail/<uuid:ledger_pk>/',
|
|
24
|
+
views.LedgerModelUpdateView.as_view(),
|
|
25
|
+
name='ledger-detail'),
|
|
23
26
|
path('<slug:entity_slug>/update/<uuid:ledger_pk>/',
|
|
24
27
|
views.LedgerModelUpdateView.as_view(),
|
|
25
28
|
name='ledger-update'),
|
django_ledger/views/entity.py
CHANGED
|
@@ -17,8 +17,14 @@ from django.utils.translation import gettext_lazy as _
|
|
|
17
17
|
from django.views.generic import ListView, DetailView, UpdateView, CreateView, RedirectView, DeleteView
|
|
18
18
|
|
|
19
19
|
from django_ledger.forms.entity import EntityModelUpdateForm, EntityModelCreateForm
|
|
20
|
-
from django_ledger.io.
|
|
21
|
-
from django_ledger.models import (
|
|
20
|
+
from django_ledger.io.io_generator import EntityDataGenerator
|
|
21
|
+
from django_ledger.models import (
|
|
22
|
+
EntityModel,
|
|
23
|
+
ItemTransactionModel,
|
|
24
|
+
TransactionModel,
|
|
25
|
+
InvoiceModel,
|
|
26
|
+
BillModel
|
|
27
|
+
)
|
|
22
28
|
from django_ledger.views.mixins import (
|
|
23
29
|
QuarterlyReportMixIn, YearlyReportMixIn,
|
|
24
30
|
MonthlyReportMixIn, DateReportMixIn, DjangoLedgerSecurityMixIn, EntityUnitMixIn,
|
|
@@ -97,7 +103,7 @@ class EntityModelCreateView(DjangoLedgerSecurityMixIn, EntityModelModelViewQuery
|
|
|
97
103
|
start_dttm=localtime() - timedelta(days=30 * 8),
|
|
98
104
|
capital_contribution=Decimal.from_float(50000),
|
|
99
105
|
days_forward=30 * 7,
|
|
100
|
-
tx_quantity=
|
|
106
|
+
tx_quantity=50
|
|
101
107
|
)
|
|
102
108
|
entity_generator.populate_entity()
|
|
103
109
|
|
django_ledger/views/ledger.py
CHANGED
|
@@ -7,7 +7,6 @@ Miguel Sanda <msanda@arrobalytics.com>
|
|
|
7
7
|
"""
|
|
8
8
|
from django.contrib import messages
|
|
9
9
|
from django.core.exceptions import ImproperlyConfigured, ValidationError
|
|
10
|
-
from django.db.models import Count
|
|
11
10
|
from django.urls import reverse
|
|
12
11
|
from django.utils.timezone import localdate
|
|
13
12
|
from django.utils.translation import gettext_lazy as _
|
|
@@ -18,12 +17,12 @@ from django.views.generic import (
|
|
|
18
17
|
from django.views.generic.detail import SingleObjectMixin
|
|
19
18
|
|
|
20
19
|
from django_ledger.forms.ledger import LedgerModelCreateForm, LedgerModelUpdateForm
|
|
21
|
-
from django_ledger.models.entity import EntityModel
|
|
22
20
|
from django_ledger.models.ledger import LedgerModel
|
|
23
21
|
from django_ledger.views.mixins import (
|
|
24
22
|
YearlyReportMixIn, QuarterlyReportMixIn,
|
|
25
23
|
MonthlyReportMixIn, DjangoLedgerSecurityMixIn, DateReportMixIn, BaseDateNavigationUrlMixIn,
|
|
26
|
-
EntityUnitMixIn, PDFReportMixIn
|
|
24
|
+
EntityUnitMixIn, PDFReportMixIn
|
|
25
|
+
)
|
|
27
26
|
|
|
28
27
|
|
|
29
28
|
class LedgerModelModelViewQuerySetMixIn:
|
|
@@ -42,7 +41,7 @@ class LedgerModelListView(DjangoLedgerSecurityMixIn, LedgerModelModelViewQuerySe
|
|
|
42
41
|
context_object_name = 'ledger_list'
|
|
43
42
|
template_name = 'django_ledger/ledger/ledger_list.html'
|
|
44
43
|
PAGE_TITLE = _('Entity Ledgers')
|
|
45
|
-
paginate_by =
|
|
44
|
+
paginate_by = 30
|
|
46
45
|
extra_context = {
|
|
47
46
|
'page_title': PAGE_TITLE,
|
|
48
47
|
'header_title': PAGE_TITLE
|
|
@@ -106,10 +105,8 @@ class LedgerModelCreateView(DjangoLedgerSecurityMixIn, LedgerModelModelViewQuery
|
|
|
106
105
|
)
|
|
107
106
|
|
|
108
107
|
def form_valid(self, form):
|
|
109
|
-
entity = EntityModel.objects.for_user(
|
|
110
|
-
user_model=self.request.user).get(slug__exact=self.kwargs['entity_slug'])
|
|
111
108
|
instance = form.save(commit=False)
|
|
112
|
-
instance.entity =
|
|
109
|
+
instance.entity = self.AUTHORIZED_ENTITY_MODEL
|
|
113
110
|
self.object = form.save()
|
|
114
111
|
return super().form_valid(form)
|
|
115
112
|
|
|
@@ -120,6 +117,16 @@ class LedgerModelCreateView(DjangoLedgerSecurityMixIn, LedgerModelModelViewQuery
|
|
|
120
117
|
})
|
|
121
118
|
|
|
122
119
|
|
|
120
|
+
class LedgerModelDetailView(DjangoLedgerSecurityMixIn, LedgerModelModelViewQuerySetMixIn, RedirectView):
|
|
121
|
+
|
|
122
|
+
def get_redirect_url(self, *args, **kwargs):
|
|
123
|
+
return reverse('django_ledger:je-list',
|
|
124
|
+
kwargs={
|
|
125
|
+
'ledger_pk': self.kwargs['ledger_pk'],
|
|
126
|
+
'entity_slug': self.kwargs['entity_slug']
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
|
|
123
130
|
class LedgerModelUpdateView(DjangoLedgerSecurityMixIn, LedgerModelModelViewQuerySetMixIn, UpdateView):
|
|
124
131
|
context_object_name = 'ledger'
|
|
125
132
|
pk_url_kwarg = 'ledger_pk'
|
django_ledger/views/mixins.py
CHANGED
|
@@ -305,7 +305,15 @@ class DjangoLedgerSecurityMixIn(PermissionRequiredMixin):
|
|
|
305
305
|
'uuid', 'slug', 'name', 'default_coa', 'admin')
|
|
306
306
|
|
|
307
307
|
def has_permission(self):
|
|
308
|
-
if self.request.user.
|
|
308
|
+
if self.request.user.is_superuser:
|
|
309
|
+
if 'entity_slug' in self.kwargs:
|
|
310
|
+
try:
|
|
311
|
+
entity_model_qs = self.get_authorized_entity_queryset()
|
|
312
|
+
self.AUTHORIZED_ENTITY_MODEL = entity_model_qs.get(slug__exact=self.kwargs['entity_slug'])
|
|
313
|
+
except ObjectDoesNotExist:
|
|
314
|
+
return False
|
|
315
|
+
return True
|
|
316
|
+
elif self.request.user.is_authenticated:
|
|
309
317
|
has_perm = super().has_permission()
|
|
310
318
|
if not has_perm:
|
|
311
319
|
return False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-ledger
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.6.0
|
|
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>
|
|
@@ -63,7 +63,7 @@ Finance and Accounting is a complicated subject. Django Ledger is different from
|
|
|
63
63
|
as it aims to provide a developer-friendly accounting engine while providing a reliable and extensible API to
|
|
64
64
|
power financially driven applications. This project in particular, not only requires Python AND Django programming
|
|
65
65
|
experience, but also finance and accounting experience. So, that's the long way of saying, we need your help!
|
|
66
|
-
Join our Discord Channel [here](https://discord.gg/
|
|
66
|
+
Join our Discord Channel [here](https://discord.gg/J7KDFgCCsw) to learn more.
|
|
67
67
|
|
|
68
68
|
__This project can greatly benefit from contributions towards Documentation and Unit Tests.__
|
|
69
69
|
__This is the best way to get started twith this project if you are not familiar with the models.__
|
|
@@ -132,13 +132,13 @@ More details available in the [Django Ledger v0.5 Page](https://www.arrobalytics
|
|
|
132
132
|
* Generate all Django Ledger Model documentation.
|
|
133
133
|
* ~~__0.5.3__~~: High Level EntityModel API.
|
|
134
134
|
* ~~__0.5.4__~~: Balance Sheet Statement, Income Statement & Cash Flow Statement API & PDF report export.
|
|
135
|
-
* __0.5.5__
|
|
136
|
-
* 0.5.5.1
|
|
137
|
-
* 0.5.5.2
|
|
138
|
-
* 0.5.5.3
|
|
139
|
-
* __0.5.6__:
|
|
140
|
-
* __0.5.7__:
|
|
141
|
-
* __0.5.8__:
|
|
135
|
+
* ~~__0.5.5__~~: Closing Entries.
|
|
136
|
+
* ~~0.5.5.1~~: Open Financial Exchange Imports (OFX) Bugfixes and Optimizations.
|
|
137
|
+
* ~~0.5.5.2~~: BugFixes and Optimizations..
|
|
138
|
+
* ~~0.5.5.3~~: Closing Entries will be used if requested date is present. Documentation Update.
|
|
139
|
+
* __0.5.6__: Transaction Library & Blueprints.
|
|
140
|
+
* __0.5.7__: Chart of Accounts Import.
|
|
141
|
+
* __0.5.8__: Trial Balance Import.
|
|
142
142
|
|
|
143
143
|
### Version 0.6
|
|
144
144
|
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
django_ledger/__init__.py,sha256=
|
|
2
|
-
django_ledger/admin.py,sha256=cfaobDIf_ATw_LHL4O3AJxUZhaLa75PC-EXOpmA28mE,3723
|
|
1
|
+
django_ledger/__init__.py,sha256=4TsPrhgiAiZXeyaF0B_LxqWB5mAzERwofbuctk9cAgQ,458
|
|
3
2
|
django_ledger/apps.py,sha256=H-zEWUjKGakgSDSZmLIoXChZ2h6e0dth0ZO5SpoT-8U,163
|
|
4
3
|
django_ledger/exceptions.py,sha256=rML8sQQ0Hq-DYMLZ76dfw2RYSAsXWUoyHuyC_yP9o1o,491
|
|
5
4
|
django_ledger/settings.py,sha256=KLujLYwEC3fxfj5u9HnVDsr1rBjE5OAI--bu0MYi4JE,6221
|
|
6
5
|
django_ledger/utils.py,sha256=nWXTffn-RD5q3nNA7u812XJECtsMGiwFZh2ILWVPoK4,4294
|
|
6
|
+
django_ledger/admin/__init__.py,sha256=MipzxmBhXswpx63uf3Ai2amyBMAP5fZL7mKXKxjNRIY,458
|
|
7
|
+
django_ledger/admin/coa.py,sha256=t3NglcPvhXHRUzQaN1UpLiSgUx0via0gqgGEwGjuVeY,3542
|
|
8
|
+
django_ledger/admin/entity.py,sha256=8oP8vgfx1Vd1pIpLaxKTmsPRscG65hT356jQmtJauEU,5825
|
|
9
|
+
django_ledger/admin/ledger.py,sha256=ecwmnuW4119StZDR_1QaK9jdZXw2dEvza-dnx1bHWDM,7876
|
|
7
10
|
django_ledger/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
11
|
django_ledger/contrib/django_ledger_graphene/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
12
|
django_ledger/contrib/django_ledger_graphene/api.py,sha256=exrsmMcX21-Vhpe2_9X0eRLcdlnoE2ut0KUxBLu-TM8,871
|
|
@@ -49,30 +52,31 @@ django_ledger/forms/closing_entry.py,sha256=DKIXvZohO-AP-5Y__XxQYW4YLfOfuU5bAV8s
|
|
|
49
52
|
django_ledger/forms/coa.py,sha256=rdjie9VWEXsdgRChhVDLguxmkPGoNYKj7OAzqW4q3Pc,1485
|
|
50
53
|
django_ledger/forms/customer.py,sha256=4Ce0J2d3hH5vfT1kdJbspUveIPEsRX_JktzIIu4rNks,2502
|
|
51
54
|
django_ledger/forms/data_import.py,sha256=6fAS-_kDm3wMgTyQx0SlrU8Cw_hLTsFrdJ76_thlUxY,5635
|
|
52
|
-
django_ledger/forms/entity.py,sha256=
|
|
55
|
+
django_ledger/forms/entity.py,sha256=b0QirmsFSnaM8YWDO4V6GQXfFgR_MLmdq27I2q2sGQ0,6880
|
|
53
56
|
django_ledger/forms/estimate.py,sha256=AotWILz-XYiDHEIpey-KQTFfqcLr_CubtzCoaDm3SL4,5171
|
|
54
57
|
django_ledger/forms/feedback.py,sha256=WUT-kI4uT6q5aqEYaDYwyIFfhXpmtwMv6qf9BFSYsDo,1850
|
|
55
58
|
django_ledger/forms/invoice.py,sha256=bl569tav2sMYFF8Ko55zXvq4OI78JCSbvKHgOIEQUNY,9785
|
|
56
59
|
django_ledger/forms/item.py,sha256=BuZkJKRwlg4JZr4tgP8CbnpgoGrzTQ3v49HAqUEcV80,12308
|
|
57
60
|
django_ledger/forms/journal_entry.py,sha256=RMFC9QWMwaYH-ZQkZcHldtHCAVJE-MjWlizyyq3Ogjs,2975
|
|
58
|
-
django_ledger/forms/ledger.py,sha256=
|
|
61
|
+
django_ledger/forms/ledger.py,sha256=jz2Ipdj-6hDBGeU4X0rodFT0yPQcFwTQ0EeUqDpKC6g,1739
|
|
59
62
|
django_ledger/forms/purchase_order.py,sha256=XIi7v6ZaBd9nYgcWLmgNKm9751XBXpbwmUtlpPJklHI,7479
|
|
60
|
-
django_ledger/forms/transactions.py,sha256=
|
|
63
|
+
django_ledger/forms/transactions.py,sha256=hj7IHRiPy7Pu6n-U_FUyHRs2p_jtBmG5iLMEyd0QZC4,3316
|
|
61
64
|
django_ledger/forms/unit.py,sha256=rXUefjpuAmUU0vPOqu1ObO4k-bN-_Q6kOqHJ4kp_Vlg,1131
|
|
62
65
|
django_ledger/forms/utils.py,sha256=sgkwBZs15_rZ5NT7h-8Z7wi3-ItM1E1sqoVDo3NQ5Jc,513
|
|
63
66
|
django_ledger/forms/vendor.py,sha256=Nuh8MmSpz4ycMZwiVe--U9Ec6ezIsfACHDkhA2SyiZ4,2215
|
|
64
|
-
django_ledger/io/__init__.py,sha256=
|
|
65
|
-
django_ledger/io/
|
|
66
|
-
django_ledger/io/
|
|
67
|
-
django_ledger/io/
|
|
68
|
-
django_ledger/io/
|
|
67
|
+
django_ledger/io/__init__.py,sha256=Y9R-mY4peg8EpxmlXKaBER1IHMU-Nos8_dII41Kj0Ho,445
|
|
68
|
+
django_ledger/io/io_core.py,sha256=QY6iFGoyRDAe42w4MC650RydRD7TmSwuTNsCLsvvnxU,44733
|
|
69
|
+
django_ledger/io/io_digest.py,sha256=zL6y6llyQK2tYPg9VnMXhJe5iq_9YSJH9x5St3iBkMM,4281
|
|
70
|
+
django_ledger/io/io_generator.py,sha256=ZUkH_vmO4LtEOgHCIzzdt1XXrderyr4yl9S0Dcno2Ls,34529
|
|
71
|
+
django_ledger/io/io_library.py,sha256=UXtq-a0ushAfvbYUFd5XtoBLM1KfcH5s1aKqMc0Mhhc,11076
|
|
72
|
+
django_ledger/io/io_middleware.py,sha256=3bMTjmBiwoXxyEo5ER-jZxWxT_xbcrtv4F__vJLsVXs,20096
|
|
69
73
|
django_ledger/io/ofx.py,sha256=JnmDjhIpLySoixK1WVe6DivRuu02rYsBjqI8yi5Opzs,1488
|
|
70
74
|
django_ledger/io/ratios.py,sha256=dsuCv9-r73SMLv3OrxeoT5JebfRmrDsRKG_YzHggWFw,3542
|
|
71
75
|
django_ledger/io/roles.py,sha256=FdvRUMGlOZESJy32Egmv6RcLZNaahTd3bWjCkCy-5fI,20150
|
|
72
76
|
django_ledger/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
77
|
django_ledger/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
78
|
django_ledger/management/commands/generate_oauth2_codes.py,sha256=H92pSOMA0VFjdCLXOqdIWql-aKU12uaAPdXgz2DB9Go,1495
|
|
75
|
-
django_ledger/migrations/0001_initial.py,sha256=
|
|
79
|
+
django_ledger/migrations/0001_initial.py,sha256=d2JDZ_0gmlB8RFE9VpVgimmC2vmv3GK0xlXq1bIudxg,85653
|
|
76
80
|
django_ledger/migrations/0002_alter_journalentrymodel_managers_and_more.py,sha256=-lH3NCGoUX2zJ3GT5VakvPx7VR7lXz4S_FkTccJQzzE,703
|
|
77
81
|
django_ledger/migrations/0003_remove_accountmodel_django_ledg_role_1bff96_idx_and_more.py,sha256=tw1ZrXynmuUfy8G_NtRJ7ojLFCSk89oDTsLpHWCst1Y,6069
|
|
78
82
|
django_ledger/migrations/0004_remove_itemmodel_depth_remove_itemmodel_numchild_and_more.py,sha256=w9-ReO6JP7bMYvBX0Ne3_0jIeLUbuVV4J7V_1lT4zR8,586
|
|
@@ -85,28 +89,29 @@ django_ledger/migrations/0010_delete_importjobmodel.py,sha256=Qn_fixm_e0M6debAGK
|
|
|
85
89
|
django_ledger/migrations/0011_importjobmodel_alter_accountmodel_role_and_more.py,sha256=2jG2O_kxDlRDrdsRDcMp-xl3d1H1WtkR0qo1nyQ8620,6832
|
|
86
90
|
django_ledger/migrations/0012_stagedtransactionmodel_activity.py,sha256=Tv0rXC1He6_lOVpv-RWT2tKoUTvJVSsM7T1SJR0qxcI,986
|
|
87
91
|
django_ledger/migrations/0013_stagedtransactionmodel_bundle_split.py,sha256=7Uxd5JEKbP31vSnlP1Us_JA6mtJzAwFnr0XNCKYJDao,469
|
|
92
|
+
django_ledger/migrations/0014_ledgermodel_ledger_xid_and_more.py,sha256=UHuEQrnFr1dV4p2mxeUtWk39psSnqwBymDz_xt57sZc,663
|
|
88
93
|
django_ledger/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
94
|
django_ledger/models/__init__.py,sha256=8mn-OGhAVgLs8YASEBwo8dpX6tHyGtMxRHVPGDGECVU,793
|
|
90
|
-
django_ledger/models/accounts.py,sha256=
|
|
91
|
-
django_ledger/models/bank_account.py,sha256=
|
|
92
|
-
django_ledger/models/bill.py,sha256=
|
|
93
|
-
django_ledger/models/closing_entry.py,sha256=
|
|
94
|
-
django_ledger/models/coa.py,sha256=
|
|
95
|
+
django_ledger/models/accounts.py,sha256=2qLg25CS_7VBAgNUDY1lP3CS52__xe_ZGcBnMfgQkJc,28505
|
|
96
|
+
django_ledger/models/bank_account.py,sha256=0-eTBxxRyvUKOVVNcGqWV1kiOKcXA2KPQIdiVHDUDCY,7678
|
|
97
|
+
django_ledger/models/bill.py,sha256=JSLroK4BJZjUObQwju9oQH6Vb-2EAczrTNNMOBAZCzs,63508
|
|
98
|
+
django_ledger/models/closing_entry.py,sha256=wDBJorDqeXr7OQIDLgc3S4G5NO09_gmEP3L6vaC3B7c,17351
|
|
99
|
+
django_ledger/models/coa.py,sha256=2CIP0ex4pypwm_ytX8NWAyDM1c0yFOIwwdrTWBXhZQY,13969
|
|
95
100
|
django_ledger/models/coa_default.py,sha256=4Zj8OMhgBiYuREjM82cFfyGWd8uCAeqggVkeNhg4SLU,27338
|
|
96
|
-
django_ledger/models/customer.py,sha256=
|
|
97
|
-
django_ledger/models/data_import.py,sha256=
|
|
98
|
-
django_ledger/models/entity.py,sha256=
|
|
99
|
-
django_ledger/models/estimate.py,sha256=
|
|
100
|
-
django_ledger/models/invoice.py,sha256=
|
|
101
|
-
django_ledger/models/items.py,sha256=
|
|
102
|
-
django_ledger/models/journal_entry.py,sha256=
|
|
103
|
-
django_ledger/models/ledger.py,sha256=
|
|
104
|
-
django_ledger/models/mixins.py,sha256=
|
|
105
|
-
django_ledger/models/purchase_order.py,sha256=
|
|
106
|
-
django_ledger/models/transactions.py,sha256=
|
|
107
|
-
django_ledger/models/unit.py,sha256=
|
|
101
|
+
django_ledger/models/customer.py,sha256=JQOktcYKUlENJv4frek9rAW6sRerrQ0xXHlC5KPmhWk,11807
|
|
102
|
+
django_ledger/models/data_import.py,sha256=2H-4oTVLa7qXq03m9fd7T5zSQLkZKOAn2OAeOQBzMPA,19477
|
|
103
|
+
django_ledger/models/entity.py,sha256=R0Ae7a6V_myfS61WFPGqDUfijJTBxSlB1RK7zVWNO_Y,119284
|
|
104
|
+
django_ledger/models/estimate.py,sha256=giAdClUpU-RY-yXTtOmymbaIQsmjzX4IrV--JSKv9f0,55786
|
|
105
|
+
django_ledger/models/invoice.py,sha256=lDoAAn7voxploFPpNy2vdLJOBRZZXY_fsLLXL0-15fs,61350
|
|
106
|
+
django_ledger/models/items.py,sha256=JLPFGPQvTKiq3r09wgG2cxBB4ZmcEXK6LyqMUhzWj3k,54938
|
|
107
|
+
django_ledger/models/journal_entry.py,sha256=iMEj0sH7WaMRNbpKux92Fl5qQQ0LZs0t6Y3ilPsvNjA,50805
|
|
108
|
+
django_ledger/models/ledger.py,sha256=h3YX8qSd0sUDftjUMG23yGIlPfmBUkMBFSRZzyJm5KA,21437
|
|
109
|
+
django_ledger/models/mixins.py,sha256=PIKn2BxN6AGS9P6TJRWacRHMrEW8pQ0EiAo65v5ciX4,51914
|
|
110
|
+
django_ledger/models/purchase_order.py,sha256=zL8_Wl2vZjYMRCTMMO0FYtDMLEaX6f2WGar-fuLZ6RY,42694
|
|
111
|
+
django_ledger/models/transactions.py,sha256=nY6dJbyedXAvWZ80SzpJvwXsSdwP8SIDbKlzm4jwhe4,20619
|
|
112
|
+
django_ledger/models/unit.py,sha256=x5FFJXgOi1OdajQejIakW6wGY4DjrJhL3S0Pm5OimMk,8074
|
|
108
113
|
django_ledger/models/utils.py,sha256=rmlc9ECHV4fXEp-ru_h2-V5_wFMOjutxIzC7jd_ntz0,6859
|
|
109
|
-
django_ledger/models/vendor.py,sha256=
|
|
114
|
+
django_ledger/models/vendor.py,sha256=akJCO86GIwjlZ_jPUZCDXlMeuJe-8zKTm-52aJXGFpg,11320
|
|
110
115
|
django_ledger/models/schemas/__init__.py,sha256=8Tvw33tVJtCvxoXje2lrs9C1bsP_iuGcVi1JqzdPUao,157
|
|
111
116
|
django_ledger/models/schemas/digest.py,sha256=ME_dJ4g2p3dQ97Skh_RTZMwuNLmwTi19BdLM1G6tyAo,1077
|
|
112
117
|
django_ledger/models/schemas/net_payable.py,sha256=2FcfLaaJySjZ3Yk_IMu8SxYWNO_sngEtbuFCXInrQUU,958
|
|
@@ -114,8 +119,8 @@ django_ledger/models/schemas/net_receivable.py,sha256=JCdi2ZrFy6ORR_6xrze4Yz3Kxh
|
|
|
114
119
|
django_ledger/models/schemas/pnl.py,sha256=_M5qZtgXca4LQLsjS0weUAzLX98M4-5HCCGM0HKfKmw,573
|
|
115
120
|
django_ledger/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
121
|
django_ledger/report/balance_sheet.py,sha256=I-smcYGxjvqYKfTzXjQM1uAgwklyMRVpQV2NdtCzTWc,8432
|
|
117
|
-
django_ledger/report/cash_flow_statement.py,sha256=
|
|
118
|
-
django_ledger/report/core.py,sha256=
|
|
122
|
+
django_ledger/report/cash_flow_statement.py,sha256=Rdw0CmzhnRpQoeGfmFe_d1iS4NXRH4dX26TYm7UlSaA,8697
|
|
123
|
+
django_ledger/report/core.py,sha256=78OldZZp_6hAXWROY_kf-hZP1TYekq4QdvrYoMRfZSY,7427
|
|
119
124
|
django_ledger/report/income_statement.py,sha256=iX_zITduWA9jo4RDv63oyZlZP0uB3oFPgQZWx4PS8Sw,11148
|
|
120
125
|
django_ledger/static/django_ledger/bundle/djetler.bundle.js,sha256=HeZMi7ZWfB1r_oqT19NgXf0xgj9YGraVRu5dQ6UKVxo,533512
|
|
121
126
|
django_ledger/static/django_ledger/bundle/styles.bundle.js,sha256=myDLVMYHwKTxypheUretM6MZ4HhK8Yn0BqB_OGUW3KU,506543
|
|
@@ -247,9 +252,9 @@ django_ledger/templates/django_ledger/journal_entry/je_create.html,sha256=UiKc0U
|
|
|
247
252
|
django_ledger/templates/django_ledger/journal_entry/je_delete.html,sha256=zy6N1dCtC3j8SSDDda8lXiPkh9RrOJSVtnnSHwo_SmI,1086
|
|
248
253
|
django_ledger/templates/django_ledger/journal_entry/je_detail.html,sha256=fabWnBy_QVzKqNmXc8QAeKjFCgl3E84m4CXjnCEs7SU,1997
|
|
249
254
|
django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html,sha256=UcPDx8QBK2T-d9loND8ritCt8bNgywg-AYO3fNaqy-Q,4903
|
|
250
|
-
django_ledger/templates/django_ledger/journal_entry/je_list.html,sha256
|
|
255
|
+
django_ledger/templates/django_ledger/journal_entry/je_list.html,sha256=2nxNBmcGKMF_YqRgpqkqZbGmsrg6cPsNRZZURIGRzLA,7870
|
|
251
256
|
django_ledger/templates/django_ledger/journal_entry/je_update.html,sha256=YwSgSaQb5d2ogPsHtD_ZUCDvKKuoxYKEvU7FnZZ5oeA,927
|
|
252
|
-
django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html,sha256=
|
|
257
|
+
django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html,sha256=r22ZF60YPGfKWz3Ti1_CsNR56Zaf5QmobYUxp0ckkos,2418
|
|
253
258
|
django_ledger/templates/django_ledger/journal_entry/tags/je_table.html,sha256=zD5pKiucZ4rFM1mNRXu5XLbuoYmGu7EGOwkpN0Xg2cw,5584
|
|
254
259
|
django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html,sha256=MVkUb_zPHwXmkAftqEmbmdHwPxHlzNFGQShliQ8rX4w,3019
|
|
255
260
|
django_ledger/templates/django_ledger/layouts/base.html,sha256=SaqRxA4MvJZTOkM94gJvJVAY5KF0zwGFcQChLHmaZFM,1773
|
|
@@ -294,13 +299,13 @@ django_ledger/templates/django_ledger/vendor/vendor_update.html,sha256=4kBUlGgrg
|
|
|
294
299
|
django_ledger/templates/django_ledger/vendor/includes/card_vendor.html,sha256=oCXyuqyF7CnJnDQdK0G0jdYLqtPWYSzwlv8oddyGJg8,1290
|
|
295
300
|
django_ledger/templates/django_ledger/vendor/tags/vendor_table.html,sha256=YC-3T5x4oua3VBg1q690CRzoogKL8qFgQRp5jTKLFgk,3400
|
|
296
301
|
django_ledger/templatetags/__init__.py,sha256=N7iaeMO5xTU-q7RXTVYUy-fu8nMZbiIJ9QEtDCjsTdI,205
|
|
297
|
-
django_ledger/templatetags/django_ledger.py,sha256=
|
|
302
|
+
django_ledger/templatetags/django_ledger.py,sha256=FF1II0JkConZkktc09kOEDzlTxCcWunqlw33bpJLrg0,31673
|
|
298
303
|
django_ledger/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
299
|
-
django_ledger/tests/base.py,sha256=
|
|
304
|
+
django_ledger/tests/base.py,sha256=1VuXQ7IH8SpU0SNbd36K2-0Rgv3k4Lr5RG6B08R92Zg,5026
|
|
300
305
|
django_ledger/tests/test_auth.py,sha256=6vLkH-ooRFJleorYU5-kVjbqcaD3eZ9c1EU-Kb4tPmU,3059
|
|
301
306
|
django_ledger/tests/test_bill.py,sha256=g8NmoEvmsTeDsTqy3MGYLOFu7p4dXWs9I0HuaOI-epA,18123
|
|
302
307
|
django_ledger/tests/test_closing_entry.py,sha256=L2vqX2xgf0lbbVgY0mDVFAaNYLgnKWEzKlFquhGfnv4,2690
|
|
303
|
-
django_ledger/tests/test_entity.py,sha256=
|
|
308
|
+
django_ledger/tests/test_entity.py,sha256=nfCS-ml_NRdDUeEl0P4crjrjxN8a58-7EfIW9StDQNE,13439
|
|
304
309
|
django_ledger/tests/test_io.py,sha256=shiHiqu39ovvCNHXD2HijZCY0yNSg4EQ-n-2_zZ0yi0,164
|
|
305
310
|
django_ledger/tests/test_purchase_order.py,sha256=vPjPthS6nS8Q1KmZW5zUFogqQKR1MZG4nx8OvHUJpjw,8043
|
|
306
311
|
django_ledger/tests/bdd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -324,7 +329,7 @@ django_ledger/urls/inventory.py,sha256=n7d4lX_8thDikWbQIGE4gyZIrjpSY1kVO0qYpjLBr
|
|
|
324
329
|
django_ledger/urls/invoice.py,sha256=Yf11g0Up_8uaosfyi1w0oc1YWEJSPk8Jo3HDldcE2KU,2999
|
|
325
330
|
django_ledger/urls/item.py,sha256=PZxdnaUMCegk17b7eSwKpd9k74apHFbzz12KRdp1ryo,2609
|
|
326
331
|
django_ledger/urls/journal_entry.py,sha256=sKuYtKDSaAVcW--iIe8GQecuVZ7wF6W3vOtgATUIr0c,2094
|
|
327
|
-
django_ledger/urls/ledger.py,sha256=
|
|
332
|
+
django_ledger/urls/ledger.py,sha256=hn2N_dCidrADhmLCGvyi11WO_tnGO_YzAMnRm0R7hfs,2456
|
|
328
333
|
django_ledger/urls/purchase_order.py,sha256=iUNdzy8dcxkkmDAOt2fO4Up3e0pHDqZNSf9JOKbO4Wo,2388
|
|
329
334
|
django_ledger/urls/transactions.py,sha256=e_x_z5qbkR6i7o8OWWdXshDiY_WVmu9WVhR9A96fnhI,80
|
|
330
335
|
django_ledger/urls/unit.py,sha256=EaBd1EcSeQYbOH1rTQZdyDEEtLVi7-QfC_wpRPwTpuE,1499
|
|
@@ -339,7 +344,7 @@ django_ledger/views/coa.py,sha256=VY6oO4o5GgLj6ht9teLAE-7P1HUeA2vr1NI7hwpl6t4,17
|
|
|
339
344
|
django_ledger/views/customer.py,sha256=RoBsXBxZC9b79DSNNHaoSZtQ2AoXf7DJAGmZEO3xdxs,3672
|
|
340
345
|
django_ledger/views/data_import.py,sha256=_H8gjGRIE2Jm97ivvEQn0uEWrM3VvKkYQeXQ1GbKn3g,11950
|
|
341
346
|
django_ledger/views/djl_api.py,sha256=LjTwecDizre2euXQwZRz3PsWLcuYiCbh39IJQAcHk5M,4273
|
|
342
|
-
django_ledger/views/entity.py,sha256=
|
|
347
|
+
django_ledger/views/entity.py,sha256=0UJx_cqmOmZ6Zf5ZZ-MF1gbkx939b83A5vCyThNynZ4,9436
|
|
343
348
|
django_ledger/views/estimate.py,sha256=ZFG0k2_nAV10EjO-p8yp7EVMa4x2qOcFSHl2xFpNDaM,12811
|
|
344
349
|
django_ledger/views/feedback.py,sha256=qoIN44fJnblPx-pJFe5yYeO-dMqp-FReFZiyw0qQb_s,2460
|
|
345
350
|
django_ledger/views/financial_statement.py,sha256=9CGhNqfmDHI_89uxpEjMSPro630VVbwagkuw-3gCKfk,7316
|
|
@@ -348,15 +353,15 @@ django_ledger/views/inventory.py,sha256=ZyCmrkdYLu-D7Fnt0if0-wW6-wSWMgK9EQivVATA
|
|
|
348
353
|
django_ledger/views/invoice.py,sha256=sGMDYbtMb3bKh0z4HPwldFrifYvIOHdbeYte7h1GhzA,20302
|
|
349
354
|
django_ledger/views/item.py,sha256=FY53vk_giTRgvJ47FRqChQ8vyDYPDp4DGTvVhGAb36E,21347
|
|
350
355
|
django_ledger/views/journal_entry.py,sha256=etRmfCyCJTGrZs6SvBQqMkBguNV3a_d5_dxHrGxvUnA,12134
|
|
351
|
-
django_ledger/views/ledger.py,sha256=
|
|
352
|
-
django_ledger/views/mixins.py,sha256=
|
|
356
|
+
django_ledger/views/ledger.py,sha256=j6l5x4bIYPhkc6aJhKYXC9jDtYXIyUJFmmZNke-Tz2E,12662
|
|
357
|
+
django_ledger/views/mixins.py,sha256=dGJ_-AEUGxRGLgZ1fRbNNOMuaMvVfv5ts9LOYRxrYdA,21090
|
|
353
358
|
django_ledger/views/purchase_order.py,sha256=1J3u4QnCkM7z1Y6DePijVdM67x4CQgfmQJcs3Y4kclU,21082
|
|
354
359
|
django_ledger/views/transactions.py,sha256=5taQRGLSMkM_N8paQJ07HMspI_Nl7PawF8OohCiRmao,206
|
|
355
360
|
django_ledger/views/unit.py,sha256=VSeJrgEj_xmzl8EpOQtH-S8oRetTA_KNVuFSy4SJwEE,10213
|
|
356
361
|
django_ledger/views/vendor.py,sha256=gUdBPTFLeSwlNfdHSA1KFdE_y3QpwpkFhEB0r3-UYdI,3461
|
|
357
|
-
django_ledger-0.5.
|
|
358
|
-
django_ledger-0.5.
|
|
359
|
-
django_ledger-0.5.
|
|
360
|
-
django_ledger-0.5.
|
|
361
|
-
django_ledger-0.5.
|
|
362
|
-
django_ledger-0.5.
|
|
362
|
+
django_ledger-0.5.6.0.dist-info/AUTHORS.md,sha256=SRM2cynD89ZfEsL09zrbUVeO17r9zE2ZM7y6ReMqVRo,713
|
|
363
|
+
django_ledger-0.5.6.0.dist-info/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
|
|
364
|
+
django_ledger-0.5.6.0.dist-info/METADATA,sha256=cKRHTfC_Mo8aJvq3kwwHxHukQZX52P4-zAZonkAxaIA,12620
|
|
365
|
+
django_ledger-0.5.6.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
366
|
+
django_ledger-0.5.6.0.dist-info/top_level.txt,sha256=fmHWehb2HfoDncQ3eQtYzeYc-gJMywf6q_ZpKBjwzoQ,38
|
|
367
|
+
django_ledger-0.5.6.0.dist-info/RECORD,,
|
django_ledger/admin.py
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
from django.contrib import admin
|
|
2
|
-
|
|
3
|
-
from django_ledger.models.accounts import AccountModel
|
|
4
|
-
from django_ledger.models.bank_account import BankAccountModel
|
|
5
|
-
from django_ledger.models.bill import BillModel
|
|
6
|
-
from django_ledger.models.coa import ChartOfAccountModel
|
|
7
|
-
from django_ledger.models.customer import CustomerModel
|
|
8
|
-
from django_ledger.models.entity import EntityModel, EntityManagementModel
|
|
9
|
-
from django_ledger.models.invoice import InvoiceModel
|
|
10
|
-
from django_ledger.models.journal_entry import JournalEntryModel
|
|
11
|
-
from django_ledger.models.ledger import LedgerModel
|
|
12
|
-
from django_ledger.models.transactions import TransactionModel
|
|
13
|
-
from django_ledger.models.vendor import VendorModel
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class TransactionModelInLine(admin.TabularInline):
|
|
17
|
-
model = TransactionModel
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class JournalEntryModelAdmin(admin.ModelAdmin):
|
|
21
|
-
readonly_fields = [
|
|
22
|
-
'ledger'
|
|
23
|
-
]
|
|
24
|
-
inlines = [
|
|
25
|
-
TransactionModelInLine
|
|
26
|
-
]
|
|
27
|
-
|
|
28
|
-
class Meta:
|
|
29
|
-
model = JournalEntryModel
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class EntityManagementInLine(admin.TabularInline):
|
|
33
|
-
model = EntityManagementModel
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class EntityModelAdmin(admin.ModelAdmin):
|
|
37
|
-
prepopulated_fields = {
|
|
38
|
-
'slug': ('name',)
|
|
39
|
-
}
|
|
40
|
-
inlines = [
|
|
41
|
-
EntityManagementInLine
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
class Meta:
|
|
45
|
-
model = EntityModel
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class AccountModelAdmin(admin.ModelAdmin):
|
|
49
|
-
actions = [
|
|
50
|
-
'activate',
|
|
51
|
-
'inactivate',
|
|
52
|
-
'lock',
|
|
53
|
-
'unlock'
|
|
54
|
-
]
|
|
55
|
-
actions_on_top = True
|
|
56
|
-
actions_on_bottom = True
|
|
57
|
-
sortable_by = [
|
|
58
|
-
'code'
|
|
59
|
-
]
|
|
60
|
-
list_display = [
|
|
61
|
-
'__str__',
|
|
62
|
-
'active',
|
|
63
|
-
'locked'
|
|
64
|
-
]
|
|
65
|
-
list_filter = [
|
|
66
|
-
'role',
|
|
67
|
-
'balance_type',
|
|
68
|
-
]
|
|
69
|
-
|
|
70
|
-
class Meta:
|
|
71
|
-
model = AccountModel
|
|
72
|
-
|
|
73
|
-
def activate(self, request, queryset):
|
|
74
|
-
queryset.update(active=True)
|
|
75
|
-
|
|
76
|
-
def inactivate(self, request, queryset):
|
|
77
|
-
queryset.update(active=False)
|
|
78
|
-
|
|
79
|
-
def lock(self, request, queryset):
|
|
80
|
-
queryset.update(locked=True)
|
|
81
|
-
|
|
82
|
-
def unlock(self, request, queryset):
|
|
83
|
-
queryset.update(locked=False)
|
|
84
|
-
|
|
85
|
-
# def role_bs(self, acc):
|
|
86
|
-
# return acc.role_bs.upper()
|
|
87
|
-
|
|
88
|
-
# role_bs.short_description = 'Balance Sheet Role'
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
class AccountsModelInLine(admin.TabularInline):
|
|
92
|
-
model = AccountModel
|
|
93
|
-
readonly_fields = [
|
|
94
|
-
'role_bs',
|
|
95
|
-
'role',
|
|
96
|
-
'balance_type',
|
|
97
|
-
]
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
class ChartOfAccountsModelAdmin(admin.ModelAdmin):
|
|
101
|
-
inlines = [
|
|
102
|
-
AccountsModelInLine
|
|
103
|
-
]
|
|
104
|
-
|
|
105
|
-
class Meta:
|
|
106
|
-
model = ChartOfAccountModel
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
class LedgerModelAdmin(admin.ModelAdmin):
|
|
110
|
-
class Meta:
|
|
111
|
-
model = LedgerModel
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
class InvoiceModelAdmin(admin.ModelAdmin):
|
|
115
|
-
readonly_fields = [
|
|
116
|
-
'invoice_number',
|
|
117
|
-
'date_due',
|
|
118
|
-
'ledger'
|
|
119
|
-
]
|
|
120
|
-
|
|
121
|
-
class Meta:
|
|
122
|
-
model = InvoiceModel
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
class BillModelAdmin(admin.ModelAdmin):
|
|
126
|
-
readonly_fields = [
|
|
127
|
-
'bill_number',
|
|
128
|
-
'date_due',
|
|
129
|
-
'ledger'
|
|
130
|
-
]
|
|
131
|
-
|
|
132
|
-
class Meta:
|
|
133
|
-
model = BillModel
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
class BankAccountModelAdmin(admin.ModelAdmin):
|
|
137
|
-
class Meta:
|
|
138
|
-
model = BankAccountModel
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
class CustomerModelAdmin(admin.ModelAdmin):
|
|
142
|
-
class Meta:
|
|
143
|
-
model = CustomerModel
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
class VendorModelAdmin(admin.ModelAdmin):
|
|
147
|
-
class Meta:
|
|
148
|
-
model = VendorModel
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
admin.site.register(EntityModel, EntityModelAdmin)
|
|
152
|
-
admin.site.register(JournalEntryModel, JournalEntryModelAdmin)
|
|
153
|
-
admin.site.register(LedgerModel, LedgerModelAdmin)
|
|
154
|
-
admin.site.register(ChartOfAccountModel, ChartOfAccountsModelAdmin)
|
|
155
|
-
admin.site.register(AccountModel, AccountModelAdmin)
|
|
156
|
-
admin.site.register(InvoiceModel, InvoiceModelAdmin)
|
|
157
|
-
admin.site.register(BillModel, BillModelAdmin)
|
|
158
|
-
admin.site.register(BankAccountModel, BankAccountModelAdmin)
|
|
159
|
-
admin.site.register(CustomerModel, CustomerModelAdmin)
|
|
160
|
-
admin.site.register(VendorModel, VendorModelAdmin)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|