Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 31x | import moment from "moment";
import {
convertPhoneNumber,
toISODateString,
} from "@utils/date.helpers";
import { serializeAddressWithBothFields } from "@utils/address";
import { TFormInputs } from "../types";
export const payloadBuilder = (
data: TFormInputs,
dirtyFields: Partial<Readonly<any>>,
defaultValues: any,
isMerchantOnboardingModalEnabled?: boolean,
onlyDirty?: boolean,
) => {
const residence = data.countryOfResidence || "US";
const citizenship = data.citizenship || "US";
const d1 = moment(data.dob);
const d2 = moment(defaultValues.dob!);
const isDateChanged = !(
d1.isSame(d2, "day") &&
d1.isSame(d2, "year") &&
d1.isSame(d2, "month")
);
const newIsUSCitizen = data.citizenship === "US";
//when editing the BO from sidepanel, we should only include fields that have been changed
const isEdit = onlyDirty && !!data.id;
const newPassRecidencyCondition = isMerchantOnboardingModalEnabled
? !isEdit || dirtyFields.countryOfResidence || dirtyFields.citizenship
: dirtyFields.countryOfResidence ||
dirtyFields.isNotResidentInCitizenshipCountry ||
dirtyFields.isUSResident;
const appendCitizenshipCondition = isMerchantOnboardingModalEnabled
? citizenship === "US"
: (residence === "US" && citizenship === "US") || data.isUSCitizen;
const defaultPayload = {
id: data.id,
...((!isEdit ||
dirtyFields.countryOfResidence ||
dirtyFields.citizenship) && {
citizenship: appendCitizenshipCondition ? "US" : citizenship,
}),
...((dirtyFields.firstName || (!isEdit && data.firstName)) && {
firstName: data.firstName,
}),
...((dirtyFields.lastName || (!isEdit && data.lastName)) && {
lastName: data.lastName,
}),
...((dirtyFields.email || (!isEdit && data.email)) && {
email: data.email || null,
}),
...(dirtyFields.phone ||
(!isEdit &&
data.phone && {
phoneNumber: data.phone ? convertPhoneNumber(data.phone) : null,
})),
...(isDateChanged && {
dateOfBirth: toISODateString(data.dob as Date | string | null),
}),
...(newPassRecidencyCondition && {
countryOfResidence: isMerchantOnboardingModalEnabled
? data.countryOfResidence
: data.isUSResident
? ""
: residence,
}),
...(!data.useBusinessAddress &&
data.address &&
(dirtyFields.address || !isEdit) && {
address: {
...serializeAddressWithBothFields(data.address),
country: residence === "US" ? "US" : residence,
},
}),
...(dirtyFields.useBusinessAddress && {
useEntityGeoAddress: data.useBusinessAddress,
}),
...((dirtyFields.ownership || !isEdit) && {
ownershipPercentage: data.ownership ? +data.ownership : null,
}),
} as any;
// Now add document info conditionally
if (isMerchantOnboardingModalEnabled) {
if (newIsUSCitizen) {
// Resident OR US Citizen (even if not resident): send SSN
if (dirtyFields["ssn"]) {
defaultPayload.taxIdNumber = data.ssn;
defaultPayload.docIDNumber = null;
defaultPayload.docIDNumberType = null;
}
} else {
// Not resident AND not US citizen: send Document Number
if (dirtyFields["documentNumber"]) {
defaultPayload.docIDNumber = data.documentNumber;
defaultPayload.docIDNumberType = data.documentType;
defaultPayload.taxIDNumber = null;
defaultPayload.tinType = null;
}
}
} else {
if (data.isUSResident || (!data.isUSResident && data.isUSCitizen)) {
// Resident OR US Citizen (even if not resident): send SSN
if (dirtyFields["ssn"]) {
defaultPayload.taxIdNumber = data.ssn;
defaultPayload.docIDNumber = null;
defaultPayload.docIDNumberType = null;
}
} else {
// Not resident AND not US citizen: send Document Number
if (dirtyFields["documentNumber"]) {
defaultPayload.docIDNumber = data.documentNumber;
defaultPayload.docIDNumberType = data.documentType;
defaultPayload.taxIDNumber = null;
defaultPayload.tinType = null;
}
}
}
return defaultPayload as any;
};
|