Преглед на файлове

Mark not exist po line as deleted when sync

master
vluk@2fi-solutions.com.hk преди 2 дни
родител
ревизия
3cf33f883e
променени са 3 файла, в които са добавени 30 реда и са изтрити 1 реда
  1. +9
    -1
      src/main/java/com/ffii/fpsms/m18/service/M18PurchaseOrderService.kt
  2. +1
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLineRepository.kt
  3. +20
    -0
      src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt

+ 9
- 1
src/main/java/com/ffii/fpsms/m18/service/M18PurchaseOrderService.kt Целия файл

@@ -324,7 +324,6 @@ open class M18PurchaseOrderService(
}

// purchase_order_line + m18_data_log
// TODO: check deleted po line?
if (pot != null) {
// Loop for Purchase Order Lines (pot)
pot.forEach { line ->
@@ -426,6 +425,15 @@ open class M18PurchaseOrderService(
// logger.error("${poLineRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18PurchaseOrderLineLog.id}")
}
}
// Mark as deleted any local PO lines that no longer exist in M18 (removed there)
if (purchaseOrderId != null) {
val m18LineIds = pot.map { it.id }.toSet()
val markedDeleted =
purchaseOrderLineService.markDeletedLinesNotInM18(purchaseOrderId, m18LineIds)
if (markedDeleted > 0) {
logger.info("${poLineRefType}: Marked $markedDeleted line(s) as deleted (not in M18). PO ID: $purchaseOrderId | M18 PO ID: ${purchaseOrder.id}")
}
}
} else {
// pot
// logger.error("${poLineRefType}: Saving Failure!")


+ 1
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderLineRepository.kt Целия файл

@@ -11,6 +11,7 @@ interface PurchaseOrderLineRepository : AbstractRepository<PurchaseOrderLine, Lo
fun findByM18DataLogIdAndDeletedIsFalse(m18datalogId: Serializable): PurchaseOrderLine?
fun findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLineInfo>
fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine>
fun findAllByPurchaseOrderIdAndDeletedIsFalseAndM18DataLogIsNotNull(purchaseOrderId: Long): List<PurchaseOrderLine>
fun findAllByPurchaseOrderIdAndStatusNotAndDeletedIsFalse(purchaseOrderId: Long, status: PurchaseOrderLineStatus): List<PurchaseOrderLine>
// fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine>
// fun find

+ 20
- 0
src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderLineService.kt Целия файл

@@ -34,6 +34,26 @@ open class PurchaseOrderLineService(
return purchaseOrderLineRepository.findByM18DataLogIdAndDeletedIsFalse(m18DataLogId)
}

/**
* Mark as deleted any local PO lines for this PO that were synced from M18 but whose M18 line id
* is not in the given set (i.e. the line was deleted in M18).
* @return number of lines marked as deleted
*/
open fun markDeletedLinesNotInM18(purchaseOrderId: Long, m18LineIds: Set<Long>): Int {
val linesFromM18 =
purchaseOrderLineRepository.findAllByPurchaseOrderIdAndDeletedIsFalseAndM18DataLogIsNotNull(purchaseOrderId)
var count = 0
linesFromM18.forEach { line ->
val m18Id = line.m18DataLog?.m18Id ?: return@forEach
if (m18Id !in m18LineIds) {
line.deleted = true
purchaseOrderLineRepository.saveAndFlush(line)
count++
}
}
return count
}

open fun findAllPoLineInfoByPoId(poId: Long): List<PurchaseOrderLineInfo> {
return purchaseOrderLineRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(poId)
}


Зареждане…
Отказ
Запис