wbcommission 1.54.8__tar.gz → 1.59.5rc0__tar.gz

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.
Files changed (82) hide show
  1. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/PKG-INFO +4 -1
  2. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/pyproject.toml +6 -0
  3. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/filters/rebate.py +0 -2
  4. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/models/account_service.py +3 -1
  5. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/models/commission.py +3 -0
  6. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/models/rebate.py +2 -1
  7. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/permissions.py +2 -2
  8. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/reports/audit_report.py +2 -1
  9. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/reports/customer_report.py +3 -2
  10. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/models/test_commission.py +4 -4
  11. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/.gitignore +0 -0
  12. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/__init__.py +0 -0
  13. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/admin/__init__.py +0 -0
  14. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/admin/accounts.py +0 -0
  15. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/admin/commission.py +0 -0
  16. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/admin/rebate.py +0 -0
  17. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/analytics/__init__.py +0 -0
  18. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/analytics/marginality.py +0 -0
  19. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/apps.py +0 -0
  20. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/dynamic_preferences_registry.py +0 -0
  21. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/factories/__init__.py +0 -0
  22. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/factories/commission.py +0 -0
  23. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/factories/rebate.py +0 -0
  24. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/filters/__init__.py +0 -0
  25. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/filters/signals.py +0 -0
  26. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/generators/__init__.py +0 -0
  27. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/generators/rebate_generator.py +0 -0
  28. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/locale/de/LC_MESSAGES/django.mo +0 -0
  29. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/locale/de/LC_MESSAGES/django.po +0 -0
  30. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/locale/en/LC_MESSAGES/django.mo +0 -0
  31. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/locale/en/LC_MESSAGES/django.po +0 -0
  32. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/locale/fr/LC_MESSAGES/django.mo +0 -0
  33. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/locale/fr/LC_MESSAGES/django.po +0 -0
  34. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0001_initial.py +0 -0
  35. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0002_commissionrule_remove_accountcustomer_account_and_more.py +0 -0
  36. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0003_alter_commission_account.py +0 -0
  37. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0004_rebate_audit_log.py +0 -0
  38. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0005_alter_rebate_audit_log.py +0 -0
  39. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0006_commissionrule_consider_zero_percent_for_exclusion.py +0 -0
  40. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0007_remove_commission_unique_crm_recipient_account_and_more.py +0 -0
  41. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/0008_alter_commission_options_alter_commission_order.py +0 -0
  42. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/migrations/__init__.py +0 -0
  43. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/models/__init__.py +0 -0
  44. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/models/signals.py +0 -0
  45. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/reports/__init__.py +0 -0
  46. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/reports/utils.py +0 -0
  47. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/serializers/__init__.py +0 -0
  48. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/serializers/commissions.py +0 -0
  49. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/serializers/rebate.py +0 -0
  50. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/serializers/signals.py +0 -0
  51. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/__init__.py +0 -0
  52. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/analytics/__init__.py +0 -0
  53. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/analytics/test_marginality.py +0 -0
  54. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/conftest.py +0 -0
  55. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/models/__init__.py +0 -0
  56. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/models/mixins.py +0 -0
  57. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/models/test_account_service.py +0 -0
  58. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/models/test_rebate.py +0 -0
  59. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/signals.py +0 -0
  60. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/test_permissions.py +0 -0
  61. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/viewsets/__init__.py +0 -0
  62. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/tests/viewsets/test_rebate.py +0 -0
  63. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/urls.py +0 -0
  64. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/__init__.py +0 -0
  65. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/buttons/__init__.py +0 -0
  66. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/buttons/rebate.py +0 -0
  67. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/buttons/signals.py +0 -0
  68. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/commissions.py +0 -0
  69. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/display/__init__.py +0 -0
  70. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/display/commissions.py +0 -0
  71. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/display/rebate.py +0 -0
  72. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/endpoints/__init__.py +0 -0
  73. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/endpoints/commissions.py +0 -0
  74. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/endpoints/rebate.py +0 -0
  75. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/menu/__init__.py +0 -0
  76. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/menu/commissions.py +0 -0
  77. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/menu/rebate.py +0 -0
  78. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/mixins.py +0 -0
  79. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/rebate.py +0 -0
  80. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/titles/__init__.py +0 -0
  81. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/titles/commissions.py +0 -0
  82. {wbcommission-1.54.8 → wbcommission-1.59.5rc0}/wbcommission/viewsets/titles/rebate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbcommission
