fix: etrade phone verification

This commit is contained in:
Nathnael
2026-08-02 18:02:20 +00:00
parent d0cc5c19ee
commit a9e6c0dc6f
3 changed files with 17 additions and 1 deletions

View File

@@ -197,6 +197,7 @@ export default function CompanyProfileForm({
companyEmail: "",
companyPhone: "",
companyAddress: "",
etradePhone: "",
tinNumber: "",
vatNumber: "",
ownerPassportNumber: "",
@@ -279,6 +280,14 @@ export default function CompanyProfileForm({
// setting region/zone/woreda/kebele/houseNo above is enough — no need to
// compose it here. companyPhone is derived below (identity → eTrade →
// account), not set directly here.
// etradePhone is the raw number eTrade returned for this TIN — kept as its
// own field (distinct from companyPhone, which prefers the Fayda-verified
// owner's phone) so the backend's "matches eTrade's current record" check
// always compares against what eTrade actually said, not the owner's phone.
setValue(
"etradePhone",
data.managerPhone || data.regularPhone || data.mobilePhone,
);
setEtradeOwner({
name: data.managerName,
@@ -303,6 +312,7 @@ export default function CompanyProfileForm({
setValue("woreda", "");
setValue("kebele", "");
setValue("houseNo", "");
setValue("etradePhone", "");
setEtradeOwner(null);
};

View File

@@ -70,7 +70,7 @@ export function stepPayload(
woreda: d.woreda,
kebele: d.kebele,
houseNo: d.houseNo,
etradePhone: d.companyPhone,
etradePhone: d.etradePhone,
};
case "personnel":
return {
@@ -101,6 +101,7 @@ export function toFormValues(p: ProfileResponse): FormData {
companyEmail: p.companyEmail ?? "",
companyPhone: p.companyPhone ?? "",
companyAddress: p.companyAddress ?? "",
etradePhone: p.etradePhone ?? "",
tinNumber: tin,
vatNumber: p.vatNumber ?? "",
ownerPassportNumber: p.identity?.owner.passportNumber ?? "",

View File

@@ -21,6 +21,10 @@ export const onboardingSchema = z.object({
// Derived from the eTrade address parts (kebele/woreda/zone/region); no
// standalone input — the granular fields live in the registration section.
companyAddress: z.string().optional(),
// Raw phone from the eTrade lookup itself — kept separate from companyPhone
// (which shows the Fayda-verified owner's phone once verified) so the two
// can diverge without the backend's eTrade-authenticity check misfiring.
etradePhone: z.string().optional(),
tinNumber: z.string().regex(/^\d{10}$/, "TIN must be exactly 10 digits"),
vatNumber: z
.string()
@@ -124,6 +128,7 @@ export const stepFields: Record<CompanyStep, (keyof FormData)[]> = {
"companyEmail",
"companyPhone",
"companyAddress",
"etradePhone",
"tinNumber",
"vatNumber",
"ownerPassportNumber",