wbcommission 1.59.0__tar.gz → 1.59.8__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 (83) hide show
  1. {wbcommission-1.59.0 → wbcommission-1.59.8}/PKG-INFO +1 -2
  2. {wbcommission-1.59.0 → wbcommission-1.59.8}/pyproject.toml +0 -1
  3. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/factories/commission.py +1 -0
  4. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/filters/rebate.py +1 -1
  5. wbcommission-1.59.8/wbcommission/migrations/0009_rename_rebate_commission_type_date_recipient_product_account_wbcommissio_commiss_432402_idx.py +18 -0
  6. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/commission.py +1 -1
  7. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/rebate.py +3 -6
  8. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/audit_report.py +2 -1
  9. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/customer_report.py +2 -1
  10. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/rebate.py +11 -8
  11. {wbcommission-1.59.0 → wbcommission-1.59.8}/.gitignore +0 -0
  12. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/__init__.py +0 -0
  13. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/__init__.py +0 -0
  14. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/accounts.py +0 -0
  15. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/commission.py +0 -0
  16. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/rebate.py +0 -0
  17. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/analytics/__init__.py +0 -0
  18. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/analytics/marginality.py +0 -0
  19. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/apps.py +0 -0
  20. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/dynamic_preferences_registry.py +0 -0
  21. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/factories/__init__.py +0 -0
  22. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/factories/rebate.py +0 -0
  23. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/filters/__init__.py +0 -0
  24. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/filters/signals.py +0 -0
  25. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/generators/__init__.py +0 -0
  26. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/generators/rebate_generator.py +0 -0
  27. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/de/LC_MESSAGES/django.mo +0 -0
  28. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/de/LC_MESSAGES/django.po +0 -0
  29. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/en/LC_MESSAGES/django.mo +0 -0
  30. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/en/LC_MESSAGES/django.po +0 -0
  31. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/fr/LC_MESSAGES/django.mo +0 -0
  32. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/fr/LC_MESSAGES/django.po +0 -0
  33. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0001_initial.py +0 -0
  34. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0002_commissionrule_remove_accountcustomer_account_and_more.py +0 -0
  35. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0003_alter_commission_account.py +0 -0
  36. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0004_rebate_audit_log.py +0 -0
  37. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0005_alter_rebate_audit_log.py +0 -0
  38. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0006_commissionrule_consider_zero_percent_for_exclusion.py +0 -0
  39. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0007_remove_commission_unique_crm_recipient_account_and_more.py +0 -0
  40. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0008_alter_commission_options_alter_commission_order.py +0 -0
  41. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/__init__.py +0 -0
  42. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/__init__.py +0 -0
  43. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/account_service.py +0 -0
  44. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/signals.py +0 -0
  45. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/permissions.py +0 -0
  46. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/__init__.py +0 -0
  47. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/utils.py +0 -0
  48. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/__init__.py +0 -0
  49. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/commissions.py +0 -0
  50. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/rebate.py +0 -0
  51. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/signals.py +0 -0
  52. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/__init__.py +0 -0
  53. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/analytics/__init__.py +0 -0
  54. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/analytics/test_marginality.py +0 -0
  55. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/conftest.py +0 -0
  56. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/__init__.py +0 -0
  57. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/mixins.py +0 -0
  58. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_account_service.py +0 -0
  59. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_commission.py +0 -0
  60. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_rebate.py +0 -0
  61. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/signals.py +0 -0
  62. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/test_permissions.py +0 -0
  63. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/viewsets/__init__.py +0 -0
  64. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/viewsets/test_rebate.py +0 -0
  65. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/urls.py +0 -0
  66. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/__init__.py +0 -0
  67. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/buttons/__init__.py +0 -0
  68. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/buttons/rebate.py +0 -0
  69. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/buttons/signals.py +0 -0
  70. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/commissions.py +0 -0
  71. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/display/__init__.py +0 -0
  72. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/display/commissions.py +0 -0
  73. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/display/rebate.py +0 -0
  74. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/endpoints/__init__.py +0 -0
  75. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/endpoints/commissions.py +0 -0
  76. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/endpoints/rebate.py +0 -0
  77. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/menu/__init__.py +0 -0
  78. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/menu/commissions.py +0 -0
  79. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/menu/rebate.py +0 -0
  80. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/mixins.py +0 -0
  81. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/titles/__init__.py +0 -0
  82. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/titles/commissions.py +0 -0
  83. {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/titles/rebate.py +0 -0
@@ -1,9 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbcommission
3
- Version: 1.59.0
3
+ Version: 1.59.8
4
4
  Summary: A workbench module for managing human resources.
5
5
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
6
- Requires-Dist: reportlab==3.*
7
6
  Requires-Dist: wbcompliance
8
7
  Requires-Dist: wbcore
9
8
  Requires-Dist: wbcrm
@@ -13,7 +13,6 @@ dependencies = [
13
13
  "wbportfolio",
14
14
  "wbreport",
15
15
  "wbmailing",
16
- "reportlab == 3.*",
17
16
  ]
18
17
 
19
18
  [tool.uv.sources]
@@ -34,6 +34,7 @@ class CommissionFactory(factory.django.DjangoModelFactory):
34
34
 
35
35
  class Meta:
36
36
  model = Commission
37
+ skip_postgeneration_save = True
37
38
 
38
39
  @factory.post_generation
39
40
  def rule_timespan(self, create, extracted, **kwargs):
@@ -1,7 +1,7 @@
1
1
  from wbcore import filters as wb_filters
2
2
  from wbcore.contrib.directory.models import Company
3
+ from wbcore.contrib.pandas.filterset import PandasFilterSetMixin
3
4
  from wbcore.filters.defaults import current_quarter_date_range
4
- from wbcore.pandas.filterset import PandasFilterSetMixin
5
5
  from wbfdm.models import ClassificationGroup
6
6
  from wbfdm.preferences import get_default_classification_group
7
7
  from wbportfolio.filters.transactions.claim import CommissionBaseFilterSet
@@ -0,0 +1,18 @@
1
+ # Generated by Django 5.2.9 on 2025-12-09 08:50
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('wbcommission', '0008_alter_commission_options_alter_commission_order'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.RenameIndex(
14
+ model_name='rebate',
15
+ new_name='wbcommissio_commiss_432402_idx',
16
+ old_fields=('commission_type', 'date', 'recipient', 'product', 'account'),
17
+ ),
18
+ ]
@@ -312,7 +312,7 @@ class Commission(OrderedModel, WBModel):
312
312
  condition=Q(account_role_type_recipient__isnull=False),
313
313
  ),
