diff --git a/src/components/Employee/PaymentMethod/BankAccountsList.tsx b/src/components/Employee/PaymentMethod/BankAccountsList.tsx index c32702f82..965d8da6d 100644 --- a/src/components/Employee/PaymentMethod/BankAccountsList.tsx +++ b/src/components/Employee/PaymentMethod/BankAccountsList.tsx @@ -4,6 +4,8 @@ import TrashCanSvg from '@/assets/icons/trashcan.svg?react' import { DataView, useDataView } from '@/components/Common' import useNumberFormatter from '@/hooks/useNumberFormatter' import { HamburgerMenu } from '@/components/Common/HamburgerMenu' +import { SPLIT_BY } from '@/shared/constants' +import { centsToDollars } from '@/helpers/currencyHelpers' export function BankAccountsList() { const { bankAccounts, paymentMethod, mode, handleDelete, isPending } = usePaymentMethod() @@ -20,9 +22,13 @@ export function BankAccountsList() { key: 'splitAmount', title: t('allocationColumn'), render: bankAccount => { - return format( - paymentMethod.splits?.find(split => split.uuid === bankAccount.uuid)?.splitAmount ?? 0, - ) + const splitAmount = + paymentMethod.splits?.find(split => split.uuid === bankAccount.uuid)?.splitAmount ?? 0 + const displayValue = + paymentMethod.splitBy === SPLIT_BY.amount + ? (centsToDollars(splitAmount) ?? 0) + : splitAmount + return format(displayValue) }, }, ], diff --git a/src/components/Employee/PaymentMethod/PaymentMethod.tsx b/src/components/Employee/PaymentMethod/PaymentMethod.tsx index 2468c3c8f..7d271217e 100644 --- a/src/components/Employee/PaymentMethod/PaymentMethod.tsx +++ b/src/components/Employee/PaymentMethod/PaymentMethod.tsx @@ -34,6 +34,7 @@ import { useI18n } from '@/i18n' import { componentEvents, PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants' import { useFlow } from '@/components/Flow/useFlow' import { useComponentDictionary } from '@/i18n/I18n' +import { centsToDollars, dollarsToCents } from '@/helpers/currencyHelpers' interface PaymentMethodProps extends CommonComponentInterface<'Employee.PaymentMethod'> { employeeId: string @@ -89,13 +90,17 @@ const Root = ({ employeeId, className, dictionary, isAdmin = false }: PaymentMet }, []) const defaultValues: CombinedSchemaOutputs = useMemo(() => { + const isAmountSplit = paymentMethod.splitBy === SPLIT_BY.amount return { ...baseDefaultValues, type: paymentMethod.type ?? 'Direct Deposit', splitBy: paymentMethod.splitBy ?? undefined, ...paymentMethod.splits?.reduce( (acc, { uuid, splitAmount, priority }) => ({ - splitAmount: { ...acc.splitAmount, [uuid]: splitAmount ?? null }, + splitAmount: { + ...acc.splitAmount, + [uuid]: isAmountSplit ? centsToDollars(splitAmount ?? null) : (splitAmount ?? null), + }, priority: { ...acc.priority, [uuid]: Number(priority) }, }), { splitAmount: {}, priority: {} }, @@ -181,11 +186,17 @@ const Root = ({ employeeId, className, dictionary, isAdmin = false }: PaymentMet : (paymentMethod.splitBy ?? SPLIT_BY.percentage), splits: payload.isSplit && paymentMethod.splits - ? paymentMethod.splits.map(split => ({ - ...split, - splitAmount: payload.splitAmount[split.uuid], - priority: payload.priority[split.uuid], - })) + ? paymentMethod.splits.map(split => { + const splitAmountValue = payload.splitAmount[split.uuid] ?? null + const isAmountSplit = payload.splitBy === SPLIT_BY.amount + return { + ...split, + splitAmount: isAmountSplit + ? dollarsToCents(splitAmountValue) + : splitAmountValue, + priority: payload.priority[split.uuid], + } + }) : (paymentMethod.splits ?? []), } const paymentMethodResponse = await paymentMethodMutation.mutateAsync({ diff --git a/src/helpers/currencyHelpers.ts b/src/helpers/currencyHelpers.ts new file mode 100644 index 000000000..9577c1f9d --- /dev/null +++ b/src/helpers/currencyHelpers.ts @@ -0,0 +1,9 @@ +export const dollarsToCents = (dollars: number | null): number | null => { + if (dollars === null) return null + return Math.round(dollars * 100) +} + +export const centsToDollars = (cents: number | null): number | null => { + if (cents === null) return null + return cents / 100 +}