ソースを参照

stock take status fix

fix負數倉
CANCERYS\kw093 2週間前
コミット
453334fe33
1個のファイルの変更11行の追加11行の削除
  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 ファイルの表示

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


読み込み中…
キャンセル
保存