fx-shared-models 0.2.77__tar.gz → 0.2.78__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 (196) hide show
  1. {fx_shared_models-0.2.77/fx_shared_models.egg-info → fx_shared_models-0.2.78}/PKG-INFO +1 -1
  2. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78/fx_shared_models.egg-info}/PKG-INFO +1 -1
  3. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/setup.py +1 -1
  4. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/models.py +14 -0
  5. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/services/commission_cache_service.py +2 -0
  6. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/services/commission_calculator_service.py +32 -11
  7. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/referrals/models.py +12 -0
  8. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/LICENSE +0 -0
  9. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/MANIFEST.in +0 -0
  10. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/README.md +0 -0
  11. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/fx_shared_models.egg-info/SOURCES.txt +0 -0
  12. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/fx_shared_models.egg-info/dependency_links.txt +0 -0
  13. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/fx_shared_models.egg-info/requires.txt +0 -0
  14. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/fx_shared_models.egg-info/top_level.txt +0 -0
  15. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/setup.cfg +0 -0
  16. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/__init__.py +0 -0
  17. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/__init__.py +0 -0
  18. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/apps.py +0 -0
  19. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0001_initial.py +0 -0
  20. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0002_remove_account_group_type_account_has_bonus_and_more.py +0 -0
  21. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0003_account_is_archived_account_is_trading_enabled.py +0 -0
  22. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0004_alter_account_created_at_alter_account_created_by_and_more.py +0 -0
  23. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0005_account_currency.py +0 -0
  24. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0006_alter_account_options.py +0 -0
  25. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/0007_alter_account_options.py +0 -0
  26. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/migrations/__init__.py +0 -0
  27. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/accounts/models.py +0 -0
  28. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/common/base.py +0 -0
  29. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/common/mixins.py +0 -0
  30. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/common/utils.py +0 -0
  31. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/company_ba/__init__.py +0 -0
  32. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/company_ba/apps.py +0 -0
  33. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/company_ba/migrations/0001_initial.py +0 -0
  34. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/company_ba/migrations/0002_alter_companybankaccount_options.py +0 -0
  35. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/company_ba/migrations/__init__.py +0 -0
  36. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/company_ba/models.py +0 -0
  37. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/constants.py +0 -0
  38. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/crypto_wallet/__init__.py +0 -0
  39. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/crypto_wallet/apps.py +0 -0
  40. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/crypto_wallet/migrations/0001_initial.py +0 -0
  41. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/crypto_wallet/migrations/0002_alter_companycryptowallet_options.py +0 -0
  42. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/crypto_wallet/migrations/__init__.py +0 -0
  43. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/crypto_wallet/models.py +0 -0
  44. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_crypto_wallet/__init__.py +0 -0
  45. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_crypto_wallet/apps.py +0 -0
  46. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_crypto_wallet/migrations/0001_initial.py +0 -0
  47. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_crypto_wallet/migrations/0002_alter_customercryptowallet_options.py +0 -0
  48. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_crypto_wallet/migrations/__init__.py +0 -0
  49. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_crypto_wallet/models.py +0 -0
  50. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_upi/__init__.py +0 -0
  51. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_upi/apps.py +0 -0
  52. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_upi/migrations/0001_initial.py +0 -0
  53. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_upi/migrations/0002_alter_customerupi_options.py +0 -0
  54. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_upi/migrations/__init__.py +0 -0
  55. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customer_upi/models.py +0 -0
  56. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/__init__.py +0 -0
  57. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/apps.py +0 -0
  58. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/enums.py +0 -0
  59. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0001_initial.py +0 -0
  60. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0002_alter_customer_email_alter_customer_first_name_and_more.py +0 -0
  61. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0004_customerauth_two_factor_backup_codes_and_more.py +0 -0
  62. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0005_customerauth_temp_webauthn_challenge.py +0 -0
  63. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0006_customerauth_webauthn_challenge.py +0 -0
  64. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0007_customerauth_blocked_customerauth_blocked_at_and_more.py +0 -0
  65. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0008_customer_email_hash.py +0 -0
  66. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0009_remove_customerauth_blocked_by_and_more.py +0 -0
  67. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0010_customerauth_blocked_by_customerauth_unblocked_by.py +0 -0
  68. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0011_customerauth_reset_token_and_more.py +0 -0
  69. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0012_alter_customer_email_alter_customer_first_name_and_more.py +0 -0
  70. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0013_alter_customerauth_blocked_by_and_more.py +0 -0
  71. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/0014_alter_customer_options.py +0 -0
  72. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/migrations/__init__.py +0 -0
  73. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/customers/models.py +0 -0
  74. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_campaigns/__init__.py +0 -0
  75. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_campaigns/apps.py +0 -0
  76. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_campaigns/migrations/0001_initial.py +0 -0
  77. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_campaigns/migrations/0002_alter_emailcampaign_options_and_more.py +0 -0
  78. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_campaigns/migrations/__init__.py +0 -0
  79. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_campaigns/models.py +0 -0
  80. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_log/__init__.py +0 -0
  81. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_log/apps.py +0 -0
  82. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_log/migrations/0001_initial.py +0 -0
  83. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_log/migrations/__init__.py +0 -0
  84. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/email_log/models.py +0 -0
  85. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/__init__.py +0 -0
  86. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/apps.py +0 -0
  87. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0001_initial.py +0 -0
  88. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0002_alter_commissiondistribution_processed_time.py +0 -0
  89. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0003_clientibmapping_idx_client_mapping_lookup_and_more.py +0 -0
  90. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0004_ibonboardingstatus.py +0 -0
  91. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0005_ibonboardingstatus_ib_journey_form_submitted_and_more.py +0 -0
  92. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0006_ibonboardingstatus_creation_source.py +0 -0
  93. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0007_ibquestionnaire.py +0 -0
  94. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0008_ibcommissionrule_lot_size.py +0 -0
  95. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0009_ibcommissionrule_min_volume.py +0 -0
  96. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0010_alter_commissiondistribution_rule_and_more.py +0 -0
  97. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/0011_alter_clientibmapping_agreement_and_more.py +0 -0
  98. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/migrations/__init__.py +0 -0
  99. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/model/ib_onboarding.py +0 -0
  100. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/model/ib_questionnaire.py +0 -0
  101. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ib_commission/services/__init__.py +0 -0
  102. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/referrals/__init__.py +0 -0
  103. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/referrals/apps.py +0 -0
  104. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/referrals/migrations/0001_initial.py +0 -0
  105. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/referrals/migrations/0002_alter_referralreward_payment_gateway_and_more.py +0 -0
  106. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/referrals/migrations/__init__.py +0 -0
  107. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/services/group_resolver.py +0 -0
  108. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/apps.py +0 -0
  109. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0001_initial.py +0 -0
  110. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0002_rename_is_enabled_systemsetting_is_active.py +0 -0
  111. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0003_tradingplatformserver.py +0 -0
  112. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0004_tradingplatformserver_connection_timeout_and_more.py +0 -0
  113. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0005_accountsequence_accounttype.py +0 -0
  114. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0006_alter_accounttype_sequence.py +0 -0
  115. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0007_remove_accounttype_default_group_type_and_more.py +0 -0
  116. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0008_paymentgatewayconfig_paymentmethodconfig_and_more.py +0 -0
  117. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0009_alter_accountsequence_created_at_and_more.py +0 -0
  118. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0010_alter_paymentgatewayconfig_gateway_and_more.py +0 -0
  119. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0011_tradingplatformserverlog.py +0 -0
  120. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0012_alter_emailcontent_content_sections.py +0 -0
  121. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0013_kycrequirementrule.py +0 -0
  122. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0014_alter_paymentgatewayconfig_payment_method_and_more.py +0 -0
  123. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0015_alter_paymentgatewayconfig_payment_method_and_more.py +0 -0
  124. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0016_alter_emailconfiguration_options_and_more.py +0 -0
  125. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0017_brokerconfiguration.py +0 -0
  126. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/0018_accounttype_demo_auto_deposit_amount.py +0 -0
  127. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/migrations/__init__.py +0 -0
  128. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/__init__.py +0 -0
  129. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/account_sequence.py +0 -0
  130. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/account_types.py +0 -0
  131. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/base.py +0 -0
  132. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/broker_config.py +0 -0
  133. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/email.py +0 -0
  134. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/group_configurations.py +0 -0
  135. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/payment_methods.py +0 -0
  136. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/trading_platform.py +0 -0
  137. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/models/transaction_configs.py +0 -0
  138. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/system_settings/serializers.py +0 -0
  139. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/__init__.py +0 -0
  140. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/apps.py +0 -0
  141. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/migrations/0001_initial.py +0 -0
  142. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/migrations/0002_alter_deal_id.py +0 -0
  143. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/migrations/0003_alter_deal_id.py +0 -0
  144. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/migrations/0004_alter_deal_id.py +0 -0
  145. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/migrations/0005_deal_idx_deal_position_lookup_and_more.py +0 -0
  146. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/migrations/__init__.py +0 -0
  147. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/trading/models.py +0 -0
  148. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/__init__.py +0 -0
  149. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/apps.py +0 -0
  150. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/constants.py +0 -0
  151. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/enums.py +0 -0
  152. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0001_initial.py +0 -0
  153. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0002_transaction_mt5_ticket.py +0 -0
  154. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0003_alter_transaction_options.py +0 -0
  155. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0004_alter_transaction_created_by.py +0 -0
  156. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0005_alter_transaction_status.py +0 -0
  157. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0006_transaction_approved_at.py +0 -0
  158. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0007_transaction_assigned_user_and_more.py +0 -0
  159. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0008_alter_transaction_payment_method.py +0 -0
  160. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0009_alter_transaction_approved_by_and_more.py +0 -0
  161. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0010_alter_transaction_payment_method.py +0 -0
  162. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0011_alter_transaction_options.py +0 -0
  163. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/0012_transaction_transaction_custome_fb8ec8_idx.py +0 -0
  164. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/migrations/__init__.py +0 -0
  165. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/transactions/models.py +0 -0
  166. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ui_elements/__init__.py +0 -0
  167. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ui_elements/apps.py +0 -0
  168. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ui_elements/migrations/0001_initial.py +0 -0
  169. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ui_elements/migrations/__init__.py +0 -0
  170. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/ui_elements/models.py +0 -0
  171. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/upi_id/__init__.py +0 -0
  172. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/upi_id/apps.py +0 -0
  173. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/upi_id/migrations/0001_initial.py +0 -0
  174. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/upi_id/migrations/0002_alter_companyupiid_options.py +0 -0
  175. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/upi_id/migrations/__init__.py +0 -0
  176. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/upi_id/models.py +0 -0
  177. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/__init__.py +0 -0
  178. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/apps.py +0 -0
  179. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/managers.py +0 -0
  180. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0001_initial.py +0 -0
  181. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0002_alter_crmuser_managers.py +0 -0
  182. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0003_alter_crmuser_options_alter_crmuser_managers.py +0 -0
  183. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0004_alter_crmuser_options.py +0 -0
  184. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0005_remove_crmuser_is_2fa_enabled_and_more.py +0 -0
  185. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0006_rename_preferred_2fa_method_usersettings_default_2fa_method_and_more.py +0 -0
  186. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0007_alter_usersettings_options_alter_usersettings_table.py +0 -0
  187. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0008_usersettings_temp_webauthn_challenge.py +0 -0
  188. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0009_alter_userprofile_profile_picture.py +0 -0
  189. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0010_alter_crmuser_options.py +0 -0
  190. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0011_alter_crmuser_options.py +0 -0
  191. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0012_alter_crmuser_managers_usersettings_is_2fa_enabled_and_more.py +0 -0
  192. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0013_usersettings_is_2fa_enabled_and_more.py +0 -0
  193. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0014_alter_crmuser_groups_alter_crmuser_user_permissions_and_more.py +0 -0
  194. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/0015_alter_crmuser_options.py +0 -0
  195. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/migrations/__init__.py +0 -0
  196. {fx_shared_models-0.2.77 → fx_shared_models-0.2.78}/shared_models/users/models.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fx-shared-models
