import { t } from "@/config/i18n"; import type { ContractInputs } from "@/services/resources/contracts"; import { Group, NumberInput, Stack, Text, TextInput, Title } from "@mantine/core"; import type { UseFormReturnType } from "@mantine/form"; import { useEffect } from "react"; export type ContractChequeProps = { inputForm: UseFormReturnType; price: number; chequeOrder: string; }; export type Cheque = { name: string; value: string; }; export function ContractCheque({ inputForm, price, chequeOrder }: ContractChequeProps) { useEffect(() => { if (!inputForm.values.payment_method.includes("cheque")) { return; } const quantity = Number(inputForm.values.cheque_quantity); if (!quantity || quantity <= 0) return; const cheques = inputForm.values.cheques || []; if (cheques.length !== quantity) { const newCheques = Array.from({ length: quantity }, (_, i) => ({ name: cheques[i]?.name ?? "", value: cheques[i]?.value ?? 0, })); inputForm.setFieldValue("cheques", newCheques); } const totalCents = Math.round(price * 100); const base = Math.floor(totalCents / quantity); const rest = totalCents - base * quantity; for (let i = 0; i < quantity; i++) { const val = (i === quantity - 1 ? base + rest : base) / 100; inputForm.setFieldValue(`cheques.${i}.value`, val.toFixed(2)); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [inputForm.values.cheque_quantity, price, inputForm.values.cheques]); return ( {`${t("order name")} : ${chequeOrder}`} {inputForm.values.cheques.map((cheque, index) => ( {inputForm?.errors.cheques} : null } /> ))} ); }