diff --git a/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt b/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt index 4597177..3332710 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt @@ -1615,6 +1615,9 @@ open class StockTakeRecordService( ) } + /** + * FP-MTMS Version Checklist | Functions Ref. No. 70 | v1.0.0 | 2026-08-31 + */ open fun checkAndUpdateStockTakeStatus(stockTakeId: Long, stockTakeSection: String): Map { try { val stockTake = stockTakeRepository.findByIdAndDeletedIsFalse(stockTakeId) @@ -1648,18 +1651,17 @@ open class StockTakeRecordService( } } - // 輪次預建後:以本 section 本輪「全部記錄是否已完成第一次盤點」為準(不再與即時庫存行逐行對齊) - val allLinesHaveRecords = stockTakeRecords.isNotEmpty() && - stockTakeRecords.all { it.pickerFirstStockTakeQty != null } - + // 以本 section 本輪「列狀態」升單頭。審核員單筆先核(無第一次數量)只要已是 + // pass/completed 即算完成,不再要求每一筆都有 pickerFirstStockTakeQty。 val allRecordsPassed = stockTakeRecords.isNotEmpty() && stockTakeRecords.all { it.status == "pass" || it.status == "completed" } val allRecordsCompleted = stockTakeRecords.isNotEmpty() && stockTakeRecords.all { it.status == "completed" } - // 6. 如果所有记录都已创建且都是 "pass",更新 stock take 状态为 "approving" - if (allLinesHaveRecords && allRecordsCompleted) { + val now = java.time.LocalDateTime.now() + if (allRecordsCompleted) { stockTake.status = StockTakeStatus.COMPLETED - stockTake.planEnd = java.time.LocalDateTime.now() + stockTake.planEnd = now + stockTake.actualEnd = now stockTakeRepository.save(stockTake) println("Stock take $stockTakeId status updated to COMPLETED - all records are completed") return mapOf( @@ -1667,10 +1669,9 @@ open class StockTakeRecordService( "message" to "Stock take status updated to COMPLETED", "updated" to true ) - } else if (allLinesHaveRecords && allRecordsPassed) { - // 如果所有记录都已创建且都是 "pass" 或 "completed",更新 stock take 状态为 "approving" + } else if (allRecordsPassed) { stockTake.status = StockTakeStatus.APPROVING - stockTake.actualEnd = java.time.LocalDateTime.now() + stockTake.actualEnd = now stockTakeRepository.save(stockTake) println("Stock take $stockTakeId status updated to APPROVING - all records are pass") @@ -1684,7 +1685,6 @@ open class StockTakeRecordService( "success" to true, "message" to "Conditions not met for status update", "updated" to false, - "allLinesHaveRecords" to allLinesHaveRecords, "allRecordsPassed" to allRecordsPassed, "allRecordsCompleted" to allRecordsCompleted )