3
- Version: 0.2.77
3
+ Version: 0.2.78
4
4
  Summary: Shared models for FX Backend
5
5
  Home-page: https://github.com/fxbackend/fx-shared-models
6
6
  Author: FX Backend
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fx-shared-models
3
- Version: 0.2.77
3
+ Version: 0.2.78
4
4
  Summary: Shared models for FX Backend
5
5
  Home-page: https://github.com/fxbackend/fx-shared-models
6
6
  Author: FX Backend
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages # Import find_packages
2
2
 
3
3
  setup(
4
4
  name='fx-shared-models',
5
- version='0.2.77', # Incremented version after adding shared_models/__init__.py
5
+ version='0.2.78', # Incremented version after adding shared_models/__init__.py
6
6
  packages=find_packages(include=['shared_models', 'shared_models.*']), # Find packages under the shared_models directory
7
7
  install_requires=[
8
8
  'Django>=4.2', # Match the version from requirements.txt if possible
@@ -33,6 +33,15 @@ class IBHierarchy(BaseModel):
33
33
  help_text='IB account that receives commissions')
34
34
  mt5_login = models.IntegerField(help_text='MT5 login for deal processing')
35
35
 
36
+ default_agreement = models.ForeignKey(
37
+ 'IBAgreement',
38
+ null=True,
39
+ blank=True,
40
+ on_delete=models.SET_NULL,
41
+ related_name='default_for_hierarchies',
42
+ help_text='Default agreement when not specified in client mapping'
43
+ )
44
+
36
45
  is_active = models.BooleanField(default=True)
37
46
 
38
47
  def save(self, *args, **kwargs):
@@ -95,6 +104,11 @@ class ClientIBMapping(BaseModel):
95
104
  help_text='Default agreement for this client-IB relationship')