3
- Version: 1.54.8
3
+ Version: 1.59.5rc0
4
4
  Summary: A workbench module for managing human resources.
5
5
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
6
6
  Requires-Dist: reportlab==3.*
@@ -8,4 +8,7 @@ Requires-Dist: wbcompliance
8
8
  Requires-Dist: wbcore
9
9
  Requires-Dist: wbcrm
10
10
  Requires-Dist: wbfdm
11
+ Requires-Dist: wbmailing
11
12
  Requires-Dist: wbnews
13
+ Requires-Dist: wbportfolio
14
+ Requires-Dist: wbreport
@@ -10,6 +10,9 @@ dependencies = [
10
10
  "wbnews",
11
11
  "wbfdm",
12
12
  "wbcompliance",
13
+ "wbportfolio",
14
+ "wbreport",
15
+ "wbmailing",
13
16
  "reportlab == 3.*",
14
17
  ]
15
18
 
@@ -19,6 +22,9 @@ wbcrm = { workspace = true }
19
22
  wbnews = { workspace = true }
20
23
  wbfdm = { workspace = true }
21
24
  wbcompliance = { workspace = true }
25
+ wbportfolio = { workspace = true }
26
+ wbmailing = { workspace = true }
27
+ wbreport = { workspace = true }
22
28
 
23
29
  [tool.uv]
24
30
  package = true
@@ -13,7 +13,6 @@ from wbcommission.models.rebate import RebateGroupbyChoice
13
13
 
14
14
  class RebateDateFilter(CommissionBaseFilterSet):
