From 38ac6686fecf2b092e70a87a80f1441eaedc2b83 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 13 Oct 2018 15:44:31 +0200 Subject: [PATCH] IDEMPIERE-2395 NoteDelete leaving orphan attachments --- .../src/org/idempiere/process/CleanOrphanCascade.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base.process/src/org/idempiere/process/CleanOrphanCascade.java b/org.adempiere.base.process/src/org/idempiere/process/CleanOrphanCascade.java index 4c737823c6..bec999a7c3 100644 --- a/org.adempiere.base.process/src/org/idempiere/process/CleanOrphanCascade.java +++ b/org.adempiere.base.process/src/org/idempiere/process/CleanOrphanCascade.java @@ -100,11 +100,18 @@ public class CleanOrphanCascade extends SvrProcess int refTableID = ((BigDecimal) row.get(0)).intValue(); String refTableName = row.get(1).toString(); + MTable refTable = MTable.get(getCtx(), refTableID); + if (refTable.getKeyColumns().length != 1) { + log.warning("Wrong reference for table " + tableName + " -> " + refTableName); + continue; + } + String colRef = refTable.getKeyColumns()[0]; + StringBuilder whereClause = new StringBuilder(); whereClause.append("AD_Table_ID = ").append(refTableID); - whereClause.append(" AND NOT EXISTS (SELECT ").append(refTableName).append("_ID "); + whereClause.append(" AND NOT EXISTS (SELECT ").append(colRef); whereClause.append(" FROM ").append(refTableName).append(" "); - whereClause.append(" WHERE ").append(refTableName).append(".").append(refTableName).append("_ID = ").append(tableName).append(".Record_ID)"); + whereClause.append(" WHERE ").append(refTableName).append(".").append(colRef).append(" = ").append(tableName).append(".Record_ID)"); int noDel = 0; if (MAttachment.Table_Name.equals(tableName)) {