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

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

Potentially problematic release.


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

Files changed (78) hide show
  1. django_ledger/__init__.py +1 -1
  2. django_ledger/forms/account.py +4 -1
  3. django_ledger/io/io_core.py +3 -1
  4. django_ledger/models/customer.py +1 -1
  5. django_ledger/models/data_import.py +22 -3
  6. django_ledger/models/invoice.py +1 -1
  7. django_ledger/models/mixins.py +5 -5
  8. django_ledger/static/django_ledger/bundle/djetler.bundle.js +1 -1
  9. django_ledger/static/django_ledger/bundle/styles.bundle.js +1 -1
  10. django_ledger/templates/django_ledger/account/tags/account_txs_table.html +1 -1
  11. django_ledger/templates/django_ledger/bills/bill_update.html +1 -1
  12. django_ledger/templates/django_ledger/components/icon.html +1 -1
  13. django_ledger/templates/django_ledger/data_import/tags/data_import_job_list_table.html +8 -0
  14. django_ledger/templates/django_ledger/data_import/tags/data_import_job_txs_imported.html +8 -1
  15. django_ledger/templates/django_ledger/financial_statements/balance_sheet.html +1 -0
  16. django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html +4 -4
  17. django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html +118 -0
  18. django_ledger/templates/django_ledger/includes/nav.html +9 -5
  19. django_ledger/templates/django_ledger/invoice/includes/card_invoice.html +69 -69
  20. django_ledger/templatetags/django_ledger.py +11 -3
  21. django_ledger/views/account.py +1 -1
  22. django_ledger/views/mixins.py +6 -18
  23. {django_ledger-0.7.1.dist-info → django_ledger-0.7.3.dist-info}/METADATA +1 -1
  24. {django_ledger-0.7.1.dist-info → django_ledger-0.7.3.dist-info}/RECORD +28 -78
  25. assets/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  26. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -367
  27. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  28. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1270
  29. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1547
  30. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  31. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -153
  32. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -271
  33. assets/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -574
  34. assets/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -666
  35. assets/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -654
  36. assets/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -78
  37. assets/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -165
  38. assets/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -109
  39. assets/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  40. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  41. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -808
  42. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1173
  43. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1321
  44. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -120
  45. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -103
  46. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -464
  47. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -89
  48. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -58
  49. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2518
  50. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3978
  51. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  52. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2936
  53. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -55
  54. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1394
  55. assets/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -25
  56. assets/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3137
  57. assets/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -98
  58. assets/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -771
  59. assets/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1271
  60. assets/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  61. assets/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  62. assets/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -374
  63. assets/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1939
  64. assets/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -302
  65. assets/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3197
  66. assets/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -65
  67. assets/node_modules/node-gyp/gyp/setup.py +0 -42
  68. assets/node_modules/node-gyp/gyp/test_gyp.py +0 -260
  69. assets/node_modules/node-gyp/gyp/tools/graphviz.py +0 -102
  70. assets/node_modules/node-gyp/gyp/tools/pretty_gyp.py +0 -156
  71. assets/node_modules/node-gyp/gyp/tools/pretty_sln.py +0 -181
  72. assets/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +0 -339
  73. assets/node_modules/node-gyp/test/fixtures/test-charmap.py +0 -31
  74. assets/node_modules/node-gyp/update-gyp.py +0 -46
  75. {django_ledger-0.7.1.dist-info → django_ledger-0.7.3.dist-info}/AUTHORS.md +0 -0
  76. {django_ledger-0.7.1.dist-info → django_ledger-0.7.3.dist-info}/LICENSE +0 -0
  77. {django_ledger-0.7.1.dist-info → django_ledger-0.7.3.dist-info}/WHEEL +0 -0
  78. {django_ledger-0.7.1.dist-info → django_ledger-0.7.3.dist-info}/top_level.txt +0 -0
django_ledger/__init__.py CHANGED
@@ -6,7 +6,7 @@ Copyright© EDMA Group Inc licensed under the GPLv3 Agreement.
6
6
  default_app_config = 'django_ledger.apps.DjangoLedgerConfig'
7
7
 
8
8
  """Django Ledger"""
9
- __version__ = '0.7.1'
9
+ __version__ = '0.7.3'
10
10
  __license__ = 'GPLv3 License'
11
11
 
12
12
  __author__ = 'Miguel Sanda'
@@ -145,13 +145,16 @@ class AccountModelUpdateForm(MoveNodeForm):
145
145
 
146
146
  class Meta:
147
147
  model = AccountModel
