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.
- {wbcommission-1.59.0 → wbcommission-1.59.8}/PKG-INFO +1 -2
- {wbcommission-1.59.0 → wbcommission-1.59.8}/pyproject.toml +0 -1
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/factories/commission.py +1 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/filters/rebate.py +1 -1
- wbcommission-1.59.8/wbcommission/migrations/0009_rename_rebate_commission_type_date_recipient_product_account_wbcommissio_commiss_432402_idx.py +18 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/commission.py +1 -1
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/rebate.py +3 -6
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/audit_report.py +2 -1
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/customer_report.py +2 -1
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/rebate.py +11 -8
- {wbcommission-1.59.0 → wbcommission-1.59.8}/.gitignore +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/accounts.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/commission.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/admin/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/analytics/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/analytics/marginality.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/apps.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/dynamic_preferences_registry.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/factories/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/factories/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/filters/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/filters/signals.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/generators/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/generators/rebate_generator.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/de/LC_MESSAGES/django.mo +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/de/LC_MESSAGES/django.po +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/en/LC_MESSAGES/django.mo +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/en/LC_MESSAGES/django.po +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/fr/LC_MESSAGES/django.mo +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/locale/fr/LC_MESSAGES/django.po +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0001_initial.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0002_commissionrule_remove_accountcustomer_account_and_more.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0003_alter_commission_account.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0004_rebate_audit_log.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0005_alter_rebate_audit_log.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0006_commissionrule_consider_zero_percent_for_exclusion.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0007_remove_commission_unique_crm_recipient_account_and_more.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0008_alter_commission_options_alter_commission_order.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/account_service.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/models/signals.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/permissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/reports/utils.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/commissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/serializers/signals.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/analytics/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/analytics/test_marginality.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/conftest.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/mixins.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_account_service.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_commission.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/signals.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/test_permissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/viewsets/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/viewsets/test_rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/urls.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/buttons/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/buttons/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/buttons/signals.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/commissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/display/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/display/commissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/display/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/endpoints/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/endpoints/commissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/endpoints/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/menu/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/menu/commissions.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/menu/rebate.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/mixins.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/titles/__init__.py +0 -0
- {wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/viewsets/titles/commissions.py +0 -0
- {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.
|
|
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
|
|
@@ -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
|
+
]
|
|
@@ -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
|
-
|
|
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=
|
|
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=
|
|
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=
|
|
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 =
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0003_alter_commission_account.py
RENAMED
|
File without changes
|
{wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0004_rebate_audit_log.py
RENAMED
|
File without changes
|
{wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/migrations/0005_alter_rebate_audit_log.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/analytics/test_marginality.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbcommission-1.59.0 → wbcommission-1.59.8}/wbcommission/tests/models/test_account_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|