| @@ -324,7 +324,6 @@ open class M18PurchaseOrderService( | |||||
| } | } | ||||
| // purchase_order_line + m18_data_log | // purchase_order_line + m18_data_log | ||||
| // TODO: check deleted po line? | |||||
| if (pot != null) { | if (pot != null) { | ||||
| // Loop for Purchase Order Lines (pot) | // Loop for Purchase Order Lines (pot) | ||||
| pot.forEach { line -> | pot.forEach { line -> | ||||
| @@ -426,6 +425,15 @@ open class M18PurchaseOrderService( | |||||
| // logger.error("${poLineRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18PurchaseOrderLineLog.id}") | // 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 { | } else { | ||||
| // pot | // pot | ||||
| // logger.error("${poLineRefType}: Saving Failure!") | // logger.error("${poLineRefType}: Saving Failure!") | ||||
| @@ -11,6 +11,7 @@ interface PurchaseOrderLineRepository : AbstractRepository<PurchaseOrderLine, Lo | |||||
| fun findByM18DataLogIdAndDeletedIsFalse(m18datalogId: Serializable): PurchaseOrderLine? | fun findByM18DataLogIdAndDeletedIsFalse(m18datalogId: Serializable): PurchaseOrderLine? | ||||
| fun findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLineInfo> | fun findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLineInfo> | ||||
| fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine> | fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine> | ||||
| fun findAllByPurchaseOrderIdAndDeletedIsFalseAndM18DataLogIsNotNull(purchaseOrderId: Long): List<PurchaseOrderLine> | |||||
| fun findAllByPurchaseOrderIdAndStatusNotAndDeletedIsFalse(purchaseOrderId: Long, status: PurchaseOrderLineStatus): List<PurchaseOrderLine> | fun findAllByPurchaseOrderIdAndStatusNotAndDeletedIsFalse(purchaseOrderId: Long, status: PurchaseOrderLineStatus): List<PurchaseOrderLine> | ||||
| // fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine> | // fun findAllByPurchaseOrderIdAndDeletedIsFalse(purchaseOrderId: Long): List<PurchaseOrderLine> | ||||
| // fun find | // fun find | ||||
| @@ -34,6 +34,26 @@ open class PurchaseOrderLineService( | |||||
| return purchaseOrderLineRepository.findByM18DataLogIdAndDeletedIsFalse(m18DataLogId) | 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> { | open fun findAllPoLineInfoByPoId(poId: Long): List<PurchaseOrderLineInfo> { | ||||
| return purchaseOrderLineRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(poId) | return purchaseOrderLineRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(poId) | ||||
| } | } | ||||