15
15
  date = wb_filters.DateRangeFilter(
16
- method=wb_filters.DateRangeFilter.base_date_range_filter_method,
17
16
  label="Date Range",
18
17
  required=True,
19
18
  clearable=False,
@@ -98,7 +97,6 @@ class CustomerRebateGroupByFilter(RebateGroupByFilter):
98
97
  class RebateMarginalityFilter(PandasFilterSetMixin, wb_filters.FilterSet):
99
98
  date = wb_filters.DateRangeFilter(
100
99
  label="Date Range",
101
- method=wb_filters.DateRangeFilter.base_date_range_filter_method,
102
100
  required=True,
103
101
  clearable=False,
104
102
  initial=current_quarter_date_range,
@@ -182,7 +182,9 @@ class AccountRebateManager:
182
182
  and date, a KeyError will be caught, and the function will return Decimal(0).
183
183
  """
184
184
  with suppress(InstrumentPrice.DoesNotExist, KeyError):
185
- product_shares = max(product.prices.get(date=compute_date, calculated=True).outstanding_shares, Decimal(0))
185
+ product_shares = max(
186
+ product.prices.get(date=compute_date, calculated=True).outstanding_shares or Decimal(0), Decimal(0)
187
+ )
186
188
  account_shares = max(
187
189
  Decimal(self.df_shares.loc[(terminal_account.id, product.id, compute_date)]), Decimal(0)
188
190
  )
@@ -551,6 +551,9 @@ class CommissionExclusionRule(models.Model):
551
551
  ),
552
552
  ]
553
553
 
554
+ def __str__(self) -> str:
555
+ return super().__str__()
556
+
554
557
 
555
558
  class CommissionRule(ComplexToStringMixin, WBModel):
556
559
  id: Optional[int]
@@ -13,6 +13,7 @@ from wbcore.contrib.notifications.dispatch import send_notification
13
13
  from wbcore.contrib.notifications.utils import create_notification_type
14
14
  from wbcore.signals import pre_merge
15
15
  from wbcore.utils.enum import ChoiceEnum
16
+ from wbcore.workers import Queue
16
17
  from wbcrm.models.accounts import Account
17
18
 
18
19
  from .commission import Commission, CommissionType
@@ -271,7 +272,7 @@ class Rebate(BookingEntryCalculatedValueMixin, models.Model):
271
272
  # ----------- TASKS -----------
272
273
 
273
274
 
274
- @shared_task(queue="commission")
275
+ @shared_task(queue=Queue.EXTENDED_BACKGROUND.value)
275
276
  def manage_rebate_as_task(
276
277
  main_account_id: int,
277
278
  start_date: date_lib | None = None,
@@ -1,6 +1,6 @@
1
- from rest_framework.permissions import BasePermission
1
+ from rest_framework.permissions import IsAuthenticated
2
2
 
3
3
 
4
- class IsCommissionAdmin(BasePermission):
4
+ class IsCommissionAdmin(IsAuthenticated):
5
5
  def has_permission(self, request, view):
6
6
  return request.user.has_perm("wbcommission.administrate_commission")
@@ -5,6 +5,7 @@ import pandas as pd
5
5
  from celery import shared_task
6
6
  from wbcore.contrib.authentication.models import User
7
7
  from wbcore.contrib.directory.models import Entry
8
+ from wbcore.workers import Queue
8
9
  from wbcrm.models.accounts import Account
9
10
  from wbportfolio.models.products import Product
10
11
 
@@ -13,7 +14,7 @@ from wbcommission.models import Commission, CommissionType, Rebate
13
14
  from .utils import create_report_and_send
14
15
 
15
16
 
16
- @shared_task(queue="commission")
17
+ @shared_task(queue=Queue.DEFAULT.value)
17
18
  def create_audit_report_and_send_as_task(user_id: int, recipient_id: int, start_date: date, end_date: date):
18
19
  user = User.objects.get(id=user_id)
19
20
  recipient = Entry.objects.get(id=recipient_id)
@@ -8,6 +8,7 @@ from django.db.models import Case, F, Sum, When
8
8
  from wbcore.contrib.authentication.models import User
9
9
  from wbcore.contrib.currency.models import CurrencyFXRates
10
10
  from wbcore.contrib.directory.models import Entry
11
+ from wbcore.workers import Queue
11
12
  from wbcrm.models.accounts import (
12
13
  Account,
13
14
  AccountRole,
@@ -25,7 +26,7 @@ from .utils import create_report_and_send
25
26
  AccountCustomer = None
26
27
 
27
28
 
28
- @shared_task(queue="commission")
29
+ @shared_task(queue=Queue.DEFAULT.value)
29
30
  def create_customer_report_and_send_as_task(user_id: int, recipient_id: int, start_date: date, end_date: date):
30
31
  user = User.objects.get(id=user_id)
31
32
  recipient = Entry.objects.get(id=recipient_id)
@@ -218,7 +219,7 @@ def create_report(user, customer, start_date, end_date):
218
219
  worksheet_trade_performance.write_string(bank_cell, claim.bank, base_format)
219
220
  worksheet_trade_performance.write_string(root_account_cell, claim.account.get_root().title, base_format)
220
221
  worksheet_trade_performance.write_string(account_cell, str(claim.account), base_format)
221
- worksheet_trade_performance.write_string(product_cell, claim.product.title, base_format)
222
+ worksheet_trade_performance.write_string(product_cell, claim.product.name, base_format)
222
223
 
223
224
  worksheet_trade_performance.write_number(
224
225
  price_trade_cell, claim.price_date or claim.product.share_price, decimal_format
@@ -478,10 +478,10 @@ class TestCommissionType:
478
478
  res = dict()
479
479
  for commission_type in CommissionType.objects.all():
480
480
  for (
481
- terminal_account,
482
- compute_date,
483
- commission,
484
- product,
481
+ _,
482
+ _,
483
+ _,
484
+ _,
485
485
  recipient,
486
486
  recipient_fees,
487
487
  _,