diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt index 99dbe1b..bc2923a 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt @@ -3,6 +3,7 @@ package com.ffii.fpsms.modules.purchaseOrder.entity import com.ffii.core.entity.BaseEntity import com.ffii.fpsms.modules.master.entity.Shop import com.ffii.fpsms.m18.entity.M18DataLog +import com.ffii.fpsms.modules.master.entity.Currency import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatusConverter import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderType @@ -43,6 +44,10 @@ open class PurchaseOrder : BaseEntity() { @Convert(converter = PurchaseOrderTypeConverter::class) open var type: PurchaseOrderType? = null + @ManyToOne + @JoinColumn(name = "currencyId") + open var currency: Currency? = null + @NotNull @ManyToOne @JoinColumn(name = "m18DataLogId", nullable = false) diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLine.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLine.kt index d5166c4..a988a24 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLine.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLine.kt @@ -14,7 +14,7 @@ import java.math.BigDecimal @Entity @Table(name = "purchase_order_line") -open class PurchaseOrderLine : BaseEntity(){ +open class PurchaseOrderLine : BaseEntity() { @NotNull @ManyToOne @JoinColumn(name = "itemId", nullable = false) @@ -52,8 +52,6 @@ open class PurchaseOrderLine : BaseEntity(){ open var m18DataLog: M18DataLog? = null @ManyToOne - @JoinColumn(name = "uomId") -// @Column(name = "uomId") + @JoinColumn(name = "uomId", nullable = false) open var uom: UomConversion? = null - } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt index 7444b3f..cecc280 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt @@ -8,7 +8,7 @@ import java.util.Optional @Repository interface PurchaseOrderRepository : AbstractRepository { - fun findByM18DataLogIdAndDeletedIsFalse(m18datalogId: Serializable): PurchaseOrder? + fun findTopByM18DataLogIdAndDeletedIsFalseOrderByModifiedDesc(m18datalogId: Serializable): PurchaseOrder? fun findPurchaseOrderInfoByDeletedIsFalse(): List fun findPurchaseOrderInfoByIdAndDeletedIsFalse(id: Long): PurchaseOrderInfo diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt index d3a96e1..3dda511 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt @@ -4,6 +4,7 @@ import com.ffii.fpsms.m18.entity.M18DataLogRepository import com.ffii.fpsms.modules.master.entity.ItemsRepository import com.ffii.fpsms.modules.master.service.CurrencyService import com.ffii.fpsms.modules.master.service.ItemsService +import com.ffii.fpsms.modules.master.service.UomConversionService import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLine import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository @@ -23,6 +24,7 @@ open class PurchaseOrderLineService( private val purchaseOrderRepository: PurchaseOrderRepository, private val m18DataLogRepository: M18DataLogRepository, private val currencyService: CurrencyService, + private val uomConversionService: UomConversionService, ) { open fun allPurchaseOrderLine(): List { return purchaseOrderLineRepository.findAll() @@ -44,8 +46,9 @@ open class PurchaseOrderLineService( val purchaseOrder = request.purchaseOrderId?.let { purchaseOrderRepository.findById(it).getOrNull() } val status = request.status?.let { status -> PurchaseOrderLineStatus.entries.find { it.value == status } } val m18DataLog = request.m18DataLogId?.let { m18DataLogRepository.findById(it).getOrNull() } - val currency = request.m18CurrencyId?.let { currencyService.findByM18Id(it) } - ?: request.currencyId?.let { currencyService.findById(it) } +// val currency = request.m18CurrencyId?.let { currencyService.findByM18Id(it) } +// ?: request.currencyId?.let { currencyService.findById(it) } + val uom = request.uomId?.let { uomConversionService.find(it).getOrNull() } purchaseOrderLine.apply { this.item = item @@ -53,6 +56,8 @@ open class PurchaseOrderLineService( this.purchaseOrder = purchaseOrder qty = request.qty price = request.price + this.uom = uom +// this.currency = currency this.status = status this.m18DataLog = m18DataLog ?: this.m18DataLog } @@ -63,7 +68,7 @@ open class PurchaseOrderLineService( itemNo = it.itemNo, qty = it.qty, price = it.price, - currency = currency?.name, +// currency = currency?.name, status = it.status?.value ) } diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt index cb9358a..8fc85f8 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt @@ -4,6 +4,8 @@ import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.JdbcDao import com.ffii.fpsms.m18.entity.M18DataLogRepository import com.ffii.fpsms.modules.master.entity.ShopRepository +import com.ffii.fpsms.modules.master.service.CurrencyService +import com.ffii.fpsms.modules.master.service.ShopService import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository @@ -33,17 +35,22 @@ open class PurchaseOrderService( private val m18DataLogRepository: M18DataLogRepository, private val stockInRepository: StockInRepository, private val stockInLineRepository: StockInLineRepository, -): AbstractBaseEntityService(jdbcDao, purchaseOrderRepository) { + private val currencyService: CurrencyService, + private val shopService: ShopService, +) : AbstractBaseEntityService(jdbcDao, purchaseOrderRepository) { open fun getPoList(): List { return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() } + open fun allPurchaseOrder(): List { return purchaseOrderRepository.findAll() } + open fun getDetailedPo(id: Long): Map { // REMINDER: po code have duplication val po = purchaseOrderRepository.findPurchaseOrderInfoByIdAndDeletedIsFalse(id) val pol = polRepository.findAllByPurchaseOrderIdAndDeletedIsFalse(id) +// val pol = polRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(id) val stockIn = stockInRepository.findByPurchaseOrderIdAndDeletedFalse(id) val stockInLine = if (stockIn == null) listOf() else { stockInLineRepository.findAllStockInLineInfoByStockInIdAndDeletedFalse(stockIn.id!!) @@ -75,13 +82,18 @@ open class PurchaseOrderService( ) return result } - open fun findPurchaseOrderByM18Id(m18DataLogId: Long): PurchaseOrder? { - return purchaseOrderRepository.findByM18DataLogIdAndDeletedIsFalse(m18DataLogId) + + open fun findByM18DataLogId(m18DataLogId: Long): PurchaseOrder? { + return purchaseOrderRepository.findTopByM18DataLogIdAndDeletedIsFalseOrderByModifiedDesc(m18DataLogId) } + open fun savePurchaseOrder(request: SavePurchaseOrderRequest): SavePurchaseOrderResponse { val purchaseOrder = request.id?.let { purchaseOrderRepository.findById(it).getOrDefault(PurchaseOrder()) } ?: PurchaseOrder() - val supplier = request.supplierId?.let { shopRepository.findById(it).getOrNull() } + val supplier = request.m18SupplierId?.let { shopService.findVendorByM18Id(it) } + ?: request.supplierId?.let { shopService.findById(it) } + val currency = request.m18CurrencyId?.let { currencyService.findByM18Id(it) } + ?: request.currencyId?.let { currencyService.findById(it) } val status = request.status?.let { status -> PurchaseOrderStatus.entries.find { it.value == status } } val type = request.type?.let { type -> PurchaseOrderType.entries.find { it.value == type } } val m18DataLog = request.m18DataLogId?.let { m18DataLogRepository.findById(it).getOrNull() } @@ -91,6 +103,7 @@ open class PurchaseOrderService( purchaseOrder.apply { code = request.code this.supplier = supplier + this.currency = currency orderDate = request.orderDate estimatedArrivalDate = request.estimatedArrivalDate completeDate = request.completeDate @@ -104,6 +117,7 @@ open class PurchaseOrderService( id = it.id, code = it.code, supplierCode = it.supplier?.code, + currencyCode = it.currency?.code, orderDate = it.orderDate, estimatedArrivalDate = it.estimatedArrivalDate, completeDate = it.completeDate, diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineRequest.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineRequest.kt index e935acb..553465f 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineRequest.kt @@ -9,8 +9,8 @@ data class SavePurchaseOrderLineRequest( val purchaseOrderId: Long?, val qty: BigDecimal?, val price: BigDecimal?, - val currencyId: Long? = null, - val m18CurrencyId: Long? = null, +// val currencyId: Long? = null, +// val m18CurrencyId: Long? = null, val status: String?, val m18DataLogId: Long?, ) \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineResponse.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineResponse.kt index 5b4c2e1..29be2b5 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineResponse.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderLineResponse.kt @@ -7,6 +7,6 @@ data class SavePurchaseOrderLineResponse ( val itemNo: String?, val qty: BigDecimal?, val price: BigDecimal?, - val currency: String?, +// val currency: String?, val status: String?, ) \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderRequest.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderRequest.kt index 0c993fc..8957981 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderRequest.kt @@ -7,7 +7,10 @@ import java.time.LocalDateTime data class SavePurchaseOrderRequest ( val id: Long?, val code: String?, - val supplierId: Long?, + val supplierId: Long? = null, + val m18SupplierId: Long? = null, + val currencyId: Long? = null, + val m18CurrencyId: Long? = null, val orderDate: LocalDateTime?, val estimatedArrivalDate: LocalDateTime?, val completeDate: LocalDateTime?, diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt index 3dd9004..59cd74b 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt @@ -8,6 +8,7 @@ data class SavePurchaseOrderResponse ( val id: Long?, val code: String?, val supplierCode: String?, + val currencyCode: String?, val orderDate: LocalDateTime?, val estimatedArrivalDate: LocalDateTime?, val completeDate: LocalDateTime?,