diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index efb580ab51..c7327c5728 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -3799,6 +3799,7 @@ && is_ValueChanged(p_info.getColumnName(i))) .append(tableName).append("_Trl SET "); // + ArrayList values = new ArrayList(); StringBuilder sqlcols = new StringBuilder(); for (int i = 0; i < p_info.getColumnCount(); i++) { @@ -3806,19 +3807,8 @@ && is_ValueChanged(p_info.getColumnName(i))) if (p_info.isColumnTranslated(i) && is_ValueChanged(columnName)) { - sqlcols.append(columnName).append("="); - Object value = get_Value(columnName); - if (value == null) - sqlcols.append("NULL"); - else if (value instanceof String) - sqlcols.append(DB.TO_STRING((String)value)); - else if (value instanceof Boolean) - sqlcols.append(((Boolean)value).booleanValue() ? "'Y'" : "'N'"); - else if (value instanceof Timestamp) - sqlcols.append(DB.TO_DATE((Timestamp)value)); - else - sqlcols.append(value.toString()); - sqlcols.append(","); + sqlcols.append(columnName).append("=?,"); + values.add(get_Value(columnName)); // Reset of related translation cache entries String[] availableLanguages = Language.getNames(); @@ -3838,6 +3828,9 @@ else if (value instanceof Timestamp) int no = -1; try { + Object[] params = new Object[values.size()]; + values.toArray(params); + if (client.isMultiLingualDocument()) { if (client.getAD_Language().equals(baselang)) { // tenant language = base language @@ -3858,7 +3851,7 @@ else if (value instanceof Timestamp) .append("IsTranslated='Y'") .append(whereid) .append(getAD_Client_ID() == 0 ? andBaseLang : andClientLang); - no = DB.executeUpdateEx(sqlexec.toString(), m_trxName); + no = DB.executeUpdateEx(sqlexec.toString(), params, m_trxName); if (log.isLoggable(Level.FINE)) log.fine("#" + no); if (no >= 0) { // set other translations as untranslated @@ -3879,7 +3872,7 @@ else if (value instanceof Timestamp) .append(sqlcols) .append("IsTranslated='Y'") .append(whereid); - no = DB.executeUpdateEx(sqlexec.toString(), m_trxName); + no = DB.executeUpdateEx(sqlexec.toString(), params, m_trxName); if (log.isLoggable(Level.FINE)) log.fine("#" + no); } } catch (DBException e) {