wbcommission 1.50.6__py2.py3-none-any.whl → 1.58.1__py2.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 wbcommission might be problematic. Click here for more details.

@@ -71,10 +71,10 @@ class MarginalityCalculator:
71
71
 
72
72
  # Build the fees dataframe where product id is the index and colum are the every fees type available and value are the amount.
73
73
  fees = Fees.valid_objects.filter(
74
- transaction_date__lte=bday_to_date,
75
- transaction_date__gte=bday_from_date,
74
+ fee_date__lte=bday_to_date,
75
+ fee_date__gte=bday_from_date,
76
76
  transaction_subtype__in=self.FEE_MAP.keys(),
77
- linked_product__in=products,
77
+ product__in=products,
78
78
  ).annotate(
79
79
  fee_type=Case(
80
80
  *[When(transaction_subtype=k, then=Value(v)) for k, v in self.FEE_MAP.items()],
@@ -82,9 +82,9 @@ class MarginalityCalculator:
82
82
  )
83
83
  )
84
84
  self.df_fees = pd.DataFrame(
85
- fees.values_list("linked_product", "fee_type", "total_value", "transaction_date", "calculated"),
86
- columns=["linked_product", "fee_type", "total_value", "transaction_date", "calculated"],
87
- ).rename(columns={"linked_product": "id", "transaction_date": "date"})
85
+ fees.values_list("product", "fee_type", "total_value", "fee_date", "calculated"),
86
+ columns=["product", "fee_type", "total_value", "fee_date", "calculated"],
87
+ ).rename(columns={"product": "id", "fee_date": "date"})
88
88
  self.df_fees["date"] = pd.to_datetime(self.df_fees["date"])
89
89
 
90
90
  self.df_fees = (
@@ -13,11 +13,10 @@ 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,
20
- default=current_quarter_date_range,
19
+ initial=current_quarter_date_range,
21
20
  )
22
21
 
23
22
  class Meta:
@@ -35,13 +34,13 @@ class RebateGroupByFilter(PandasFilterSetMixin, RebateDateFilter):
35
34
  group_by = wb_filters.ChoiceFilter(
36
35
  label="Group By",
37
36
  choices=RebateGroupbyChoice.choices(),
38
- default=RebateGroupbyChoice.ACCOUNT.name, # typing: ignore
37
+ initial=RebateGroupbyChoice.ACCOUNT.name, # typing: ignore
39
38
  method=lambda queryset, label, value: queryset,
40
39
  clearable=False,
41
40
  required=True,
42
41
  )
43
42
  groupby_classification_group = wb_filters.ModelChoiceFilter(
44
- default=lambda k, v, f: get_default_classification_group().id,
43
+ initial=lambda k, v, f: get_default_classification_group().id,
45
44
  method=lambda queryset, label, value: queryset,
46
45
  label="Group by Classification Group",
47
46
  queryset=ClassificationGroup.objects.all(),
@@ -98,10 +97,9 @@ 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
- default=current_quarter_date_range,
102
+ initial=current_quarter_date_range,
105
103
  )
106
104
 
