Parcourir la source

stock take status fix

fix負數倉
CANCERYS\kw093 il y a 3 semaines
Parent
révision
453334fe33
1 fichiers modifiés avec 11 ajouts et 11 suppressions
  1. +11
    -11
      src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt

+ 11
- 11
src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt Voir le fichier

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


Chargement…
Annuler
Enregistrer