| @@ -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?, | ||||