|
|
|
@@ -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> { |
|
|
|
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 |
|
|
|
) |
|
|
|
|