diff --git a/src/main/java/com/ffii/fpsms/m18/model/M18MasterDataResponse.kt b/src/main/java/com/ffii/fpsms/m18/model/M18MasterDataResponse.kt index d970f47..8edefde 100644 --- a/src/main/java/com/ffii/fpsms/m18/model/M18MasterDataResponse.kt +++ b/src/main/java/com/ffii/fpsms/m18/model/M18MasterDataResponse.kt @@ -35,6 +35,7 @@ data class M18ProductPrice ( val purUnit: Boolean, val pickUnit: Boolean, val expired: Boolean, + val endDate: Long, val ratioN: BigDecimal, val ratioD: BigDecimal, ) diff --git a/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt b/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt index ca4ad53..f23f151 100644 --- a/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt +++ b/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt @@ -17,6 +17,9 @@ import java.math.BigDecimal import java.time.LocalDateTime import java.time.format.DateTimeFormatter import com.ffii.fpsms.m18.model.SyncResult +import java.time.Instant +import java.time.LocalDate +import java.time.ZoneId @Service open class M18MasterDataService( @@ -279,7 +282,7 @@ open class M18MasterDataService( isEgg = null, isFee = null, isBag = null, - qcType = null, + qcType = null ) val savedItem = itemsService.saveItem(saveItemRequest) @@ -298,6 +301,10 @@ open class M18MasterDataService( // Update the item uom logger.info("Updating item uom...") price?.forEach { + val endMillis = it.endDate + val endInstant = Instant.ofEpochMilli(endMillis) + val now = Instant.now() + val itemUomRequest = ItemUomRequest( m18UomId = it.unitId, itemId = savedItem.id, @@ -312,7 +319,8 @@ open class M18MasterDataService( m18LastModifyDate = commonUtils.timestampToLocalDateTime(pro.lastModifyDate), ratioD = it.ratioD, ratioN = it.ratioN, - deleted = it.expired + //deleted = it.expired + deleted = endInstant.isBefore(now) ) // logger.info("saved item id: ${savedItem.id}") diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt index 452c58d..74ea098 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt @@ -26,4 +26,5 @@ interface ItemUomRespository : AbstractRepository { fun findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(itemM18Id: Long): ItemUom? fun findBaseUnitByItemIdAndStockUnitIsTrueAndDeletedIsFalse(itemId: Long): ItemUom? fun findFirstByItemIdAndUomIdAndDeletedIsFalse(itemId: Long, uomId: Long): ItemUom? + fun findByItemIdAndUomIdAndStockUnitAndDeletedIsFalse(itemId: Long, uomId: Long, stockUnit: Boolean): ItemUom? } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt index 77b5a00..083e76c 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt @@ -9,6 +9,8 @@ import java.io.IOException import java.math.BigDecimal import java.math.RoundingMode import kotlin.jvm.optionals.getOrNull +import org.slf4j.Logger +import org.slf4j.LoggerFactory @Service open class ItemUomService( @@ -17,6 +19,8 @@ open class ItemUomService( val itemUomRespository: ItemUomRespository, val currencyService: CurrencyService ) { + val logger = org.slf4j.LoggerFactory.getLogger(this::class.java) + open fun findAllByItemsId(itemId: Long): List { return itemUomRespository.findAllByItemIdAndDeletedIsFalse(itemId); } @@ -44,6 +48,10 @@ open class ItemUomService( return itemUomRespository.findFirstByItemIdAndUomIdAndDeletedIsFalse(itemId, uomId) } + open fun findByItemIdAndUomIdAndStockUnit(itemId: Long, uomId: Long, stockUnit: Boolean): ItemUom? { + return itemUomRespository.findByItemIdAndUomIdAndStockUnitAndDeletedIsFalse(itemId, uomId, stockUnit) + } + open fun findPurchaseUnitByM18ItemId(m18ItemId: Long): ItemUom? { return itemUomRespository.findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(m18ItemId) } @@ -79,7 +87,7 @@ open class ItemUomService( } open fun convertQtyToStockQty(itemId: Long, uomId: Long, sourceQty: BigDecimal): BigDecimal { - val itemUom = findFirstByItemIdAndUomId(itemId, uomId) + val itemUom = findFirstByItemIdAndUomId(itemId, uomId) ?: return sourceQty; val stockUnit = findStockUnitByItemId(itemId) ?: return BigDecimal.ZERO; val one = BigDecimal.ONE; @@ -93,9 +101,11 @@ open class ItemUomService( // See if need to update the response open fun saveItemUom(request: ItemUomRequest): ItemUom { val itemUom = request.m18Id?.let { findByM18Id(it) } ?: request.id?.let { findById(it) } ?: ItemUom() - if (request.m18LastModifyDate == itemUom.m18LastModifyDate) { - return itemUom - } + + //if (request.m18LastModifyDate == itemUom.m18LastModifyDate) { + // logger.info("Skipping update - m18LastModifyDate unchanged") + // return itemUom + //} val item = request.itemId?.let { itemsService.find(it).getOrNull() } val uom = request.m18UomId?.let { uomConversionService.findByM18Id(it) } ?: request.uomId?.let { uomConversionService.find(it).getOrNull() } @@ -115,7 +125,7 @@ open class ItemUomService( m18LastModifyDate = request.m18LastModifyDate ratioD = request.ratioD ratioN = request.ratioN - deleted = request.deleted + deleted = request.deleted // ← EXPLICIT assignment (same as before) } val savedItemUom = itemUomRespository.saveAndFlush(itemUom)