@@ -6,13 +6,14 @@ import RadioListItem from '@components/SelectionList/RadioListItem';
6
6
import Text from '@components/Text' ;
7
7
import useLocalize from '@hooks/useLocalize' ;
8
8
import useThemeStyles from '@hooks/useThemeStyles' ;
9
- import * as IOU from '@libs/actions/IOU' ;
10
- import * as CurrencyUtils from '@libs/CurrencyUtils' ;
9
+ import { getIOURequestPolicyID , setMoneyRequestDistanceRate , setMoneyRequestTaxAmount , setMoneyRequestTaxRate , updateMoneyRequestDistanceRate } from '@libs/actions/IOU' ;
10
+ import { convertToBackendAmount } from '@libs/CurrencyUtils' ;
11
11
import DistanceRequestUtils from '@libs/DistanceRequestUtils' ;
12
+ import { shouldUseTransactionDraft } from '@libs/IOUUtils' ;
12
13
import Navigation from '@libs/Navigation/Navigation' ;
13
14
import { getDistanceRateCustomUnitRate , isTaxTrackingEnabled } from '@libs/PolicyUtils' ;
14
- import * as ReportUtils from '@libs/ReportUtils' ;
15
- import * as TransactionUtils from '@libs/TransactionUtils' ;
15
+ import { isReportInGroupPolicy } from '@libs/ReportUtils' ;
16
+ import { calculateTaxAmount , getCurrency , getDistanceInMeters , getRateID , getTaxValue , isDistanceRequest as isDistanceRequestTransactionUtils } from '@libs/TransactionUtils' ;
16
17
import CONST from '@src/CONST' ;
17
18
import ONYXKEYS from '@src/ONYXKEYS' ;
18
19
import type SCREENS from '@src/SCREENS' ;
@@ -35,25 +36,24 @@ function IOURequestStepDistanceRate({
35
36
} ,
36
37
transaction,
37
38
} : IOURequestStepDistanceRateProps ) {
38
- const [ policyDraft ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_DRAFTS } ${ IOU . getIOURequestPolicyID ( transaction , reportDraft ) ?? '-1' } ` ) ;
39
+ const [ policyDraft ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_DRAFTS } ${ getIOURequestPolicyID ( transaction , reportDraft ) } ` ) ;
39
40
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
40
- const [ policyReal ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY } ${ report ?. policyID || '-1' } ` ) ;
41
- const [ policyCategories ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ report ?. policyID || '-1' } ` ) ;
42
- const [ policyTags ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_TAGS } ${ report ?. policyID || '-1' } ` ) ;
41
+ const [ policyReal ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY } ${ report ?. policyID } ` ) ;
42
+ const [ policyCategories ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ report ?. policyID } ` ) ;
43
+ const [ policyTags ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_TAGS } ${ report ?. policyID } ` ) ;
43
44
/* eslint-enable @typescript-eslint/prefer-nullish-coalescing */
44
45
45
- const policy = policyReal ?? policyDraft ;
46
+ const policy : OnyxEntry < OnyxTypes . Policy > = policyReal ?? policyDraft ;
46
47
47
48
const styles = useThemeStyles ( ) ;
48
49
const { translate, toLocaleDigit} = useLocalize ( ) ;
49
- const isDistanceRequest = TransactionUtils . isDistanceRequest ( transaction ) ;
50
- const isPolicyExpenseChat = ReportUtils . isReportInGroupPolicy ( report ) ;
50
+ const isDistanceRequest = isDistanceRequestTransactionUtils ( transaction ) ;
51
+ const isPolicyExpenseChat = isReportInGroupPolicy ( report ) ;
51
52
const shouldShowTax = isTaxTrackingEnabled ( isPolicyExpenseChat , policy , isDistanceRequest ) ;
52
53
const isEditing = action === CONST . IOU . ACTION . EDIT ;
53
54
54
- const currentRateID = TransactionUtils . getRateID ( transaction ) ?? '-1' ;
55
-
56
- const transactionCurrency = TransactionUtils . getCurrency ( transaction ) ;
55
+ const currentRateID = getRateID ( transaction ) ;
56
+ const transactionCurrency = getCurrency ( transaction ) ;
57
57
58
58
const rates = DistanceRequestUtils . getMileageRates ( policy , false , currentRateID ) ;
59
59
@@ -84,20 +84,20 @@ function IOURequestStepDistanceRate({
84
84
let taxRateExternalID ;
85
85
if ( shouldShowTax ) {
86
86
const policyCustomUnitRate = getDistanceRateCustomUnitRate ( policy , customUnitRateID ) ;
87
- taxRateExternalID = policyCustomUnitRate ?. attributes ?. taxRateExternalID ?? '-1' ;
87
+ taxRateExternalID = policyCustomUnitRate ?. attributes ?. taxRateExternalID ;
88
88
const unit = DistanceRequestUtils . getDistanceUnit ( transaction , rates [ customUnitRateID ] ) ;
89
- const taxableAmount = DistanceRequestUtils . getTaxableAmount ( policy , customUnitRateID , TransactionUtils . getDistanceInMeters ( transaction , unit ) ) ;
90
- const taxPercentage = TransactionUtils . getTaxValue ( policy , transaction , taxRateExternalID ) ?? '' ;
91
- taxAmount = CurrencyUtils . convertToBackendAmount ( TransactionUtils . calculateTaxAmount ( taxPercentage , taxableAmount , rates [ customUnitRateID ] . currency ?? CONST . CURRENCY . USD ) ) ;
92
- IOU . setMoneyRequestTaxAmount ( transactionID , taxAmount ) ;
93
- IOU . setMoneyRequestTaxRate ( transactionID , taxRateExternalID ) ;
89
+ const taxableAmount = DistanceRequestUtils . getTaxableAmount ( policy , customUnitRateID , getDistanceInMeters ( transaction , unit ) ) ;
90
+ const taxPercentage = taxRateExternalID ? getTaxValue ( policy , transaction , taxRateExternalID ) : undefined ;
91
+ taxAmount = convertToBackendAmount ( calculateTaxAmount ( taxPercentage , taxableAmount , rates [ customUnitRateID ] . currency ?? CONST . CURRENCY . USD ) ) ;
92
+ setMoneyRequestTaxAmount ( transactionID , taxAmount ) ;
93
+ setMoneyRequestTaxRate ( transactionID , taxRateExternalID ?? null ) ;
94
94
}
95
95
96
96
if ( currentRateID !== customUnitRateID ) {
97
- IOU . setMoneyRequestDistanceRate ( transactionID , customUnitRateID , policy ?. id ?? '-1' , ! isEditing ) ;
97
+ setMoneyRequestDistanceRate ( transactionID , customUnitRateID , policy , shouldUseTransactionDraft ( action ) ) ;
98
98
99
- if ( isEditing ) {
100
- IOU . updateMoneyRequestDistanceRate ( transaction ? .transactionID ?? '-1' , reportID , customUnitRateID , policy , policyTags , policyCategories , taxAmount , taxRateExternalID ) ;
99
+ if ( isEditing && transaction ?. transactionID ) {
100
+ updateMoneyRequestDistanceRate ( transaction . transactionID , reportID , customUnitRateID , policy , policyTags , policyCategories , taxAmount , taxRateExternalID ) ;
101
101
}
102
102
}
103
103
0 commit comments