| @@ -905,7 +905,7 @@ export const fetchAllJoborderProductProcessInfo = cache(async (type?: string | n | |||||
| ); | ); | ||||
| }); | }); | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 40 | v1.0.3 | 2026-08-05 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 40 | v1.0.4 | 2026-08-05 */ | |||||
| export const fetchJoborderProductProcessesPage = cache(async (params: { | export const fetchJoborderProductProcessesPage = cache(async (params: { | ||||
| /** Job order / process date(YYYY-MM-DD) */ | /** Job order / process date(YYYY-MM-DD) */ | ||||
| date?: string | null; | date?: string | null; | ||||
| @@ -59,6 +59,7 @@ interface Props { | |||||
| onStockAdjustmentSuccess?: () => void | Promise<void>; | onStockAdjustmentSuccess?: () => void | Promise<void>; | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 3 | v1.0.5 | 2026-08-05 */ | |||||
| const InventoryLotLineTable: React.FC<Props> = ({ | const InventoryLotLineTable: React.FC<Props> = ({ | ||||
| inventoryLotLines, pagingController, setPagingController, totalCount, inventory, | inventoryLotLines, pagingController, setPagingController, totalCount, inventory, | ||||
| filterLotNo, | filterLotNo, | ||||
| @@ -68,8 +69,7 @@ const InventoryLotLineTable: React.FC<Props> = ({ | |||||
| const { t } = useTranslation(["inventory"]); | const { t } = useTranslation(["inventory"]); | ||||
| const { data: session } = useSession(); | const { data: session } = useSession(); | ||||
| const abilities = session?.user?.abilities ?? []; | const abilities = session?.user?.abilities ?? []; | ||||
| const canStockAdjust = | |||||
| abilities.includes(AUTH.ADMIN) || abilities.includes(AUTH.INVENTORY_ADJUST); | |||||
| const canStockAdjust = abilities.includes(AUTH.INVENTORY_ADJUST); | |||||
| const PRINT_PRINTER_ID_KEY = 'inventoryLotLinePrintPrinterId'; | const PRINT_PRINTER_ID_KEY = 'inventoryLotLinePrintPrinterId'; | ||||
| const { setIsUploading } = useUploadContext(); | const { setIsUploading } = useUploadContext(); | ||||
| const [stockTransferModalOpen, setStockTransferModalOpen] = useState(false); | const [stockTransferModalOpen, setStockTransferModalOpen] = useState(false); | ||||
| @@ -220,7 +220,7 @@ interface JobOrderOpsTableProps { | |||||
| printerCombo?: PrinterCombo[]; | printerCombo?: PrinterCombo[]; | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 47 | v1.0.2 | 2026-08-05 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 47 | v1.0.3 | 2026-08-05 */ | |||||
| const JobOrderOpsTable: React.FC<JobOrderOpsTableProps> = ({ | const JobOrderOpsTable: React.FC<JobOrderOpsTableProps> = ({ | ||||
| onSelectProcess, | onSelectProcess, | ||||
| printerCombo = [], | printerCombo = [], | ||||
| @@ -651,10 +651,6 @@ const JobOrderOpsTable: React.FC<JobOrderOpsTableProps> = ({ | |||||
| value="processing" | value="processing" | ||||
| label={tabLabel(t("Processing"), counts.processing)} | label={tabLabel(t("Processing"), counts.processing)} | ||||
| /> | /> | ||||
| <Tab | |||||
| value="carried_over" | |||||
| label={tabLabel(t("Off-plan unfinished"), counts.carriedOver)} | |||||
| /> | |||||
| <Tab | <Tab | ||||
| value="pending_qc" | value="pending_qc" | ||||
| label={tabLabel(t("Waiting QC Put Away"), counts.pendingQc)} | label={tabLabel(t("Waiting QC Put Away"), counts.pendingQc)} | ||||
| @@ -667,6 +663,10 @@ const JobOrderOpsTable: React.FC<JobOrderOpsTableProps> = ({ | |||||
| value="issue" | value="issue" | ||||
| label={tabLabel(t("Issue"), counts.stop + counts.cancel)} | label={tabLabel(t("Issue"), counts.stop + counts.cancel)} | ||||
| /> | /> | ||||
| <Tab | |||||
| value="carried_over" | |||||
| label={tabLabel(t("Off-plan unfinished"), counts.carriedOver)} | |||||
| /> | |||||
| </Tabs> | </Tabs> | ||||
| {( | {( | ||||
| @@ -53,7 +53,7 @@ interface ProductProcessJobOrderDetailProps { | |||||
| initialTabIndex?: number; | initialTabIndex?: number; | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 40 | v1.0.3 | 2026-08-05 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 40 | v1.0.4 | 2026-08-05 */ | |||||
| const ProductionProcessJobOrderDetail: React.FC<ProductProcessJobOrderDetailProps> = ({ | const ProductionProcessJobOrderDetail: React.FC<ProductProcessJobOrderDetailProps> = ({ | ||||
| jobOrderId, | jobOrderId, | ||||
| onBack, | onBack, | ||||
| @@ -175,7 +175,7 @@ function isWaitingQcPutAway( | |||||
| return s !== "completed" && s !== "rejected"; | return s !== "completed" && s !== "rejected"; | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 40 | v1.0.3 | 2026-08-05 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 40 | v1.0.4 | 2026-08-05 */ | |||||
| const ProductProcessList: React.FC<ProductProcessListProps> = ({ | const ProductProcessList: React.FC<ProductProcessListProps> = ({ | ||||
| onSelectProcess, | onSelectProcess, | ||||
| printerCombo, | printerCombo, | ||||
| @@ -930,13 +930,6 @@ const ProductProcessList: React.FC<ProductProcessListProps> = ({ | |||||
| value="processing" | value="processing" | ||||
| label={renderBucketTabLabel("Processing", processingCount)} | label={renderBucketTabLabel("Processing", processingCount)} | ||||
| /> | /> | ||||
| <Tab | |||||
| value="carried_over" | |||||
| label={renderBucketTabLabel( | |||||
| "Off-plan unfinished", | |||||
| offPlanTabCount, | |||||
| )} | |||||
| /> | |||||
| <Tab | <Tab | ||||
| value="pending_qc" | value="pending_qc" | ||||
| label={renderBucketTabLabel( | label={renderBucketTabLabel( | ||||
| @@ -948,6 +941,13 @@ const ProductProcessList: React.FC<ProductProcessListProps> = ({ | |||||
| value="putawayed" | value="putawayed" | ||||
| label={renderBucketTabLabel("Put Awayed", putawayedCount)} | label={renderBucketTabLabel("Put Awayed", putawayedCount)} | ||||
| /> | /> | ||||
| <Tab | |||||
| value="carried_over" | |||||
| label={renderBucketTabLabel( | |||||
| "Off-plan unfinished", | |||||
| offPlanTabCount, | |||||
| )} | |||||
| /> | |||||
| </Tabs> | </Tabs> | ||||
| <Box | <Box | ||||
| @@ -26,7 +26,7 @@ const STORAGE_KEY = 'productionProcess_selectedMatchingStock'; | |||||
| /** | /** | ||||
| * FP-MTMS Version Checklist | Functions Ref. No. 26 | v1.0.0 | 2026-07-20 | * FP-MTMS Version Checklist | Functions Ref. No. 26 | v1.0.0 | 2026-07-20 | ||||
| * FP-MTMS Version Checklist | Functions Ref. No. 47 | v1.0.2 | 2026-08-05 | |||||
| * FP-MTMS Version Checklist | Functions Ref. No. 47 | v1.0.3 | 2026-08-05 | |||||
| */ | */ | ||||
| const ProductionProcessPage: React.FC<ProductionProcessPageProps> = ({ printerCombo }) => { | const ProductionProcessPage: React.FC<ProductionProcessPageProps> = ({ printerCombo }) => { | ||||
| const { t } = useTranslation(["common", "productionProcess"]); | const { t } = useTranslation(["common", "productionProcess"]); | ||||