View Javadoc
1   /*
2    * MoneyWise: Finance Application
3    * Copyright 2012-2026. Tony Washer
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6    * use this file except in compliance with the License.  You may obtain a copy
7    * of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
14   * License for the specific language governing permissions and limitations under
15   * the License.
16   */
17  package io.github.tonywasher.joceanus.moneywise.data.statics;
18  
19  import io.github.tonywasher.joceanus.moneywise.exc.MoneyWiseDataException;
20  import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
21  import io.github.tonywasher.joceanus.oceanus.resource.OceanusBundleId;
22  
23  /**
24   * Enumeration of TransactionCategory Classes.
25   */
26  public enum MoneyWiseTransCategoryClass
27          implements MoneyWiseCategoryInterface {
28      /**
29       * Taxed Salary Income.
30       */
31      TAXEDINCOME(1, 4),
32  
33      /**
34       * Rental Income.
35       */
36      RENTALINCOME(2, 5),
37  
38      /**
39       * RoomRental Income.
40       */
41      ROOMRENTALINCOME(3, 6),
42  
43      /**
44       * Interest Income.
45       */
46      INTEREST(4, 7),
47  
48      /**
49       * Dividend Income.
50       */
51      DIVIDEND(5, 8),
52  
53      /**
54       * Virtual Income.
55       */
56      VIRTUALINCOME(6, 9),
57  
58      /**
59       * GrossIncome.
60       */
61      GROSSINCOME(7, 10),
62  
63      /**
64       * PensionContribution.
65       */
66      PENSIONCONTRIB(8, 11),
67  
68      /**
69       * Gifted Income.
70       */
71      GIFTEDINCOME(9, 12),
72  
73      /**
74       * Inheritance.
75       */
76      INHERITED(10, 13),
77  
78      /**
79       * Interest earned on Loans.
80       */
81      LOANINTERESTEARNED(11, 14),
82  
83      /**
84       * Loyalty Bonus.
85       */
86      LOYALTYBONUS(12, 15),
87  
88      /**
89       * CashBack.
90       */
91      CASHBACK(13, 16),
92  
93      /**
94       * Recovered Expenses.
95       */
96      RECOVEREDEXPENSES(14, 17),
97  
98      /**
99       * Other Income.
100      */
101     OTHERINCOME(15, 18),
102 
103     /**
104      * Stock Options Exercised.
105      */
106     OPTIONSEXERCISE(16, 19),
107 
108     /**
109      * Stock Units Adjustment.
110      */
111     UNITSADJUST(17, 20),
112 
113     /**
114      * Stock Split.
115      */
116     STOCKSPLIT(18, 21),
117 
118     /**
119      * Stock DeMerger.
120      */
121     STOCKDEMERGER(19, 22),
122 
123     /**
124      * Security Replacement.
125      */
126     SECURITYREPLACE(20, 23),
127 
128     /**
129      * Security Closure.
130      */
131     SECURITYCLOSURE(21, 24),
132 
133     /**
134      * Stock TakeOver.
135      */
136     STOCKTAKEOVER(22, 25),
137 
138     /**
139      * Stock Rights Issue.
140      */
141     STOCKRIGHTSISSUE(23, 26),
142 
143     /**
144      * PortfolioXfer.
145      */
146     PORTFOLIOXFER(24, 27),
147 
148     /**
149      * Stock Options Granted.
150      */
151     OPTIONSGRANT(25, 28),
152 
153     /**
154      * Stock Options Vested.
155      */
156     OPTIONSVEST(26, 29),
157 
158     /**
159      * Stock Options Expired.
160      */
161     OPTIONSEXPIRE(27, 30),
162 
163     /**
164      * Pension Drawdown.
165      */
166     PENSIONDRAWDOWN(28, 31),
167 
168     /**
169      * Pension TaxFree.
170      */
171     PENSIONTAXFREE(29, 32),
172 
173     /**
174      * Transfer.
175      */
176     TRANSFER(30, 33),
177 
178     /**
179      * Expense.
180      */
181     EXPENSE(31, 34),
182 
183     /**
184      * BadDebtCapital.
185      */
186     BADDEBTCAPITAL(32, 35),
187 
188     /**
189      * BadDebtInterest.
190      */
191     BADDEBTINTEREST(33, 36),
192 
193     /**
194      * LocalTaxes.
195      */
196     LOCALTAXES(34, 37),
197 
198     /**
199      * Write Off.
200      */
201     WRITEOFF(35, 38),
202 
203     /**
204      * Interest charged on Loans.
205      */
206     LOANINTERESTCHARGED(36, 39),
207 
208     /**
209      * Rental Expense.
210      */
211     RENTALEXPENSE(37, 40),
212 
213     /**
214      * AnnuityPurchase.
215      */
216     ANNUITYPURCHASE(38, 41),
217 
218     /**
219      * Tax Relief.
220      */
221     TAXRELIEF(39, 42),
222 
223     /**
224      * IncomeTax.
225      */
226     INCOMETAX(40, 43),
227 
228     /**
229      * Taxed Interest.
230      */
231     TAXEDINTEREST(41, 44),
232 
233     /**
234      * Gross Interest.
235      */
236     GROSSINTEREST(42, 45),
237 
238     /**
239      * Tax Free Interest.
240      */
241     TAXFREEINTEREST(43, 46),
242 
243     /**
244      * Peer2Peer Interest.
245      */
246     PEER2PEERINTEREST(44, 47),
247 
248     /**
249      * Share Dividend Income.
250      */
251     SHAREDIVIDEND(45, 48),
252 
253     /**
254      * Unit Trust Dividend Income.
255      */
256     UNITTRUSTDIVIDEND(46, 49),
257 
258     /**
259      * Foreign Dividend.
260      */
261     FOREIGNDIVIDEND(47, 50),
262 
263     /**
264      * Tax Free Dividend.
265      */
266     TAXFREEDIVIDEND(48, 51),
267 
268     /**
269      * Taxed Loyalty Bonus.
270      */
271     TAXEDLOYALTYBONUS(49, 52),
272 
273     /**
274      * Gross LoyaltyBonus.
275      */
276     GROSSLOYALTYBONUS(50, 53),
277 
278     /**
279      * Tax Free LoyaltyBonus.
280      */
281     TAXFREELOYALTYBONUS(51, 54),
282 
283     /**
284      * Chargeable Gain.
285      */
286     CHARGEABLEGAIN(52, 55),
287 
288     /**
289      * Residential Gain.
290      */
291     RESIDENTIALGAIN(53, 56),
292 
293     /**
294      * Capital Gain.
295      */
296     CAPITALGAIN(54, 57),
297 
298     /**
299      * TaxFreeCapital Gain.
300      */
301     TAXFREEGAIN(55, 58),
302 
303     /**
304      * Market Growth.
305      */
306     MARKETGROWTH(56, 59),
307 
308     /**
309      * CurrencyFluctuation.
310      */
311     CURRENCYFLUCTUATION(57, 60),
312 
313     /**
314      * Withheld.
315      * <p>
316      * This is a singular category catching withheld items such as charity donations associated with
317      * interest.
318      */
319     WITHHELD(58, 61),
320 
321     /**
322      * OpeningBalance.
323      * <p>
324      * This is a singular category catching opening balances.
325      */
326     OPENINGBALANCE(59, 62),
327 
328     /**
329      * EmployeeNatInsurance.
330      * <p>
331      * This is a singular category catching opening balances.
332      */
333     EMPLOYEENATINS(60, 63),
334 
335     /**
336      * EmployeeNatInsurance.
337      * <p>
338      * This is a singular category catching opening balances.
339      */
340     EMPLOYERNATINS(61, 64),
341 
342     /**
343      * Income Totals.
344      * <p>
345      * This is used for categories which simply own a set of income sub-categories and is used
346      * purely for reporting purposes.
347      */
348     INCOMETOTALS(62, 1),
349 
350     /**
351      * Expense Totals.
352      * <p>
353      * This is used for categories which simply own a set of expense sub-categories and is used
354      * purely for reporting purposes.
355      */
356     EXPENSETOTALS(63, 2),
357 
358     /**
359      * Security Parent.
360      * <p>
361      * This is used for categories which simply own a set of security transfer sub-categories and is
362      * used purely for holding purposes.
363      */
364     SECURITYPARENT(64, 3),
365 
366     /**
367      * Totals.
368      * <p>
369      * This is used for the total of all non-transfer categories and is used purely for reporting
370      * purposes.
371      */
372     TOTALS(65, 0);
373 
374     /**
375      * The String name.
376      */
377     private String theName;
378 
379     /**
380      * Class Id.
381      */
382     private final int theId;
383 
384     /**
385      * Class Order.
386      */
387     private final int theOrder;
388 
389     /**
390      * Constructor.
391      *
392      * @param uId    the id
393      * @param uOrder the default order.
394      */
395     MoneyWiseTransCategoryClass(final int uId,
396                                 final int uOrder) {
397         theId = uId;
398         theOrder = uOrder;
399     }
400 
401     @Override
402     public int getClassId() {
403         return theId;
404     }
405 
406     @Override
407     public int getOrder() {
408         return theOrder;
409     }
410 
411     @Override
412     public String toString() {
413         /* If we have not yet loaded the name */
414         if (theName == null) {
415             /* Load the name */
416             theName = bundleIdForCategoryClass(this).getValue();
417         }
418 
419         /* return the name */
420         return theName;
421     }
422 
423     /**
424      * get value from id.
425      *
426      * @param id the id value
427      * @return the corresponding enum object
428      * @throws OceanusException on error
429      */
430     public static MoneyWiseTransCategoryClass fromId(final int id) throws OceanusException {
431         for (MoneyWiseTransCategoryClass myClass : values()) {
432             if (myClass.getClassId() == id) {
433                 return myClass;
434             }
435         }
436         throw new MoneyWiseDataException("Invalid ClassId for " + MoneyWiseStaticDataType.TRANSTYPE.toString() + ":" + id);
437     }
438 
439     /**
440      * Determine whether the CategoryType is hidden type.
441      *
442      * @return <code>true</code> if the category is hidden, <code>false</code> otherwise.
443      */
444     public boolean isHiddenType() {
445         return switch (this) {
446             case SHAREDIVIDEND, UNITTRUSTDIVIDEND, FOREIGNDIVIDEND, TAXFREEDIVIDEND, TAXEDINTEREST, GROSSINTEREST,
447                  TAXFREEINTEREST, PEER2PEERINTEREST, TAXEDLOYALTYBONUS, GROSSLOYALTYBONUS, TAXFREELOYALTYBONUS,
448                  MARKETGROWTH, CURRENCYFLUCTUATION, WITHHELD, TAXRELIEF, CHARGEABLEGAIN, RESIDENTIALGAIN, CAPITALGAIN,
449                  TAXFREEGAIN, VIRTUALINCOME, EMPLOYEENATINS, EMPLOYERNATINS, OPENINGBALANCE, TOTALS -> true;
450             default -> false;
451         };
452     }
453 
454     /**
455      * Determine whether the Account is a secret payee.
456      *
457      * @return <code>true</code> if the category uses parent payee, <code>false</code> otherwise.
458      */
459     public boolean isSecretPayee() {
460         return switch (this) {
461             case INTEREST, DIVIDEND, CASHBACK, LOYALTYBONUS, LOANINTERESTEARNED, RENTALINCOME, ROOMRENTALINCOME,
462                  WRITEOFF, LOANINTERESTCHARGED, OPTIONSEXERCISE -> true;
463             default -> false;
464         };
465     }
466 
467     /**
468      * Determine whether the Account is a secret payee.
469      *
470      * @return <code>true</code> if the category uses parent payee, <code>false</code> otherwise.
471      */
472     public boolean isSwitchDirection() {
473         return switch (this) {
474             case INTEREST, DIVIDEND, CASHBACK, LOYALTYBONUS, RENTALINCOME, ROOMRENTALINCOME, WRITEOFF,
475                  LOANINTERESTCHARGED, TRANSFER -> true;
476             default -> false;
477         };
478     }
479 
480     /**
481      * Determine whether the category type is singular.
482      *
483      * @return <code>true</code> if the event category type is singular, <code>false</code>
484      * otherwise.
485      */
486     public boolean isSingular() {
487         return INCOMETAX.equals(this) || isHiddenType();
488     }
489 
490     /**
491      * Determine whether the CategoryType is an income.
492      *
493      * @return <code>true</code> if the category is income, <code>false</code> otherwise.
494      */
495     public boolean isIncome() {
496         return switch (this) {
497             case TAXEDINCOME, VIRTUALINCOME, GROSSINCOME, PENSIONCONTRIB, LOYALTYBONUS, CASHBACK, OTHERINCOME,
498                  RECOVEREDEXPENSES, GIFTEDINCOME, INTEREST, TAXEDINTEREST, GROSSINTEREST, TAXFREEINTEREST,
499                  PEER2PEERINTEREST, DIVIDEND, SHAREDIVIDEND, UNITTRUSTDIVIDEND, FOREIGNDIVIDEND, TAXFREEDIVIDEND,
500                  TAXEDLOYALTYBONUS, GROSSLOYALTYBONUS, TAXFREELOYALTYBONUS, INHERITED, LOANINTERESTEARNED, RENTALINCOME,
501                  ROOMRENTALINCOME, OPTIONSEXERCISE, EMPLOYEENATINS, EMPLOYERNATINS, OPENINGBALANCE, INCOMETOTALS ->
502                     true;
503             default -> false;
504         };
505     }
506 
507     /**
508      * Determine whether the CategoryType is an expense.
509      *
510      * @return <code>true</code> if the category is expense, <code>false</code> otherwise.
511      */
512     public boolean isExpense() {
513         return !isIncome() && !isTransfer();
514     }
515 
516     /**
517      * Determine whether the CategoryType is dilutable.
518      *
519      * @return <code>true</code> if the category is dilutable, <code>false</code> otherwise.
520      */
521     public boolean isDilutable() {
522         return switch (this) {
523             case STOCKSPLIT, STOCKDEMERGER -> true;
524             default -> false;
525         };
526     }
527 
528     /**
529      * Determine whether the CategoryType is dividend.
530      *
531      * @return <code>true</code> if the category is dividend, <code>false</code> otherwise.
532      */
533     public boolean isDividend() {
534         return switch (this) {
535             case DIVIDEND, SHAREDIVIDEND, UNITTRUSTDIVIDEND, FOREIGNDIVIDEND, TAXFREEDIVIDEND -> true;
536             default -> false;
537         };
538     }
539 
540     /**
541      * Determine whether the CategoryType is interest.
542      *
543      * @return <code>true</code> if the category is interest, <code>false</code> otherwise.
544      */
545     public boolean isInterest() {
546         return switch (this) {
547             case INTEREST, TAXEDINTEREST, GROSSINTEREST, TAXFREEINTEREST, PEER2PEERINTEREST -> true;
548             default -> false;
549         };
550     }
551 
552     /**
553      * Determine whether the CategoryType needs debit and credit both to have units.
554      *
555      * @return <code>true</code> if the category needs dual units, <code>false</code> otherwise.
556      */
557     public boolean isStockAdjustment() {
558         return switch (this) {
559             case STOCKSPLIT, UNITSADJUST, STOCKDEMERGER, SECURITYREPLACE, STOCKTAKEOVER, PORTFOLIOXFER, OPTIONSGRANT,
560                  OPTIONSVEST, OPTIONSEXPIRE -> true;
561             default -> false;
562         };
563     }
564 
565     /**
566      * Determine whether the CategoryType has null Amount.
567      *
568      * @return <code>true</code> if the category needs null amount, <code>false</code> otherwise.
569      */
570     public boolean needsNullAmount() {
571         return switch (this) {
572             case STOCKSPLIT, UNITSADJUST, STOCKDEMERGER, STOCKTAKEOVER, PORTFOLIOXFER, OPTIONSGRANT, OPTIONSVEST,
573                  OPTIONSEXPIRE, SECURITYREPLACE -> true;
574             default -> false;
575         };
576     }
577 
578     /**
579      * Determine whether the EventCategoryType can be parent categories.
580      *
581      * @return <code>true</code> if the event category type can parent categories,
582      * <code>false</code> otherwise.
583      */
584     public boolean canParentCategory() {
585         return switch (this) {
586             case INCOMETOTALS, EXPENSETOTALS, SECURITYPARENT, TOTALS -> true;
587             default -> false;
588         };
589     }
590 
591     /**
592      * Determine whether the EventCategoryType is a subTotal.
593      *
594      * @return <code>true</code> if the event category type is a subTotal, <code>false</code>
595      * otherwise.
596      */
597     public boolean isSubTotal() {
598         return switch (this) {
599             case INCOMETOTALS, EXPENSETOTALS, SECURITYPARENT -> true;
600             default -> false;
601         };
602     }
603 
604     /**
605      * Is this event category a transfer?
606      *
607      * @return true/false
608      */
609     public boolean isTransfer() {
610         return this == TRANSFER || isSecurityTransfer();
611     }
612 
613     /**
614      * Is this event category a NatInsurance event?
615      *
616      * @return true/false
617      */
618     public boolean isNatInsurance() {
619         return switch (this) {
620             case TAXEDINCOME, PENSIONCONTRIB -> true;
621             default -> false;
622         };
623     }
624 
625     /**
626      * Is this event category a security transfer?
627      *
628      * @return true/false
629      */
630     public boolean isSecurityTransfer() {
631         return switch (this) {
632             case UNITSADJUST, STOCKSPLIT, STOCKDEMERGER, SECURITYREPLACE, STOCKTAKEOVER, STOCKRIGHTSISSUE,
633                  PORTFOLIOXFER, OPTIONSGRANT, OPTIONSVEST, OPTIONSEXPIRE, SECURITYCLOSURE, SECURITYPARENT,
634                  PENSIONDRAWDOWN, PENSIONTAXFREE -> true;
635             default -> false;
636         };
637     }
638 
639     /**
640      * Is this event category a security closure?
641      *
642      * @return true/false
643      */
644     public boolean isSecurityClosure() {
645         return this == SECURITYCLOSURE;
646     }
647 
648     @Override
649     public boolean isTotals() {
650         return this == TOTALS;
651     }
652 
653     /**
654      * Obtain the resource bundleId for the category class.
655      *
656      * @param pClass the category class
657      * @return the resource bundleId
658      */
659     private static OceanusBundleId bundleIdForCategoryClass(final MoneyWiseTransCategoryClass pClass) {
660         /* Create the map and return it */
661         return switch (pClass) {
662             case TAXEDINCOME -> MoneyWiseStaticResource.TRANSTYPE_TAXEDINCOME;
663             case RENTALINCOME -> MoneyWiseStaticResource.TRANSTYPE_RENTALINCOME;
664             case ROOMRENTALINCOME -> MoneyWiseStaticResource.TRANSTYPE_ROOMRENTINCOME;
665             case INTEREST -> MoneyWiseStaticResource.TRANSTYPE_INTEREST;
666             case DIVIDEND -> MoneyWiseStaticResource.TRANSTYPE_DIVIDEND;
667             case VIRTUALINCOME -> MoneyWiseStaticResource.TRANSTYPE_VIRTUALINCOME;
668             case GROSSINCOME -> MoneyWiseStaticResource.TRANSTYPE_GROSSINCOME;
669             case PENSIONCONTRIB -> MoneyWiseStaticResource.TRANSTYPE_PENSIONCONTRIB;
670             case GIFTEDINCOME -> MoneyWiseStaticResource.TRANSTYPE_GIFTEDINCOME;
671             case INHERITED -> MoneyWiseStaticResource.TRANSTYPE_INHERITED;
672             case LOANINTERESTEARNED -> MoneyWiseStaticResource.TRANSTYPE_LOANINTEARNED;
673             case CASHBACK -> MoneyWiseStaticResource.TRANSTYPE_CASHBACK;
674             case LOYALTYBONUS -> MoneyWiseStaticResource.TRANSTYPE_LOYALTYBONUS;
675             case RECOVEREDEXPENSES -> MoneyWiseStaticResource.TRANSTYPE_RECOVEREDEXPENSES;
676             case OTHERINCOME -> MoneyWiseStaticResource.TRANSTYPE_OTHERINCOME;
677             case TRANSFER -> MoneyWiseStaticResource.TRANSTYPE_TRANSFER;
678             case UNITSADJUST -> MoneyWiseStaticResource.TRANSTYPE_UNITSADJUST;
679             case STOCKSPLIT -> MoneyWiseStaticResource.TRANSTYPE_STOCKSPLIT;
680             case STOCKDEMERGER -> MoneyWiseStaticResource.TRANSTYPE_STOCKDEMERGER;
681             case STOCKTAKEOVER -> MoneyWiseStaticResource.TRANSTYPE_STOCKTAKEOVER;
682             case SECURITYREPLACE -> MoneyWiseStaticResource.TRANSTYPE_SECURITYREPLACE;
683             case SECURITYCLOSURE -> MoneyWiseStaticResource.TRANSTYPE_SECURITYCLOSURE;
684             case STOCKRIGHTSISSUE -> MoneyWiseStaticResource.TRANSTYPE_STOCKRIGHTSISSUE;
685             case PORTFOLIOXFER -> MoneyWiseStaticResource.TRANSTYPE_PORTFOLIOXFER;
686             case OPTIONSGRANT -> MoneyWiseStaticResource.TRANSTYPE_OPTIONSGRANT;
687             case OPTIONSVEST -> MoneyWiseStaticResource.TRANSTYPE_OPTIONSVEST;
688             case OPTIONSEXPIRE -> MoneyWiseStaticResource.TRANSTYPE_OPTIONSEXPIRE;
689             case OPTIONSEXERCISE -> MoneyWiseStaticResource.TRANSTYPE_OPTIONSEXERCISE;
690             case PENSIONDRAWDOWN -> MoneyWiseStaticResource.TRANSTYPE_PENSIONDRAWDOWN;
691             case PENSIONTAXFREE -> MoneyWiseStaticResource.TRANSTYPE_PENSIONTAXFREE;
692             case EXPENSE -> MoneyWiseStaticResource.TRANSTYPE_EXPENSE;
693             case BADDEBTCAPITAL -> MoneyWiseStaticResource.TRANSTYPE_BADDEBTCAPITAL;
694             case BADDEBTINTEREST -> MoneyWiseStaticResource.TRANSTYPE_BADDEBTINTEREST;
695             case LOCALTAXES -> MoneyWiseStaticResource.TRANSTYPE_LOCALTAXES;
696             case WRITEOFF -> MoneyWiseStaticResource.TRANSTYPE_WRITEOFF;
697             case RENTALEXPENSE -> MoneyWiseStaticResource.TRANSTYPE_RENTALEXPENSE;
698             case ANNUITYPURCHASE -> MoneyWiseStaticResource.TRANSTYPE_ANNUITYPURCHASE;
699             case LOANINTERESTCHARGED -> MoneyWiseStaticResource.TRANSTYPE_LOANINTCHARGE;
700             case TAXRELIEF -> MoneyWiseStaticResource.TRANSTYPE_TAXRELIEF;
701             case INCOMETAX -> MoneyWiseStaticResource.TRANSTYPE_INCOMETAX;
702             case TAXEDINTEREST -> MoneyWiseStaticResource.TRANSTYPE_TAXEDINTEREST;
703             case TAXFREEINTEREST -> MoneyWiseStaticResource.TRANSTYPE_TAXFREEINTEREST;
704             case PEER2PEERINTEREST -> MoneyWiseStaticResource.TRANSTYPE_PEER2PEERINTEREST;
705             case GROSSINTEREST -> MoneyWiseStaticResource.TRANSTYPE_GROSSINTEREST;
706             case SHAREDIVIDEND -> MoneyWiseStaticResource.TRANSTYPE_SHAREDIVIDEND;
707             case UNITTRUSTDIVIDEND -> MoneyWiseStaticResource.TRANSTYPE_UTDIVIDEND;
708             case FOREIGNDIVIDEND -> MoneyWiseStaticResource.TRANSTYPE_FOREIGNDIVIDEND;
709             case TAXFREEDIVIDEND -> MoneyWiseStaticResource.TRANSTYPE_TAXFREEDIVIDEND;
710             case TAXEDLOYALTYBONUS -> MoneyWiseStaticResource.TRANSTYPE_TAXEDLOYALTYBONUS;
711             case GROSSLOYALTYBONUS -> MoneyWiseStaticResource.TRANSTYPE_GROSSLOYALTYBONUS;
712             case TAXFREELOYALTYBONUS -> MoneyWiseStaticResource.TRANSTYPE_TAXFREELOYALTYBONUS;
713             case CHARGEABLEGAIN -> MoneyWiseStaticResource.TRANSTYPE_CHARGEABLEGAIN;
714             case TAXFREEGAIN -> MoneyWiseStaticResource.TRANSTYPE_TAXFREEGAIN;
715             case RESIDENTIALGAIN -> MoneyWiseStaticResource.TRANSTYPE_RESIDENTIALGAIN;
716             case CAPITALGAIN -> MoneyWiseStaticResource.TRANSTYPE_CAPITALGAIN;
717             case MARKETGROWTH -> MoneyWiseStaticResource.TRANSTYPE_MARKETGROWTH;
718             case CURRENCYFLUCTUATION -> MoneyWiseStaticResource.TRANSTYPE_CURRFLUCT;
719             case WITHHELD -> MoneyWiseStaticResource.TRANSTYPE_WITHHELD;
720             case EMPLOYERNATINS -> MoneyWiseStaticResource.TRANSTYPE_EMPLOYERNATINS;
721             case EMPLOYEENATINS -> MoneyWiseStaticResource.TRANSTYPE_EMPLOYEENATINS;
722             case OPENINGBALANCE -> MoneyWiseStaticResource.TRANSTYPE_OPENINGBALANCE;
723             case INCOMETOTALS -> MoneyWiseStaticResource.TRANSTYPE_INCOMETOTALS;
724             case EXPENSETOTALS -> MoneyWiseStaticResource.TRANSTYPE_EXPENSETOTALS;
725             case SECURITYPARENT -> MoneyWiseStaticResource.TRANSTYPE_SECURITYPARENT;
726             case TOTALS -> MoneyWiseStaticResource.TRANSTYPE_TOTALS;
727             default -> throw new IllegalArgumentException();
728         };
729     }
730 }