Fix/supp ag fb (#1023)
* fix: prevent credit notes from entering payment flow * fix: persist and display customer personal numbers * feat: configure automatic invoice reminder days * fix: issue credit notes through send flow * chore: add repository agent guidance * feat(mcp): route tools across user companies * fix(articles): delete unused register entries * feat(invoices): improve issued invoice actions * feat(supplier-invoices): retain uploaded source documents * docs: record implementation decisions * feat: enhance customer personal number handling and validation - Updated CustomerForm to allow personal numbers in the format of "********-1234" for individual customers. - Added validation to ensure personal numbers are only accepted for individual customers in CreateCustomerSchema. - Implemented masking and encryption for personal numbers to enhance data protection. - Introduced new utility functions for masking and encrypting personal numbers. - Added database migration to enforce unique constraints on credit note relationships and prevent duplicate entries. - Enhanced error handling and logging for credit note issuance and invoice processing. - Updated tests to cover new credit note creation guards and personal number handling. * test: enhance list companies test with supabase query mocks
This commit is contained in:
@@ -50,7 +50,7 @@ export default function CustomerForm({
|
||||
vat_number: z.string().optional(),
|
||||
personal_number: z
|
||||
.string()
|
||||
.regex(/^(\d{6}|\d{8})[-+]?\d{4}$/, t('personal_number_invalid'))
|
||||
.regex(/^(?:(\d{6}|\d{8})[-+]?\d{4}|\*{8}-\d{4})$/, t('personal_number_invalid'))
|
||||
.optional()
|
||||
.or(z.literal('')),
|
||||
language: z.enum(['sv', 'en']).optional(),
|
||||
@@ -133,11 +133,15 @@ export default function CustomerForm({
|
||||
}
|
||||
|
||||
const onFormSubmit = (data: FormData) => {
|
||||
onSubmit({
|
||||
const payload: CreateCustomerInput = {
|
||||
...data,
|
||||
email: data.email || undefined,
|
||||
personal_number: data.personal_number || undefined,
|
||||
})
|
||||
personal_number: data.personal_number || null,
|
||||
}
|
||||
if (data.personal_number?.startsWith('*') && data.personal_number === initialData?.personal_number) {
|
||||
delete payload.personal_number
|
||||
}
|
||||
onSubmit(payload)
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user