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