diff --git a/migration/i1.0c-release/oracle/201309041432_IDEMPIERE-1329.sql b/migration/i1.0c-release/oracle/201309041432_IDEMPIERE-1329.sql new file mode 100644 index 0000000000..c33884d2ba --- /dev/null +++ b/migration/i1.0c-release/oracle/201309041432_IDEMPIERE-1329.sql @@ -0,0 +1,15 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Sep 4, 2013 2:23:31 PM COT +-- IDEMPIERE-1329 Images are being saved with EntityType=D +ALTER TABLE AD_Image MODIFY EntityType VARCHAR2(40) DEFAULT 'U' +; + +-- Sep 4, 2013 2:23:32 PM COT +UPDATE AD_Image SET EntityType='U' WHERE EntityType IS NULL OR (EntityType='D' AND AD_Image_ID>=1000000) +; + +SELECT register_migration_script('201309041432_IDEMPIERE-1329.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201309041432_IDEMPIERE-1329.sql b/migration/i1.0c-release/postgresql/201309041432_IDEMPIERE-1329.sql new file mode 100644 index 0000000000..d2a366ad7d --- /dev/null +++ b/migration/i1.0c-release/postgresql/201309041432_IDEMPIERE-1329.sql @@ -0,0 +1,12 @@ +-- Sep 4, 2013 2:23:31 PM COT +-- IDEMPIERE-1329 Images are being saved with EntityType=D +INSERT INTO t_alter_column values('ad_image','EntityType','VARCHAR(40)',null,'U') +; + +-- Sep 4, 2013 2:23:32 PM COT +UPDATE AD_Image SET EntityType='U' WHERE EntityType IS NULL OR (EntityType='D' AND AD_Image_ID>=1000000) +; + +SELECT register_migration_script('201309041432_IDEMPIERE-1329.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 2759142f7e..018f750b36 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -44,6 +44,7 @@ import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Evaluatee; import org.compiere.util.Evaluator; +import org.compiere.util.Util; /** * Grid Field Model. @@ -897,8 +898,17 @@ public class GridField */ public String get_ValueAsString (Properties ctx, String variableName) { - if( m_vo.TabNo == 0) - return Env.getContext (ctx, m_vo.WindowNo, variableName, true); + //ref column + String foreignColumn = ""; + int f = variableName.indexOf('.'); + if (f > 0) { + foreignColumn = variableName.substring(f+1, variableName.length()); + variableName = variableName.substring(0, f); + } + + String value = null; + if( m_vo.TabNo == 0) + value = Env.getContext (ctx, m_vo.WindowNo, variableName, true); else { boolean tabOnly = false; @@ -907,8 +917,27 @@ public class GridField variableName = variableName.substring(1); tabOnly = true; } - return Env.getContext (ctx, m_vo.WindowNo, m_vo.TabNo, variableName, tabOnly, true); + value = Env.getContext (ctx, m_vo.WindowNo, m_vo.TabNo, variableName, tabOnly, true); } + if (!Util.isEmpty(value) && !Util.isEmpty(foreignColumn) && variableName.endsWith("_ID") + && getGridTab() != null) { + String refValue = ""; + int id = 0; + try { + id = Integer.parseInt(value); + } catch (Exception e){} + if (id > 0) { + MColumn column = MColumn.get(ctx, getGridTab().getTableName(), variableName); + if (column != null) { + String foreignTable = column.getReferenceTableName(); + refValue = DB.getSQLValueString(null, + "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " + + foreignTable + "_ID = ?", id); + } + } + return refValue; + } + return value; } // get_ValueAsString diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index 437081aa2e..831e9e4e1e 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -2451,7 +2451,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable // Table Open? if (!m_mTable.isOpen()) { - log.log (Level.SEVERE, "Table not open", new Exception("Table not open")); + if (targetRow >= 0) + log.log (Level.SEVERE, "Table not open", new Exception("Table not open")); + return -1; } // Row Count diff --git a/org.adempiere.base/src/org/compiere/model/MAllocationLine.java b/org.adempiere.base/src/org/compiere/model/MAllocationLine.java index f21bb52e72..bf60f9a66a 100644 --- a/org.adempiere.base/src/org/compiere/model/MAllocationLine.java +++ b/org.adempiere.base/src/org/compiere/model/MAllocationLine.java @@ -266,7 +266,7 @@ public class MAllocationLine extends X_C_AllocationLine log.warning("C_BPartner_ID different - Invoice=" + getC_BPartner_ID() + " - Payment=" + payment.getC_BPartner_ID()); if (reverse) { - if (!payment.isCashTrx()) + if (!payment.isCashbookTrx()) { payment.setIsAllocated(false); payment.saveEx(); diff --git a/org.adempiere.base/src/org/compiere/model/MDocType.java b/org.adempiere.base/src/org/compiere/model/MDocType.java index c48daad779..95eae88f4d 100644 --- a/org.adempiere.base/src/org/compiere/model/MDocType.java +++ b/org.adempiere.base/src/org/compiere/model/MDocType.java @@ -41,7 +41,7 @@ public class MDocType extends X_C_DocType /** * */ - private static final long serialVersionUID = 2641885482012907072L; + private static final long serialVersionUID = -6556521509479670059L; /** * Return the first Doc Type for this BaseType @@ -357,4 +357,14 @@ public class MDocType extends X_C_DocType return relatedDocTypeId; } + + /** + * Get translated doctype name + * @return Name if available translated + */ + public String getNameTrl() + { + return get_Translation (COLUMNNAME_Name, Env.getAD_Language(getCtx())); + } // getNameTrl + } // MDocType diff --git a/org.adempiere.base/src/org/compiere/model/MInOut.java b/org.adempiere.base/src/org/compiere/model/MInOut.java index c68d731039..6414e9215b 100644 --- a/org.adempiere.base/src/org/compiere/model/MInOut.java +++ b/org.adempiere.base/src/org/compiere/model/MInOut.java @@ -591,7 +591,7 @@ public class MInOut extends X_M_InOut implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - StringBuilder msgreturn = new StringBuilder().append(dt.getName()).append(" ").append(getDocumentNo()); + StringBuilder msgreturn = new StringBuilder().append(dt.getNameTrl()).append(" ").append(getDocumentNo()); return msgreturn.toString(); } // getDocumentInfo diff --git a/org.adempiere.base/src/org/compiere/model/MInventory.java b/org.adempiere.base/src/org/compiere/model/MInventory.java index e3c8ad4fd4..275fae9c4d 100644 --- a/org.adempiere.base/src/org/compiere/model/MInventory.java +++ b/org.adempiere.base/src/org/compiere/model/MInventory.java @@ -204,7 +204,7 @@ public class MInventory extends X_M_Inventory implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - StringBuilder msgreturn = new StringBuilder().append(dt.getName()).append(" ").append(getDocumentNo()); + StringBuilder msgreturn = new StringBuilder().append(dt.getNameTrl()).append(" ").append(getDocumentNo()); return msgreturn.toString(); } // getDocumentInfo diff --git a/org.adempiere.base/src/org/compiere/model/MInvoice.java b/org.adempiere.base/src/org/compiere/model/MInvoice.java index f11b1703e2..6b686a79d8 100644 --- a/org.adempiere.base/src/org/compiere/model/MInvoice.java +++ b/org.adempiere.base/src/org/compiere/model/MInvoice.java @@ -1046,7 +1046,7 @@ public class MInvoice extends X_C_Invoice implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - StringBuilder msgreturn = new StringBuilder().append(dt.getName()).append(" ").append(getDocumentNo()); + StringBuilder msgreturn = new StringBuilder().append(dt.getNameTrl()).append(" ").append(getDocumentNo()); return msgreturn.toString(); } // getDocumentInfo diff --git a/org.adempiere.base/src/org/compiere/model/MJournal.java b/org.adempiere.base/src/org/compiere/model/MJournal.java index 147dcb63fc..5c06479477 100644 --- a/org.adempiere.base/src/org/compiere/model/MJournal.java +++ b/org.adempiere.base/src/org/compiere/model/MJournal.java @@ -887,7 +887,7 @@ public class MJournal extends X_GL_Journal implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - StringBuilder msgreturn = new StringBuilder().append(dt.getName()).append(" ").append(getDocumentNo()); + StringBuilder msgreturn = new StringBuilder().append(dt.getNameTrl()).append(" ").append(getDocumentNo()); return msgreturn.toString(); } // getDocumentInfo diff --git a/org.adempiere.base/src/org/compiere/model/MJournalBatch.java b/org.adempiere.base/src/org/compiere/model/MJournalBatch.java index 6d2e657b9b..336cbc25f8 100644 --- a/org.adempiere.base/src/org/compiere/model/MJournalBatch.java +++ b/org.adempiere.base/src/org/compiere/model/MJournalBatch.java @@ -808,7 +808,7 @@ public class MJournalBatch extends X_GL_JournalBatch implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - StringBuilder msgreturn = new StringBuilder().append(dt.getName()).append(" ").append(getDocumentNo()); + StringBuilder msgreturn = new StringBuilder().append(dt.getNameTrl()).append(" ").append(getDocumentNo()); return msgreturn.toString(); } // getDocumentInfo diff --git a/org.adempiere.base/src/org/compiere/model/MMovement.java b/org.adempiere.base/src/org/compiere/model/MMovement.java index eabeaaf9ee..2d2af163f8 100644 --- a/org.adempiere.base/src/org/compiere/model/MMovement.java +++ b/org.adempiere.base/src/org/compiere/model/MMovement.java @@ -153,7 +153,7 @@ public class MMovement extends X_M_Movement implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - return dt.getName() + " " + getDocumentNo(); + return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** diff --git a/org.adempiere.base/src/org/compiere/model/MOrder.java b/org.adempiere.base/src/org/compiere/model/MOrder.java index bed5accc9b..68902816b9 100644 --- a/org.adempiere.base/src/org/compiere/model/MOrder.java +++ b/org.adempiere.base/src/org/compiere/model/MOrder.java @@ -591,7 +591,7 @@ public class MOrder extends X_C_Order implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID() > 0 ? getC_DocType_ID() : getC_DocTypeTarget_ID()); - return dt.getName() + " " + getDocumentNo(); + return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** diff --git a/org.adempiere.base/src/org/compiere/model/MPayment.java b/org.adempiere.base/src/org/compiere/model/MPayment.java index 9ddd4f33ba..72bc869627 100644 --- a/org.adempiere.base/src/org/compiere/model/MPayment.java +++ b/org.adempiere.base/src/org/compiere/model/MPayment.java @@ -200,7 +200,7 @@ public final class MPayment extends X_C_Payment } // resetNew /** - * Is Cashbook Transfer Trx + * Is Cash Trx * @return true if Cash Trx */ public boolean isCashTrx() @@ -208,6 +208,14 @@ public final class MPayment extends X_C_Payment return "X".equals(getTenderType()); } // isCashTrx + /** + * Is Cashbook Trx + * @return true if this is a cashbook trx + */ + public boolean isCashbookTrx() { + return isCashTrx() && !MSysConfig.getBooleanValue(MSysConfig.CASH_AS_PAYMENT, true , getAD_Client_ID()); + } + /************************************************************************** * Set Credit Card. * Need to set PatmentProcessor after Amount/Currency Set @@ -650,7 +658,7 @@ public final class MPayment extends X_C_Payment { // @Trifon - CashPayments //if ( getTenderType().equals("X") ) { - if ( isCashTrx() && !MSysConfig.getBooleanValue(MSysConfig.CASH_AS_PAYMENT, true , getAD_Client_ID())) { + if ( isCashbookTrx()) { // Cash Book Is mandatory if ( getC_CashBook_ID() <= 0 ) { log.saveError("Error", Msg.parseTranslation(getCtx(), "@Mandatory@: @C_CashBook_ID@")); @@ -1965,7 +1973,7 @@ public final class MPayment extends X_C_Payment // @Trifon - CashPayments //if ( getTenderType().equals("X") ) { - if ( isCashTrx() && !MSysConfig.getBooleanValue(MSysConfig.CASH_AS_PAYMENT, true , getAD_Client_ID())) { + if ( isCashbookTrx()) { // Create Cash Book entry if ( getC_CashBook_ID() <= 0 ) { log.saveError("Error", Msg.parseTranslation(getCtx(), "@Mandatory@: @C_CashBook_ID@")); @@ -2047,7 +2055,8 @@ public final class MPayment extends X_C_Payment setDocAction(DOCACTION_Close); return DocAction.STATUS_Completed; } // completeIt - + + /** * Set the definite document number after completed */ @@ -2750,7 +2759,7 @@ public final class MPayment extends X_C_Payment public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - return dt.getName() + " " + getDocumentNo(); + return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** diff --git a/org.adempiere.base/src/org/compiere/model/MRMA.java b/org.adempiere.base/src/org/compiere/model/MRMA.java index ef437ec4db..c1587b49f8 100644 --- a/org.adempiere.base/src/org/compiere/model/MRMA.java +++ b/org.adempiere.base/src/org/compiere/model/MRMA.java @@ -206,7 +206,7 @@ public class MRMA extends X_M_RMA implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - return dt.getName() + " " + getDocumentNo(); + return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** diff --git a/org.adempiere.base/src/org/compiere/process/DocActionTemplate.java b/org.adempiere.base/src/org/compiere/process/DocActionTemplate.java index ce10dccbfa..df0c3d5a39 100644 --- a/org.adempiere.base/src/org/compiere/process/DocActionTemplate.java +++ b/org.adempiere.base/src/org/compiere/process/DocActionTemplate.java @@ -70,7 +70,7 @@ public class DocActionTemplate extends PO implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), 0); - return dt.getName() + " " + getDocumentNo(); + return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** diff --git a/org.adempiere.base/src/org/compiere/util/Evaluator.java b/org.adempiere.base/src/org/compiere/util/Evaluator.java index bd12448b06..42b31d1d70 100644 --- a/org.adempiere.base/src/org/compiere/util/Evaluator.java +++ b/org.adempiere.base/src/org/compiere/util/Evaluator.java @@ -289,6 +289,8 @@ public class Evaluator // log.fine( variable); if (variable.startsWith("~")) variable = variable.substring(1); + if (variable.indexOf(".") > 0) + variable = variable.substring(0, variable.indexOf(".")); list.add(variable); } } // parseDepends diff --git a/org.adempiere.base/src/org/eevolution/model/MDDOrder.java b/org.adempiere.base/src/org/eevolution/model/MDDOrder.java index b97fdcc78b..94b955d2e9 100644 --- a/org.adempiere.base/src/org/eevolution/model/MDDOrder.java +++ b/org.adempiere.base/src/org/eevolution/model/MDDOrder.java @@ -387,7 +387,7 @@ public class MDDOrder extends X_DD_Order implements DocAction public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); - return dt.getName() + " " + getDocumentNo(); + return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 95dd6a9956..c9bfedf4c8 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -928,6 +928,10 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer { gridTab.resetDetailForNewParentRecord(); } + else + { + gridTab.setCurrentRow(-1, true); + } } /** diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java index 1581a1311d..6f41ab7d51 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java @@ -219,7 +219,7 @@ public class WAttachment extends Window implements EventListener this.setMaximizable(true); this.setWidth("700px"); this.setHeight("85%"); - this.setTitle("Attachment"); + this.setTitle(Msg.getMsg(Env.getCtx(), "Attachment")); this.setClosable(true); this.setSizable(true); this.setBorder("normal"); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WImageDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WImageDialog.java index 02595ab132..84acfa61cc 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WImageDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WImageDialog.java @@ -83,12 +83,15 @@ public class WImageDialog extends Window implements EventListener m_mImage = MImage.get (Env.getCtx(), 0); else { - try { - AImage aImage = new AImage(m_mImage.getName(), m_mImage.getData()); - - image.setContent(aImage); - } catch (Exception e) { - log.log(Level.WARNING, "load image", e); + if (m_mImage.getData()!=null) + { + try { + AImage aImage = new AImage(m_mImage.getName(), m_mImage.getData()); + + image.setContent(aImage); + } catch (Exception e) { + log.log(Level.WARNING, "load image", e); + } } } @@ -183,8 +186,9 @@ public class WImageDialog extends Window implements EventListener } else if (m_mImage != null && m_mImage.getAD_Image_ID() > 0) { - m_mImage.deleteEx(true); - m_mImage = null; + m_mImage.setBinaryData(null); + m_mImage.setName("-"); + m_mImage.saveEx(); } detach(); } @@ -197,6 +201,7 @@ public class WImageDialog extends Window implements EventListener { AImage img = null; image.setContent(img); + fileButton.setLabel("-"); } } diff --git a/org.adempiere.ui.zk/js/calc.js b/org.adempiere.ui.zk/js/calc.js index 2e28aee360..ee35c0b3ed 100644 --- a/org.adempiere.ui.zk/js/calc.js +++ b/org.adempiere.ui.zk/js/calc.js @@ -96,7 +96,7 @@ function Calc() var value = calcText.value; if (separator != '.') { - var re = new RegExp("[" + separator + "]"); + var re = new RegExp("[" + separator + "]", "g"); value = value.replace(re,'.'); } var result = "" + eval(value);