148
- exclude = ('depth', 'numchild', 'path', 'balance_type')
148
+ exclude = ('depth', 'numchild', 'path')
149
149
  widgets = {
150
150
  'role': HiddenInput(),
151
151
  'coa_model': HiddenInput(),
152
152
  'parent': Select(attrs={
153
153
  'class': DJANGO_LEDGER_FORM_INPUT_CLASSES
154
154
  }),
155
+ 'balance_type': Select(attrs={
156
+ 'class': DJANGO_LEDGER_FORM_INPUT_CLASSES
157
+ }),
155
158
  'code': TextInput(attrs={
156
159
  'class': DJANGO_LEDGER_FORM_INPUT_CLASSES
157
160
  }),
@@ -499,10 +499,11 @@ class IODatabaseMixIn:
499
499
  VALUES = [
500
500
  'account__uuid',
501
501
  'account__balance_type',
502
- 'tx_type',
503
502
  'account__code',
504
503
  'account__name',
505
504
  'account__role',
505
+ 'account__coa_model__slug',
506
+ 'tx_type',
506
507
  ]
507
508
 
508
509
  ANNOTATE = {'balance': Sum('amount')}
@@ -663,6 +664,7 @@ class IODatabaseMixIn:
663
664
  gl = list(g)
664
665
  return {
665
666
  'account_uuid': k[0],
667
+ 'coa_slug': gl[0]['account__coa_model__slug'],
666
668
  'unit_uuid': k[1],
667
669
  'unit_name': gl[0].get('journal_entry__entity_unit__name'),
668
670
  'activity': gl[0].get('journal_entry__activity'),
@@ -330,6 +330,6 @@ class CustomerModel(CustomerModelAbstract):
330
330
  Base Customer Model Implementation
331
331
  """
332
332
 
333
- class Meta:
333
+ class Meta(CustomerModelAbstract.Meta):
334
334
  swappable = 'DJANGO_LEDGER_CUSTOMER_MODEL'
335
335
  abstract = False
@@ -32,7 +32,25 @@ class ImportJobModelManager(Manager):
32
32
 
33
33
  def get_queryset(self):
34
34
  qs = super().get_queryset()
35
- return qs.select_related(
35
+ return qs.annotate(
36
+ txs_count=Count('stagedtransactionmodel',
37
+ filter=Q(stagedtransactionmodel__parent__isnull=False)),
38
+ txs_mapped_count=Count(
39
+ 'stagedtransactionmodel__account_model_id',
40
+ filter=Q(stagedtransactionmodel__parent__isnull=False) | Q(
41
+ stagedtransactionmodel__parent__parent__isnull=False)
42
+
43
+ ),
44
+ ).annotate(
45
+ txs_pending=F('txs_count') - F('txs_mapped_count')
46
+ ).annotate(
47
+ is_complete=Case(
48
+ When(txs_count__exact=0, then=False),
49
+ When(txs_pending__exact=0, then=True),
50
+ default=False,
51
+ output_field=BooleanField()
52
+ ),
53
+ ).select_related(
36
54
  'bank_account_model',
37
55
  'bank_account_model__cash_account',
38
56
  'ledger_model'
@@ -101,7 +119,7 @@ class ImportJobModelAbstract(CreateUpdateMixIn):
101
119
  return _(f'Are you sure you want to delete Import Job {self.description}?')
102
120
 
103
121
 
104
- class StagedTransactionModelQuerySet(models.QuerySet):
122
+ class StagedTransactionModelQuerySet(QuerySet):
105
123
 
106
124
  def is_pending(self):
107
125
  return self.filter(transaction_model__isnull=True)
@@ -116,7 +134,7 @@ class StagedTransactionModelQuerySet(models.QuerySet):
116
134
  return self.filter(ready_to_import=True)
117
135
 
118
136
 
119
- class StagedTransactionModelManager(models.Manager):
137
+ class StagedTransactionModelManager(Manager):
120
138
 
121
139
  def get_queryset(self):
122
140
  qs = super().get_queryset()
@@ -138,6 +156,7 @@ class StagedTransactionModelManager(models.Manager):
138
156
  When(parent_id__isnull=False, then=F('parent_id'))
139
157
  ),
140
158
  ).annotate(
159
+ entity_unit=F('transaction_model__journal_entry__entity_unit__name'),
141
160
  ready_to_import=Case(
142
161
  # is mapped singleton...
143
162
  When(
@@ -1819,7 +1819,7 @@ class InvoiceModel(InvoiceModelAbstract):
1819
1819
  Base Invoice Model from Abstract.
1820
1820
  """
1821
1821
 
1822
- class Meta:
1822
+ class Meta(InvoiceModelAbstract.Meta):
1823
1823
  swappable = 'DJANGO_LEDGER_INVOICE_MODEL'
1824
1824
  abstract = False
1825
1825
 
@@ -898,11 +898,11 @@ class AccrualMixIn(models.Model):
898
898
  ]):
899
899
  raise ValidationError('Must provide all accounts Cash, Prepaid, UnEarned.')
900
900
 
901
- if self.accrue:
902
- if self.is_approved():
903
- self.progress = Decimal.from_float(1.00)
904
- else:
905
- self.progress = Decimal.from_float(0.00)
901
+ # if self.accrue:
902
+ # if self.is_approved():
903
+ # self.progress = Decimal.from_float(1.00)
904
+ # else:
905
+ # self.progress = Decimal.from_float(0.00)
906
906
 
907
907
  if self.amount_paid > self.amount_due:
908
908
  raise ValidationError(f'Amount paid {self.amount_paid} cannot exceed amount due {self.amount_due}')