From 11c5a3be3d0aba51e0bff13a3c4b26f923db035b Mon Sep 17 00:00:00 2001 From: Jason Chuang Date: Wed, 4 Feb 2026 16:26:57 +0800 Subject: [PATCH] update to GFMIS XML form --- src/pages/GFMIS/SearchForm.js | 30 +++++++++++++++----------- src/pages/GFMIS/TransactionDataGrid.js | 22 ++++++++++++++----- src/pages/GFMIS/index.js | 8 +++++++ 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/pages/GFMIS/SearchForm.js b/src/pages/GFMIS/SearchForm.js index 16e7c14..c7923c3 100644 --- a/src/pages/GFMIS/SearchForm.js +++ b/src/pages/GFMIS/SearchForm.js @@ -22,7 +22,7 @@ import {DemoItem} from "@mui/x-date-pickers/internals/demo"; import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; // ==============================|| DASHBOARD - DEFAULT ||============================== // -const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria, onGridReady,selectedIds=[] }) => { +const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria, onGridReady, selectedIds = [] }) => { // const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); @@ -67,7 +67,7 @@ const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria, onGr // transNo: data.transNo, dateFrom: sentDateFrom, dateTo: sentDateTo, - paymentId: selectedIds.join(','), + // paymentId: selectedIds.join(','), payMethod : toPayMethodArray(payMethod), // status : (status?.type && status?.type != 'all') ? status?.type : "", }; @@ -75,25 +75,29 @@ const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria, onGr }; const generateHandler = () => { + if (!selectedIds || selectedIds.length === 0) { + alert('No payment is selected.'); + return; + } + let sentDateFrom = ""; let sentDateTo = ""; - if (fromDateValue != "dd / mm / yyyy") { - sentDateFrom = DateUtils.dateValue(fromDateValue) + if (fromDateValue !== "dd / mm / yyyy") { + sentDateFrom = DateUtils.dateValue(fromDateValue); } - if (toDateValue != "dd / mm / yyyy") { - sentDateTo = DateUtils.dateValue(toDateValue) + if (toDateValue !== "dd / mm / yyyy") { + sentDateTo = DateUtils.dateValue(toDateValue); } - // const dateTo = getValues("dateTo") + const temp = { - // code: data.code, - // transNo: data.transNo, dateFrom: sentDateFrom, dateTo: sentDateTo, - // status : (status?.type && status?.type != 'all') ? status?.type : "", }; + generateXML(temp); - } + }; + return ( @@ -221,9 +225,11 @@ const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria, onGr + diff --git a/src/pages/GFMIS/TransactionDataGrid.js b/src/pages/GFMIS/TransactionDataGrid.js index 489cc7d..1f346ab 100644 --- a/src/pages/GFMIS/TransactionDataGrid.js +++ b/src/pages/GFMIS/TransactionDataGrid.js @@ -42,6 +42,11 @@ export default function SearchPaymentTable({ searchCriteria, applyGridOnReady, a set_searchCriteria(searchCriteria); }, [searchCriteria]); + const selectedIdsRef = React.useRef(selectedIds); + React.useEffect(() => { + selectedIdsRef.current = selectedIds; + }, [selectedIds]); + const columns = [ { id: 'appNos', @@ -115,12 +120,19 @@ export default function SearchPaymentTable({ searchCriteria, applyGridOnReady, a url: PAYMENT_GFMIS_LIST, params: _searchCriteria, callback: (responseData) => { - const newIds = responseData.records.map(r => r.id); - if (selectedIds.length === 0) { - onSelectionChange?.(newIds); + const newIds = (responseData?.records ?? []).map(r => r.id); + const currentSelected = selectedIdsRef.current; + + if (newIds.length === 0) { + onSelectionChange?.([]); + return; + } + + if (!currentSelected || currentSelected.length === 0) { + onSelectionChange?.(newIds); } else { - const stillValid = selectedIds.filter(id => newIds.includes(id)); - onSelectionChange?.(stillValid); + const stillValid = currentSelected.filter(id => newIds.includes(id)); + onSelectionChange?.(stillValid); } } }), [_searchCriteria])} diff --git a/src/pages/GFMIS/index.js b/src/pages/GFMIS/index.js index 2b7ccd0..3bca046 100644 --- a/src/pages/GFMIS/index.js +++ b/src/pages/GFMIS/index.js @@ -85,6 +85,14 @@ const Index = () => { setAutoPreviewPending(false); }, [autoPreviewPending, isTxLoading, selectedIds, searchCriteria]); + React.useEffect(() => { + if (selectedIds.length === 0) { + setPreviewSearchCriteria({}); + setPreviewToken(t => t + 1); // forces preview grid remount -> clears rows + } + }, [selectedIds]); + + function downloadXML() { console.log(selectedIds.join(',')) setIsPopUp(false)