107
105
  bank = wb_filters.ModelMultipleChoiceFilter(
@@ -0,0 +1,29 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PACKAGE VERSION\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2025-05-30 11:37+0200\n"
12
+ "PO-Revision-Date: 2025-05-30 09:40+0000\n"
13
+ "Language-Team: German (https://app.transifex.com/stainly/teams/171242/de/)\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Language: de\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+
20
+ #: viewsets/buttons/rebate.py:19
21
+ msgid "Start"
22
+ msgstr ""
23
+
24
+ #: viewsets/rebate.py:435
25
+ msgid ""
26
+ "The selected date range includes a Saturday or Sunday. Please note that fees"
27
+ " and rebates are normalized over the weekend, as fees continue to accumulate"
28
+ " during this period."
29
+ msgstr ""
@@ -0,0 +1,28 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: PACKAGE VERSION\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2025-05-30 11:37+0200\n"
11
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+
19
+ #: viewsets/buttons/rebate.py:19
20
+ msgid "Start"
21
+ msgstr ""
22
+
23
+ #: viewsets/rebate.py:435
24
+ msgid ""
25
+ "The selected date range includes a Saturday or Sunday. Please note that fees "
26
+ "and rebates are normalized over the weekend, as fees continue to accumulate "
27
+ "during this period."
28
+ msgstr ""
@@ -0,0 +1,29 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PACKAGE VERSION\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2025-05-30 11:37+0200\n"
12
+ "PO-Revision-Date: 2025-05-30 09:40+0000\n"
13
+ "Language-Team: French (https://app.transifex.com/stainly/teams/171242/fr/)\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Language: fr\n"
18
+ "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
19
+
20
+ #: viewsets/buttons/rebate.py:19
21
+ msgid "Start"
22
+ msgstr ""
23
+
24
+ #: viewsets/rebate.py:435
25
+ msgid ""
26
+ "The selected date range includes a Saturday or Sunday. Please note that fees"
27
+ " and rebates are normalized over the weekend, as fees continue to accumulate"
28
+ " during this period."
29
+ msgstr ""
@@ -31,13 +31,13 @@ class AccountRebateManager:
31
31
  # get the fees as a multi-index matrix
32
32
  self.df_fees = pd.DataFrame(
33
33
  Fees.valid_objects.filter(
34
- linked_product__in=claim_products,
34
+ product__in=claim_products,
35
35
  transaction_subtype__in=self.FEE_MAP[self.commission_type_key],
36
- ).values("linked_product", "transaction_date", "total_value")
36
+ ).values("product", "fee_date", "total_value")
37
37
  )
38
38
  if not self.df_fees.empty:
39
39
  self.df_fees = (
40
- self.df_fees.rename(columns={"linked_product": "product", "transaction_date": "date"})
40
+ self.df_fees.rename(columns={"product": "product", "fee_date": "date"})
41
41
  .groupby(["product", "date"])
42
42
  .sum()
43
43
  .total_value.astype(float)
@@ -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]
@@ -31,15 +31,15 @@ def post_fees_save_for_rebate_computation(sender, instance, created, **kwargs):
31
31
  # if a new commission line is created, we create a general rule
32
32
  if (
33
33
  created
34
- and (date.today() - instance.transaction_date).days
34
+ and (date.today() - instance.fee_date).days
35
35
  <= global_preferences_registry.manager()["wbcommission__days_to_recompute_rebate_from_fees_threshold"]
36
36
  ): # we make sure that the fee won't trigger rebate computation if they are created too much in the past
37
37
  for root_account in Account.objects.filter(level=0):
38
38
  if Claim.objects.filter(
39
- account__in=root_account.get_descendants(include_self=True), product=instance.linked_product
39
+ account__in=root_account.get_descendants(include_self=True), product=instance.product
40
40
  ).exists():
41
41
  manage_rebate_as_task.delay(
42
42
  root_account.id,
43
- start_date=instance.transaction_date,
44
- only_content_object_ids=[instance.linked_product.id],
43
+ start_date=instance.fee_date,
44
+ only_content_object_ids=[instance.product.id],
45
45
  )
@@ -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")
@@ -218,7 +218,7 @@ def create_report(user, customer, start_date, end_date):
218
218
  worksheet_trade_performance.write_string(bank_cell, claim.bank, base_format)
219
219
  worksheet_trade_performance.write_string(root_account_cell, claim.account.get_root().title, base_format)
220
220
  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)
221
+ worksheet_trade_performance.write_string(product_cell, claim.product.name, base_format)
222
222
 
223
223
  worksheet_trade_performance.write_number(
224
224
  price_trade_cell, claim.price_date or claim.product.share_price, decimal_format
@@ -21,14 +21,14 @@ def _create_fixture(product, val_date, net_value=100, outstanding_shares=100):
21
21
  instrument=product, net_value=net_value, outstanding_shares=outstanding_shares, calculated=False, date=val_date
22
22
  ).net_value # create a price of AUM 100*100
