diff --git a/org.adempiere.base/src/org/compiere/model/MAttachment.java b/org.adempiere.base/src/org/compiere/model/MAttachment.java index 1c84f28418..c868e43e42 100644 --- a/org.adempiere.base/src/org/compiere/model/MAttachment.java +++ b/org.adempiere.base/src/org/compiere/model/MAttachment.java @@ -25,6 +25,7 @@ import java.nio.file.Path; import java.sql.ResultSet; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.List; import java.util.Properties; import java.util.logging.Level; import java.util.stream.Collectors; @@ -58,7 +59,7 @@ public class MAttachment extends X_AD_Attachment /** * */ - private static final long serialVersionUID = 1447398065894212273L; + private static final long serialVersionUID = 5615231734722570658L; /** * @@ -69,7 +70,7 @@ public class MAttachment extends X_AD_Attachment */ public static MAttachment get (Properties ctx, int AD_Table_ID, int Record_ID) { - return get(ctx, AD_Table_ID, Record_ID, (String)null); + return get(ctx, AD_Table_ID, Record_ID, (String)null, (String)null); } /** @@ -82,15 +83,41 @@ public class MAttachment extends X_AD_Attachment */ public static MAttachment get (Properties ctx, int AD_Table_ID, int Record_ID, String trxName) { - final String whereClause = I_AD_Attachment.COLUMNNAME_AD_Table_ID+"=? AND "+I_AD_Attachment.COLUMNNAME_Record_ID+"=?"; - MAttachment retValue = new Query(ctx,I_AD_Attachment.Table_Name,whereClause, trxName) - .setParameters(AD_Table_ID, Record_ID) - .first(); + return get(ctx, AD_Table_ID, Record_ID, (String)null, trxName); + } // get + + /** + * Get Attachment (if there are more than one attachment it gets the first in no specific order) + * @param ctx context + * @param AD_Table_ID table + * @param Record_ID record + * @param Record_UU record UUID + * @param trxName + * @return attachment or null + */ + public static MAttachment get (Properties ctx, int AD_Table_ID, int Record_ID, String Record_UU, String trxName) + { + StringBuilder whereClause = new StringBuilder("AD_Table_ID=?"); + List params = new ArrayList(); + params.add(AD_Table_ID); + if (Record_ID > 0) { + whereClause.append(" AND Record_ID=?"); + params.add(Record_ID); + } else if (!Util.isEmpty(Record_UU)) { + whereClause.append(" AND Record_UU=?"); + params.add(Record_UU); + } + if (params.size() == 1) { + s_log.warning("Wrong call, no Record_ID neither Record_UU for AD_Table_ID=" + AD_Table_ID + " TrxName=" + trxName); + return null; + } + MAttachment retValue = new Query(ctx, Table_Name, whereClause.toString(), trxName) + .setParameters(params) + .first(); return retValue; } // get /** Static Logger */ - @SuppressWarnings("unused") private static CLogger s_log = CLogger.getCLogger (MAttachment.class); private MStorageProvider provider; diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index d2e3e27201..717bcf47bc 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -5029,7 +5029,7 @@ public abstract class PO public MAttachment getAttachment (boolean requery) { if (m_attachment == null || requery) - m_attachment = MAttachment.get (getCtx(), p_info.getAD_Table_ID(), get_ID()); + m_attachment = MAttachment.get (getCtx(), p_info.getAD_Table_ID(), get_ID(), get_UUID(), null); return m_attachment; } // getAttachment diff --git a/org.adempiere.base/src/org/compiere/print/MPrintTableFormat.java b/org.adempiere.base/src/org/compiere/print/MPrintTableFormat.java index 03fd91199c..066a58cae2 100644 --- a/org.adempiere.base/src/org/compiere/print/MPrintTableFormat.java +++ b/org.adempiere.base/src/org/compiere/print/MPrintTableFormat.java @@ -700,7 +700,7 @@ public class MPrintTableFormat extends X_AD_PrintTableFormat implements Immutabl // if(isImageIsAttached()) { - MAttachment attachment = MAttachment.get(getCtx(), Table_ID, get_ID()); + MAttachment attachment = MAttachment.get(getCtx(), Table_ID, get_ID(), get_UUID(), null); if (attachment == null) { log.log(Level.WARNING, "No Attachment - ID=" + get_ID()); diff --git a/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java b/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java index e745c1e2ac..30b86e12ea 100644 --- a/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java +++ b/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java @@ -273,8 +273,7 @@ public class ImageElement extends PrintElement */ private void loadAttachment(int AD_PrintFormatItem_ID) { - MAttachment attachment = MAttachment.get(Env.getCtx(), - MPrintFormatItem.Table_ID, AD_PrintFormatItem_ID); + MAttachment attachment = MAttachment.get(Env.getCtx(), MPrintFormatItem.Table_ID, AD_PrintFormatItem_ID, null, null); if (attachment == null) { log.log(Level.WARNING, "No Attachment - AD_PrintFormatItem_ID=" + AD_PrintFormatItem_ID); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 735a809415..95f3b20f09 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1154,7 +1154,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements { int record_ID = adTabbox.getSelectedGridTab().getRecord_ID(); String recordUU = adTabbox.getSelectedGridTab().getRecord_UU(); - if (logger.isLoggable(Level.INFO)) logger.info("Record_ID=" + record_ID); + if (logger.isLoggable(Level.INFO)) logger.info("Record_ID=" + record_ID + ", Record_UU=" + recordUU); if (record_ID== -1 && Util.isEmpty(recordUU)) // No Key { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java index 139dc1b559..4d0db2b020 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java @@ -953,7 +953,7 @@ public class WEMailDialog extends Window implements EventListener, ValueC MMailText mt = (MMailText) MUser.get(Env.getCtx()).getR_DefaultMailText(); if (mt.get_ID() > 0) { mt.setPO(MUser.get(Env.getCtx())); - MAttachment attachment = MAttachment.get(Env.getCtx(), MMailText.Table_ID, mt.get_ID()); + MAttachment attachment = MAttachment.get(Env.getCtx(), MMailText.Table_ID, mt.get_ID(), null, null); if (attachment != null) { MAttachmentEntry[] entries = attachment.getEntries(); for (MAttachmentEntry entry : entries) {