Merge branch 'fix/adjustment-recording-form' into 'development'

[FIX/FE] Adjustment Zero Restriction on Jumlah Pakai (>0. value) and Add Refetch (Invalidate) at Recording Detail Page

See merge request mbugroup/lti-web-client!372
This commit is contained in:
Rivaldi A N S
2026-04-07 09:13:40 +00:00
5 changed files with 18 additions and 7 deletions
+3
View File
@@ -45,3 +45,6 @@ next-env.d.ts
# claude # claude
.claude .claude
# rtk
rtk.exe
@@ -11,10 +11,13 @@ const RecordingEdit = () => {
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const recordingId = searchParams.get('recordingId'); const recordingId = searchParams.get('recordingId');
const recordingDetailKey = recordingId
? ['recording-detail', recordingId]
: null;
const { data: recording, isLoading: isLoadingRecording } = useSWR( const { data: recording, isLoading: isLoadingRecording } = useSWR(
recordingId, recordingDetailKey,
(id: string) => RecordingApi.getSingle(parseInt(id)) ([, id]: [string, string]) => RecordingApi.getSingle(parseInt(id))
); );
if (!recordingId) { if (!recordingId) {
+5 -2
View File
@@ -11,10 +11,13 @@ const RecordingDetail = () => {
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const recordingId = searchParams.get('recordingId'); const recordingId = searchParams.get('recordingId');
const recordingDetailKey = recordingId
? ['recording-detail', recordingId]
: null;
const { data: recording, isLoading: isLoadingRecording } = useSWR( const { data: recording, isLoading: isLoadingRecording } = useSWR(
recordingId, recordingDetailKey,
(id: string) => RecordingApi.getSingle(parseInt(id)) ([, id]: [string, string]) => RecordingApi.getSingle(parseInt(id))
); );
if (!recordingId) { if (!recordingId) {
@@ -71,7 +71,7 @@ const StockObjectSchema: Yup.ObjectSchema<StockSchema> = Yup.object({
.typeError('Produk harus berupa angka!'), .typeError('Produk harus berupa angka!'),
qty: Yup.number() qty: Yup.number()
.required('Jumlah penggunaan wajib diisi!') .required('Jumlah penggunaan wajib diisi!')
.min(1, 'Jumlah penggunaan tidak boleh 0!') .moreThan(0, 'Jumlah penggunaan harus lebih dari 0!')
.typeError('Jumlah penggunaan harus berupa angka!'), .typeError('Jumlah penggunaan harus berupa angka!'),
}); });
@@ -4,7 +4,7 @@ import { useMemo, useState, useEffect, useCallback } from 'react';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import { useFormik } from 'formik'; import { useFormik } from 'formik';
import useSWR from 'swr'; import useSWR, { useSWRConfig } from 'swr';
import { Icon } from '@iconify/react'; import { Icon } from '@iconify/react';
import Button from '@/components/Button'; import Button from '@/components/Button';
@@ -183,6 +183,7 @@ const productionStandardColumns: ColumnDef<StandardDetails>[] = [
const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
// ===== HOOKS & ROUTER ===== // ===== HOOKS & ROUTER =====
const router = useRouter(); const router = useRouter();
const { mutate } = useSWRConfig();
// ===== STATE MANAGEMENT ===== // ===== STATE MANAGEMENT =====
const [selectedRecordDate, setSelectedRecordDate] = useState<string>( const [selectedRecordDate, setSelectedRecordDate] = useState<string>(
@@ -319,11 +320,12 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
setRecordingFormErrorMessage(res.message); setRecordingFormErrorMessage(res.message);
return; return;
} }
await mutate(['recording-detail', recordingId.toString()]);
toast.success(res?.message as string); toast.success(res?.message as string);
router.refresh(); router.refresh();
router.push('/production/recording'); router.push('/production/recording');
}, },
[router] [mutate, router]
); );
const deleteRecordingClickHandler = useCallback(() => { const deleteRecordingClickHandler = useCallback(() => {