Feature#794_ActionExpense : completed action on expense #289

Merged
pramod.mahajan merged 2 commits from Feature#794_ActionExpense into Feature_Expense 2025-07-24 08:52:56 +00:00
3 changed files with 29 additions and 22 deletions

View File

@ -155,7 +155,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
fileSize: 0, fileSize: 0,
description: "", description: "",
preSignedUrl: doc.preSignedUrl, preSignedUrl: doc.preSignedUrl,
isActive: doc.isActive || true, isActive: doc.isActive ?? true,
})) }))
: [], : [],
}); });
@ -264,7 +264,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
Payment Mode Payment Mode
</label> </label>
<select <select
class="form-select form-select-sm" className="form-select form-select-sm"
id="paymentModeId" id="paymentModeId"
{...register("paymentModeId")} {...register("paymentModeId")}
> >
@ -293,7 +293,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
Paid By Paid By
</label> </label>
<select <select
class="form-select form-select-sm" className="form-select form-select-sm"
id="paymentModeId" id="paymentModeId"
{...register("paidById")} {...register("paidById")}
disabled={!selectedproject} disabled={!selectedproject}
@ -336,7 +336,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
)} )}
</div> </div>
<div class="col-md-6"> <div className="col-md-6">
<label for="amount" className="form-label "> <label for="amount" className="form-label ">
Amount Amount
</label> </label>
@ -373,7 +373,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
)} )}
</div> </div>
<div class="col-md-6"> <div className="col-md-6">
<label for="location" className="form-label "> <label for="location" className="form-label ">
Location Location
</label> </label>
@ -388,7 +388,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
)} )}
</div> </div>
</div> </div>
<div class="row my-2"> <div className="row my-2">
<div className="col-md-6"> <div className="col-md-6">
<label for="statusId" className="form-label "> <label for="statusId" className="form-label ">
TransactionId TransactionId
@ -396,7 +396,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
<input <input
type="text" type="text"
id="transactionId" id="transactionId"
class="form-control form-control-sm" className="form-control form-control-sm"
min="1" min="1"
{...register("transactionId")} {...register("transactionId")}
/> />
@ -429,7 +429,7 @@ const ManageExpense = ({ closeModal, expenseToEdit = null }) => {
</div> </div>
<div className="row my-2"> <div className="row my-2">
<div class="col-md-12" className="form-label "> <div className="col-md-12" className="form-label ">
<label for="description">Description</label> <label for="description">Description</label>
<textarea <textarea
id="description" id="description"

View File

@ -16,6 +16,7 @@ const ViewExpense = ({ ExpenseId }) => {
register, register,
handleSubmit, handleSubmit,
setValue, setValue,
reset,
formState: { errors }, formState: { errors },
} = useForm({ } = useForm({
resolver: zodResolver(ActionSchema), resolver: zodResolver(ActionSchema),
@ -25,11 +26,11 @@ const ViewExpense = ({ ExpenseId }) => {
}, },
}); });
const { mutate: MakeAction } = useActionOnExpense(); const { mutate: MakeAction } = useActionOnExpense(()=>reset());
const onSubmit = (formData) => { const onSubmit = (formData) => {
const Payload = { const Payload = {
expenseId: ExpenseId?.id, expenseId: ExpenseId,
statusId: formData.selectedStatus, statusId: formData.selectedStatus,
comment: formData.comment, comment: formData.comment,
}; };
@ -226,7 +227,7 @@ const ViewExpense = ({ ExpenseId }) => {
<input type="hidden" {...register("selectedStatus")} /> <input type="hidden" {...register("selectedStatus")} />
<div className="d-flex flex-wrap gap-2 my-2"> <div className="text-center flex-wrap gap-2 my-2">
{data.nextStatus.map((status, index) => ( {data.nextStatus.map((status, index) => (
<button <button
key={index} key={index}
@ -235,12 +236,8 @@ const ViewExpense = ({ ExpenseId }) => {
setValue("selectedStatus", status.id); setValue("selectedStatus", status.id);
handleSubmit(onSubmit)(); handleSubmit(onSubmit)();
}} }}
className="badge cursor-pointer border-0" className="btn btn-primary btn-sm cursor-pointer mx-2 border-0"
style={{
backgroundColor: status.color || "#6c757d",
color: "#fff",
fontSize: "0.85rem",
}}
> >
{status.displayName || status.name} {status.displayName || status.name}
</button> </button>

View File

@ -101,9 +101,9 @@ export const useUpdateExpense = (onSuccessCallBack) => {
// }; // };
// } // }
// ); // );
queryClient.removeQueries({queryKey:['Expense', variables.id]}); queryClient.removeQueries({ queryKey: ["Expense", variables.id] });
queryClient.invalidateQueries({queryKey:['Expenses']}) queryClient.invalidateQueries({ queryKey: ["Expenses"] });
showToast('Expense updated Successfully', 'success'); showToast("Expense updated Successfully", "success");
if (onSuccessCallBack) onSuccessCallBack(); if (onSuccessCallBack) onSuccessCallBack();
}, },
@ -119,11 +119,11 @@ export const useActionOnExpense = (onSuccessCallBack) => {
return response.data; return response.data;
}, },
onSuccess: (updatedExpense, variables) => { onSuccess: (updatedExpense, variables) => {
showToast("Expense updated successfully", "success"); showToast("Request processed successfully.", "success");
queryClient.setQueriesData( queryClient.setQueriesData(
{ {
queryKey: ["expenses"], queryKey: ["Expenses"],
exact: false, exact: false,
}, },
(oldData) => { (oldData) => {
@ -142,6 +142,16 @@ export const useActionOnExpense = (onSuccessCallBack) => {
}; };
} }
); );
queryClient.setQueriesData(
{ queryKey: ["Expense", updatedExpense.id] },
(oldData) => {
return {
...oldData,
nextStatus: updatedExpense.nextStatus,
status: updatedExpense.status,
};
}
);
if (onSuccessCallBack) onSuccessCallBack(); if (onSuccessCallBack) onSuccessCallBack();
}, },