diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt index fb2a80a..dbd5d1c 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/service/PickOrderService.kt @@ -253,20 +253,56 @@ open class PickOrderService( open fun releaseConsoPickOrderInfo(consoCode: String): ReleasePickOrderInfoResponse { val zero = BigDecimal.ZERO val pos = pickOrderRepository.findAllByConsoCodeAndStatus(consoCode, PickOrderStatus.CONSOLIDATED) + + // Get Inventory Data val requiredItems = pos .flatMap { it.pickOrderLines } .groupBy { it.item?.id } - .map { (key, value) -> key to object : CurrentInventoryItemInfo { - override val id: Long? = value[0].item?.id - override val code: String? = value[0].item?.code - override val name: String? = value[0].item?.name - override var availableQty: BigDecimal? = zero - override val requiredQty: BigDecimal = value.sumOf { it.qty ?: zero } - }} // itemId - requiredQty + .map { (key, value) -> + key to object : CurrentInventoryItemInfo { + override val id: Long? = value[0].item?.id + override val code: String? = value[0].item?.code + override val name: String? = value[0].item?.name + override var availableQty: BigDecimal? = zero + override val requiredQty: BigDecimal = value.sumOf { it.qty ?: zero } + } + } // itemId - requiredQty val itemIds = requiredItems.mapNotNull { it.first } // val inventories = inventoryLotLineRepository.findCurrentInventoryByItems(itemIds) val inventories = inventoryService.allInventoriesByItemIds(itemIds) + + // Pick Orders + val releasePickOrderInfos = pos + .map { po -> + val releasePickOrderLineInfos = po.pickOrderLines.map { pol -> + val inventory = inventories.find { it.itemId == pol.item?.id } + + // Return + ReleasePickOrderLineInfo( + id = pol.id, + itemId = pol.item?.id, + itemCode = pol.item?.code, + itemName = pol.item?.name, + availableQty = inventory?.availableQty, + requiredQty = pol.qty, + uomCode = pol.uom?.code, + uomDesc = pol.uom?.udfudesc, + ) + } + + // Return + ReleasePickOrderInfo( + id = po.id, + code = po.code, + targetDate = po.targetDate, + type = po.type?.value, + status = po.status?.value, + pickOrderLines = releasePickOrderLineInfos + ) + } + + // Items val currentInventoryInfos = requiredItems.map { item -> val inventory = inventories.find { it.itemId == item.first } @@ -280,6 +316,7 @@ open class PickOrderService( return ReleasePickOrderInfoResponse( consoCode = consoCode, + pickOrders = releasePickOrderInfos, items = currentInventoryInfos, ) } diff --git a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderResponse.kt b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderResponse.kt index 0eb06d9..b83dbe1 100644 --- a/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderResponse.kt +++ b/src/main/java/com/ffii/fpsms/modules/pickOrder/web/models/ConsoPickOrderResponse.kt @@ -7,9 +7,31 @@ import java.time.LocalDateTime // Final Response - Release Conso Pick Order Page data class ReleasePickOrderInfoResponse( val consoCode: String, + val pickOrders: List, val items: List ) +// Components +data class ReleasePickOrderInfo( + val id: Long?, + val code: String?, + val targetDate: LocalDateTime?, + val type: String?, + val status: String?, + val pickOrderLines: List +) + +data class ReleasePickOrderLineInfo( + val id: Long?, + val itemId: Long?, + val itemCode: String?, + val itemName: String?, + val availableQty: BigDecimal?, + val requiredQty: BigDecimal?, + val uomCode: String?, + val uomDesc: String?, +) + // Final Response - Conso Pick Order Detail data class ConsoPickOrderResponse( val consoCode: String,