| @@ -73,6 +73,7 @@ const BulkAddPaymentModal: React.FC<Props> = ({ | |||||
| const { register, reset, trigger, formState, watch, control } = | const { register, reset, trigger, formState, watch, control } = | ||||
| useForm<BulkAddPaymentForm>({ | useForm<BulkAddPaymentForm>({ | ||||
| mode: "onTouched", | |||||
| defaultValues: { dateType: "monthly", dateReference: dayjs() }, | defaultValues: { dateType: "monthly", dateReference: dayjs() }, | ||||
| }); | }); | ||||
| @@ -87,7 +88,12 @@ const BulkAddPaymentModal: React.FC<Props> = ({ | |||||
| description, | description, | ||||
| } = formValues; | } = formValues; | ||||
| if (numberOfEntries > 0 && amountToDivide && description) { | |||||
| if ( | |||||
| Number.isInteger(numberOfEntries) && | |||||
| numberOfEntries > 0 && | |||||
| amountToDivide && | |||||
| description | |||||
| ) { | |||||
| const dividedAmount = amountToDivide / numberOfEntries; | const dividedAmount = amountToDivide / numberOfEntries; | ||||
| return Array(numberOfEntries) | return Array(numberOfEntries) | ||||
| .fill(undefined) | .fill(undefined) | ||||
| @@ -157,6 +163,17 @@ const BulkAddPaymentModal: React.FC<Props> = ({ | |||||
| {...register("numberOfEntries", { | {...register("numberOfEntries", { | ||||
| valueAsNumber: true, | valueAsNumber: true, | ||||
| required: t("Required"), | required: t("Required"), | ||||
| validate: (value) => { | |||||
| if (!value) { | |||||
| return t("Required"); | |||||
| } else if (value < 0) { | |||||
| return t("Number must be positive"); | |||||
| } else if (!Number.isInteger(value)) { | |||||
| return t("Number must be an integer"); | |||||
| } else { | |||||
| return true; | |||||
| } | |||||
| }, | |||||
| })} | })} | ||||
| error={Boolean(formState.errors.numberOfEntries)} | error={Boolean(formState.errors.numberOfEntries)} | ||||
| helperText={formState.errors.numberOfEntries?.message} | helperText={formState.errors.numberOfEntries?.message} | ||||