@@ -3,6 +3,7 @@ package com.ffii.fpsms.modules.purchaseOrder.entity | |||||
import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
import com.ffii.fpsms.modules.master.entity.Shop | import com.ffii.fpsms.modules.master.entity.Shop | ||||
import com.ffii.fpsms.m18.entity.M18DataLog | 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.PurchaseOrderStatus | ||||
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatusConverter | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatusConverter | ||||
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderType | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderType | ||||
@@ -43,6 +44,10 @@ open class PurchaseOrder : BaseEntity<Long>() { | |||||
@Convert(converter = PurchaseOrderTypeConverter::class) | @Convert(converter = PurchaseOrderTypeConverter::class) | ||||
open var type: PurchaseOrderType? = null | open var type: PurchaseOrderType? = null | ||||
@ManyToOne | |||||
@JoinColumn(name = "currencyId") | |||||
open var currency: Currency? = null | |||||
@NotNull | @NotNull | ||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "m18DataLogId", nullable = false) | @JoinColumn(name = "m18DataLogId", nullable = false) | ||||
@@ -14,7 +14,7 @@ import java.math.BigDecimal | |||||
@Entity | @Entity | ||||
@Table(name = "purchase_order_line") | @Table(name = "purchase_order_line") | ||||
open class PurchaseOrderLine : BaseEntity<Long>(){ | |||||
open class PurchaseOrderLine : BaseEntity<Long>() { | |||||
@NotNull | @NotNull | ||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "itemId", nullable = false) | @JoinColumn(name = "itemId", nullable = false) | ||||
@@ -52,8 +52,6 @@ open class PurchaseOrderLine : BaseEntity<Long>(){ | |||||
open var m18DataLog: M18DataLog? = null | open var m18DataLog: M18DataLog? = null | ||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "uomId") | |||||
// @Column(name = "uomId") | |||||
@JoinColumn(name = "uomId", nullable = false) | |||||
open var uom: UomConversion? = null | open var uom: UomConversion? = null | ||||
} | } |
@@ -8,7 +8,7 @@ import java.util.Optional | |||||
@Repository | @Repository | ||||
interface PurchaseOrderRepository : AbstractRepository<PurchaseOrder, Long> { | interface PurchaseOrderRepository : AbstractRepository<PurchaseOrder, Long> { | ||||
fun findByM18DataLogIdAndDeletedIsFalse(m18datalogId: Serializable): PurchaseOrder? | |||||
fun findTopByM18DataLogIdAndDeletedIsFalseOrderByModifiedDesc(m18datalogId: Serializable): PurchaseOrder? | |||||
fun findPurchaseOrderInfoByDeletedIsFalse(): List<PurchaseOrderInfo> | fun findPurchaseOrderInfoByDeletedIsFalse(): List<PurchaseOrderInfo> | ||||
fun findPurchaseOrderInfoByIdAndDeletedIsFalse(id: Long): PurchaseOrderInfo | fun findPurchaseOrderInfoByIdAndDeletedIsFalse(id: Long): PurchaseOrderInfo | ||||
@@ -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.entity.ItemsRepository | ||||
import com.ffii.fpsms.modules.master.service.CurrencyService | import com.ffii.fpsms.modules.master.service.CurrencyService | ||||
import com.ffii.fpsms.modules.master.service.ItemsService | 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.PurchaseOrderLine | ||||
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 | ||||
@@ -23,6 +24,7 @@ open class PurchaseOrderLineService( | |||||
private val purchaseOrderRepository: PurchaseOrderRepository, | private val purchaseOrderRepository: PurchaseOrderRepository, | ||||
private val m18DataLogRepository: M18DataLogRepository, | private val m18DataLogRepository: M18DataLogRepository, | ||||
private val currencyService: CurrencyService, | private val currencyService: CurrencyService, | ||||
private val uomConversionService: UomConversionService, | |||||
) { | ) { | ||||
open fun allPurchaseOrderLine(): List<PurchaseOrderLine> { | open fun allPurchaseOrderLine(): List<PurchaseOrderLine> { | ||||
return purchaseOrderLineRepository.findAll() | return purchaseOrderLineRepository.findAll() | ||||
@@ -44,8 +46,9 @@ open class PurchaseOrderLineService( | |||||
val purchaseOrder = request.purchaseOrderId?.let { purchaseOrderRepository.findById(it).getOrNull() } | val purchaseOrder = request.purchaseOrderId?.let { purchaseOrderRepository.findById(it).getOrNull() } | ||||
val status = request.status?.let { status -> PurchaseOrderLineStatus.entries.find { it.value == status } } | val status = request.status?.let { status -> PurchaseOrderLineStatus.entries.find { it.value == status } } | ||||
val m18DataLog = request.m18DataLogId?.let { m18DataLogRepository.findById(it).getOrNull() } | 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 { | purchaseOrderLine.apply { | ||||
this.item = item | this.item = item | ||||
@@ -53,6 +56,8 @@ open class PurchaseOrderLineService( | |||||
this.purchaseOrder = purchaseOrder | this.purchaseOrder = purchaseOrder | ||||
qty = request.qty | qty = request.qty | ||||
price = request.price | price = request.price | ||||
this.uom = uom | |||||
// this.currency = currency | |||||
this.status = status | this.status = status | ||||
this.m18DataLog = m18DataLog ?: this.m18DataLog | this.m18DataLog = m18DataLog ?: this.m18DataLog | ||||
} | } | ||||
@@ -63,7 +68,7 @@ open class PurchaseOrderLineService( | |||||
itemNo = it.itemNo, | itemNo = it.itemNo, | ||||
qty = it.qty, | qty = it.qty, | ||||
price = it.price, | price = it.price, | ||||
currency = currency?.name, | |||||
// currency = currency?.name, | |||||
status = it.status?.value | status = it.status?.value | ||||
) | ) | ||||
} | } | ||||
@@ -4,6 +4,8 @@ import com.ffii.core.support.AbstractBaseEntityService | |||||
import com.ffii.core.support.JdbcDao | import com.ffii.core.support.JdbcDao | ||||
import com.ffii.fpsms.m18.entity.M18DataLogRepository | import com.ffii.fpsms.m18.entity.M18DataLogRepository | ||||
import com.ffii.fpsms.modules.master.entity.ShopRepository | 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.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 | ||||
@@ -33,17 +35,22 @@ open class PurchaseOrderService( | |||||
private val m18DataLogRepository: M18DataLogRepository, | private val m18DataLogRepository: M18DataLogRepository, | ||||
private val stockInRepository: StockInRepository, | private val stockInRepository: StockInRepository, | ||||
private val stockInLineRepository: StockInLineRepository, | private val stockInLineRepository: StockInLineRepository, | ||||
): AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { | |||||
private val currencyService: CurrencyService, | |||||
private val shopService: ShopService, | |||||
) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { | |||||
open fun getPoList(): List<PurchaseOrderInfo> { | open fun getPoList(): List<PurchaseOrderInfo> { | ||||
return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() | return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() | ||||
} | } | ||||
open fun allPurchaseOrder(): List<PurchaseOrder> { | open fun allPurchaseOrder(): List<PurchaseOrder> { | ||||
return purchaseOrderRepository.findAll() | return purchaseOrderRepository.findAll() | ||||
} | } | ||||
open fun getDetailedPo(id: Long): Map<String, Any> { | open fun getDetailedPo(id: Long): Map<String, Any> { | ||||
// REMINDER: po code have duplication | // REMINDER: po code have duplication | ||||
val po = purchaseOrderRepository.findPurchaseOrderInfoByIdAndDeletedIsFalse(id) | val po = purchaseOrderRepository.findPurchaseOrderInfoByIdAndDeletedIsFalse(id) | ||||
val pol = polRepository.findAllByPurchaseOrderIdAndDeletedIsFalse(id) | val pol = polRepository.findAllByPurchaseOrderIdAndDeletedIsFalse(id) | ||||
// val pol = polRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(id) | |||||
val stockIn = stockInRepository.findByPurchaseOrderIdAndDeletedFalse(id) | val stockIn = stockInRepository.findByPurchaseOrderIdAndDeletedFalse(id) | ||||
val stockInLine = if (stockIn == null) listOf() else { | val stockInLine = if (stockIn == null) listOf() else { | ||||
stockInLineRepository.findAllStockInLineInfoByStockInIdAndDeletedFalse(stockIn.id!!) | stockInLineRepository.findAllStockInLineInfoByStockInIdAndDeletedFalse(stockIn.id!!) | ||||
@@ -75,13 +82,18 @@ open class PurchaseOrderService( | |||||
) | ) | ||||
return result | 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 { | open fun savePurchaseOrder(request: SavePurchaseOrderRequest): SavePurchaseOrderResponse { | ||||
val purchaseOrder = | val purchaseOrder = | ||||
request.id?.let { purchaseOrderRepository.findById(it).getOrDefault(PurchaseOrder()) } ?: 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 status = request.status?.let { status -> PurchaseOrderStatus.entries.find { it.value == status } } | ||||
val type = request.type?.let { type -> PurchaseOrderType.entries.find { it.value == type } } | val type = request.type?.let { type -> PurchaseOrderType.entries.find { it.value == type } } | ||||
val m18DataLog = request.m18DataLogId?.let { m18DataLogRepository.findById(it).getOrNull() } | val m18DataLog = request.m18DataLogId?.let { m18DataLogRepository.findById(it).getOrNull() } | ||||
@@ -91,6 +103,7 @@ open class PurchaseOrderService( | |||||
purchaseOrder.apply { | purchaseOrder.apply { | ||||
code = request.code | code = request.code | ||||
this.supplier = supplier | this.supplier = supplier | ||||
this.currency = currency | |||||
orderDate = request.orderDate | orderDate = request.orderDate | ||||
estimatedArrivalDate = request.estimatedArrivalDate | estimatedArrivalDate = request.estimatedArrivalDate | ||||
completeDate = request.completeDate | completeDate = request.completeDate | ||||
@@ -104,6 +117,7 @@ open class PurchaseOrderService( | |||||
id = it.id, | id = it.id, | ||||
code = it.code, | code = it.code, | ||||
supplierCode = it.supplier?.code, | supplierCode = it.supplier?.code, | ||||
currencyCode = it.currency?.code, | |||||
orderDate = it.orderDate, | orderDate = it.orderDate, | ||||
estimatedArrivalDate = it.estimatedArrivalDate, | estimatedArrivalDate = it.estimatedArrivalDate, | ||||
completeDate = it.completeDate, | completeDate = it.completeDate, | ||||
@@ -9,8 +9,8 @@ data class SavePurchaseOrderLineRequest( | |||||
val purchaseOrderId: Long?, | val purchaseOrderId: Long?, | ||||
val qty: BigDecimal?, | val qty: BigDecimal?, | ||||
val price: BigDecimal?, | val price: BigDecimal?, | ||||
val currencyId: Long? = null, | |||||
val m18CurrencyId: Long? = null, | |||||
// val currencyId: Long? = null, | |||||
// val m18CurrencyId: Long? = null, | |||||
val status: String?, | val status: String?, | ||||
val m18DataLogId: Long?, | val m18DataLogId: Long?, | ||||
) | ) |
@@ -7,6 +7,6 @@ data class SavePurchaseOrderLineResponse ( | |||||
val itemNo: String?, | val itemNo: String?, | ||||
val qty: BigDecimal?, | val qty: BigDecimal?, | ||||
val price: BigDecimal?, | val price: BigDecimal?, | ||||
val currency: String?, | |||||
// val currency: String?, | |||||
val status: String?, | val status: String?, | ||||
) | ) |
@@ -7,7 +7,10 @@ import java.time.LocalDateTime | |||||
data class SavePurchaseOrderRequest ( | data class SavePurchaseOrderRequest ( | ||||
val id: Long?, | val id: Long?, | ||||
val code: String?, | 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 orderDate: LocalDateTime?, | ||||
val estimatedArrivalDate: LocalDateTime?, | val estimatedArrivalDate: LocalDateTime?, | ||||
val completeDate: LocalDateTime?, | val completeDate: LocalDateTime?, | ||||
@@ -8,6 +8,7 @@ data class SavePurchaseOrderResponse ( | |||||
val id: Long?, | val id: Long?, | ||||
val code: String?, | val code: String?, | ||||
val supplierCode: String?, | val supplierCode: String?, | ||||
val currencyCode: String?, | |||||
val orderDate: LocalDateTime?, | val orderDate: LocalDateTime?, | ||||
val estimatedArrivalDate: LocalDateTime?, | val estimatedArrivalDate: LocalDateTime?, | ||||
val completeDate: LocalDateTime?, | val completeDate: LocalDateTime?, | ||||