96
105
  ib_path = models.TextField(help_text='Full path of IBs using customer ids')
97
106
  mt5_login = models.IntegerField(help_text="Client's MT5 login", null=True, blank=True)
107
+ agreement_path = models.TextField(
108
+ null=True,
109
+ blank=True,
110
+ help_text='Agreement IDs for each IB level in hierarchy (dot-separated). Empty positions use IB default.'
111
+ )
98
112
 
99
113
  class Meta:
100
114
  app_label = 'ib_commission'
@@ -350,6 +350,7 @@ class CommissionCacheService:
350
350
  'level': hierarchy.level,
351
351
  'mt5_login': hierarchy.mt5_login,
352
352
  'is_active': hierarchy.is_active,
353
+ 'default_agreement_id': hierarchy.default_agreement_id if hasattr(hierarchy, 'default_agreement_id') else None,
353
354
  }
354
355
 
355
356
  # Add ib_account data if exists
@@ -432,6 +433,7 @@ class CommissionCacheService:
432
433
  'direct_ib_customer_id': mapping.direct_ib_customer_id,
433
434
  'master_ib_customer_id': mapping.master_ib_customer_id,
434
435
  'agreement_id': mapping.agreement_id,
436
+ 'agreement_path': mapping.agreement_path if hasattr(mapping, 'agreement_path') else None,
435
437
  'ib_path': mapping.ib_path,
