diff --git a/src/components/Expenses/ManageExpense.jsx b/src/components/Expenses/ManageExpense.jsx index 9644bb3a..f6608ccc 100644 --- a/src/components/Expenses/ManageExpense.jsx +++ b/src/components/Expenses/ManageExpense.jsx @@ -81,6 +81,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => { isLoading: EmpLoading, isError: isEmployeeError, } = useEmployeesNameByProject(selectedproject); + const files = watch("billAttachments"); const onFileChange = async (e) => { const newFiles = Array.from(e.target.files); diff --git a/src/components/PaymentRequest/ManagePaymentRequest.jsx b/src/components/PaymentRequest/ManagePaymentRequest.jsx index ca66b6ad..66d64715 100644 --- a/src/components/PaymentRequest/ManagePaymentRequest.jsx +++ b/src/components/PaymentRequest/ManagePaymentRequest.jsx @@ -1,21 +1,30 @@ -import React from 'react' +import React, { useEffect } from 'react' import { useProjectName } from '../../hooks/useProjects'; import Label from '../common/Label'; import { useForm } from 'react-hook-form'; import { useExpenseType } from '../../hooks/masterHook/useMaster'; import DatePicker from '../common/DatePicker'; +import { useCreatePaymentRequest } from '../../hooks/usePaymentRequest'; +import { defaultPaymentRequest, PaymentRequestSchema } from '../../pages/PaymentRequest/PaymentRequestSchema'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { formatFileSize, localToUtc } from '../../utils/appUtils'; function ManagePaymentRequest({ closeModal, expenseToEdit = null }) { const { projectNames, loading: projectLoading, error, isError: isProjectError, } = useProjectName(); - const { register, control, watch,reset, formState: { errors }, } = useForm(); - const { ExpenseTypes, loading: ExpenseLoading, error: ExpenseError, } = useExpenseType(); + const schema = PaymentRequestSchema(ExpenseTypes); + const { register, control, watch, handleSubmit, setValue, reset, formState: { errors }, } = useForm({ + resolver: zodResolver(schema), + defaultValues: defaultPaymentRequest, + }); + + const files = watch("billAttachments"); const onFileChange = async (e) => { @@ -83,12 +92,60 @@ function ManagePaymentRequest({ closeModal, expenseToEdit = null }) { closeModal(); }; + const { mutate: CreatePaymentRequest, isPending: createPending } = useCreatePaymentRequest( + () => { + handleClose(); + } + ); + + // useEffect(() => { + // if (expenseToEdit && data) { + // reset({ + // title: data.title || "", + // description: data.description || "", + // payee: data.payee || "", + // currencyId: data.currencyId.id || "", + // amount: data.amount || "", + // dueDate: data.dueDate?.slice(0, 10) || "", + // projectId: data.project.id || "", + // expenseCategoryId: data.expenseCategoryId.id || "", + // isAdvancePayment: data.isAdvancePayment || "", + // billAttachments: data.documents + // ? data.documents.map((doc) => ({ + // fileName: doc.fileName, + // base64Data: null, + // contentType: doc.contentType, + // documentId: doc.documentId, + // fileSize: 0, + // description: "", + // preSignedUrl: doc.preSignedUrl, + // isActive: doc.isActive ?? true, + // })) + // : [], + + // }); + // } + // }, [data, reset, employees]); + + const onSubmit = (fromdata) => { + let payload = { + ...fromdata, + transactionDate: localToUtc(fromdata.transactionDate), + }; + if (expenseToEdit) { + const editPayload = { ...payload, id: data.id }; + ExpenseUpdate({ id: data.id, payload: editPayload }); + } else { + CreatePaymentRequest(payload); + } + }; + return (
- {expenseToEdit ? "Update Expense " : "Create New Expense"} + {expenseToEdit ? "Update Payment Request " : "Create Payment Request"}
-
+
+
+
+ + + {errors.title && ( + {errors.title.message} + )} +
+
+