Bläddra i källkod

update stock ledger

master
CANCERYS\kw093 2 veckor sedan
förälder
incheckning
8de3aac2e7
3 ändrade filer med 19 tillägg och 14 borttagningar
  1. +5
    -6
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockLedgerRepository.kt
  2. +12
    -6
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt
  3. +2
    -2
      src/main/java/com/ffii/fpsms/modules/stock/service/StockOutLineService.kt

+ 5
- 6
src/main/java/com/ffii/fpsms/modules/stock/entity/StockLedgerRepository.kt Visa fil

@@ -52,10 +52,9 @@ interface StockLedgerRepository: AbstractRepository<StockLedger, Long> {


@Query("""
SELECT sl FROM StockLedger sl
WHERE sl.itemId = :itemId
AND sl.deleted = false
ORDER BY sl.date DESC, sl.id DESC
""")
fun findLatestByItemId(@Param("itemId") itemId: Long): StockLedger?
SELECT sl FROM StockLedger sl
WHERE sl.itemId = :itemId AND sl.deleted = false
ORDER BY sl.date DESC, sl.id DESC
""")
fun findLatestByItemId(@Param("itemId") itemId: Long): List<StockLedger>
}

+ 12
- 6
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt Visa fil

@@ -718,23 +718,29 @@ open class StockInLineService(
private fun createStockLedgerForStockIn(stockInLine: StockInLine) {
val item = stockInLine.item ?: return
val inventory = inventoryRepository.findByItemId(item.id!!).orElse(null) ?: return
val inQty = stockInLine.acceptedQty?.toDouble() ?: 0.0
// 直接使用 inventory.onHandQty 作为 balance(已经是更新后的值)
val newBalance = (inventory.onHandQty ?: BigDecimal.ZERO).toDouble()

// ✅ 修复:查询最新的 stock_ledger 记录,基于前一笔 balance 计算
val latestLedger = stockLedgerRepository.findLatestByItemId(item.id!!).firstOrNull()
val previousBalance = latestLedger?.balance
?: (inventory.onHandQty ?: BigDecimal.ZERO).toDouble()
val newBalance = previousBalance + inQty
val stockLedger = StockLedger().apply {
this.stockInLine = stockInLine
this.inventory = inventory
this.inQty = inQty
this.outQty = null
this.balance = newBalance
this.balance = newBalance
this.type = stockInLine.type
this.itemId = item.id
this.itemCode = item.code
this.date = LocalDate.now()
}
stockLedgerRepository.saveAndFlush(stockLedger)
}



+ 2
- 2
src/main/java/com/ffii/fpsms/modules/stock/service/StockOutLineService.kt Visa fil

@@ -1272,8 +1272,8 @@ private fun createStockLedgerForStockOut(stockOutLine: StockOutLine) {
val inventory = inventoryRepository.findAllByItemIdAndDeletedIsFalse(item.id!!)
.firstOrNull() ?: return
val latestLedger = stockLedgerRepository.findLatestByItemId(item.id!!)
val latestLedger = stockLedgerRepository.findLatestByItemId(item.id!!).firstOrNull()
val previousBalance = latestLedger?.balance
?: (inventory.onHandQty ?: BigDecimal.ZERO).toDouble()


Laddar…
Avbryt
Spara