23
23
  management_fees_1 = FeesFactory.create(
24
- linked_product=product, transaction_date=val_date, transaction_subtype="MANAGEMENT", calculated=False
24
+ product=product, fee_date=val_date, transaction_subtype="MANAGEMENT", calculated=False
25
25
  ).total_value
26
26
  performance_fees_1 = FeesFactory.create(
27
- linked_product=product, transaction_date=val_date, transaction_subtype="PERFORMANCE", calculated=False
27
+ product=product, fee_date=val_date, transaction_subtype="PERFORMANCE", calculated=False
28
28
  ).total_value
29
29
  performance_crys_fees_1 = FeesFactory.create(
30
- linked_product=product,
31
- transaction_date=val_date,
30
+ product=product,
31
+ fee_date=val_date,
32
32
  transaction_subtype="PERFORMANCE_CRYSTALIZED",
33
33
  calculated=False,
34
34
  ).total_value
@@ -21,18 +21,18 @@ class TestAccountService(AccountManagerFixture):
21
21
  mngt_fees = fees_factory.create(transaction_subtype="MANAGEMENT")
22
22
  perf_fees = fees_factory.create( # noqa
23
23
  transaction_subtype="PERFORMANCE",
24
- transaction_date=mngt_fees.transaction_date,
25
- linked_product=mngt_fees.linked_product,
24
+ fee_date=mngt_fees.fee_date,
25
+ product=mngt_fees.product,
26
26
  ) # noqa
27
27
  claim_factory.create(
28
28
  account=management_account_manager.root_account,
29
- trade=customer_trade_factory.create(underlying_instrument=mngt_fees.linked_product),
29
+ trade=customer_trade_factory.create(underlying_instrument=mngt_fees.product),
30
30
  status="APPROVED",
31
31
  )
32
32
  management_account_manager.initialize()
33
33
 
34
34
  assert (
35
- management_account_manager.get_commission_pool(mngt_fees.linked_product, mngt_fees.transaction_date)
35
+ management_account_manager.get_commission_pool(mngt_fees.product, mngt_fees.fee_date)
36
36
  == mngt_fees.total_value
37
37
  )
38
38
 
@@ -42,24 +42,24 @@ class TestAccountService(AccountManagerFixture):
42
42
  mngt_fees = fees_factory.create(transaction_subtype="MANAGEMENT")
43
43
  perf_fees = fees_factory.create(
44
44
  transaction_subtype="PERFORMANCE",
45
- transaction_date=mngt_fees.transaction_date,
46
- linked_product=mngt_fees.linked_product,
45
+ fee_date=mngt_fees.fee_date,
46
+ product=mngt_fees.product,
47
47
  )
48
48
  perf2_fees = fees_factory.create(
49
49
  transaction_subtype="PERFORMANCE_CRYSTALIZED",
50
- transaction_date=mngt_fees.transaction_date,
51
- linked_product=mngt_fees.linked_product,
50
+ fee_date=mngt_fees.fee_date,
51
+ product=mngt_fees.product,
52
52
  )
53
53
 
54
54
  claim_factory.create(
55
55
  account=performance_account_manager.root_account,
56
- trade=customer_trade_factory.create(underlying_instrument=mngt_fees.linked_product),
56
+ trade=customer_trade_factory.create(underlying_instrument=mngt_fees.product),
57
57
  status="APPROVED",
58
58
  )
59
59
  performance_account_manager.initialize()
60
60
 
61
61
  assert (
62
- performance_account_manager.get_commission_pool(mngt_fees.linked_product, mngt_fees.transaction_date)
62
+ performance_account_manager.get_commission_pool(mngt_fees.product, mngt_fees.fee_date)
63
63
  == perf_fees.total_value + perf2_fees.total_value
64
64
  )
