django-ledger 0.6.0.1__py3-none-any.whl → 0.6.1__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.
- assets/node_modules/node-gyp/update-gyp.py +0 -0
- django_ledger/__init__.py +1 -1
- django_ledger/admin/ledger.py +3 -1
- django_ledger/io/__init__.py +1 -3
- django_ledger/io/{io_digest.py → io_context.py} +8 -0
- django_ledger/io/io_core.py +19 -6
- django_ledger/io/io_library.py +79 -30
- django_ledger/io/roles.py +80 -86
- django_ledger/migrations/0016_remove_accountmodel_django_ledg_coa_mod_e19964_idx_and_more.py +44 -0
- django_ledger/models/accounts.py +73 -43
- django_ledger/models/bill.py +2 -0
- django_ledger/models/coa.py +2 -0
- django_ledger/models/entity.py +5 -3
- django_ledger/models/invoice.py +2 -1
- django_ledger/models/items.py +4 -2
- django_ledger/models/ledger.py +24 -12
- django_ledger/models/mixins.py +11 -7
- django_ledger/models/transactions.py +4 -35
- django_ledger/settings.py +1 -0
- django_ledger/urls/entity.py +1 -1
- django_ledger/urls/unit.py +1 -1
- django_ledger/views/entity.py +18 -12
- django_ledger/views/ledger.py +0 -1
- django_ledger/views/mixins.py +60 -30
- {django_ledger-0.6.0.1.dist-info → django_ledger-0.6.1.dist-info}/METADATA +10 -8
- {django_ledger-0.6.0.1.dist-info → django_ledger-0.6.1.dist-info}/RECORD +29 -28
- {django_ledger-0.6.0.1.dist-info → django_ledger-0.6.1.dist-info}/top_level.txt +1 -0
- {django_ledger-0.6.0.1.dist-info → django_ledger-0.6.1.dist-info}/AUTHORS.md +0 -0
- {django_ledger-0.6.0.1.dist-info → django_ledger-0.6.1.dist-info}/LICENSE +0 -0
- {django_ledger-0.6.0.1.dist-info → django_ledger-0.6.1.dist-info}/WHEEL +0 -0
django_ledger/views/mixins.py
CHANGED
|
@@ -10,8 +10,8 @@ from calendar import monthrange
|
|
|
10
10
|
from datetime import timedelta, date
|
|
11
11
|
from typing import Tuple, Optional
|
|
12
12
|
|
|
13
|
-
from django.contrib.auth.mixins import PermissionRequiredMixin
|
|
14
|
-
from django.core.exceptions import ValidationError, ObjectDoesNotExist
|
|
13
|
+
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
|
|
14
|
+
from django.core.exceptions import ValidationError, ObjectDoesNotExist, ImproperlyConfigured
|
|
15
15
|
from django.db.models import Q
|
|
16
16
|
from django.http import Http404, HttpResponse, HttpResponseNotFound
|
|
17
17
|
from django.urls import reverse
|
|
@@ -21,7 +21,7 @@ from django.views.generic.dates import YearMixin, MonthMixin, DayMixin
|
|
|
21
21
|
|
|
22
22
|
from django_ledger.models import EntityModel, InvoiceModel, BillModel
|
|
23
23
|
from django_ledger.models.entity import EntityModelFiscalPeriodMixIn
|
|
24
|
-
from django_ledger.settings import DJANGO_LEDGER_PDF_SUPPORT_ENABLED
|
|
24
|
+
from django_ledger.settings import DJANGO_LEDGER_PDF_SUPPORT_ENABLED, DJANGO_LEDGER_AUTHORIZED_SUPERUSER
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class YearlyReportMixIn(YearMixin, EntityModelFiscalPeriodMixIn):
|
|
@@ -292,30 +292,40 @@ class SuccessUrlNextMixIn:
|
|
|
292
292
|
return reverse('django_ledger:home')
|
|
293
293
|
|
|
294
294
|
|
|
295
|
-
class DjangoLedgerSecurityMixIn(PermissionRequiredMixin):
|
|
295
|
+
class DjangoLedgerSecurityMixIn(LoginRequiredMixin, PermissionRequiredMixin):
|
|
296
|
+
ENTITY_SLUG_URL_KWARG = 'entity_slug'
|
|
296
297
|
AUTHORIZED_ENTITY_MODEL: Optional[EntityModel] = None
|
|
298
|
+
AUTHORIZE_SUPERUSER: bool = DJANGO_LEDGER_AUTHORIZED_SUPERUSER
|
|
297
299
|
permission_required = []
|
|
298
300
|
|
|
299
301
|
def get_login_url(self):
|
|
300
302
|
return reverse('django_ledger:login')
|
|
301
303
|
|
|
304
|
+
def get_entity_slug(self):
|
|
305
|
+
return self.kwargs[self.ENTITY_SLUG_URL_KWARG]
|
|
306
|
+
|
|
307
|
+
def get_entity_slug_kwarg(self):
|
|
308
|
+
if self.ENTITY_SLUG_URL_KWARG is None:
|
|
309
|
+
raise ImproperlyConfigured(
|
|
310
|
+
_('ENTITY_SLUG_URL_KWARG must be provided.')
|
|
311
|
+
)
|
|
312
|
+
return self.ENTITY_SLUG_URL_KWARG
|
|
313
|
+
|
|
314
|
+
def get_superuser_authorization(self):
|
|
315
|
+
return self.AUTHORIZE_SUPERUSER
|
|
316
|
+
|
|
302
317
|
def has_permission(self):
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
has_perm = super().has_permission()
|
|
313
|
-
if not has_perm:
|
|
314
|
-
return False
|
|
315
|
-
if 'entity_slug' in self.kwargs:
|
|
318
|
+
has_perm = super().has_permission()
|
|
319
|
+
if not has_perm:
|
|
320
|
+
return False
|
|
321
|
+
|
|
322
|
+
entity_slug_kwarg = self.get_entity_slug_kwarg()
|
|
323
|
+
entity_model_qs = self.get_authorized_entity_queryset()
|
|
324
|
+
|
|
325
|
+
if self.request.user.is_authenticated:
|
|
326
|
+
if entity_slug_kwarg in self.kwargs:
|
|
316
327
|
try:
|
|
317
|
-
|
|
318
|
-
self.AUTHORIZED_ENTITY_MODEL = entity_model_qs.get(slug__exact=self.kwargs['entity_slug'])
|
|
328
|
+
self.AUTHORIZED_ENTITY_MODEL = entity_model_qs.get(slug__exact=self.kwargs[entity_slug_kwarg])
|
|
319
329
|
except ObjectDoesNotExist:
|
|
320
330
|
return False
|
|
321
331
|
return True
|
|
@@ -323,7 +333,9 @@ class DjangoLedgerSecurityMixIn(PermissionRequiredMixin):
|
|
|
323
333
|
|
|
324
334
|
def get_authorized_entity_queryset(self):
|
|
325
335
|
return EntityModel.objects.for_user(
|
|
326
|
-
user_model=self.request.user
|
|
336
|
+
user_model=self.request.user,
|
|
337
|
+
authorized_superuser=self.get_superuser_authorization(),
|
|
338
|
+
).only(
|
|
327
339
|
'uuid', 'slug', 'name', 'default_coa', 'admin')
|
|
328
340
|
|
|
329
341
|
def get_authorized_entity_instance(self) -> Optional[EntityModel]:
|
|
@@ -357,8 +369,26 @@ class EntityUnitMixIn:
|
|
|
357
369
|
|
|
358
370
|
|
|
359
371
|
class DigestContextMixIn:
|
|
360
|
-
|
|
361
|
-
|
|
372
|
+
IO_DIGEST_UNBOUNDED = False
|
|
373
|
+
IO_DIGEST_BOUNDED = False
|
|
374
|
+
|
|
375
|
+
IO_DIGEST_UNBOUNDED_CONTEXT_NAME = 'tx_digest'
|
|
376
|
+
IO_MANAGER_UNBOUNDED_CONTEXT_NAME = 'tx_digest_context'
|
|
377
|
+
|
|
378
|
+
IO_DIGEST_BOUNDED_CONTEXT_NAME = 'equity_digest'
|
|
379
|
+
IO_MANAGER_BOUNDED_CONTEXT_NAME = 'equity_digest_context'
|
|
380
|
+
|
|
381
|
+
def get_io_digest_unbounded_context_name(self):
|
|
382
|
+
return self.IO_DIGEST_UNBOUNDED_CONTEXT_NAME
|
|
383
|
+
|
|
384
|
+
def get_io_manager_unbounded_context_name(self):
|
|
385
|
+
return self.IO_MANAGER_UNBOUNDED_CONTEXT_NAME
|
|
386
|
+
|
|
387
|
+
def get_io_digest_bounded_context_name(self):
|
|
388
|
+
return self.IO_DIGEST_BOUNDED_CONTEXT_NAME
|
|
389
|
+
|
|
390
|
+
def get_io_manager_bounded_context_name(self):
|
|
391
|
+
return self.IO_MANAGER_BOUNDED_CONTEXT_NAME
|
|
362
392
|
|
|
363
393
|
def get_context_data(self, **kwargs):
|
|
364
394
|
context = super(DigestContextMixIn, self).get_context_data(**kwargs)
|
|
@@ -370,8 +400,8 @@ class DigestContextMixIn:
|
|
|
370
400
|
to_date=None,
|
|
371
401
|
**kwargs):
|
|
372
402
|
|
|
373
|
-
if any([self.
|
|
374
|
-
self.
|
|
403
|
+
if any([self.IO_DIGEST_UNBOUNDED,
|
|
404
|
+
self.IO_DIGEST_BOUNDED]):
|
|
375
405
|
|
|
376
406
|
by_period = self.request.GET.get('by_period')
|
|
377
407
|
entity_model: EntityModel = self.object
|
|
@@ -386,7 +416,7 @@ class DigestContextMixIn:
|
|
|
386
416
|
else:
|
|
387
417
|
unit_slug = None
|
|
388
418
|
|
|
389
|
-
if self.
|
|
419
|
+
if self.IO_DIGEST_UNBOUNDED:
|
|
390
420
|
io_digest = entity_model.digest(user_model=self.request.user,
|
|
391
421
|
to_date=to_date,
|
|
392
422
|
unit_slug=unit_slug,
|
|
@@ -395,10 +425,10 @@ class DigestContextMixIn:
|
|
|
395
425
|
process_roles=True,
|
|
396
426
|
process_groups=True)
|
|
397
427
|
|
|
398
|
-
context[
|
|
399
|
-
context[
|
|
428
|
+
context[self.get_io_manager_unbounded_context_name()] = io_digest
|
|
429
|
+
context[self.get_io_digest_unbounded_context_name()] = io_digest.get_io_data()
|
|
400
430
|
|
|
401
|
-
if self.
|
|
431
|
+
if self.IO_DIGEST_BOUNDED:
|
|
402
432
|
io_digest_equity = entity_model.digest(user_model=self.request.user,
|
|
403
433
|
equity_only=True,
|
|
404
434
|
to_date=to_date,
|
|
@@ -409,8 +439,8 @@ class DigestContextMixIn:
|
|
|
409
439
|
process_roles=False,
|
|
410
440
|
process_groups=True)
|
|
411
441
|
|
|
412
|
-
context[
|
|
413
|
-
context[
|
|
442
|
+
context[self.get_io_manager_bounded_context_name()] = io_digest_equity
|
|
443
|
+
context[self.get_io_digest_bounded_context_name()] = io_digest_equity.get_io_data()
|
|
414
444
|
|
|
415
445
|
# todo: how is this used??....
|
|
416
446
|
context['date_filter'] = to_date
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-ledger
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.1
|
|
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>
|
|
@@ -44,9 +44,10 @@ Requires-Dist: furo ; extra == 'dev'
|
|
|
44
44
|
|
|
45
45
|
Introducing __Django Ledger__, a powerful double entry accounting system designed for financially driven applications
|
|
46
46
|
using the [Django Web Framework](https://www.djangoproject.com). Developed by lead developer Miguel Sanda, this system
|
|
47
|
-
offers a simplified, high-level API, making it easier for users to navigate the complexities of accounting.
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
offers a simplified, high-level API, making it easier for users to navigate the complexities of accounting.
|
|
48
|
+
|
|
49
|
+
If you have prior experience with Django, you'll find this software even more effective. And, for those interested
|
|
50
|
+
in contributing, consider joining our new discord channel for further collaboration and discussions.
|
|
50
51
|
|
|
51
52
|
### Questions? Join our Discord Channel [Here](https://discord.gg/c7PZcbYgrc)
|
|
52
53
|
|
|
@@ -82,13 +83,14 @@ Feel free to initiate an Issue describing your new feature request.
|
|
|
82
83
|
Finance and Accounting is a complicated subject. Django Ledger stands out from other Django projects due to its focus
|
|
83
84
|
on providing a developer-friendly accounting engine and a reliable, extensible API for financially driven applications.
|
|
84
85
|
The project requires expertise in Python, Django programming, finance, and accounting. In essence, the project is
|
|
85
|
-
seeking assistance from individuals with the specific skill set needed to contribute effectively.
|
|
86
|
-
they are in need of support from individuals with the right expertise.
|
|
86
|
+
seeking assistance from individuals with the specific skill set needed to contribute effectively.
|
|
87
87
|
|
|
88
88
|
The project is actively seeking contributors with financial and/or accounting experience. Prior accounting experience
|
|
89
89
|
is a big plus for potential contributors. If you have the relevant experience and want to contribute, feel free to
|
|
90
|
-
reach out to me
|
|
91
|
-
|
|
90
|
+
reach out to me or submit your pull request.
|
|
91
|
+
|
|
92
|
+
You can find the contribution guidelines at the specified link.
|
|
93
|
+
The project welcomes anyone interested in making a contribution.
|
|
92
94
|
|
|
93
95
|
See __[contribution guidelines](https://github.com/arrobalytics/django-ledger/blob/develop/Contribute.md)__.
|
|
94
96
|
|
|
@@ -48,15 +48,15 @@ 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=
|
|
51
|
+
django_ledger/__init__.py,sha256=zjhbT65sw3hTpJoAXAnUS_CQxh530bsWRh9Lcro2CeQ,456
|
|
52
52
|
django_ledger/apps.py,sha256=H-zEWUjKGakgSDSZmLIoXChZ2h6e0dth0ZO5SpoT-8U,163
|
|
53
53
|
django_ledger/exceptions.py,sha256=rML8sQQ0Hq-DYMLZ76dfw2RYSAsXWUoyHuyC_yP9o1o,491
|
|
54
|
-
django_ledger/settings.py,sha256=
|
|
54
|
+
django_ledger/settings.py,sha256=bZyPKgjmRcO_Rj7hDi4gGlW0VFr_LP2yKeUVIkmWgQM,6321
|
|
55
55
|
django_ledger/utils.py,sha256=l8xq-uSvUdJNpyDjC_0UrsSfjeEpwf7B-tavbnt40a8,4305
|
|
56
56
|
django_ledger/admin/__init__.py,sha256=MipzxmBhXswpx63uf3Ai2amyBMAP5fZL7mKXKxjNRIY,458
|
|
57
57
|
django_ledger/admin/coa.py,sha256=BcBsvNs4Z1hOyZy4YqCtIfk1aw8DejrI1bAEH93Tkjc,3542
|
|
58
58
|
django_ledger/admin/entity.py,sha256=DhH-6o3kjUdkhVPHzwOSF3crtvf5MCzcc1vPCk9O2Bk,6287
|
|
59
|
-
django_ledger/admin/ledger.py,sha256=
|
|
59
|
+
django_ledger/admin/ledger.py,sha256=z33FYDT50ahrK4AGs-bZhnrvdIt-imG0QJpZ_KRGUWw,7914
|
|
60
60
|
django_ledger/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
61
|
django_ledger/contrib/django_ledger_graphene/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
62
|
django_ledger/contrib/django_ledger_graphene/api.py,sha256=exrsmMcX21-Vhpe2_9X0eRLcdlnoE2ut0KUxBLu-TM8,871
|
|
@@ -114,15 +114,15 @@ django_ledger/forms/transactions.py,sha256=DD2TJthArTKTuzd4A43ZbugepcB8iuJ4Q_PSR
|
|
|
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
|
-
django_ledger/io/__init__.py,sha256=
|
|
118
|
-
django_ledger/io/
|
|
119
|
-
django_ledger/io/
|
|
117
|
+
django_ledger/io/__init__.py,sha256=8m5AoBRiG2ymrX0Y4LVjq0275i7I5Sk7YRa1BTzVofI,369
|
|
118
|
+
django_ledger/io/io_context.py,sha256=xgykRoB6hVSN2q20f62j_4zbOeAHU5ZgbZaSwRaSkOU,4444
|
|
119
|
+
django_ledger/io/io_core.py,sha256=ktyTd_r6fZBSvGsXR-6J-vzwsdzAAyu3lnMWsVaFInk,46924
|
|
120
120
|
django_ledger/io/io_generator.py,sha256=JF4plsABUkCIrtI2X-YD7o5eNghRIgLUseNcBIGOj3U,34613
|
|
121
|
-
django_ledger/io/io_library.py,sha256=
|
|
121
|
+
django_ledger/io/io_library.py,sha256=vvQm3IQRLFdH7HS_DYX46Xe-U9IvgZ6MQnHjy0-fyjk,22480
|
|
122
122
|
django_ledger/io/io_middleware.py,sha256=c-vwpcjg2HbYbb4O36fdf6011dFOnoNsDHOAQXmJgB8,20052
|
|
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=
|
|
125
|
+
django_ledger/io/roles.py,sha256=J9Z8WtunOQShKORCY97HpFtlAHG4N4hPfBkpUtRQDIY,20223
|
|
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
|
|
@@ -141,25 +141,26 @@ django_ledger/migrations/0012_stagedtransactionmodel_activity.py,sha256=Tv0rXC1H
|
|
|
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
143
|
django_ledger/migrations/0015_remove_chartofaccountmodel_locked_and_more.py,sha256=GZDKJDjpqo52pY7sXusHpyvXsUwsuvoZqTQNda9Eo1I,560
|
|
144
|
+
django_ledger/migrations/0016_remove_accountmodel_django_ledg_coa_mod_e19964_idx_and_more.py,sha256=wpapkPycqZ9drUMlPGBs1IRy7pz6HyDgNvZBaf-E86o,1655
|
|
144
145
|
django_ledger/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
146
|
django_ledger/models/__init__.py,sha256=8mn-OGhAVgLs8YASEBwo8dpX6tHyGtMxRHVPGDGECVU,793
|
|
146
|
-
django_ledger/models/accounts.py,sha256=
|
|
147
|
+
django_ledger/models/accounts.py,sha256=0OWMrv89fUdec7RF1EiWE6xZdJMOdEpgYPWechAJYrM,28881
|
|
147
148
|
django_ledger/models/bank_account.py,sha256=0-eTBxxRyvUKOVVNcGqWV1kiOKcXA2KPQIdiVHDUDCY,7678
|
|
148
|
-
django_ledger/models/bill.py,sha256=
|
|
149
|
+
django_ledger/models/bill.py,sha256=ZC6PmPYeSFMUBSUqTqebQOZrWEpo59PH6Y4evTO5uy8,63717
|
|
149
150
|
django_ledger/models/closing_entry.py,sha256=557vVKhrRZOdzqmmvtVlU48VbzJk8tTV018b0dTfpek,17746
|
|
150
|
-
django_ledger/models/coa.py,sha256=
|
|
151
|
+
django_ledger/models/coa.py,sha256=o-VM2XK64djM3px6pJlGrUVTXu5qNb4ENESS70I___0,27154
|
|
151
152
|
django_ledger/models/coa_default.py,sha256=4Zj8OMhgBiYuREjM82cFfyGWd8uCAeqggVkeNhg4SLU,27338
|
|
152
153
|
django_ledger/models/customer.py,sha256=JQOktcYKUlENJv4frek9rAW6sRerrQ0xXHlC5KPmhWk,11807
|
|
153
154
|
django_ledger/models/data_import.py,sha256=2H-4oTVLa7qXq03m9fd7T5zSQLkZKOAn2OAeOQBzMPA,19477
|
|
154
|
-
django_ledger/models/entity.py,sha256=
|
|
155
|
+
django_ledger/models/entity.py,sha256=VFknz-7FQZu_gVDb5RWqPoCb3eXVzIMgmr4hatUlzBI,121876
|
|
155
156
|
django_ledger/models/estimate.py,sha256=-qB5t2cEdyYpFUq7tOUQnFqvE6EDUiVdTtzjEbESwEQ,55829
|
|
156
|
-
django_ledger/models/invoice.py,sha256=
|
|
157
|
-
django_ledger/models/items.py,sha256=
|
|
157
|
+
django_ledger/models/invoice.py,sha256=h5Jh5KOfYr31Eu9gFW1mdoGoVzx7nW8qBdx7vyiXnZU,61568
|
|
158
|
+
django_ledger/models/items.py,sha256=Wh_zPBnYCdI393nHafT6xd4aSutKBQPwKSjDtXTTPNQ,55042
|
|
158
159
|
django_ledger/models/journal_entry.py,sha256=VfXXvm3tUFuy2Z6j3PLlDk9ndHqsZgn_PuhrxTNqaiY,50918
|
|
159
|
-
django_ledger/models/ledger.py,sha256=
|
|
160
|
-
django_ledger/models/mixins.py,sha256=
|
|
160
|
+
django_ledger/models/ledger.py,sha256=kPxyKo5u0-2viifCY87Ms3xglmgrfiDAg0oJgsOrDwc,23603
|
|
161
|
+
django_ledger/models/mixins.py,sha256=s8ZjEjYQfmU88cLyFNKoiFi79_g1rTe1knEccV2WUXw,52122
|
|
161
162
|
django_ledger/models/purchase_order.py,sha256=CDibi90e7Yhpv_UiyP32mMcsQ0EUElXJ2r8pLzuS7yE,42729
|
|
162
|
-
django_ledger/models/transactions.py,sha256=
|
|
163
|
+
django_ledger/models/transactions.py,sha256=kOL7s-hiRc6iqS7J62bVJY6ikja9Q8WdkRq0FT0zO2U,22722
|
|
163
164
|
django_ledger/models/unit.py,sha256=x5FFJXgOi1OdajQejIakW6wGY4DjrJhL3S0Pm5OimMk,8074
|
|
164
165
|
django_ledger/models/utils.py,sha256=3gkdCrfJp9qwN3Sf8R96AliilzwcKBm31UEao4WJO9o,8436
|
|
165
166
|
django_ledger/models/vendor.py,sha256=akJCO86GIwjlZ_jPUZCDXlMeuJe-8zKTm-52aJXGFpg,11320
|
|
@@ -376,7 +377,7 @@ django_ledger/urls/closing_entry.py,sha256=3W0fCuAWGB3h8cWg0cxOb9EClVrydeIdHEX0q
|
|
|
376
377
|
django_ledger/urls/customer.py,sha256=I3tWSb5Gmdr-boBSlCst_5cvCHz6JhpGxuwglqJeaG0,426
|
|
377
378
|
django_ledger/urls/data_import.py,sha256=bOi6U8gN2adxQUjOeNCJGuDRB--hwWeUIQOYTMbFarw,780
|
|
378
379
|
django_ledger/urls/djl_api.py,sha256=4BOkWI8MyfJlHXRn21hL08KYF39j7Njd1l7FIxTcsuc,952
|
|
379
|
-
django_ledger/urls/entity.py,sha256=
|
|
380
|
+
django_ledger/urls/entity.py,sha256=8ysVslj0KhzGeOZyfRMJW6SYROyGM_azwGxFkkG4ICQ,1286
|
|
380
381
|
django_ledger/urls/estimate.py,sha256=4dmIv-IElYgl88HsEuwIYBr6XK4Dhbhtj09TmDa5H8k,2058
|
|
381
382
|
django_ledger/urls/feedback.py,sha256=TY7UWFHHdN6teL6HiLibmjGCx4pXSijYZWaLt3L7-qs,273
|
|
382
383
|
django_ledger/urls/financial_statement.py,sha256=frEM-gPH3r9QkkyqmpQc3xf5IdqoCAdVQ5PgjvHD_PU,8565
|
|
@@ -388,7 +389,7 @@ django_ledger/urls/journal_entry.py,sha256=sKuYtKDSaAVcW--iIe8GQecuVZ7wF6W3vOtgA
|
|
|
388
389
|
django_ledger/urls/ledger.py,sha256=9OD7jvR3D3F6KY9RU-Hj6asvH4OiapQzvwaG3IS7haY,2801
|
|
389
390
|
django_ledger/urls/purchase_order.py,sha256=iUNdzy8dcxkkmDAOt2fO4Up3e0pHDqZNSf9JOKbO4Wo,2388
|
|
390
391
|
django_ledger/urls/transactions.py,sha256=e_x_z5qbkR6i7o8OWWdXshDiY_WVmu9WVhR9A96fnhI,80
|
|
391
|
-
django_ledger/urls/unit.py,sha256=
|
|
392
|
+
django_ledger/urls/unit.py,sha256=QEVKrgcw2dqMaaXsUHfqYecTa5-iaPlS9smrYJ1QsgM,1506
|
|
392
393
|
django_ledger/urls/vendor.py,sha256=ODHpAwe5lomluj8ZCqbMtugTeeRsv0Yo9SqkZEmfYaw,393
|
|
393
394
|
django_ledger/views/__init__.py,sha256=l5Pm2_oAW6Q_jJbXf-BiHA3ilCbiGb6gkXCm73K5DGY,1158
|
|
394
395
|
django_ledger/views/account.py,sha256=d2pzYXKPOF74hCD4ehsQ_WNFsgqyGXXekCh22gDawAM,10523
|
|
@@ -400,7 +401,7 @@ django_ledger/views/coa.py,sha256=WnWQVz-4Ik9v28KHzD_WiKcgix7l6bBj1A60p4k-eos,49
|
|
|
400
401
|
django_ledger/views/customer.py,sha256=RoBsXBxZC9b79DSNNHaoSZtQ2AoXf7DJAGmZEO3xdxs,3672
|
|
401
402
|
django_ledger/views/data_import.py,sha256=_H8gjGRIE2Jm97ivvEQn0uEWrM3VvKkYQeXQ1GbKn3g,11950
|
|
402
403
|
django_ledger/views/djl_api.py,sha256=6ADX9fBK8DroTeg8UIeCf2x4wt6-AF5xLlDQnqXBfsM,4411
|
|
403
|
-
django_ledger/views/entity.py,sha256=
|
|
404
|
+
django_ledger/views/entity.py,sha256=egJoB4-HAyzKd_5tZ8gOh8nxMKA09_Ds2H7elGt5_DE,9457
|
|
404
405
|
django_ledger/views/estimate.py,sha256=ZFG0k2_nAV10EjO-p8yp7EVMa4x2qOcFSHl2xFpNDaM,12811
|
|
405
406
|
django_ledger/views/feedback.py,sha256=qoIN44fJnblPx-pJFe5yYeO-dMqp-FReFZiyw0qQb_s,2460
|
|
406
407
|
django_ledger/views/financial_statement.py,sha256=B4FE9qyBYs8tJvBJ1n9-7kR-pH2EJWn6SnjBdtbRfuE,7335
|
|
@@ -409,15 +410,15 @@ django_ledger/views/inventory.py,sha256=ZyCmrkdYLu-D7Fnt0if0-wW6-wSWMgK9EQivVATA
|
|
|
409
410
|
django_ledger/views/invoice.py,sha256=iUzTG-EbdYqNX-eYwHBnQRUD_1wTOGutw0BfDMKcI6s,20304
|
|
410
411
|
django_ledger/views/item.py,sha256=FY53vk_giTRgvJ47FRqChQ8vyDYPDp4DGTvVhGAb36E,21347
|
|
411
412
|
django_ledger/views/journal_entry.py,sha256=21kuiRBlhlkgv8xZKM4mj9djv0Fu0BhB80QOEOHCa-w,12135
|
|
412
|
-
django_ledger/views/ledger.py,sha256=
|
|
413
|
-
django_ledger/views/mixins.py,sha256=
|
|
413
|
+
django_ledger/views/ledger.py,sha256=Yk6uDoYhJs5vf5JRqsy8n0nUNDEHk7NzjR1PglyqaAM,12647
|
|
414
|
+
django_ledger/views/mixins.py,sha256=0hbpYeXAXQd1PoHetJjBcpie2AYkS_8eteVLfszQFT4,22410
|
|
414
415
|
django_ledger/views/purchase_order.py,sha256=1J3u4QnCkM7z1Y6DePijVdM67x4CQgfmQJcs3Y4kclU,21082
|
|
415
416
|
django_ledger/views/transactions.py,sha256=5taQRGLSMkM_N8paQJ07HMspI_Nl7PawF8OohCiRmao,206
|
|
416
417
|
django_ledger/views/unit.py,sha256=_RgPJO9mR6v5ohBXlnL3T8nTWgS1lwlCvERQcHk0wHE,10232
|
|
417
418
|
django_ledger/views/vendor.py,sha256=gUdBPTFLeSwlNfdHSA1KFdE_y3QpwpkFhEB0r3-UYdI,3461
|
|
418
|
-
django_ledger-0.6.
|
|
419
|
-
django_ledger-0.6.
|
|
420
|
-
django_ledger-0.6.
|
|
421
|
-
django_ledger-0.6.
|
|
422
|
-
django_ledger-0.6.
|
|
423
|
-
django_ledger-0.6.
|
|
419
|
+
django_ledger-0.6.1.dist-info/AUTHORS.md,sha256=SRM2cynD89ZfEsL09zrbUVeO17r9zE2ZM7y6ReMqVRo,713
|
|
420
|
+
django_ledger-0.6.1.dist-info/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
|
|
421
|
+
django_ledger-0.6.1.dist-info/METADATA,sha256=eHzjHHjGze0fWBZszdinvMyE4tx-9EcYrzrGuDL2Yhg,9641
|
|
422
|
+
django_ledger-0.6.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
423
|
+
django_ledger-0.6.1.dist-info/top_level.txt,sha256=0U3SjF63ND36grQNWDONVe-T9-T07lFl5e6QkG7bR2E,44
|
|
424
|
+
django_ledger-0.6.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|