소스 검색

update po

master
cyril.tsui 1 주 전
부모
커밋
dfdfad7108
3개의 변경된 파일45개의 추가작업 그리고 6개의 파일을 삭제
  1. +12
    -0
      src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt
  2. +13
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderLineInfo.kt
  3. +20
    -6
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt

+ 12
- 0
src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt 파일 보기

@@ -6,6 +6,7 @@ import com.ffii.fpsms.modules.master.web.models.ItemUomRequest
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.io.IOException
import java.math.BigDecimal
import kotlin.jvm.optionals.getOrNull

@Service
@@ -42,6 +43,17 @@ open class ItemUomService(
return itemUomRespository.findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(m18ItemId)
}

open fun convertPurchaseQtyToStockQty(itemId: Long, purchaseQty: BigDecimal): BigDecimal {
val purchaseUnit = findPurchaseUnitByItemId(itemId) ?: return purchaseQty;
val stockUnit = findStockUnitByItemId(itemId) ?: return purchaseQty;
val one = BigDecimal.ONE;

val baseQty = purchaseQty.multiply(purchaseUnit.ratioN ?: one).divide(purchaseUnit.ratioD ?: one)
val stockQty = baseQty.multiply(stockUnit.ratioD ?: one).divide(stockUnit.ratioN ?: one)

return stockQty;
}

// See if need to update the response
open fun saveItemUom(request: ItemUomRequest): ItemUom {
val itemUom = request.m18Id?.let { findByM18Id(it) } ?: request.id?.let { findById(it) } ?: ItemUom()


+ 13
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderLineInfo.kt 파일 보기

@@ -1,6 +1,7 @@
package com.ffii.fpsms.modules.purchaseOrder.entity.projections

import com.fasterxml.jackson.annotation.JsonManagedReference
import com.ffii.fpsms.modules.master.entity.ItemUom
import com.ffii.fpsms.modules.master.entity.QcItem
import com.ffii.fpsms.modules.master.entity.UomConversion
import com.ffii.fpsms.modules.stock.entity.StockInLine
@@ -35,6 +36,7 @@ data class PoLineWithStockInLine (
val receivedQty: BigDecimal,
@get:Value("#{target.uom}")
val uom: UomConversion,
val stockUom: StockUomForPoLine,
val price: BigDecimal,
val status: String,

@@ -48,4 +50,15 @@ data class QcForPoLine (
val code: String?,
val name: String?,
val description: String?,
)

data class StockUomForPoLine (
val id: Long? = null,
val stockUomCode: String? = null,
val stockUomDesc: String? = null,
val stockQty: BigDecimal? = null,
val stockRatioN: BigDecimal? = null,
val stockRatioD: BigDecimal? = null,
val purchaseRatioN: BigDecimal? = null,
val purchaseRatioD: BigDecimal? = null,
)

+ 20
- 6
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt 파일 보기

@@ -10,15 +10,13 @@ import com.ffii.fpsms.m18.utils.CommonUtils
import com.ffii.fpsms.modules.master.entity.QcItem
import com.ffii.fpsms.modules.master.entity.ShopRepository
import com.ffii.fpsms.modules.master.service.CurrencyService
import com.ffii.fpsms.modules.master.service.ItemUomService
import com.ffii.fpsms.modules.master.service.ShopService
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PoLineWithStockInLine
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderDataClass
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.QcForPoLine
import com.ffii.fpsms.modules.purchaseOrder.entity.projections.*
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderType
@@ -53,6 +51,7 @@ open class PurchaseOrderService(
private val currencyService: CurrencyService,
private val shopService: ShopService,
private val grnSendLogRepository: GrnSendLogRepository,
val itemUomService: ItemUomService,
) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) {
// open fun getPurchaseOrderInfo(args: Map<String, Any>): List<Map<String, Any>> {
// val sql = StringBuilder(
@@ -166,7 +165,7 @@ open class PurchaseOrderService(
// println(value1)
// println(value1 == 1L)
// println(value2)
println(mappedList)
// println(mappedList)
return mappedList
}

@@ -194,6 +193,19 @@ open class PurchaseOrderService(
description = it.description
)
} ?: mutableListOf();
val purchaseUnit = thisPol.item?.id?.let { itemUomService.findPurchaseUnitByItemId(it) }
val stockUnit = thisPol.item?.id?.let { itemUomService.findStockUnitByItemId(it).let { iu ->
StockUomForPoLine(
id = iu?.id,
stockUomCode = iu?.uom?.code,
stockUomDesc = iu?.uom?.udfudesc,
stockQty = iu?.item?.id?.let { iId -> itemUomService.convertPurchaseQtyToStockQty(iId, (thisPol.qty ?: BigDecimal.ZERO)) } ?: BigDecimal.ZERO,
stockRatioN = iu?.ratioN,
stockRatioD = iu?.ratioD,
purchaseRatioN = purchaseUnit?.ratioN,
purchaseRatioD = purchaseUnit?.ratioD,
)
} } ?: StockUomForPoLine()
PoLineWithStockInLine(
id = thisPol.id!!,
purchaseOrderId = thisPol.purchaseOrder!!.id!!,
@@ -207,12 +219,14 @@ open class PurchaseOrderService(
price = thisPol.price!!,
status = thisPol.status!!.toString(),
stockInLine = inLine,
qcItems = qcItems
qcItems = qcItems,
stockUom = stockUnit
)
}
val result = mapOf(
"id" to po.id,
"code" to po.code,
"supplier" to (po.supplier ?: "N/A"),
"orderDate" to po.orderDate,
"estimatedArrivalDate" to po.estimatedArrivalDate,
"completeDate" to po.completeDate,


불러오는 중...
취소
저장