314
314
  models.CheckConstraint(
315
- check=(
315
+ condition=(
316
316
  Q(
317
317
  crm_recipient__isnull=False,
318
318
  portfolio_role_recipient__isnull=True,
@@ -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
@@ -155,11 +156,7 @@ class Rebate(BookingEntryCalculatedValueMixin, models.Model):
155
156
  verbose_name = "Rebate"
156
157
  verbose_name_plural = "Rebates"
157
158
  unique_together = ("date", "recipient", "account", "product", "commission_type")
158
- index_together = [
159
- # ("date", "recipient", "product"),
160
- ("commission_type", "date", "recipient", "product", "account"),
161
- # ("date", "recipient", "product", "commission"),
162
- ]
159
+ indexes = [models.Index(fields=["commission_type", "date", "recipient", "product", "account"])]
163
160
  notification_types = [
164
161
  create_notification_type(
165
162
  "wbcommission.rebate.computation_done",
@@ -271,7 +268,7 @@ class Rebate(BookingEntryCalculatedValueMixin, models.Model):
271
268
  # ----------- TASKS -----------
272
269
 
273
270
 
274
- @shared_task(queue="commission")
271
+ @shared_task(queue=Queue.EXTENDED_BACKGROUND.value)
275
272
  def manage_rebate_as_task(
276
273
  main_account_id: int,
277
274
  start_date: date_lib | None = None,
@@ -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)
@@ -19,7 +19,7 @@ from wbcore import viewsets
19
19
  from wbcore.contrib.currency.models import CurrencyFXRates
20
20
  from wbcore.contrib.directory.models import Entry
21
21
  from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
22
- from wbcore.pandas import fields as pf
22
+ from wbcore.contrib.pandas import fields as pf
23
23
  from wbcore.permissions.permissions import IsInternalUser
24
24
  from wbcore.serializers import decorator
25
25
  from wbcore.utils.date import get_date_interval_from_request
@@ -212,13 +212,16 @@ class RebatePandasView(RebatePermissionMixin, ExportPandasAPIViewSet):
212
212
  columns=["value_usd", "commission_type__key", pivot, pivot_label],
213
213
  )
214
214
  df = df.rename(columns={pivot: "id", pivot_label: "title"})
215
- df = pd.pivot_table(
216
- df,
217
- index=["id", "title"],
218
- columns="commission_type__key",
219
- values="value_usd",
220
- aggfunc="sum",
221
- fill_value=0,
215
+ df = (
216
+ pd.pivot_table(
217
+ df,
218
+ index=["id", "title"],
219
+ columns="commission_type__key",
220
+ values="value_usd",
221
+ aggfunc="sum",
222
+ )
223
+ .astype(float)
224
+ .fillna(0)
222
225
  )
223
226
  df["total"] = df.sum(axis=1)
224
227
  # Ensure all type are always present as a columns
File without changes