@@ -14,4 +14,16 @@ interface PurchaseOrderInfo { | |||||
val status: String | val status: String | ||||
@get:Value("#{target.supplier?.name}") | @get:Value("#{target.supplier?.name}") | ||||
val supplier: String? | val supplier: String? | ||||
} | |||||
// var escalated: Boolean? | |||||
} | |||||
data class PurchaseOrderDataClass( | |||||
val id: Long, | |||||
val code: String, | |||||
val orderDate: LocalDateTime?, | |||||
val estimatedArrivalDate: LocalDateTime?, | |||||
val completeDate: LocalDateTime?, | |||||
val status: String, | |||||
val supplier: String?, | |||||
var escalated: Boolean? | |||||
) |
@@ -11,6 +11,7 @@ import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder | |||||
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository | import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository | ||||
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository | 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.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.PurchaseOrderInfo | ||||
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus | ||||
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus | ||||
@@ -41,8 +42,25 @@ open class PurchaseOrderService( | |||||
private val currencyService: CurrencyService, | private val currencyService: CurrencyService, | ||||
private val shopService: ShopService, | private val shopService: ShopService, | ||||
) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { | ) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { | ||||
open fun getPoList(): List<PurchaseOrderInfo> { | |||||
return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() | |||||
open fun getPoList(): List<PurchaseOrderDataClass> { | |||||
val list = purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() | |||||
val mappedList = list.map { | |||||
val escalated = stockInLineRepository.findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse( | |||||
purchaseOrderId = it.id, | |||||
status = "determine" | |||||
) | |||||
PurchaseOrderDataClass( | |||||
id = it.id, | |||||
code = it.code, | |||||
orderDate = it.orderDate, | |||||
estimatedArrivalDate = it.estimatedArrivalDate, | |||||
completeDate = it.completeDate, | |||||
status = it.status, | |||||
supplier = it.supplier, | |||||
escalated = escalated.isNotEmpty(), | |||||
) | |||||
} | |||||
return mappedList | |||||
} | } | ||||
open fun allPurchaseOrder(): List<PurchaseOrder> { | open fun allPurchaseOrder(): List<PurchaseOrder> { | ||||
@@ -5,6 +5,7 @@ import com.ffii.fpsms.modules.master.entity.Items | |||||
import com.ffii.fpsms.modules.master.service.ItemsService | import com.ffii.fpsms.modules.master.service.ItemsService | ||||
import com.ffii.fpsms.modules.master.web.models.MessageResponse | import com.ffii.fpsms.modules.master.web.models.MessageResponse | ||||
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder | import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder | ||||
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.PurchaseOrderInfo | ||||
import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService | import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService | ||||
import org.springframework.web.bind.annotation.* | import org.springframework.web.bind.annotation.* | ||||
@@ -15,7 +16,7 @@ class PurchaseOrderController( | |||||
private val purchaseOrderService: PurchaseOrderService | private val purchaseOrderService: PurchaseOrderService | ||||
) { | ) { | ||||
@GetMapping("/list") | @GetMapping("/list") | ||||
fun getPoList(): List<PurchaseOrderInfo> { | |||||
fun getPoList(): List<PurchaseOrderDataClass> { | |||||
return purchaseOrderService.getPoList() | return purchaseOrderService.getPoList() | ||||
} | } | ||||
@GetMapping("/detail/{id}") // purchaseOrderId | @GetMapping("/detail/{id}") // purchaseOrderId | ||||
@@ -2,6 +2,7 @@ package com.ffii.fpsms.modules.stock.entity | |||||
import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
import com.ffii.fpsms.modules.master.entity.Items | import com.ffii.fpsms.modules.master.entity.Items | ||||
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder | |||||
import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLine | import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLine | ||||
import com.ffii.fpsms.modules.user.entity.User | import com.ffii.fpsms.modules.user.entity.User | ||||
import jakarta.persistence.* | import jakarta.persistence.* | ||||
@@ -25,6 +26,10 @@ open class StockInLine : BaseEntity<Long>() { | |||||
@Column(name = "itemNo", nullable = false, length = 20) | @Column(name = "itemNo", nullable = false, length = 20) | ||||
open var itemNo: String? = null | open var itemNo: String? = null | ||||
@ManyToOne | |||||
@JoinColumn(name = "purchaseOrderId") | |||||
open var purchaseOrder: PurchaseOrder? = null | |||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "purchaseOrderLineId") | @JoinColumn(name = "purchaseOrderLineId") | ||||
open var purchaseOrderLine: PurchaseOrderLine? = null | open var purchaseOrderLine: PurchaseOrderLine? = null | ||||
@@ -14,4 +14,5 @@ interface StockInLineRepository : AbstractRepository<StockInLine, Long> { | |||||
fun findStockInLineInfoByIdInAndDeletedFalse(id: List<Long>): List<StockInLineInfo> | fun findStockInLineInfoByIdInAndDeletedFalse(id: List<Long>): List<StockInLineInfo> | ||||
fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List<StockInLineInfo> | fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List<StockInLineInfo> | ||||
fun findStockInLineInfoByIdAndStatusAndDeletedFalse(id: Long, status: String): Optional<StockInLineInfo> | fun findStockInLineInfoByIdAndStatusAndDeletedFalse(id: Long, status: String): Optional<StockInLineInfo> | ||||
fun findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse(purchaseOrderId: Long, status: String): List<Optional<StockInLineInfo>> | |||||
} | } |
@@ -84,6 +84,7 @@ open class StockInLineService( | |||||
stockInLine.apply { | stockInLine.apply { | ||||
this.item = item | this.item = item | ||||
itemNo = item.code | itemNo = item.code | ||||
this.purchaseOrder = purchaseOrderLine.purchaseOrder | |||||
this.purchaseOrderLine = purchaseOrderLine | this.purchaseOrderLine = purchaseOrderLine | ||||
this.stockIn = stockIn | this.stockIn = stockIn | ||||
acceptedQty = request.acceptedQty | acceptedQty = request.acceptedQty | ||||
@@ -270,6 +271,7 @@ open class StockInLineService( | |||||
newStockInLine.apply { | newStockInLine.apply { | ||||
this.item = stockInLine.item | this.item = stockInLine.item | ||||
this.itemNo = stockInLine.itemNo | this.itemNo = stockInLine.itemNo | ||||
this.purchaseOrder = stockInLine.purchaseOrderLine?.purchaseOrder | |||||
this.purchaseOrderLine = stockInLine.purchaseOrderLine | this.purchaseOrderLine = stockInLine.purchaseOrderLine | ||||
this.productLotNo = stockInLine.productLotNo | this.productLotNo = stockInLine.productLotNo | ||||
this.receiptDate = stockInLine.receiptDate | this.receiptDate = stockInLine.receiptDate | ||||