65
65
 
@@ -70,30 +70,25 @@ class TestAccountService(AccountManagerFixture):
70
70
  calculated_fees = fees_factory.create(calculated=True, transaction_subtype="MANAGEMENT")
71
71
  claim_factory.create(
72
72
  account=management_account_manager.root_account,
73
- trade=customer_trade_factory.create(underlying_instrument=calculated_fees.linked_product),
73
+ trade=customer_trade_factory.create(underlying_instrument=calculated_fees.product),
74
74
  status="APPROVED",
75
75
  )
76
76
  management_account_manager.initialize()
77
77
 
78
78
  assert (
79
- management_account_manager.get_commission_pool(
80
- calculated_fees.linked_product, calculated_fees.transaction_date
81
- )
79
+ management_account_manager.get_commission_pool(calculated_fees.product, calculated_fees.fee_date)
82
80
  == calculated_fees.total_value
83
81
  )
84
82
  # Check that is there is a non calculated fees, it is used instead of the calculated one
85
83
  fees = fees_factory.create(transaction_subtype=calculated_fees.transaction_subtype, calculated=False)
86
84
  claim_factory.create(
87
85
  account=management_account_manager.root_account,
88
- trade=customer_trade_factory.create(underlying_instrument=fees.linked_product),
86
+ trade=customer_trade_factory.create(underlying_instrument=fees.product),
89
87
  status="APPROVED",
90
88
  )
91
89
  management_account_manager.initialize()
92
90
 
93
- assert (
94
- management_account_manager.get_commission_pool(fees.linked_product, fees.transaction_date)
95
- == fees.total_value
96
- )
91
+ assert management_account_manager.get_commission_pool(fees.product, fees.fee_date) == fees.total_value
97
92
 
98
93
  @pytest.mark.parametrize("val_date", [fake.past_date()])
99
94
  def test_get_terminal_account_holding_ratio(
@@ -420,14 +420,10 @@ class TestCommissionType:
420
420
  ):
421
421
  val_date = (val_date + BDay(0)).date()
422
422
  val_date_1 = (val_date - BDay(1)).date()