436
438
  'mt5_login': mapping.mt5_login,
437
439
  }
@@ -303,6 +303,15 @@ class CommissionCalculatorService:
303
303
  # Get all ancestor IB IDs from the path
304
304
  path_parts = ib_hierarchy.path.split('.') # Includes the direct IB's ID
305
305
 
306
+ # Parse agreement_path if available (with backward compatibility check)
307
+ agreement_ids = []
308
+ if hasattr(client_mapping, 'agreement_path') and client_mapping.agreement_path:
309
+ agreement_ids = client_mapping.agreement_path.split('.')
310
+
311
+ # Validate agreement_path structure matches ib_path
312
+ if len(agreement_ids) != len(path_parts):
313
+ logger.warning(f"Agreement path length ({len(agreement_ids)}) doesn't match IB path length ({len(path_parts)}) for client {client_mapping.customer_id}")
314
+
306
315
  # Get all relevant IB agreements (cache this if possible)
307
316
  ib_agreements = {}
308
317
 
@@ -322,18 +331,30 @@ class CommissionCalculatorService:
322
331
  )
323
332
  )
324
333
 
325
- for member in agreement_members:
326
- member_customer_id_str = str(member.customer_id)
327
-
328
- # For the direct IB, only use the client mapping agreement
329
- if member_customer_id_str == str(client_mapping.direct_ib_customer_id):
330
- # Only add if it matches the client mapping agreement
331
- if client_mapping.agreement_id and member.agreement_id == client_mapping.agreement_id:
332
- ib_agreements[member_customer_id_str] = member.agreement
333
- # Skip other agreements for the direct IB
334
+ # Build ib_agreements respecting agreement_path
335
+ for i, ib_id in enumerate(path_parts):
336
+ if i < len(agreement_ids) and agreement_ids[i]:
337
+ # Use specified agreement from agreement_path
338
+ member = next((m for m in agreement_members
339
+ if str(m.customer_id) == ib_id
340
+ and str(m.agreement_id) == agreement_ids[i]), None)
341
+ if member:
342
+ ib_agreements[ib_id] = member.agreement
343
+ else:
344
+ logger.warning(f"Agreement {agreement_ids[i]} not found for IB {ib_id}, skipping this IB")
334
345
  else:
