refactor: normalize user type handling and improve UID number logic in SummaryPageContent
This commit is contained in:
parent
e3e1df6ef9
commit
fb63eb99ed
@ -135,19 +135,28 @@ function SummaryPageContent() {
|
||||
const templateVariableNames = useMemo(() => extractTemplateVariables(contractHtml), [contractHtml])
|
||||
const templateVariableNamesKey = useMemo(() => templateVariableNames.join('|'), [templateVariableNames])
|
||||
const [contractVariables, setContractVariables] = useState<Record<string, string>>({})
|
||||
const isCompanyCustomer = user?.userType === 'company' || user?.user_type === 'company'
|
||||
const normalizedUserType = String(user?.userType ?? user?.user_type ?? '').trim().toLowerCase()
|
||||
const isCompanyCustomer = normalizedUserType === 'company'
|
||||
|
||||
const profileUidNumber = useMemo(() => normalizeUid(pickFirstString(
|
||||
user?.uidNumber, user?.uid_number, user?.atuNumber, user?.atu_number,
|
||||
user?.companyProfile?.uid_number, user?.companyProfile?.atu_number
|
||||
)), [user])
|
||||
const profileUidNumber = useMemo(() => {
|
||||
if (!isCompanyCustomer) return ''
|
||||
return normalizeUid(pickFirstString(
|
||||
user?.uidNumber, user?.uid_number, user?.atuNumber, user?.atu_number,
|
||||
user?.companyProfile?.uid_number, user?.companyProfile?.atu_number
|
||||
))
|
||||
}, [isCompanyCustomer, user])
|
||||
|
||||
const enteredUidNumber = useMemo(() => normalizeUid(form.uidNumber), [form.uidNumber])
|
||||
const effectiveUidNumber = enteredUidNumber || profileUidNumber
|
||||
const effectiveUidNumber = isCompanyCustomer ? (enteredUidNumber || profileUidNumber) : ''
|
||||
const hasValidCompanyUid = isCompanyCustomer && isLikelyValidUid(effectiveUidNumber)
|
||||
const isForeignInvoiceCountry = form.country.toUpperCase() !== HOME_COUNTRY_CODE
|
||||
const isReverseCharge = isCompanyCustomer && hasValidCompanyUid && isForeignInvoiceCountry
|
||||
|
||||
useEffect(() => {
|
||||
if (isCompanyCustomer) return
|
||||
setForm(prev => (prev.uidNumber ? { ...prev, uidNumber: '' } : prev))
|
||||
}, [isCompanyCustomer])
|
||||
|
||||
useEffect(() => {
|
||||
if (!templateVariableNamesKey) return
|
||||
const fullName = `${form.firstName} ${form.lastName}`.trim()
|
||||
@ -177,7 +186,7 @@ function SummaryPageContent() {
|
||||
fnCheckedClass: '',
|
||||
fnNumber: '',
|
||||
atuCheckedClass: hasValidCompanyUid ? 'checked' : '',
|
||||
atuNumber: effectiveUidNumber,
|
||||
atuNumber: isCompanyCustomer ? effectiveUidNumber : '',
|
||||
entrepreneurClass: isCompanyCustomer ? 'checked' : '',
|
||||
consumerClass: isCompanyCustomer ? '' : 'checked',
|
||||
paymentSepaClass: form.paymentMethod === 'sepa' ? 'checked' : '',
|
||||
@ -435,7 +444,9 @@ function SummaryPageContent() {
|
||||
postalCode: pickFirstString(user.postalCode, user.zipCode, user.zip, user.addressPostalCode, user.address?.postalCode) || prev.postalCode,
|
||||
city: pickFirstString(user.city, user.addressCity, user.town, user.address?.city) || prev.city,
|
||||
country: (pickFirstString(user.country, user.countryCode, user.addressCountry, user.address?.country) || prev.country).toUpperCase(),
|
||||
uidNumber: normalizeUid(pickFirstString(user.uidNumber, user.uid_number, user.atuNumber, user.atu_number, user.companyProfile?.uid_number, user.companyProfile?.atu_number) || prev.uidNumber),
|
||||
uidNumber: isCompanyCustomer
|
||||
? normalizeUid(pickFirstString(user.uidNumber, user.uid_number, user.atuNumber, user.atu_number, user.companyProfile?.uid_number, user.companyProfile?.atu_number) || prev.uidNumber)
|
||||
: '',
|
||||
}));
|
||||
};
|
||||
|
||||
@ -500,8 +511,11 @@ function SummaryPageContent() {
|
||||
invoicePhone: form.invoicePhone.trim() || undefined, invoiceEmail: form.invoiceEmail.trim() || undefined,
|
||||
} : {}),
|
||||
signingCity: form.signingCity.trim() || undefined, signatureDataUrl: signatureDataUrl || undefined,
|
||||
uidNumber: effectiveUidNumber || undefined, atuNumber: effectiveUidNumber || undefined,
|
||||
taxMode: isReverseCharge ? 'reverse_charge' : 'standard_vat',
|
||||
...(isCompanyCustomer ? {
|
||||
uidNumber: effectiveUidNumber || undefined,
|
||||
atuNumber: effectiveUidNumber || undefined,
|
||||
taxMode: isReverseCharge ? 'reverse_charge' : 'standard_vat',
|
||||
} : {}),
|
||||
referred_by: typeof currentUserId === 'number' ? currentUserId : undefined,
|
||||
}
|
||||
await subscribeAbo(payload)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user