423
- fees_factory.create(linked_product=product, transaction_date=val_date_1, transaction_subtype="PERFORMANCE")
424
- fees_factory.create(linked_product=product, transaction_date=val_date_1, transaction_subtype="MANAGEMENT")
425
- perf_fees = fees_factory.create(
426
- linked_product=product, transaction_date=val_date, transaction_subtype="PERFORMANCE"
427
- )
428
- mngt_fees = fees_factory.create(
429
- linked_product=product, transaction_date=val_date, transaction_subtype="MANAGEMENT"
430
- )
423
+ fees_factory.create(product=product, fee_date=val_date_1, transaction_subtype="PERFORMANCE")
424
+ fees_factory.create(product=product, fee_date=val_date_1, transaction_subtype="MANAGEMENT")
425
+ perf_fees = fees_factory.create(product=product, fee_date=val_date, transaction_subtype="PERFORMANCE")
426
+ mngt_fees = fees_factory.create(product=product, fee_date=val_date, transaction_subtype="MANAGEMENT")
431
427
  sub2 = customer_trade_factory.create(
432
428
  underlying_instrument=product,
433
429
  transaction_subtype=Trade.Type.SUBSCRIPTION,
@@ -482,10 +478,10 @@ class TestCommissionType:
482
478
  res = dict()
483
479
  for commission_type in CommissionType.objects.all():
484
480
  for (
485
- terminal_account,
486
- compute_date,
487
- commission,
488
- product,
481
+ _,
482
+ _,
483
+ _,
484
+ _,
489
485
  recipient,
490
486
  recipient_fees,
491
487
  _,
@@ -43,9 +43,9 @@ class TestRebateModel(AccountManagerFixture):
43
43
  mock_fct.return_value = [
44
44
  (
45
45
  commission.account,
46
- fees.transaction_date,
46
+ fees.fee_date,
47
47
  commission,
48
- fees.linked_product,
48
+ fees.product,
49
49
  commission.crm_recipient,
50
50
  rebate_value,
51
51
  dict(),
@@ -54,8 +54,8 @@ class TestRebateModel(AccountManagerFixture):
54
54
  Rebate.manage_rebate(commission.account)
55
55
  new_rebate = Rebate.objects.get(
56
56
  commission=commission,
57
- product=fees.linked_product,
58
- date=fees.transaction_date,
57
+ product=fees.product,
58
+ date=fees.fee_date,
59
59
  recipient=commission.crm_recipient,
60
60
  )
61
61
  assert new_rebate.value == rebate_value
@@ -64,9 +64,9 @@ class TestRebateModel(AccountManagerFixture):
64
64
  mock_fct.return_value = [
65
65
  (
66
66
  commission.account,
67
- fees.transaction_date,
67
+ fees.fee_date,
68
68
  commission,
69
- fees.linked_product,
69
+ fees.product,
70
70
  commission.crm_recipient,
71
71
  rebate_value * 2,
72
72
  dict(),
@@ -81,9 +81,9 @@ class TestRebateModel(AccountManagerFixture):
81
81
  mock_fct.return_value = [
82
82
  (
83
83
  commission.account,
84
- fees.transaction_date,
84
+ fees.fee_date,
85
85
  new_commission,
86
- fees.linked_product,
86
+ fees.product,
87
87
  new_commission.crm_recipient,
88
88
  rebate_value,
89
89
  dict(),
@@ -95,8 +95,8 @@ class TestRebateModel(AccountManagerFixture):
95
95
  assert (
96
96
  Rebate.objects.get(
97
97
  commission=new_commission,
98
- product=fees.linked_product,
99
- date=fees.transaction_date,
98
+ product=fees.product,
99
+ date=fees.fee_date,
100
100
  recipient=new_commission.crm_recipient,
101
101
  ).value
102
102
  == rebate_value
@@ -6,16 +6,10 @@ class RebatePandasViewEndpointConfig(EndpointViewConfig):
6
6
  def get_endpoint(self, **kwargs):
7
7
  return None
8
8
 
9
- def get_list_endpoint(self, **kwargs):
10
- return reverse("wbcommission:rebatetable-list", request=self.request)
11
-
12
9
 
13
10
  class RebateProductMarginalityEndpointConfig(EndpointViewConfig):
14
11
  def get_endpoint(self, **kwargs):
15
12
  return None
16
13
 
17
- def get_list_endpoint(self, **kwargs):
18
- return reverse("wbcommission:rebatemarginalitytable-list", request=self.request)
19
-
20
14
  def get_instance_endpoint(self, **kwargs):
21
15
  return reverse("wbportfolio:product-list", request=self.request)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbcommission
3
- Version: 1.50.6
3
+ Version: 1.58.1
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
@@ -1,22 +1,28 @@
1
1
  wbcommission/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
2
2
  wbcommission/apps.py,sha256=3q9lAeEBfv83rCzud3P0-VZgbWUfG0S61G5h3zFk1Ds,97
3
3
  wbcommission/dynamic_preferences_registry.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- wbcommission/permissions.py,sha256=Qjmterwqsm1st8YZNfj_7-Gl6WnvVvkE6SCgYynMhSU,219
4
+ wbcommission/permissions.py,sha256=Iz_q9QHWCXTJVisRBab4R9oXNX8ca3xVT12vdyYRMXQ,221
5
5
  wbcommission/urls.py,sha256=L4TKTeSxsHfoc091TVX2B2-w7kgNolaZ-xlgm5O51lQ,1102
6
6
  wbcommission/admin/__init__.py,sha256=xEYZYO9IUSNExPsY7jsxFS-Jjkl92tXnb7eSfwGpkZg,151
7
7
  wbcommission/admin/accounts.py,sha256=M43ovnEH9XYBmXLzA10LmbKkn4uq62HYNIauaoThno4,816
8
8
  wbcommission/admin/commission.py,sha256=TBbiuV1inS365WlNyUQBJDO31YQZZwxad0KW0H-8mP4,2078
9
9
  wbcommission/admin/rebate.py,sha256=XoDyGl1MoUAiUrm-GL5wlHvCzASgZqmGWvfMVOm2rJA,230
10
10
  wbcommission/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- wbcommission/analytics/marginality.py,sha256=AnhtJVQKGelImkRMBGChMROCa3_qsyKx86dulSF2eF4,8976
11
+ wbcommission/analytics/marginality.py,sha256=EVmTe9IILzeyUEz6cJrC7UqshiueMKR7ecGhYw9mn7g,8908
12
12
  wbcommission/factories/__init__.py,sha256=3EdqwSHMqJIa5C_yH15M75u_frkLEno151aFoxrOLN0,249
13
13
  wbcommission/factories/commission.py,sha256=omIpgTsXAa4bmVZ1349luhAuTEOzeurSpL6IHpl2VgU,3021
14
14
  wbcommission/factories/rebate.py,sha256=JzbHV7stofk1F3aaQPEV3rEBc_0uwphpG_hea144utc,683
15
15
  wbcommission/filters/__init__.py,sha256=9XoFMsmHcdTqy7ujQFlxvAJFvZoc4hjZ1SR6pyY8-9k,156
16
- wbcommission/filters/rebate.py,sha256=wGTJX3Ku3scufiRL0jTjF8BETG5hhywX88GqhM91qYo,8296
16
+ wbcommission/filters/rebate.py,sha256=OOXw2pC2grsscoLs_jIlGMtlSUAHFUWPSnSXQW2Ffj8,8150
17
17
  wbcommission/filters/signals.py,sha256=J-a9F3IwWhgl7HZE9I2Z6PA6H7fKDnMrhtSQZ4wqhGU,1583
18
18
  wbcommission/generators/__init__.py,sha256=Pt8TjtYCmqhROvWNmf_dxuONKVcrj7SH14nJAcv7_1Q,47
19
19
  wbcommission/generators/rebate_generator.py,sha256=O31NGIDUtwONGPOUD3YVCMywN3cSqa5vlmlYWjD7ItE,4155
20
+ wbcommission/locale/de/LC_MESSAGES/django.mo,sha256=FfQ5HV2xg7ZrJASidRJ4L-gCAbPNeQnFm940aRbb0js,378
21
+ wbcommission/locale/de/LC_MESSAGES/django.po,sha256=WLf1SHi-OOAXavXqZmMfc052wGb2iS7tJ5wavOG3HgQ,906
22
+ wbcommission/locale/en/LC_MESSAGES/django.mo,sha256=UXCQbz2AxBvh-IQ7bGgjoBnijo8h9DfE9107A-2Mgkk,337
23
+ wbcommission/locale/en/LC_MESSAGES/django.po,sha256=T9ZgGhBn_9zSaL2xwBzh8TnlSRtDy2o-qNtY8CH0T5Q,856
24
+ wbcommission/locale/fr/LC_MESSAGES/django.mo,sha256=t4lh3zX7kshbDAFzXa5HU_YGPXkPzKqODNXL2MeZ5KQ,429
25
+ wbcommission/locale/fr/LC_MESSAGES/django.po,sha256=8qmEQ9wJ2dS2Wt_7_LeSTpW3hAGj6EwmadwCe340KBE,957
20
26
  wbcommission/migrations/0001_initial.py,sha256=mE-vL8OsbdVvpnAqOQm38ZHQj6MVlpsu78b5WvJaxl0,11816
21
27
  wbcommission/migrations/0002_commissionrule_remove_accountcustomer_account_and_more.py,sha256=gAqysHE_jwEbNWkMTAbocBS6B5R9IDfV3fAn9wrPWyE,16384
22
28
  wbcommission/migrations/0003_alter_commission_account.py,sha256=P0EciB1Rne8LsbJqgtBnzfSD6O6pVSmmfeB2Ue5zeUk,727
@@ -27,13 +33,13 @@ wbcommission/migrations/0007_remove_commission_unique_crm_recipient_account_and_
27
33
  wbcommission/migrations/0008_alter_commission_options_alter_commission_order.py,sha256=iNwNF1QcmVoj5Eu2yPJEHfI7bIA3e4WZMILjCfBVEx0,830
28
34
  wbcommission/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
35
  wbcommission/models/__init__.py,sha256=BJyah0_zKssfU2ohvu4qcQSHAT1ovcZ_go2-sLEagyw,183
30
- wbcommission/models/account_service.py,sha256=EOyh1wlmCjg-qp2sV-aoO9wUemELbNdYpTJ4S-uaTNk,10653
31
- wbcommission/models/commission.py,sha256=5Hp2EbmPo9H7L2lM7K8eVOhmZPmEYC6avOQSR_y3U18,29899
36
+ wbcommission/models/account_service.py,sha256=7tUxB8DmqGBPxfu0wCHApSKj6AkmWnHc9JB1rUxe3kk,10660
37
+ wbcommission/models/commission.py,sha256=oSDS5P_5KB9N6fk_xYBBWO1lL3nf44fjVWaDjNN8nRw,29963
32
38
  wbcommission/models/rebate.py,sha256=GtR3G5TqmDdlcefF678Z9D993glddAormoWnYzYzQLg,12795
33
- wbcommission/models/signals.py,sha256=d-123hxTlbp2A9AwUOE_E90jrDN1e3_r7d8aGq7SmiY,2270
39
+ wbcommission/models/signals.py,sha256=RplhwccwDlEYGfw-lpcXpHPxfmeyKohdz-rKGll-NtU,2240
34
40
  wbcommission/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
41
  wbcommission/reports/audit_report.py,sha256=uzzTqYbvfen3AgXHM3mF77R_vDU3o02AVrjNwFXXH0k,2178
36
- wbcommission/reports/customer_report.py,sha256=S6mdVA4FTU4amyvV1xjKLsBr_PlG1GDUHDRm75V5WP0,14246
42
+ wbcommission/reports/customer_report.py,sha256=1RTF4H5tsbEQTEgM7wEmEC8HU10UKD8ZInwFsh0rI7w,14245
37
43
  wbcommission/reports/utils.py,sha256=Twc1SOwRIkB-_RJHFO1-tJaQ3ocCjFz0GsUXZPMZ3i8,1078
38
44
  wbcommission/serializers/__init__.py,sha256=t38bchJeNgOcogmedHLfLBQBtRXuR-_hj0US_55Fug4,196
39
45
  wbcommission/serializers/commissions.py,sha256=584tQjU3JEhkANxfLBmTyKsSe64JObFFqsoF7bP8jXM,678
@@ -44,12 +50,12 @@ wbcommission/tests/conftest.py,sha256=bdCEr9KUYxraSgsqZLP_f6SEVF9V5QJi3BnXHxksPf
44
50
  wbcommission/tests/signals.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
51
  wbcommission/tests/test_permissions.py,sha256=A9OO88jky1F3x7tFaYkiC9CJioSM1t6if6K4Yjt37lQ,2538
46
52
  wbcommission/tests/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- wbcommission/tests/analytics/test_marginality.py,sha256=GvLQ4SxmABQdkN7GKPwqDOr-7mk1Z9C0fr6w8vhO0Pk,11747
53
+ wbcommission/tests/analytics/test_marginality.py,sha256=1a2b8PEV0kLlL8NSwPnDs0DEdxgzjI3wU1imTOloBVU,11702
48
54
  wbcommission/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
55
  wbcommission/tests/models/mixins.py,sha256=gnsd0GCCdWcR8EYSh9ff-gY1l6dLPeU-LQYynngj9nw,818
50
- wbcommission/tests/models/test_account_service.py,sha256=Hl6ei_yYIfstNRzGHdLg98G9W4ZelDypq_sNOGyHQEs,13491
51
- wbcommission/tests/models/test_commission.py,sha256=uFzUClZpPQy2CiL0b4YXW5ISA1Xpm42ipi8D3PQ0Rl0,28065
52
- wbcommission/tests/models/test_rebate.py,sha256=9awvutOlPVo8tngtjLdtFxGhxmTC7Vkf5dMBcS60-YA,5746
56
+ wbcommission/tests/models/test_account_service.py,sha256=_S2qWSJQB2WyF7v1HWrpdMMHEBvuHJA5CHz3GZEto68,13247
57
+ wbcommission/tests/models/test_commission.py,sha256=EqgJtYVi51ue49l-F5bbIQanG_P2FRnAR-eAbY-EJE0,27920
58
+ wbcommission/tests/models/test_rebate.py,sha256=wnq4fJkcTj2PTrwW3He65kRqGE0F2C-vYwafcjVSqVg,5671
53
59
  wbcommission/tests/viewsets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
60
  wbcommission/tests/viewsets/test_rebate.py,sha256=TM_-E1PGFui8JBQpeFLdDdVPyqz5FSn-cnoPHq1JzEQ,3262
55
61
  wbcommission/viewsets/__init__.py,sha256=iuWo3Y9t8XxPgRG5DIURBk0J8hDoK2oTmMhv9hiAUcU,232
@@ -64,13 +70,13 @@ wbcommission/viewsets/display/commissions.py,sha256=4ifC3j3-wE1t57Yy9x02RnT1VAYb
64
70
  wbcommission/viewsets/display/rebate.py,sha256=T45d_FP3W6934BwWVBAiT58tb4Dr7BmIA9nPnAdoOEA,5287
65
71
  wbcommission/viewsets/endpoints/__init__.py,sha256=ghffTV9z9LxVzxNS4divoQ54sVosYZiJCEuqeUJ5gmo,135
66
72
  wbcommission/viewsets/endpoints/commissions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
- wbcommission/viewsets/endpoints/rebate.py,sha256=4QOR3MHD7JZVr2LhPi51d1xKg_ttbfD4YbJ4mGq9QjU,728
73
+ wbcommission/viewsets/endpoints/rebate.py,sha256=zdqviWWB5h5eoaTibYvAX8BlnOCaQCzitZl3fl6IIec,473
68
74
  wbcommission/viewsets/menu/__init__.py,sha256=i2Sn3h8e-KZefQHg72QS4ba5P34pTGFe3s-dobYW5WU,65
69
75
  wbcommission/viewsets/menu/commissions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
76
  wbcommission/viewsets/menu/rebate.py,sha256=Qzhwr2xG3_j7frxs3eWLZuMoUzT2nCBrWmEYbZ8fKfU,484
71
77
  wbcommission/viewsets/titles/__init__.py,sha256=Sg64aMWm_OD4-P57YoaN6Mqv6NRVU5m7ii_WvaWuTsY,85
72
78
  wbcommission/viewsets/titles/commissions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
79
  wbcommission/viewsets/titles/rebate.py,sha256=VTSHJW3voqCMVhDZ_zVeVmZid_WY3P4X9k11VdJM_GQ,301
74
- wbcommission-1.50.6.dist-info/METADATA,sha256=efJ1ix83xqLp6HO_l8AjN3xhjzhslVP_xjaO5luYuHE,323
75
- wbcommission-1.50.6.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
76
- wbcommission-1.50.6.dist-info/RECORD,,
80
+ wbcommission-1.58.1.dist-info/METADATA,sha256=WWnK3lJGCJQe6C2868uY2jDuilDei1mOfDn_nPCXYOE,399
81
+ wbcommission-1.58.1.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
82
+ wbcommission-1.58.1.dist-info/RECORD,,