335
- # For parent IBs in the hierarchy, use their agreements (current behavior)
336
- ib_agreements[member_customer_id_str] = member.agreement
346
+ # Try to use default agreement from IBHierarchy
347
+ hierarchy = IBHierarchy.objects.filter(
348
+ customer_id=ib_id, is_active=True
349
+ ).first()
350
+ if hierarchy and hasattr(hierarchy, 'default_agreement') and hierarchy.default_agreement:
351
+ ib_agreements[ib_id] = hierarchy.default_agreement
352
+ else:
353
+ # Fallback: use any agreement for this IB (current behavior)
354
+ member = next((m for m in agreement_members
355
+ if str(m.customer_id) == ib_id), None)
356
+ if member:
357
+ ib_agreements[ib_id] = member.agreement
337
358
 
338
359
  # Calculate rule-based distribution for the hierarchy
339
360
  distributions = cls._calculate_rule_based_distribution(
@@ -94,6 +94,18 @@ class ReferralSource(BaseModel):
94
94
  help_text="Optional: Specific account to receive rewards generated by this code."
95
95
  )
96
96
 
97
+ # IB hierarchy tracking for agreement path
98
+ ib_path = models.TextField(
99
+ null=True,
100
+ blank=True,
101
+ help_text='Full IB hierarchy path (dot-separated customer IDs) at time of code generation'
102
+ )
103
+ agreement_path = models.TextField(
104
+ null=True,
105
+ blank=True,
106
+ help_text='Agreement IDs for each IB level (dot-separated) at time of code generation'
107
+ )
108
+
97
109
  # Status & Stats
98
110
  is_active = models.BooleanField(default=True)
99
111
  created_at = models.DateTimeField(auto_now_add=True)