aa-ledger 0.9.8__py3-none-any.whl → 0.9.9.1__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.
- {aa_ledger-0.9.8.dist-info → aa_ledger-0.9.9.1.dist-info}/METADATA +3 -1
- {aa_ledger-0.9.8.dist-info → aa_ledger-0.9.9.1.dist-info}/RECORD +78 -76
- ledger/__init__.py +9 -9
- ledger/api/api_helper/billboard_helper.py +55 -26
- ledger/api/ledger/admin.py +1 -1
- ledger/app_settings.py +18 -11
- ledger/constants.py +5 -0
- ledger/decorators.py +92 -11
- ledger/helpers/alliance.py +119 -91
- ledger/helpers/character.py +260 -252
- ledger/helpers/core.py +565 -565
- ledger/helpers/corporation.py +237 -187
- ledger/helpers/etag.py +2 -1
- ledger/helpers/ref_type.py +475 -475
- ledger/locale/cs_CZ/LC_MESSAGES/django.po +942 -932
- ledger/locale/de/LC_MESSAGES/django.mo +0 -0
- ledger/locale/de/LC_MESSAGES/django.po +961 -945
- ledger/locale/django.pot +942 -932
- ledger/locale/es/LC_MESSAGES/django.po +943 -933
- ledger/locale/fr_FR/LC_MESSAGES/django.po +942 -932
- ledger/locale/it_IT/LC_MESSAGES/django.po +942 -932
- ledger/locale/ja/LC_MESSAGES/django.po +943 -933
- ledger/locale/ko_KR/LC_MESSAGES/django.po +942 -932
- ledger/locale/nl_NL/LC_MESSAGES/django.po +942 -932
- ledger/locale/pl_PL/LC_MESSAGES/django.po +942 -932
- ledger/locale/ru/LC_MESSAGES/django.po +945 -935
- ledger/locale/sk/LC_MESSAGES/django.po +944 -934
- ledger/locale/uk/LC_MESSAGES/django.po +946 -936
- ledger/locale/zh_Hans/LC_MESSAGES/django.po +943 -933
- ledger/managers/character_mining_manager.py +66 -19
- ledger/managers/character_planetary_manager.py +1 -1
- ledger/migrations/0016_characterminingledger_price_per_unit.py +21 -0
- ledger/models/characteraudit.py +32 -1
- ledger/static/ledger/css/cards.css +1 -1
- ledger/static/ledger/css/table.css +1 -1
- ledger/static/ledger/js/charts.js +7 -227
- ledger/static/ledger/js/planetary.js +1 -0
- ledger/tasks.py +1 -8
- ledger/templates/ledger/allyledger/admin/alliance_administration.html +17 -8
- ledger/templates/ledger/allyledger/admin/alliance_overview.html +75 -89
- ledger/templates/ledger/allyledger/alliance_ledger.html +8 -10
- ledger/templates/ledger/bundles/ally-administration-bundles.html +2 -0
- ledger/templates/ledger/bundles/char-administration-bundles.html +2 -0
- ledger/templates/ledger/bundles/character-ledger-bundles.html +66 -64
- ledger/templates/ledger/bundles/corp-administration-bundles.html +2 -0
- ledger/templates/ledger/bundles/corporation-ledger-bundles.html +75 -73
- ledger/templates/ledger/charledger/admin/character_administration.html +10 -8
- ledger/templates/ledger/charledger/admin/character_overview.html +69 -86
- ledger/templates/ledger/charledger/character_ledger.html +11 -15
- ledger/templates/ledger/charledger/planetary/planetary_ledger.html +2 -6
- ledger/templates/ledger/corpledger/admin/corporation_administration.html +10 -8
- ledger/templates/ledger/corpledger/admin/corporation_overview.html +71 -83
- ledger/templates/ledger/corpledger/corporation_ledger.html +55 -14
- ledger/templates/ledger/partials/administration/alliance.html +28 -49
- ledger/templates/ledger/partials/administration/alliance_corporations.html +58 -0
- ledger/templates/ledger/partials/administration/corporation_characters.html +26 -28
- ledger/templates/ledger/partials/information/daily.html +1 -1
- ledger/templates/ledger/partials/information/day.html +1 -7
- ledger/templates/ledger/partials/information/hourly.html +1 -7
- ledger/templates/ledger/partials/information/summary.html +88 -84
- ledger/templates/ledger/partials/information/view_character_content.html +35 -35
- ledger/templates/ledger/partials/table/char-ledger.html +14 -5
- ledger/templates/ledger/partials/table/corp-ledger.html +3 -3
- ledger/templates/ledger/partials/view/card.html +2 -2
- ledger/tests/test_decarators.py +102 -17
- ledger/tests/test_helpers/test_etag.py +7 -6
- ledger/tests/test_managers/test_character_mining_manager.py +2 -1
- ledger/tests/test_models/test_characterminingledger.py +38 -2
- ledger/tests/test_tasks.py +4 -4
- ledger/tests/test_templatetags.py +5 -2
- ledger/tests/test_views/test_access.py +852 -852
- ledger/tests/testdata/esi.json +1 -2
- ledger/tests/testdata/eveuniverse.json +90 -48
- ledger/urls.py +66 -21
- ledger/views/alliance/alliance_ledger.py +4 -3
- ledger/views/corporation/corporation_ledger.py +25 -9
- {aa_ledger-0.9.8.dist-info → aa_ledger-0.9.9.1.dist-info}/WHEEL +0 -0
- {aa_ledger-0.9.8.dist-info → aa_ledger-0.9.9.1.dist-info}/licenses/LICENSE +0 -0
ledger/helpers/ref_type.py
CHANGED
|
@@ -1,475 +1,475 @@
|
|
|
1
|
-
"""Helpers for wallet journals."""
|
|
2
|
-
|
|
3
|
-
# Standard Library
|
|
4
|
-
import enum
|
|
5
|
-
from typing import TYPE_CHECKING
|
|
6
|
-
|
|
7
|
-
# Django
|
|
8
|
-
from django.utils.translation import gettext as _
|
|
9
|
-
|
|
10
|
-
# Alliance Auth
|
|
11
|
-
from allianceauth.services.hooks import get_extension_logger
|
|
12
|
-
|
|
13
|
-
# Alliance Auth (External Libs)
|
|
14
|
-
from app_utils.logging import LoggerAddTag
|
|
15
|
-
|
|
16
|
-
# AA Ledger
|
|
17
|
-
from ledger import __title__
|
|
18
|
-
|
|
19
|
-
if TYPE_CHECKING:
|
|
20
|
-
# AA Ledger
|
|
21
|
-
from ledger.helpers.core import LedgerEntity
|
|
22
|
-
|
|
23
|
-
logger = LoggerAddTag(get_extension_logger(__name__), __title__)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# Unified Journal Reference Type Enum - All ref types in one place
|
|
27
|
-
class JournalRefType(enum.Enum):
|
|
28
|
-
"""All wallet journal reference types unified."""
|
|
29
|
-
|
|
30
|
-
# Original ref types
|
|
31
|
-
PLAYER_TRADING = 1
|
|
32
|
-
MARKET_TRANSACTION = 2
|
|
33
|
-
GM_CASH_TRANSFER = 3
|
|
34
|
-
MISSION_REWARD = 7
|
|
35
|
-
CLONE_ACTIVATION = 8
|
|
36
|
-
INHERITANCE = 9
|
|
37
|
-
PLAYER_DONATION = 10
|
|
38
|
-
CORPORATION_PAYMENT = 11
|
|
39
|
-
DOCKING_FEE = 12
|
|
40
|
-
OFFICE_RENTAL_FEE = 13
|
|
41
|
-
FACTORY_SLOT_RENTAL_FEE = 14
|
|
42
|
-
REPAIR_BILL = 15
|
|
43
|
-
BOUNTY = 16
|
|
44
|
-
BOUNTY_PRIZE = 17
|
|
45
|
-
INSURANCE = 19
|
|
46
|
-
MISSION_EXPIRATION = 20
|
|
47
|
-
MISSION_COMPLETION = 21
|
|
48
|
-
SHARES = 22
|
|
49
|
-
COURIER_MISSION_ESCROW = 23
|
|
50
|
-
MISSION_COST = 24
|
|
51
|
-
AGENT_MISCELLANEOUS = 25
|
|
52
|
-
LP_STORE = 26
|
|
53
|
-
AGENT_LOCATION_SERVICES = 27
|
|
54
|
-
AGENT_DONATION = 28
|
|
55
|
-
AGENT_SECURITY_SERVICES = 29
|
|
56
|
-
AGENT_MISSION_COLLATERAL_PAID = 30
|
|
57
|
-
AGENT_MISSION_COLLATERAL_REFUNDED = 31
|
|
58
|
-
AGENTS_PREWARD = 32
|
|
59
|
-
AGENT_MISSION_REWARD = 33
|
|
60
|
-
AGENT_MISSION_TIME_BONUS_REWARD = 34
|
|
61
|
-
CSPA = 35
|
|
62
|
-
CSPAOFFLINEREFUND = 36
|
|
63
|
-
CORPORATION_ACCOUNT_WITHDRAWAL = 37
|
|
64
|
-
CORPORATION_DIVIDEND_PAYMENT = 38
|
|
65
|
-
CORPORATION_REGISTRATION_FEE = 39
|
|
66
|
-
CORPORATION_LOGO_CHANGE_COST = 40
|
|
67
|
-
RELEASE_OF_IMPOUNDED_PROPERTY = 41
|
|
68
|
-
MARKET_ESCROW = 42
|
|
69
|
-
AGENT_SERVICES_RENDERED = 43
|
|
70
|
-
MARKET_FINE_PAID = 44
|
|
71
|
-
CORPORATION_LIQUIDATION = 45
|
|
72
|
-
BROKERS_FEE = 46
|
|
73
|
-
CORPORATION_BULK_PAYMENT = 47
|
|
74
|
-
ALLIANCE_REGISTRATION_FEE = 48
|
|
75
|
-
WAR_FEE = 49
|
|
76
|
-
ALLIANCE_MAINTAINANCE_FEE = 50
|
|
77
|
-
CONTRABAND_FINE = 51
|
|
78
|
-
CLONE_TRANSFER = 52
|
|
79
|
-
ACCELERATION_GATE_FEE = 53
|
|
80
|
-
TRANSACTION_TAX = 54
|
|
81
|
-
JUMP_CLONE_INSTALLATION_FEE = 55
|
|
82
|
-
MANUFACTURING = 56
|
|
83
|
-
RESEARCHING_TECHNOLOGY = 57
|
|
84
|
-
RESEARCHING_TIME_PRODUCTIVITY = 58
|
|
85
|
-
RESEARCHING_MATERIAL_PRODUCTIVITY = 59
|
|
86
|
-
COPYING = 60
|
|
87
|
-
REVERSE_ENGINEERING = 62
|
|
88
|
-
CONTRACT_AUCTION_BID = 63
|
|
89
|
-
CONTRACT_AUCTION_BID_REFUND = 64
|
|
90
|
-
CONTRACT_COLLATERAL = 65
|
|
91
|
-
CONTRACT_REWARD_REFUND = 66
|
|
92
|
-
CONTRACT_AUCTION_SOLD = 67
|
|
93
|
-
CONTRACT_REWARD = 68
|
|
94
|
-
CONTRACT_COLLATERAL_REFUND = 69
|
|
95
|
-
CONTRACT_COLLATERAL_PAYOUT = 70
|
|
96
|
-
CONTRACT_PRICE = 71
|
|
97
|
-
CONTRACT_BROKERS_FEE = 72
|
|
98
|
-
CONTRACT_SALES_TAX = 73
|
|
99
|
-
CONTRACT_DEPOSIT = 74
|
|
100
|
-
CONTRACT_DEPOSIT_SALES_TAX = 75
|
|
101
|
-
CONTRACT_AUCTION_BID_CORP = 77
|
|
102
|
-
CONTRACT_COLLATERAL_DEPOSITED_CORP = 78
|
|
103
|
-
CONTRACT_PRICE_PAYMENT_CORP = 79
|
|
104
|
-
CONTRACT_BROKERS_FEE_CORP = 80
|
|
105
|
-
CONTRACT_DEPOSIT_CORP = 81
|
|
106
|
-
CONTRACT_DEPOSIT_REFUND = 82
|
|
107
|
-
CONTRACT_REWARD_DEPOSITED = 83
|
|
108
|
-
CONTRACT_REWARD_DEPOSITED_CORP = 84
|
|
109
|
-
BOUNTY_PRIZES = 85
|
|
110
|
-
ADVERTISEMENT_LISTING_FEE = 86
|
|
111
|
-
MEDAL_CREATION = 87
|
|
112
|
-
MEDAL_ISSUED = 88
|
|
113
|
-
DNA_MODIFICATION_FEE = 90
|
|
114
|
-
SOVEREIGNITY_BILL = 91
|
|
115
|
-
BOUNTY_PRIZE_CORPORATION_TAX = 92
|
|
116
|
-
AGENT_MISSION_REWARD_CORPORATION_TAX = 93
|
|
117
|
-
AGENT_MISSION_TIME_BONUS_REWARD_CORPORATION_TAX = 94
|
|
118
|
-
UPKEEP_ADJUSTMENT_FEE = 95
|
|
119
|
-
PLANETARY_IMPORT_TAX = 96
|
|
120
|
-
PLANETARY_EXPORT_TAX = 97
|
|
121
|
-
PLANETARY_CONSTRUCTION = 98
|
|
122
|
-
CORPORATE_REWARD_PAYOUT = 99
|
|
123
|
-
BOUNTY_SURCHARGE = 101
|
|
124
|
-
CONTRACT_REVERSAL = 102
|
|
125
|
-
CORPORATE_REWARD_TAX = 103
|
|
126
|
-
STORE_PURCHASE = 106
|
|
127
|
-
STORE_PURCHASE_REFUND = 107
|
|
128
|
-
DATACORE_FEE = 112
|
|
129
|
-
WAR_FEE_SURRENDER = 113
|
|
130
|
-
WAR_ALLY_CONTRACT = 114
|
|
131
|
-
BOUNTY_REIMBURSEMENT = 115
|
|
132
|
-
KILL_RIGHT_FEE = 116
|
|
133
|
-
SECURITY_PROCESSING_FEE = 117
|
|
134
|
-
INDUSTRY_JOB_TAX = 120
|
|
135
|
-
INFRASTRUCTURE_HUB_MAINTENANCE = 122
|
|
136
|
-
ASSET_SAFETY_RECOVERY_TAX = 123
|
|
137
|
-
OPPORTUNITY_REWARD = 124
|
|
138
|
-
PROJECT_DISCOVERY_REWARD = 125
|
|
139
|
-
PROJECT_DISCOVERY_TAX = 126
|
|
140
|
-
REPROCESSING_TAX = 127
|
|
141
|
-
JUMP_CLONE_ACTIVATION_FEE = 128
|
|
142
|
-
OPERATION_BONUS = 129
|
|
143
|
-
RESOURCE_WARS_REWARD = 131
|
|
144
|
-
DUEL_WAGER_ESCROW = 132
|
|
145
|
-
DUEL_WAGER_PAYMENT = 133
|
|
146
|
-
DUEL_WAGER_REFUND = 134
|
|
147
|
-
REACTION = 135
|
|
148
|
-
|
|
149
|
-
# V3 additions
|
|
150
|
-
STRUCTURE_GATE_JUMP = 140
|
|
151
|
-
|
|
152
|
-
# V4 additions
|
|
153
|
-
EXTERNAL_TRADE_FREEZE = 136
|
|
154
|
-
EXTERNAL_TRADE_THAW = 137
|
|
155
|
-
EXTERNAL_TRADE_DELIVERY = 138
|
|
156
|
-
SEASON_CHALLENGE_REWARD = 139
|
|
157
|
-
SKILL_PURCHASE = 141
|
|
158
|
-
ITEM_TRADER_PAYMENT = 142
|
|
159
|
-
FLUX_TICKET_SALE = 143
|
|
160
|
-
FLUX_PAYOUT = 144
|
|
161
|
-
FLUX_TAX = 145
|
|
162
|
-
FLUX_TICKET_REPAYMENT = 146
|
|
163
|
-
REDEEMED_ISK_TOKEN = 147
|
|
164
|
-
DAILY_CHALLENGE_REWARD = 148
|
|
165
|
-
MARKET_PROVIDER_TAX = 149
|
|
166
|
-
ESS_ESCROW_TRANSFER = 155
|
|
167
|
-
MILESTONE_REWARD_PAYMENT = 156
|
|
168
|
-
UNDER_CONSTRUCTION = 166
|
|
169
|
-
ALLIGNMENT_BASED_GATE_TOLL = 168
|
|
170
|
-
PROJECT_PAYOUTS = 170
|
|
171
|
-
INSURGENCY_CORRUPTION_CONTRIBUTION_REWARD = 172
|
|
172
|
-
INSURGENCY_SUPPRESSION_CONTRIBUTION_REWARD = 173
|
|
173
|
-
DAILY_GOAL_PAYOUTS = 174
|
|
174
|
-
DAILY_GOAL_PAYOUTS_TAX = 175
|
|
175
|
-
COSMETIC_MARKET_COMPONENT_ITEM_PURCHASE = 178
|
|
176
|
-
COSMETIC_MARKET_SKIN_SALE_BROKER_FEE = 179
|
|
177
|
-
COSMETIC_MARKET_SKIN_PURCHASE = 180
|
|
178
|
-
COSMETIC_MARKET_SKIN_SALE = 181
|
|
179
|
-
COSMETIC_MARKET_SKIN_SALE_TAX = 182
|
|
180
|
-
COSMETIC_MARKET_SKIN_TRANSACTION = 183
|
|
181
|
-
SKYHOOK_CLAIM_FEE = 184
|
|
182
|
-
AIR_CAREER_PROGRAM_REWARD = 185
|
|
183
|
-
FREELANCE_JOBS_DURATION_FEE = 186
|
|
184
|
-
FREELANCE_JOBS_BROADCASTING_FEE = 187
|
|
185
|
-
FREELANCE_JOBS_REWARD_ESCROW = 188
|
|
186
|
-
FREELANCE_JOBS_REWARD = 189
|
|
187
|
-
FREELANCE_JOBS_ESCROW_REFUND = 190
|
|
188
|
-
FREELANCE_JOBS_REWARD_CORPORATION_TAX = 191
|
|
189
|
-
GM_PLEX_FEE_REFUND = 192
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
class RefTypeManager:
|
|
193
|
-
"""Categories for wallet journal reference types."""
|
|
194
|
-
|
|
195
|
-
# Translations for reference types
|
|
196
|
-
_("Corporation Contract")
|
|
197
|
-
_("Corporation Withdrawal")
|
|
198
|
-
_("Mission Reward")
|
|
199
|
-
_("Market")
|
|
200
|
-
_("Daily Goal Reward")
|
|
201
|
-
_("Structure Rental")
|
|
202
|
-
|
|
203
|
-
# Assets/Items
|
|
204
|
-
ASSETS = [
|
|
205
|
-
JournalRefType.REPAIR_BILL.name.lower(),
|
|
206
|
-
JournalRefType.ASSET_SAFETY_RECOVERY_TAX.name.lower(),
|
|
207
|
-
JournalRefType.REPROCESSING_TAX.name.lower(),
|
|
208
|
-
JournalRefType.ITEM_TRADER_PAYMENT.name.lower(),
|
|
209
|
-
]
|
|
210
|
-
|
|
211
|
-
# PVE Income
|
|
212
|
-
BOUNTY_PRIZES = [
|
|
213
|
-
JournalRefType.BOUNTY.name.lower(),
|
|
214
|
-
JournalRefType.BOUNTY_PRIZE.name.lower(),
|
|
215
|
-
JournalRefType.BOUNTY_PRIZES.name.lower(),
|
|
216
|
-
JournalRefType.BOUNTY_REIMBURSEMENT.name.lower(),
|
|
217
|
-
JournalRefType.BOUNTY_SURCHARGE.name.lower(),
|
|
218
|
-
]
|
|
219
|
-
|
|
220
|
-
CONTRACT = [
|
|
221
|
-
JournalRefType.CONTRACT_AUCTION_BID.name.lower(),
|
|
222
|
-
JournalRefType.CONTRACT_AUCTION_BID_REFUND.name.lower(),
|
|
223
|
-
JournalRefType.CONTRACT_COLLATERAL.name.lower(),
|
|
224
|
-
JournalRefType.CONTRACT_REWARD_REFUND.name.lower(),
|
|
225
|
-
JournalRefType.CONTRACT_AUCTION_SOLD.name.lower(),
|
|
226
|
-
JournalRefType.CONTRACT_REWARD.name.lower(),
|
|
227
|
-
JournalRefType.CONTRACT_COLLATERAL_REFUND.name.lower(),
|
|
228
|
-
JournalRefType.CONTRACT_COLLATERAL_PAYOUT.name.lower(),
|
|
229
|
-
JournalRefType.CONTRACT_PRICE.name.lower(),
|
|
230
|
-
JournalRefType.CONTRACT_BROKERS_FEE.name.lower(),
|
|
231
|
-
JournalRefType.CONTRACT_SALES_TAX.name.lower(),
|
|
232
|
-
JournalRefType.CONTRACT_DEPOSIT.name.lower(),
|
|
233
|
-
JournalRefType.CONTRACT_DEPOSIT_SALES_TAX.name.lower(),
|
|
234
|
-
JournalRefType.CONTRACT_AUCTION_BID_CORP.name.lower(),
|
|
235
|
-
JournalRefType.CONTRACT_COLLATERAL_DEPOSITED_CORP.name.lower(),
|
|
236
|
-
JournalRefType.CONTRACT_DEPOSIT_CORP.name.lower(),
|
|
237
|
-
JournalRefType.CONTRACT_DEPOSIT_REFUND.name.lower(),
|
|
238
|
-
JournalRefType.CONTRACT_REWARD_DEPOSITED.name.lower(),
|
|
239
|
-
JournalRefType.CONTRACT_REWARD_DEPOSITED_CORP.name.lower(),
|
|
240
|
-
JournalRefType.CONTRACT_REVERSAL.name.lower(),
|
|
241
|
-
]
|
|
242
|
-
|
|
243
|
-
CORPORATION_ADMINISTRATION = [
|
|
244
|
-
JournalRefType.CORPORATION_DIVIDEND_PAYMENT.name.lower(),
|
|
245
|
-
JournalRefType.CORPORATION_REGISTRATION_FEE.name.lower(),
|
|
246
|
-
JournalRefType.CORPORATION_LOGO_CHANGE_COST.name.lower(),
|
|
247
|
-
JournalRefType.CORPORATION_BULK_PAYMENT.name.lower(),
|
|
248
|
-
JournalRefType.ADVERTISEMENT_LISTING_FEE.name.lower(),
|
|
249
|
-
]
|
|
250
|
-
|
|
251
|
-
CORPORATION_CONTRACT = [
|
|
252
|
-
JournalRefType.CONTRACT_PRICE_PAYMENT_CORP.name.lower(),
|
|
253
|
-
]
|
|
254
|
-
|
|
255
|
-
CORPORATION_DONATION = [
|
|
256
|
-
JournalRefType.CORPORATION_ACCOUNT_WITHDRAWAL.name.lower(),
|
|
257
|
-
]
|
|
258
|
-
|
|
259
|
-
DAILY_GOAL_REWARD = [
|
|
260
|
-
JournalRefType.DAILY_GOAL_PAYOUTS.name.lower(),
|
|
261
|
-
JournalRefType.DAILY_CHALLENGE_REWARD.name.lower(),
|
|
262
|
-
JournalRefType.SEASON_CHALLENGE_REWARD.name.lower(),
|
|
263
|
-
JournalRefType.OPPORTUNITY_REWARD.name.lower(),
|
|
264
|
-
JournalRefType.AIR_CAREER_PROGRAM_REWARD.name.lower(),
|
|
265
|
-
]
|
|
266
|
-
|
|
267
|
-
DONATION = [
|
|
268
|
-
JournalRefType.PLAYER_DONATION.name.lower(),
|
|
269
|
-
JournalRefType.AGENT_DONATION.name.lower(),
|
|
270
|
-
]
|
|
271
|
-
|
|
272
|
-
ESS_TRANSFER = [
|
|
273
|
-
JournalRefType.ESS_ESCROW_TRANSFER.name.lower(),
|
|
274
|
-
]
|
|
275
|
-
|
|
276
|
-
FREELANCE_JOBS = [
|
|
277
|
-
JournalRefType.FREELANCE_JOBS_DURATION_FEE.name.lower(),
|
|
278
|
-
JournalRefType.FREELANCE_JOBS_BROADCASTING_FEE.name.lower(),
|
|
279
|
-
JournalRefType.FREELANCE_JOBS_REWARD_ESCROW.name.lower(),
|
|
280
|
-
JournalRefType.FREELANCE_JOBS_REWARD.name.lower(),
|
|
281
|
-
JournalRefType.FREELANCE_JOBS_ESCROW_REFUND.name.lower(),
|
|
282
|
-
JournalRefType.FREELANCE_JOBS_REWARD_CORPORATION_TAX.name.lower(),
|
|
283
|
-
]
|
|
284
|
-
|
|
285
|
-
INCURSION = [
|
|
286
|
-
JournalRefType.RESOURCE_WARS_REWARD.name.lower(),
|
|
287
|
-
JournalRefType.INSURGENCY_CORRUPTION_CONTRIBUTION_REWARD.name.lower(),
|
|
288
|
-
JournalRefType.INSURGENCY_SUPPRESSION_CONTRIBUTION_REWARD.name.lower(),
|
|
289
|
-
JournalRefType.CORPORATE_REWARD_PAYOUT.name.lower(),
|
|
290
|
-
]
|
|
291
|
-
|
|
292
|
-
INSURANCE = [
|
|
293
|
-
JournalRefType.INSURANCE.name.lower(),
|
|
294
|
-
]
|
|
295
|
-
|
|
296
|
-
LP = [
|
|
297
|
-
JournalRefType.LP_STORE.name.lower(),
|
|
298
|
-
]
|
|
299
|
-
|
|
300
|
-
MARKET = [
|
|
301
|
-
JournalRefType.MARKET_TRANSACTION.name.lower(),
|
|
302
|
-
JournalRefType.MARKET_ESCROW.name.lower(),
|
|
303
|
-
JournalRefType.BROKERS_FEE.name.lower(),
|
|
304
|
-
JournalRefType.TRANSACTION_TAX.name.lower(),
|
|
305
|
-
JournalRefType.MARKET_FINE_PAID.name.lower(),
|
|
306
|
-
JournalRefType.MARKET_PROVIDER_TAX.name.lower(),
|
|
307
|
-
]
|
|
308
|
-
|
|
309
|
-
MILESTONE_REWARD = [
|
|
310
|
-
JournalRefType.MILESTONE_REWARD_PAYMENT.name.lower(),
|
|
311
|
-
JournalRefType.PROJECT_DISCOVERY_REWARD.name.lower(),
|
|
312
|
-
JournalRefType.PROJECT_PAYOUTS.name.lower(),
|
|
313
|
-
]
|
|
314
|
-
|
|
315
|
-
MISSION_REWARD = [
|
|
316
|
-
JournalRefType.MISSION_REWARD.name.lower(),
|
|
317
|
-
JournalRefType.MISSION_COMPLETION.name.lower(),
|
|
318
|
-
JournalRefType.AGENT_MISSION_REWARD.name.lower(),
|
|
319
|
-
JournalRefType.AGENT_MISSION_TIME_BONUS_REWARD.name.lower(),
|
|
320
|
-
JournalRefType.AGENTS_PREWARD.name.lower(),
|
|
321
|
-
]
|
|
322
|
-
|
|
323
|
-
PLANETARY = [
|
|
324
|
-
JournalRefType.PLANETARY_IMPORT_TAX.name.lower(),
|
|
325
|
-
JournalRefType.PLANETARY_EXPORT_TAX.name.lower(),
|
|
326
|
-
JournalRefType.PLANETARY_CONSTRUCTION.name.lower(),
|
|
327
|
-
]
|
|
328
|
-
|
|
329
|
-
PRODUCTION = [
|
|
330
|
-
JournalRefType.MANUFACTURING.name.lower(),
|
|
331
|
-
JournalRefType.RESEARCHING_TECHNOLOGY.name.lower(),
|
|
332
|
-
JournalRefType.RESEARCHING_TIME_PRODUCTIVITY.name.lower(),
|
|
333
|
-
JournalRefType.RESEARCHING_MATERIAL_PRODUCTIVITY.name.lower(),
|
|
334
|
-
JournalRefType.COPYING.name.lower(),
|
|
335
|
-
JournalRefType.REVERSE_ENGINEERING.name.lower(),
|
|
336
|
-
JournalRefType.INDUSTRY_JOB_TAX.name.lower(),
|
|
337
|
-
JournalRefType.REACTION.name.lower(),
|
|
338
|
-
]
|
|
339
|
-
|
|
340
|
-
STRUCTURE_RENTAL = [
|
|
341
|
-
JournalRefType.OFFICE_RENTAL_FEE.name.lower(),
|
|
342
|
-
JournalRefType.FACTORY_SLOT_RENTAL_FEE.name.lower(),
|
|
343
|
-
JournalRefType.SOVEREIGNITY_BILL.name.lower(),
|
|
344
|
-
JournalRefType.INFRASTRUCTURE_HUB_MAINTENANCE.name.lower(),
|
|
345
|
-
]
|
|
346
|
-
|
|
347
|
-
SKILL = [
|
|
348
|
-
JournalRefType.SKILL_PURCHASE.name.lower(),
|
|
349
|
-
JournalRefType.DATACORE_FEE.name.lower(),
|
|
350
|
-
]
|
|
351
|
-
|
|
352
|
-
TRAVELING = [
|
|
353
|
-
JournalRefType.DOCKING_FEE.name.lower(),
|
|
354
|
-
JournalRefType.ACCELERATION_GATE_FEE.name.lower(),
|
|
355
|
-
JournalRefType.JUMP_CLONE_INSTALLATION_FEE.name.lower(),
|
|
356
|
-
JournalRefType.JUMP_CLONE_ACTIVATION_FEE.name.lower(),
|
|
357
|
-
JournalRefType.CLONE_ACTIVATION.name.lower(),
|
|
358
|
-
JournalRefType.CLONE_TRANSFER.name.lower(),
|
|
359
|
-
JournalRefType.STRUCTURE_GATE_JUMP.name.lower(),
|
|
360
|
-
JournalRefType.ALLIGNMENT_BASED_GATE_TOLL.name.lower(),
|
|
361
|
-
]
|
|
362
|
-
|
|
363
|
-
@classmethod
|
|
364
|
-
def get_ref_types_from_category(cls, category: str) -> list[str]:
|
|
365
|
-
"""Get all ref types from a specific category."""
|
|
366
|
-
if hasattr(cls, category):
|
|
367
|
-
return getattr(cls, category)
|
|
368
|
-
logger.debug(f"Category '{category}' does not exist in RefTypeCategories.")
|
|
369
|
-
return []
|
|
370
|
-
|
|
371
|
-
@classmethod
|
|
372
|
-
def get_all_categories(cls) -> dict[str, list[str]]:
|
|
373
|
-
"""Get all categories and their ref types, sorted alphabetically by key in the dict literal. Add NO_CATEGORY for missing JournalRefType."""
|
|
374
|
-
categories = {
|
|
375
|
-
"ASSETS": cls.ASSETS,
|
|
376
|
-
"CONTRACT": cls.CONTRACT,
|
|
377
|
-
"CORPORATION_ADMINISTRATION": cls.CORPORATION_ADMINISTRATION,
|
|
378
|
-
"CORPORATION_CONTRACT": cls.CORPORATION_CONTRACT,
|
|
379
|
-
"CORPORATION_WITHDRAWAL": cls.CORPORATION_DONATION,
|
|
380
|
-
"DAILY_GOAL_REWARD": cls.DAILY_GOAL_REWARD,
|
|
381
|
-
"DONATION": cls.DONATION,
|
|
382
|
-
"FREELANCE_JOBS": cls.FREELANCE_JOBS,
|
|
383
|
-
"INCURSION": cls.INCURSION,
|
|
384
|
-
"INSURANCE": cls.INSURANCE,
|
|
385
|
-
"LP": cls.LP,
|
|
386
|
-
"MARKET": cls.MARKET,
|
|
387
|
-
"MISSION_REWARD": cls.MISSION_REWARD,
|
|
388
|
-
"PLANETARY": cls.PLANETARY,
|
|
389
|
-
"PRODUCTION": cls.PRODUCTION,
|
|
390
|
-
"SKILL": cls.SKILL,
|
|
391
|
-
"STRUCTURE_RENTAL": cls.STRUCTURE_RENTAL,
|
|
392
|
-
"TRAVELING": cls.TRAVELING,
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
# Alle zugeordneten ref_types sammeln
|
|
396
|
-
assigned = set()
|
|
397
|
-
for ref_types in categories.values():
|
|
398
|
-
assigned.update(ref_types)
|
|
399
|
-
|
|
400
|
-
# Alle JournalRefType-Namen in Kleinbuchstaben
|
|
401
|
-
all_types = {jt.name.lower() for jt in JournalRefType}
|
|
402
|
-
|
|
403
|
-
# Exclude Bounty and ESS
|
|
404
|
-
pve = set()
|
|
405
|
-
# Bounty-Prizes
|
|
406
|
-
if hasattr(cls, "BOUNTY_PRIZES"):
|
|
407
|
-
pve.update(cls.BOUNTY_PRIZES)
|
|
408
|
-
# ESS Transfer
|
|
409
|
-
if hasattr(cls, "ESS_TRANSFER"):
|
|
410
|
-
pve.update(cls.ESS_TRANSFER)
|
|
411
|
-
|
|
412
|
-
# Nicht zugeordnete Typen bestimmen, aber special auslassen
|
|
413
|
-
not_defined = sorted((all_types - assigned) - pve)
|
|
414
|
-
if not_defined:
|
|
415
|
-
categories["NOT_DEFINED_CATEGORY"] = not_defined
|
|
416
|
-
|
|
417
|
-
return categories
|
|
418
|
-
|
|
419
|
-
@classmethod
|
|
420
|
-
def all_ref_types(cls) -> list[str]:
|
|
421
|
-
"""Get all ref types from all categories."""
|
|
422
|
-
all_ref_types = cls.get_all_categories()
|
|
423
|
-
ref_types_items = []
|
|
424
|
-
for __, ref_types in all_ref_types.items():
|
|
425
|
-
ref_types_items.extend(ref_types)
|
|
426
|
-
return ref_types_items
|
|
427
|
-
|
|
428
|
-
@staticmethod
|
|
429
|
-
def special_cases(row: dict, ids: set[int], account_char_ids: set[int]) -> bool:
|
|
430
|
-
"""Handle special cases in Ledger."""
|
|
431
|
-
if isinstance(row, dict) is False:
|
|
432
|
-
logger.debug("Row is not a dictionary, skipping special case checks.")
|
|
433
|
-
return False
|
|
434
|
-
|
|
435
|
-
# Skip Market Transactions from buyer between the corporation and its members (only count transactions from creator)
|
|
436
|
-
if row["ref_type"] == "market_transaction" and row["first_party_id"] in ids:
|
|
437
|
-
return True
|
|
438
|
-
|
|
439
|
-
# Skip Contract if Contract Creator is Registered as a Member of the Corporation (only count the contract creator)
|
|
440
|
-
if (
|
|
441
|
-
row["ref_type"] == "contract_price_payment_corp"
|
|
442
|
-
and row["first_party_id"] in account_char_ids
|
|
443
|
-
and row["second_party_id"] in ids
|
|
444
|
-
):
|
|
445
|
-
return True
|
|
446
|
-
return False
|
|
447
|
-
|
|
448
|
-
@staticmethod
|
|
449
|
-
def special_cases_details(
|
|
450
|
-
value: list,
|
|
451
|
-
entity: "LedgerEntity",
|
|
452
|
-
kwargs: dict[str, int],
|
|
453
|
-
journal_type: str,
|
|
454
|
-
char_ids: set[int] = None,
|
|
455
|
-
) -> bool:
|
|
456
|
-
"""Handle special cases in Ledger for Details View."""
|
|
457
|
-
# Skip Contract if Contract Creator is Registered as a Member of the Corporation (only count the contract creator)
|
|
458
|
-
if (
|
|
459
|
-
"contract_price_payment_corp" in value
|
|
460
|
-
and entity.type == "character"
|
|
461
|
-
and journal_type == "corporation"
|
|
462
|
-
): # Only Count Contract Creator
|
|
463
|
-
kwargs["first_party"] = entity.entity_id
|
|
464
|
-
return kwargs
|
|
465
|
-
|
|
466
|
-
# Skip Player Donation if it is to own alts
|
|
467
|
-
if (
|
|
468
|
-
"player_donation" in value
|
|
469
|
-
and entity.is_eve_character
|
|
470
|
-
and journal_type == "character"
|
|
471
|
-
):
|
|
472
|
-
if char_ids is None:
|
|
473
|
-
return kwargs
|
|
474
|
-
kwargs["exclude"] = char_ids
|
|
475
|
-
return kwargs
|
|
1
|
+
"""Helpers for wallet journals."""
|
|
2
|
+
|
|
3
|
+
# Standard Library
|
|
4
|
+
import enum
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
# Django
|
|
8
|
+
from django.utils.translation import gettext as _
|
|
9
|
+
|
|
10
|
+
# Alliance Auth
|
|
11
|
+
from allianceauth.services.hooks import get_extension_logger
|
|
12
|
+
|
|
13
|
+
# Alliance Auth (External Libs)
|
|
14
|
+
from app_utils.logging import LoggerAddTag
|
|
15
|
+
|
|
16
|
+
# AA Ledger
|
|
17
|
+
from ledger import __title__
|
|
18
|
+
|
|
19
|
+
if TYPE_CHECKING:
|
|
20
|
+
# AA Ledger
|
|
21
|
+
from ledger.helpers.core import LedgerEntity
|
|
22
|
+
|
|
23
|
+
logger = LoggerAddTag(get_extension_logger(__name__), __title__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# Unified Journal Reference Type Enum - All ref types in one place
|
|
27
|
+
class JournalRefType(enum.Enum):
|
|
28
|
+
"""All wallet journal reference types unified."""
|
|
29
|
+
|
|
30
|
+
# Original ref types
|
|
31
|
+
PLAYER_TRADING = 1
|
|
32
|
+
MARKET_TRANSACTION = 2
|
|
33
|
+
GM_CASH_TRANSFER = 3
|
|
34
|
+
MISSION_REWARD = 7
|
|
35
|
+
CLONE_ACTIVATION = 8
|
|
36
|
+
INHERITANCE = 9
|
|
37
|
+
PLAYER_DONATION = 10
|
|
38
|
+
CORPORATION_PAYMENT = 11
|
|
39
|
+
DOCKING_FEE = 12
|
|
40
|
+
OFFICE_RENTAL_FEE = 13
|
|
41
|
+
FACTORY_SLOT_RENTAL_FEE = 14
|
|
42
|
+
REPAIR_BILL = 15
|
|
43
|
+
BOUNTY = 16
|
|
44
|
+
BOUNTY_PRIZE = 17
|
|
45
|
+
INSURANCE = 19
|
|
46
|
+
MISSION_EXPIRATION = 20
|
|
47
|
+
MISSION_COMPLETION = 21
|
|
48
|
+
SHARES = 22
|
|
49
|
+
COURIER_MISSION_ESCROW = 23
|
|
50
|
+
MISSION_COST = 24
|
|
51
|
+
AGENT_MISCELLANEOUS = 25
|
|
52
|
+
LP_STORE = 26
|
|
53
|
+
AGENT_LOCATION_SERVICES = 27
|
|
54
|
+
AGENT_DONATION = 28
|
|
55
|
+
AGENT_SECURITY_SERVICES = 29
|
|
56
|
+
AGENT_MISSION_COLLATERAL_PAID = 30
|
|
57
|
+
AGENT_MISSION_COLLATERAL_REFUNDED = 31
|
|
58
|
+
AGENTS_PREWARD = 32
|
|
59
|
+
AGENT_MISSION_REWARD = 33
|
|
60
|
+
AGENT_MISSION_TIME_BONUS_REWARD = 34
|
|
61
|
+
CSPA = 35
|
|
62
|
+
CSPAOFFLINEREFUND = 36
|
|
63
|
+
CORPORATION_ACCOUNT_WITHDRAWAL = 37
|
|
64
|
+
CORPORATION_DIVIDEND_PAYMENT = 38
|
|
65
|
+
CORPORATION_REGISTRATION_FEE = 39
|
|
66
|
+
CORPORATION_LOGO_CHANGE_COST = 40
|
|
67
|
+
RELEASE_OF_IMPOUNDED_PROPERTY = 41
|
|
68
|
+
MARKET_ESCROW = 42
|
|
69
|
+
AGENT_SERVICES_RENDERED = 43
|
|
70
|
+
MARKET_FINE_PAID = 44
|
|
71
|
+
CORPORATION_LIQUIDATION = 45
|
|
72
|
+
BROKERS_FEE = 46
|
|
73
|
+
CORPORATION_BULK_PAYMENT = 47
|
|
74
|
+
ALLIANCE_REGISTRATION_FEE = 48
|
|
75
|
+
WAR_FEE = 49
|
|
76
|
+
ALLIANCE_MAINTAINANCE_FEE = 50
|
|
77
|
+
CONTRABAND_FINE = 51
|
|
78
|
+
CLONE_TRANSFER = 52
|
|
79
|
+
ACCELERATION_GATE_FEE = 53
|
|
80
|
+
TRANSACTION_TAX = 54
|
|
81
|
+
JUMP_CLONE_INSTALLATION_FEE = 55
|
|
82
|
+
MANUFACTURING = 56
|
|
83
|
+
RESEARCHING_TECHNOLOGY = 57
|
|
84
|
+
RESEARCHING_TIME_PRODUCTIVITY = 58
|
|
85
|
+
RESEARCHING_MATERIAL_PRODUCTIVITY = 59
|
|
86
|
+
COPYING = 60
|
|
87
|
+
REVERSE_ENGINEERING = 62
|
|
88
|
+
CONTRACT_AUCTION_BID = 63
|
|
89
|
+
CONTRACT_AUCTION_BID_REFUND = 64
|
|
90
|
+
CONTRACT_COLLATERAL = 65
|
|
91
|
+
CONTRACT_REWARD_REFUND = 66
|
|
92
|
+
CONTRACT_AUCTION_SOLD = 67
|
|
93
|
+
CONTRACT_REWARD = 68
|
|
94
|
+
CONTRACT_COLLATERAL_REFUND = 69
|
|
95
|
+
CONTRACT_COLLATERAL_PAYOUT = 70
|
|
96
|
+
CONTRACT_PRICE = 71
|
|
97
|
+
CONTRACT_BROKERS_FEE = 72
|
|
98
|
+
CONTRACT_SALES_TAX = 73
|
|
99
|
+
CONTRACT_DEPOSIT = 74
|
|
100
|
+
CONTRACT_DEPOSIT_SALES_TAX = 75
|
|
101
|
+
CONTRACT_AUCTION_BID_CORP = 77
|
|
102
|
+
CONTRACT_COLLATERAL_DEPOSITED_CORP = 78
|
|
103
|
+
CONTRACT_PRICE_PAYMENT_CORP = 79
|
|
104
|
+
CONTRACT_BROKERS_FEE_CORP = 80
|
|
105
|
+
CONTRACT_DEPOSIT_CORP = 81
|
|
106
|
+
CONTRACT_DEPOSIT_REFUND = 82
|
|
107
|
+
CONTRACT_REWARD_DEPOSITED = 83
|
|
108
|
+
CONTRACT_REWARD_DEPOSITED_CORP = 84
|
|
109
|
+
BOUNTY_PRIZES = 85
|
|
110
|
+
ADVERTISEMENT_LISTING_FEE = 86
|
|
111
|
+
MEDAL_CREATION = 87
|
|
112
|
+
MEDAL_ISSUED = 88
|
|
113
|
+
DNA_MODIFICATION_FEE = 90
|
|
114
|
+
SOVEREIGNITY_BILL = 91
|
|
115
|
+
BOUNTY_PRIZE_CORPORATION_TAX = 92
|
|
116
|
+
AGENT_MISSION_REWARD_CORPORATION_TAX = 93
|
|
117
|
+
AGENT_MISSION_TIME_BONUS_REWARD_CORPORATION_TAX = 94
|
|
118
|
+
UPKEEP_ADJUSTMENT_FEE = 95
|
|
119
|
+
PLANETARY_IMPORT_TAX = 96
|
|
120
|
+
PLANETARY_EXPORT_TAX = 97
|
|
121
|
+
PLANETARY_CONSTRUCTION = 98
|
|
122
|
+
CORPORATE_REWARD_PAYOUT = 99
|
|
123
|
+
BOUNTY_SURCHARGE = 101
|
|
124
|
+
CONTRACT_REVERSAL = 102
|
|
125
|
+
CORPORATE_REWARD_TAX = 103
|
|
126
|
+
STORE_PURCHASE = 106
|
|
127
|
+
STORE_PURCHASE_REFUND = 107
|
|
128
|
+
DATACORE_FEE = 112
|
|
129
|
+
WAR_FEE_SURRENDER = 113
|
|
130
|
+
WAR_ALLY_CONTRACT = 114
|
|
131
|
+
BOUNTY_REIMBURSEMENT = 115
|
|
132
|
+
KILL_RIGHT_FEE = 116
|
|
133
|
+
SECURITY_PROCESSING_FEE = 117
|
|
134
|
+
INDUSTRY_JOB_TAX = 120
|
|
135
|
+
INFRASTRUCTURE_HUB_MAINTENANCE = 122
|
|
136
|
+
ASSET_SAFETY_RECOVERY_TAX = 123
|
|
137
|
+
OPPORTUNITY_REWARD = 124
|
|
138
|
+
PROJECT_DISCOVERY_REWARD = 125
|
|
139
|
+
PROJECT_DISCOVERY_TAX = 126
|
|
140
|
+
REPROCESSING_TAX = 127
|
|
141
|
+
JUMP_CLONE_ACTIVATION_FEE = 128
|
|
142
|
+
OPERATION_BONUS = 129
|
|
143
|
+
RESOURCE_WARS_REWARD = 131
|
|
144
|
+
DUEL_WAGER_ESCROW = 132
|
|
145
|
+
DUEL_WAGER_PAYMENT = 133
|
|
146
|
+
DUEL_WAGER_REFUND = 134
|
|
147
|
+
REACTION = 135
|
|
148
|
+
|
|
149
|
+
# V3 additions
|
|
150
|
+
STRUCTURE_GATE_JUMP = 140
|
|
151
|
+
|
|
152
|
+
# V4 additions
|
|
153
|
+
EXTERNAL_TRADE_FREEZE = 136
|
|
154
|
+
EXTERNAL_TRADE_THAW = 137
|
|
155
|
+
EXTERNAL_TRADE_DELIVERY = 138
|
|
156
|
+
SEASON_CHALLENGE_REWARD = 139
|
|
157
|
+
SKILL_PURCHASE = 141
|
|
158
|
+
ITEM_TRADER_PAYMENT = 142
|
|
159
|
+
FLUX_TICKET_SALE = 143
|
|
160
|
+
FLUX_PAYOUT = 144
|
|
161
|
+
FLUX_TAX = 145
|
|
162
|
+
FLUX_TICKET_REPAYMENT = 146
|
|
163
|
+
REDEEMED_ISK_TOKEN = 147
|
|
164
|
+
DAILY_CHALLENGE_REWARD = 148
|
|
165
|
+
MARKET_PROVIDER_TAX = 149
|
|
166
|
+
ESS_ESCROW_TRANSFER = 155
|
|
167
|
+
MILESTONE_REWARD_PAYMENT = 156
|
|
168
|
+
UNDER_CONSTRUCTION = 166
|
|
169
|
+
ALLIGNMENT_BASED_GATE_TOLL = 168
|
|
170
|
+
PROJECT_PAYOUTS = 170
|
|
171
|
+
INSURGENCY_CORRUPTION_CONTRIBUTION_REWARD = 172
|
|
172
|
+
INSURGENCY_SUPPRESSION_CONTRIBUTION_REWARD = 173
|
|
173
|
+
DAILY_GOAL_PAYOUTS = 174
|
|
174
|
+
DAILY_GOAL_PAYOUTS_TAX = 175
|
|
175
|
+
COSMETIC_MARKET_COMPONENT_ITEM_PURCHASE = 178
|
|
176
|
+
COSMETIC_MARKET_SKIN_SALE_BROKER_FEE = 179
|
|
177
|
+
COSMETIC_MARKET_SKIN_PURCHASE = 180
|
|
178
|
+
COSMETIC_MARKET_SKIN_SALE = 181
|
|
179
|
+
COSMETIC_MARKET_SKIN_SALE_TAX = 182
|
|
180
|
+
COSMETIC_MARKET_SKIN_TRANSACTION = 183
|
|
181
|
+
SKYHOOK_CLAIM_FEE = 184
|
|
182
|
+
AIR_CAREER_PROGRAM_REWARD = 185
|
|
183
|
+
FREELANCE_JOBS_DURATION_FEE = 186
|
|
184
|
+
FREELANCE_JOBS_BROADCASTING_FEE = 187
|
|
185
|
+
FREELANCE_JOBS_REWARD_ESCROW = 188
|
|
186
|
+
FREELANCE_JOBS_REWARD = 189
|
|
187
|
+
FREELANCE_JOBS_ESCROW_REFUND = 190
|
|
188
|
+
FREELANCE_JOBS_REWARD_CORPORATION_TAX = 191
|
|
189
|
+
GM_PLEX_FEE_REFUND = 192
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
class RefTypeManager:
|
|
193
|
+
"""Categories for wallet journal reference types."""
|
|
194
|
+
|
|
195
|
+
# Translations for reference types
|
|
196
|
+
_("Corporation Contract")
|
|
197
|
+
_("Corporation Withdrawal")
|
|
198
|
+
_("Mission Reward")
|
|
199
|
+
_("Market")
|
|
200
|
+
_("Daily Goal Reward")
|
|
201
|
+
_("Structure Rental")
|
|
202
|
+
|
|
203
|
+
# Assets/Items
|
|
204
|
+
ASSETS = [
|
|
205
|
+
JournalRefType.REPAIR_BILL.name.lower(),
|
|
206
|
+
JournalRefType.ASSET_SAFETY_RECOVERY_TAX.name.lower(),
|
|
207
|
+
JournalRefType.REPROCESSING_TAX.name.lower(),
|
|
208
|
+
JournalRefType.ITEM_TRADER_PAYMENT.name.lower(),
|
|
209
|
+
]
|
|
210
|
+
|
|
211
|
+
# PVE Income
|
|
212
|
+
BOUNTY_PRIZES = [
|
|
213
|
+
JournalRefType.BOUNTY.name.lower(),
|
|
214
|
+
JournalRefType.BOUNTY_PRIZE.name.lower(),
|
|
215
|
+
JournalRefType.BOUNTY_PRIZES.name.lower(),
|
|
216
|
+
JournalRefType.BOUNTY_REIMBURSEMENT.name.lower(),
|
|
217
|
+
JournalRefType.BOUNTY_SURCHARGE.name.lower(),
|
|
218
|
+
]
|
|
219
|
+
|
|
220
|
+
CONTRACT = [
|
|
221
|
+
JournalRefType.CONTRACT_AUCTION_BID.name.lower(),
|
|
222
|
+
JournalRefType.CONTRACT_AUCTION_BID_REFUND.name.lower(),
|
|
223
|
+
JournalRefType.CONTRACT_COLLATERAL.name.lower(),
|
|
224
|
+
JournalRefType.CONTRACT_REWARD_REFUND.name.lower(),
|
|
225
|
+
JournalRefType.CONTRACT_AUCTION_SOLD.name.lower(),
|
|
226
|
+
JournalRefType.CONTRACT_REWARD.name.lower(),
|
|
227
|
+
JournalRefType.CONTRACT_COLLATERAL_REFUND.name.lower(),
|
|
228
|
+
JournalRefType.CONTRACT_COLLATERAL_PAYOUT.name.lower(),
|
|
229
|
+
JournalRefType.CONTRACT_PRICE.name.lower(),
|
|
230
|
+
JournalRefType.CONTRACT_BROKERS_FEE.name.lower(),
|
|
231
|
+
JournalRefType.CONTRACT_SALES_TAX.name.lower(),
|
|
232
|
+
JournalRefType.CONTRACT_DEPOSIT.name.lower(),
|
|
233
|
+
JournalRefType.CONTRACT_DEPOSIT_SALES_TAX.name.lower(),
|
|
234
|
+
JournalRefType.CONTRACT_AUCTION_BID_CORP.name.lower(),
|
|
235
|
+
JournalRefType.CONTRACT_COLLATERAL_DEPOSITED_CORP.name.lower(),
|
|
236
|
+
JournalRefType.CONTRACT_DEPOSIT_CORP.name.lower(),
|
|
237
|
+
JournalRefType.CONTRACT_DEPOSIT_REFUND.name.lower(),
|
|
238
|
+
JournalRefType.CONTRACT_REWARD_DEPOSITED.name.lower(),
|
|
239
|
+
JournalRefType.CONTRACT_REWARD_DEPOSITED_CORP.name.lower(),
|
|
240
|
+
JournalRefType.CONTRACT_REVERSAL.name.lower(),
|
|
241
|
+
]
|
|
242
|
+
|
|
243
|
+
CORPORATION_ADMINISTRATION = [
|
|
244
|
+
JournalRefType.CORPORATION_DIVIDEND_PAYMENT.name.lower(),
|
|
245
|
+
JournalRefType.CORPORATION_REGISTRATION_FEE.name.lower(),
|
|
246
|
+
JournalRefType.CORPORATION_LOGO_CHANGE_COST.name.lower(),
|
|
247
|
+
JournalRefType.CORPORATION_BULK_PAYMENT.name.lower(),
|
|
248
|
+
JournalRefType.ADVERTISEMENT_LISTING_FEE.name.lower(),
|
|
249
|
+
]
|
|
250
|
+
|
|
251
|
+
CORPORATION_CONTRACT = [
|
|
252
|
+
JournalRefType.CONTRACT_PRICE_PAYMENT_CORP.name.lower(),
|
|
253
|
+
]
|
|
254
|
+
|
|
255
|
+
CORPORATION_DONATION = [
|
|
256
|
+
JournalRefType.CORPORATION_ACCOUNT_WITHDRAWAL.name.lower(),
|
|
257
|
+
]
|
|
258
|
+
|
|
259
|
+
DAILY_GOAL_REWARD = [
|
|
260
|
+
JournalRefType.DAILY_GOAL_PAYOUTS.name.lower(),
|
|
261
|
+
JournalRefType.DAILY_CHALLENGE_REWARD.name.lower(),
|
|
262
|
+
JournalRefType.SEASON_CHALLENGE_REWARD.name.lower(),
|
|
263
|
+
JournalRefType.OPPORTUNITY_REWARD.name.lower(),
|
|
264
|
+
JournalRefType.AIR_CAREER_PROGRAM_REWARD.name.lower(),
|
|
265
|
+
]
|
|
266
|
+
|
|
267
|
+
DONATION = [
|
|
268
|
+
JournalRefType.PLAYER_DONATION.name.lower(),
|
|
269
|
+
JournalRefType.AGENT_DONATION.name.lower(),
|
|
270
|
+
]
|
|
271
|
+
|
|
272
|
+
ESS_TRANSFER = [
|
|
273
|
+
JournalRefType.ESS_ESCROW_TRANSFER.name.lower(),
|
|
274
|
+
]
|
|
275
|
+
|
|
276
|
+
FREELANCE_JOBS = [
|
|
277
|
+
JournalRefType.FREELANCE_JOBS_DURATION_FEE.name.lower(),
|
|
278
|
+
JournalRefType.FREELANCE_JOBS_BROADCASTING_FEE.name.lower(),
|
|
279
|
+
JournalRefType.FREELANCE_JOBS_REWARD_ESCROW.name.lower(),
|
|
280
|
+
JournalRefType.FREELANCE_JOBS_REWARD.name.lower(),
|
|
281
|
+
JournalRefType.FREELANCE_JOBS_ESCROW_REFUND.name.lower(),
|
|
282
|
+
JournalRefType.FREELANCE_JOBS_REWARD_CORPORATION_TAX.name.lower(),
|
|
283
|
+
]
|
|
284
|
+
|
|
285
|
+
INCURSION = [
|
|
286
|
+
JournalRefType.RESOURCE_WARS_REWARD.name.lower(),
|
|
287
|
+
JournalRefType.INSURGENCY_CORRUPTION_CONTRIBUTION_REWARD.name.lower(),
|
|
288
|
+
JournalRefType.INSURGENCY_SUPPRESSION_CONTRIBUTION_REWARD.name.lower(),
|
|
289
|
+
JournalRefType.CORPORATE_REWARD_PAYOUT.name.lower(),
|
|
290
|
+
]
|
|
291
|
+
|
|
292
|
+
INSURANCE = [
|
|
293
|
+
JournalRefType.INSURANCE.name.lower(),
|
|
294
|
+
]
|
|
295
|
+
|
|
296
|
+
LP = [
|
|
297
|
+
JournalRefType.LP_STORE.name.lower(),
|
|
298
|
+
]
|
|
299
|
+
|
|
300
|
+
MARKET = [
|
|
301
|
+
JournalRefType.MARKET_TRANSACTION.name.lower(),
|
|
302
|
+
JournalRefType.MARKET_ESCROW.name.lower(),
|
|
303
|
+
JournalRefType.BROKERS_FEE.name.lower(),
|
|
304
|
+
JournalRefType.TRANSACTION_TAX.name.lower(),
|
|
305
|
+
JournalRefType.MARKET_FINE_PAID.name.lower(),
|
|
306
|
+
JournalRefType.MARKET_PROVIDER_TAX.name.lower(),
|
|
307
|
+
]
|
|
308
|
+
|
|
309
|
+
MILESTONE_REWARD = [
|
|
310
|
+
JournalRefType.MILESTONE_REWARD_PAYMENT.name.lower(),
|
|
311
|
+
JournalRefType.PROJECT_DISCOVERY_REWARD.name.lower(),
|
|
312
|
+
JournalRefType.PROJECT_PAYOUTS.name.lower(),
|
|
313
|
+
]
|
|
314
|
+
|
|
315
|
+
MISSION_REWARD = [
|
|
316
|
+
JournalRefType.MISSION_REWARD.name.lower(),
|
|
317
|
+
JournalRefType.MISSION_COMPLETION.name.lower(),
|
|
318
|
+
JournalRefType.AGENT_MISSION_REWARD.name.lower(),
|
|
319
|
+
JournalRefType.AGENT_MISSION_TIME_BONUS_REWARD.name.lower(),
|
|
320
|
+
JournalRefType.AGENTS_PREWARD.name.lower(),
|
|
321
|
+
]
|
|
322
|
+
|
|
323
|
+
PLANETARY = [
|
|
324
|
+
JournalRefType.PLANETARY_IMPORT_TAX.name.lower(),
|
|
325
|
+
JournalRefType.PLANETARY_EXPORT_TAX.name.lower(),
|
|
326
|
+
JournalRefType.PLANETARY_CONSTRUCTION.name.lower(),
|
|
327
|
+
]
|
|
328
|
+
|
|
329
|
+
PRODUCTION = [
|
|
330
|
+
JournalRefType.MANUFACTURING.name.lower(),
|
|
331
|
+
JournalRefType.RESEARCHING_TECHNOLOGY.name.lower(),
|
|
332
|
+
JournalRefType.RESEARCHING_TIME_PRODUCTIVITY.name.lower(),
|
|
333
|
+
JournalRefType.RESEARCHING_MATERIAL_PRODUCTIVITY.name.lower(),
|
|
334
|
+
JournalRefType.COPYING.name.lower(),
|
|
335
|
+
JournalRefType.REVERSE_ENGINEERING.name.lower(),
|
|
336
|
+
JournalRefType.INDUSTRY_JOB_TAX.name.lower(),
|
|
337
|
+
JournalRefType.REACTION.name.lower(),
|
|
338
|
+
]
|
|
339
|
+
|
|
340
|
+
STRUCTURE_RENTAL = [
|
|
341
|
+
JournalRefType.OFFICE_RENTAL_FEE.name.lower(),
|
|
342
|
+
JournalRefType.FACTORY_SLOT_RENTAL_FEE.name.lower(),
|
|
343
|
+
JournalRefType.SOVEREIGNITY_BILL.name.lower(),
|
|
344
|
+
JournalRefType.INFRASTRUCTURE_HUB_MAINTENANCE.name.lower(),
|
|
345
|
+
]
|
|
346
|
+
|
|
347
|
+
SKILL = [
|
|
348
|
+
JournalRefType.SKILL_PURCHASE.name.lower(),
|
|
349
|
+
JournalRefType.DATACORE_FEE.name.lower(),
|
|
350
|
+
]
|
|
351
|
+
|
|
352
|
+
TRAVELING = [
|
|
353
|
+
JournalRefType.DOCKING_FEE.name.lower(),
|
|
354
|
+
JournalRefType.ACCELERATION_GATE_FEE.name.lower(),
|
|
355
|
+
JournalRefType.JUMP_CLONE_INSTALLATION_FEE.name.lower(),
|
|
356
|
+
JournalRefType.JUMP_CLONE_ACTIVATION_FEE.name.lower(),
|
|
357
|
+
JournalRefType.CLONE_ACTIVATION.name.lower(),
|
|
358
|
+
JournalRefType.CLONE_TRANSFER.name.lower(),
|
|
359
|
+
JournalRefType.STRUCTURE_GATE_JUMP.name.lower(),
|
|
360
|
+
JournalRefType.ALLIGNMENT_BASED_GATE_TOLL.name.lower(),
|
|
361
|
+
]
|
|
362
|
+
|
|
363
|
+
@classmethod
|
|
364
|
+
def get_ref_types_from_category(cls, category: str) -> list[str]:
|
|
365
|
+
"""Get all ref types from a specific category."""
|
|
366
|
+
if hasattr(cls, category):
|
|
367
|
+
return getattr(cls, category)
|
|
368
|
+
logger.debug(f"Category '{category}' does not exist in RefTypeCategories.")
|
|
369
|
+
return []
|
|
370
|
+
|
|
371
|
+
@classmethod
|
|
372
|
+
def get_all_categories(cls) -> dict[str, list[str]]:
|
|
373
|
+
"""Get all categories and their ref types, sorted alphabetically by key in the dict literal. Add NO_CATEGORY for missing JournalRefType."""
|
|
374
|
+
categories = {
|
|
375
|
+
"ASSETS": cls.ASSETS,
|
|
376
|
+
"CONTRACT": cls.CONTRACT,
|
|
377
|
+
"CORPORATION_ADMINISTRATION": cls.CORPORATION_ADMINISTRATION,
|
|
378
|
+
"CORPORATION_CONTRACT": cls.CORPORATION_CONTRACT,
|
|
379
|
+
"CORPORATION_WITHDRAWAL": cls.CORPORATION_DONATION,
|
|
380
|
+
"DAILY_GOAL_REWARD": cls.DAILY_GOAL_REWARD,
|
|
381
|
+
"DONATION": cls.DONATION,
|
|
382
|
+
"FREELANCE_JOBS": cls.FREELANCE_JOBS,
|
|
383
|
+
"INCURSION": cls.INCURSION,
|
|
384
|
+
"INSURANCE": cls.INSURANCE,
|
|
385
|
+
"LP": cls.LP,
|
|
386
|
+
"MARKET": cls.MARKET,
|
|
387
|
+
"MISSION_REWARD": cls.MISSION_REWARD,
|
|
388
|
+
"PLANETARY": cls.PLANETARY,
|
|
389
|
+
"PRODUCTION": cls.PRODUCTION,
|
|
390
|
+
"SKILL": cls.SKILL,
|
|
391
|
+
"STRUCTURE_RENTAL": cls.STRUCTURE_RENTAL,
|
|
392
|
+
"TRAVELING": cls.TRAVELING,
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
# Alle zugeordneten ref_types sammeln
|
|
396
|
+
assigned = set()
|
|
397
|
+
for ref_types in categories.values():
|
|
398
|
+
assigned.update(ref_types)
|
|
399
|
+
|
|
400
|
+
# Alle JournalRefType-Namen in Kleinbuchstaben
|
|
401
|
+
all_types = {jt.name.lower() for jt in JournalRefType}
|
|
402
|
+
|
|
403
|
+
# Exclude Bounty and ESS
|
|
404
|
+
pve = set()
|
|
405
|
+
# Bounty-Prizes
|
|
406
|
+
if hasattr(cls, "BOUNTY_PRIZES"):
|
|
407
|
+
pve.update(cls.BOUNTY_PRIZES)
|
|
408
|
+
# ESS Transfer
|
|
409
|
+
if hasattr(cls, "ESS_TRANSFER"):
|
|
410
|
+
pve.update(cls.ESS_TRANSFER)
|
|
411
|
+
|
|
412
|
+
# Nicht zugeordnete Typen bestimmen, aber special auslassen
|
|
413
|
+
not_defined = sorted((all_types - assigned) - pve)
|
|
414
|
+
if not_defined:
|
|
415
|
+
categories["NOT_DEFINED_CATEGORY"] = not_defined
|
|
416
|
+
|
|
417
|
+
return categories
|
|
418
|
+
|
|
419
|
+
@classmethod
|
|
420
|
+
def all_ref_types(cls) -> list[str]:
|
|
421
|
+
"""Get all ref types from all categories."""
|
|
422
|
+
all_ref_types = cls.get_all_categories()
|
|
423
|
+
ref_types_items = []
|
|
424
|
+
for __, ref_types in all_ref_types.items():
|
|
425
|
+
ref_types_items.extend(ref_types)
|
|
426
|
+
return ref_types_items
|
|
427
|
+
|
|
428
|
+
@staticmethod
|
|
429
|
+
def special_cases(row: dict, ids: set[int], account_char_ids: set[int]) -> bool:
|
|
430
|
+
"""Handle special cases in Ledger."""
|
|
431
|
+
if isinstance(row, dict) is False:
|
|
432
|
+
logger.debug("Row is not a dictionary, skipping special case checks.")
|
|
433
|
+
return False
|
|
434
|
+
|
|
435
|
+
# Skip Market Transactions from buyer between the corporation and its members (only count transactions from creator)
|
|
436
|
+
if row["ref_type"] == "market_transaction" and row["first_party_id"] in ids:
|
|
437
|
+
return True
|
|
438
|
+
|
|
439
|
+
# Skip Contract if Contract Creator is Registered as a Member of the Corporation (only count the contract creator)
|
|
440
|
+
if (
|
|
441
|
+
row["ref_type"] == "contract_price_payment_corp"
|
|
442
|
+
and row["first_party_id"] in account_char_ids
|
|
443
|
+
and row["second_party_id"] in ids
|
|
444
|
+
):
|
|
445
|
+
return True
|
|
446
|
+
return False
|
|
447
|
+
|
|
448
|
+
@staticmethod
|
|
449
|
+
def special_cases_details(
|
|
450
|
+
value: list,
|
|
451
|
+
entity: "LedgerEntity",
|
|
452
|
+
kwargs: dict[str, int],
|
|
453
|
+
journal_type: str,
|
|
454
|
+
char_ids: set[int] = None,
|
|
455
|
+
) -> bool:
|
|
456
|
+
"""Handle special cases in Ledger for Details View."""
|
|
457
|
+
# Skip Contract if Contract Creator is Registered as a Member of the Corporation (only count the contract creator)
|
|
458
|
+
if (
|
|
459
|
+
"contract_price_payment_corp" in value
|
|
460
|
+
and entity.type == "character"
|
|
461
|
+
and journal_type == "corporation"
|
|
462
|
+
): # Only Count Contract Creator
|
|
463
|
+
kwargs["first_party"] = entity.entity_id
|
|
464
|
+
return kwargs
|
|
465
|
+
|
|
466
|
+
# Skip Player Donation if it is to own alts
|
|
467
|
+
if (
|
|
468
|
+
"player_donation" in value
|
|
469
|
+
and entity.is_eve_character
|
|
470
|
+
and journal_type == "character"
|
|
471
|
+
):
|
|
472
|
+
if char_ids is None:
|
|
473
|
+
return kwargs
|
|
474
|
+
kwargs["exclude"] = char_ids
|
|
475
|
+
return kwargs
|