| @@ -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<String, Any> { | open fun checkAndUpdateStockTakeStatus(stockTakeId: Long, stockTakeSection: String): Map<String, Any> { | ||||
| try { | try { | ||||
| val stockTake = stockTakeRepository.findByIdAndDeletedIsFalse(stockTakeId) | 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() && | val allRecordsPassed = stockTakeRecords.isNotEmpty() && | ||||
| stockTakeRecords.all { it.status == "pass" || it.status == "completed" } | stockTakeRecords.all { it.status == "pass" || it.status == "completed" } | ||||
| val allRecordsCompleted = stockTakeRecords.isNotEmpty() && | val allRecordsCompleted = stockTakeRecords.isNotEmpty() && | ||||
| stockTakeRecords.all { it.status == "completed" } | 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.status = StockTakeStatus.COMPLETED | ||||
| stockTake.planEnd = java.time.LocalDateTime.now() | |||||
| stockTake.planEnd = now | |||||
| stockTake.actualEnd = now | |||||
| stockTakeRepository.save(stockTake) | stockTakeRepository.save(stockTake) | ||||
| println("Stock take $stockTakeId status updated to COMPLETED - all records are completed") | println("Stock take $stockTakeId status updated to COMPLETED - all records are completed") | ||||
| return mapOf( | return mapOf( | ||||
| @@ -1667,10 +1669,9 @@ open class StockTakeRecordService( | |||||
| "message" to "Stock take status updated to COMPLETED", | "message" to "Stock take status updated to COMPLETED", | ||||
| "updated" to true | "updated" to true | ||||
| ) | ) | ||||
| } else if (allLinesHaveRecords && allRecordsPassed) { | |||||
| // 如果所有记录都已创建且都是 "pass" 或 "completed",更新 stock take 状态为 "approving" | |||||
| } else if (allRecordsPassed) { | |||||
| stockTake.status = StockTakeStatus.APPROVING | stockTake.status = StockTakeStatus.APPROVING | ||||
| stockTake.actualEnd = java.time.LocalDateTime.now() | |||||
| stockTake.actualEnd = now | |||||
| stockTakeRepository.save(stockTake) | stockTakeRepository.save(stockTake) | ||||
| println("Stock take $stockTakeId status updated to APPROVING - all records are pass") | println("Stock take $stockTakeId status updated to APPROVING - all records are pass") | ||||
| @@ -1684,7 +1685,6 @@ open class StockTakeRecordService( | |||||
| "success" to true, | "success" to true, | ||||
| "message" to "Conditions not met for status update", | "message" to "Conditions not met for status update", | ||||
| "updated" to false, | "updated" to false, | ||||
| "allLinesHaveRecords" to allLinesHaveRecords, | |||||
| "allRecordsPassed" to allRecordsPassed, | "allRecordsPassed" to allRecordsPassed, | ||||
| "allRecordsCompleted" to allRecordsCompleted | "allRecordsCompleted" to allRecordsCompleted | ||||
| ) | ) | ||||