diff --git a/src/app/api/stockIssue/actions.ts b/src/app/api/stockIssue/actions.ts
index fa957cca..5b30c36c 100644
--- a/src/app/api/stockIssue/actions.ts
+++ b/src/app/api/stockIssue/actions.ts
@@ -68,7 +68,7 @@ export interface SearchStockIssueRecordParams {
pageSize?: number;
}
-/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.1 | 2026-09-07 */
+/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.2 | 2026-09-07 */
export const fetchExpiryItemList = cache(async (filters?: ExpiryItemFilter) => {
const params = new URLSearchParams();
if (filters?.itemCode) params.set("itemCode", filters.itemCode);
diff --git a/src/app/api/stockIssue/client.ts b/src/app/api/stockIssue/client.ts
index d1c8d754..264d5963 100644
--- a/src/app/api/stockIssue/client.ts
+++ b/src/app/api/stockIssue/client.ts
@@ -12,9 +12,9 @@ export interface ExportExpiryItemExcelParams extends ExpiryItemFilter {
}
/**
- * FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.1 | 2026-09-07
+ * FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.2 | 2026-09-07
* GET /pickExecution/issues/expiryItem/excel
- * Query: itemCode, itemName, lotNo, daysAhead, bucket (expired|today|upcoming)
+ * Query: itemCode, itemName, lotNo, daysAhead, bucket (expired|today|upcoming; omit for all categories)
* Response: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
* Optional Content-Disposition filename.
*/
diff --git a/src/components/StockIssue/ExpiryHandleTab.tsx b/src/components/StockIssue/ExpiryHandleTab.tsx
index 22ec36f5..c661966d 100644
--- a/src/components/StockIssue/ExpiryHandleTab.tsx
+++ b/src/components/StockIssue/ExpiryHandleTab.tsx
@@ -105,7 +105,7 @@ function canHandleExpiryItem(item: ExpiryItemResult): boolean {
return d != null && !d.isAfter(dayjs(), "day");
}
-/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.1 | 2026-09-07 */
+/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.2 | 2026-09-07 */
const ExpiryHandleTab: React.FC = () => {
const BATCH_CHUNK_SIZE = 20;
const { t } = useTranslation("stockIssue");
@@ -316,7 +316,7 @@ const ExpiryHandleTab: React.FC = () => {
const handleExportExcel = useCallback(
async (mode: "filtered" | "all") => {
- if (mode === "filtered" && !hasSearched) return;
+ if (!hasSearched) return;
if (exportInFlightRef.current) return;
exportInFlightRef.current = true;
setExporting(mode);
@@ -325,7 +325,6 @@ const ExpiryHandleTab: React.FC = () => {
mode === "all"
? {
daysAhead,
- bucket: resultTab,
}
: {
...lastFilters,
@@ -381,7 +380,7 @@ const ExpiryHandleTab: React.FC = () => {
variant="outlined"
startIcon={}
onClick={() => handleExportExcel("all")}
- disabled={exporting != null}
+ disabled={!hasSearched || exporting != null}
>
{exporting === "all" ? t("Exporting...") : t("Export all in tab")}
diff --git a/src/components/StockIssue/StockIssueRecordTab.tsx b/src/components/StockIssue/StockIssueRecordTab.tsx
index 3041d82c..461b2a39 100644
--- a/src/components/StockIssue/StockIssueRecordTab.tsx
+++ b/src/components/StockIssue/StockIssueRecordTab.tsx
@@ -31,7 +31,7 @@ interface Props {
kind: RecordKind;
}
-/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.1 | 2026-09-07 */
+/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.2 | 2026-09-07 */
const StockIssueRecordTab: React.FC = ({ kind }) => {
const { t } = useTranslation("stockIssue");
const [items, setItems] = useState([]);
diff --git a/src/components/StockIssue/StockIssueSearchPanel.tsx b/src/components/StockIssue/StockIssueSearchPanel.tsx
index 162c2dc1..7c888291 100644
--- a/src/components/StockIssue/StockIssueSearchPanel.tsx
+++ b/src/components/StockIssue/StockIssueSearchPanel.tsx
@@ -49,7 +49,7 @@ interface Props {
disabled?: boolean;
}
-/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.1 | 2026-09-07 */
+/** FP-MTMS Version Checklist | Functions Ref. No. 74 | v1.0.2 | 2026-09-07 */
function StockIssueSearchPanel({
fields,
onSearch,