import React, { useEffect, useState } from "react"; import Label from "../common/Label"; import { Controller, useForm } from "react-hook-form"; import { useExpenseCategory, useRecurringStatus, } from "../../hooks/masterHook/useMaster"; import DatePicker from "../common/DatePicker"; import { zodResolver } from "@hookform/resolvers/zod"; import { defaultRecurringExpense, PaymentRecurringExpense, } from "./RecurringExpenseSchema"; import { FREQUENCY_FOR_RECURRING, INR_CURRENCY_CODE, } from "../../utils/constants"; import { useCurrencies, useProjectName } from "../../hooks/useProjects"; import { useCreateRecurringExpense, usePayee, useRecurringExpenseDetail, useUpdateRecurringExpense, } from "../../hooks/useExpense"; import InputSuggestions from "../common/InputSuggestion"; import MultiEmployeeSearchInput from "../common/MultiEmployeeSearchInput"; function ManageRecurringExpense({ closeModal, requestToEdit = null }) { const { data, isLoading, isError, error: requestError, } = useRecurringExpenseDetail(requestToEdit); //APIs const { projectNames, loading: projectLoading, error, isError: isProjectError, } = useProjectName(); const { data: currencyData, isLoading: currencyLoading, isError: currencyError, } = useCurrencies(); const { data: statusData, isLoading: statusLoading, isError: statusError, } = useRecurringStatus(); const { data: Payees, isLoading: isPayeeLoaing, isError: isPayeeError, error: payeeError, } = usePayee(); const { ExpenseCategories, loading: ExpenseLoading, error: ExpenseError, } = useExpenseCategory(); const schema = PaymentRecurringExpense(); const { register, control, watch, handleSubmit, setValue, reset, formState: { errors }, } = useForm({ resolver: zodResolver(schema), defaultValues: defaultRecurringExpense, }); const handleClose = () => { reset(); closeModal(); }; const { mutate: CreateRecurringExpense, isPending: createPending } = useCreateRecurringExpense(() => { handleClose(); }); // const { mutate: PaymentRequestUpdate, isPending } = useUpdatePaymentRequest(() => // handleClose() // ); useEffect(() => { if (requestToEdit && data) { reset({ title: data.title || "", description: data.description || "", payee: data.payee || "", notifyTo: data.notifyTo || "", currencyId: data.currency.id || "", amount: data.amount || "", strikeDate: data.strikeDate?.slice(0, 10) || "", projectId: data.project.id || "", paymentBufferDays: data.paymentBufferDays || "", numberOfIteration: data.numberOfIteration || "", expenseCategoryId: data.expenseCategory.id || "", statusId: data.statusId || "", frequency: data.frequency || "", isVariable: data.isVariable || false, }); } }, [data, reset]); // console.log("Veer",data) const onSubmit = (fromdata) => { let payload = { ...fromdata, // strikeDate: localToUtc(fromdata.strikeDate), strikeDate: fromdata.strikeDate ? new Date(fromdata.strikeDate).toISOString() : null, }; if (requestToEdit) { const editPayload = { ...payload, id: data.id }; PaymentRequestUpdate({ id: data.id, payload: editPayload }); } else { CreateRecurringExpense(payload); } console.log("Kartik", payload); }; return (
{requestToEdit ? "Update Expense Recurring " : "Create Expense Recurring"}
{/* Project and Category */}
{errors.projectId && ( {errors.projectId.message} )}
{errors.expenseCategoryId && ( {errors.expenseCategoryId.message} )}
{/* Title and Is Variable */}
{errors.title && ( {errors.title.message} )}
(
field.onChange(true)} />
field.onChange(false)} />
)} /> {errors.isVariable && ( {errors.isVariable.message} )}
{/* Date and Amount */}
{errors.strikeDate && ( {errors.strikeDate.message} )}
{errors.amount && ( {errors.amount.message} )}
{/* Payee and Currency */}
setValue("payee", val, { shouldValidate: true }) } error={errors.payee?.message} placeholder="Select or enter payee" />
{errors.currencyId && ( {errors.currencyId.message} )}
{/* Frequency To and Status Id */}
{errors.frequency && ( {errors.frequency.message} )}
{errors.statusId && ( {errors.statusId.message} )}
{/* Payment Buffer Days and Number of Iteration */}
{errors.paymentBufferDays && ( {errors.paymentBufferDays.message} )}
{errors.numberOfIteration && ( {errors.numberOfIteration.message} )}
{/* Description */}
{errors.description && ( {errors.description.message} )}
); } export default ManageRecurringExpense;