diff --git a/migration/i5.1z/oracle/201411190748_IDEMPIERE-2319.sql b/migration/i5.1z/oracle/201411190748_IDEMPIERE-2319.sql new file mode 100644 index 0000000000..5f11966a8c --- /dev/null +++ b/migration/i5.1z/oracle/201411190748_IDEMPIERE-2319.sql @@ -0,0 +1,42 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Nov 18, 2014 5:10:06 PM IST +-- IDEMPIERE-2319: Adding date value type support in Attribute set +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,AD_Org_ID,CreatedBy,UpdatedBy,IsActive,AD_Client_ID,EntityType,Created,Updated) VALUES ('ValueDate',202805,'Value Date','Value Date','ba9c466b-4436-47ec-b193-5d3b5e9ce30a',0,100,100,'Y',0,'D',TO_DATE('2014-11-18 17:10:05','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2014-11-18 17:10:05','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 5:10:42 PM IST +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Name,IsAllowCopy,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,IsSecure,AD_Element_ID,AD_Reference_ID,AD_Table_ID,Updated) VALUES (0,'N',0,211801,'N','N','N',0,'N',7,'N','N','N','Y','986f6b4a-a721-4fa3-a865-89416a9adb6e','Y','ValueDate','Value Date','Y',100,0,'Y',TO_DATE('2014-11-18 17:10:41','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N','N',202805,15,561,TO_DATE('2014-11-18 17:10:41','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 5:10:50 PM IST +ALTER TABLE M_AttributeInstance ADD ValueDate DATE DEFAULT NULL +; + +-- Nov 18, 2014 3:37:28 PM IST +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,IsKey,IsAutocomplete,IsAllowLogging,MandatoryLogic,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,IsSecure,AD_Element_ID,AD_Reference_ID,AD_Table_ID,Updated) VALUES (0,'N',0,211800,'N','N','N',0,'N',20,'N','N','N','Y','@AttributeValueType@=''D''','e5d9f3a8-5bc5-44ea-8bd0-4c00f54785c0','Y','DateFormat','Date format used in the input format','The date format is usually detected, but sometimes need to be defined.','Date Format','Y',100,0,'Y',TO_DATE('2014-11-18 15:37:27','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N','N',2286,10,562,TO_DATE('2014-11-18 15:37:27','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 3:37:33 PM IST +ALTER TABLE M_Attribute ADD DateFormat VARCHAR2(20) DEFAULT NULL +; + +-- Nov 18, 2014 3:39:07 PM IST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Name,AD_Ref_List_UU,Value,CreatedBy,UpdatedBy,Created,IsActive,EntityType,AD_Client_ID,AD_Org_ID,Updated) VALUES (200279,326,'Date','34c7fbc0-6718-433e-a55c-6d203496e06a','D',100,100,TO_DATE('2014-11-18 15:39:07','YYYY-MM-DD HH24:MI:SS'),'Y','D',0,0,TO_DATE('2014-11-18 15:39:07','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 3:41:05 PM IST +UPDATE AD_Column SET EntityType='D',Updated=TO_DATE('2014-11-18 15:41:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=211800 +; + +-- Nov 18, 2014 3:41:33 PM IST +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,CreatedBy,IsActive,IsDisplayedGrid,SeqNoGrid,AD_Client_ID,ColumnSpan,AD_Column_ID,EntityType,Created,Updated) VALUES ('N',462,20,'N','N',100,'Y',203472,'N','The date format is usually detected, but sometimes need to be defined.','Date format used in the input format','Date Format','361e4d18-9ad0-4b74-b730-bc6620502b40','Y','N',100,0,100,'Y','Y',100,0,2,211800,'D',TO_DATE('2014-11-18 15:41:32','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2014-11-18 15:41:32','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 3:43:32 PM IST +UPDATE AD_Field SET DisplayLogic='@AttributeValueType@=''D''', MandatoryLogic='@AttributeValueType@=''D''',Updated=TO_DATE('2014-11-18 15:43:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203472 +; + +SELECT register_migration_script('201411140854_IDEMPIERE-2315.sql') FROM dual +; diff --git a/migration/i5.1z/postgresql/201411190748_IDEMPIERE-2319.sql b/migration/i5.1z/postgresql/201411190748_IDEMPIERE-2319.sql new file mode 100644 index 0000000000..e1dd7662d4 --- /dev/null +++ b/migration/i5.1z/postgresql/201411190748_IDEMPIERE-2319.sql @@ -0,0 +1,39 @@ +-- Nov 18, 2014 5:10:06 PM IST +-- IDEMPIERE-2319: Adding date value type support in Attribute set +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,AD_Org_ID,CreatedBy,UpdatedBy,IsActive,AD_Client_ID,EntityType,Created,Updated) VALUES ('ValueDate',202805,'Value Date','Value Date','ba9c466b-4436-47ec-b193-5d3b5e9ce30a',0,100,100,'Y',0,'D',TO_TIMESTAMP('2014-11-18 17:10:05','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2014-11-18 17:10:05','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 5:10:42 PM IST +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Name,IsAllowCopy,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,IsSecure,AD_Element_ID,AD_Reference_ID,AD_Table_ID,Updated) VALUES (0,'N',0,211801,'N','N','N',0,'N',7,'N','N','N','Y','986f6b4a-a721-4fa3-a865-89416a9adb6e','Y','ValueDate','Value Date','Y',100,0,'Y',TO_TIMESTAMP('2014-11-18 17:10:41','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N','N',202805,15,561,TO_TIMESTAMP('2014-11-18 17:10:41','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 5:10:50 PM IST +ALTER TABLE M_AttributeInstance ADD COLUMN ValueDate TIMESTAMP DEFAULT NULL +; + +-- Nov 18, 2014 3:37:28 PM IST +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,IsKey,IsAutocomplete,IsAllowLogging,MandatoryLogic,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,IsSecure,AD_Element_ID,AD_Reference_ID,AD_Table_ID,Updated) VALUES (0,'N',0,211800,'N','N','N',0,'N',20,'N','N','N','Y','@AttributeValueType@=''D''','e5d9f3a8-5bc5-44ea-8bd0-4c00f54785c0','Y','DateFormat','Date format used in the input format','The date format is usually detected, but sometimes need to be defined.','Date Format','Y',100,0,'Y',TO_TIMESTAMP('2014-11-18 15:37:27','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N','N',2286,10,562,TO_TIMESTAMP('2014-11-18 15:37:27','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 3:37:33 PM IST +ALTER TABLE M_Attribute ADD COLUMN DateFormat VARCHAR(20) DEFAULT NULL +; + +-- Nov 18, 2014 3:39:07 PM IST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Name,AD_Ref_List_UU,Value,CreatedBy,UpdatedBy,Created,IsActive,EntityType,AD_Client_ID,AD_Org_ID,Updated) VALUES (200279,326,'Date','34c7fbc0-6718-433e-a55c-6d203496e06a','D',100,100,TO_TIMESTAMP('2014-11-18 15:39:07','YYYY-MM-DD HH24:MI:SS'),'Y','D',0,0,TO_TIMESTAMP('2014-11-18 15:39:07','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 3:41:05 PM IST +UPDATE AD_Column SET EntityType='D',Updated=TO_TIMESTAMP('2014-11-18 15:41:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=211800 +; + +-- Nov 18, 2014 3:41:33 PM IST +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,CreatedBy,IsActive,IsDisplayedGrid,SeqNoGrid,AD_Client_ID,ColumnSpan,AD_Column_ID,EntityType,Created,Updated) VALUES ('N',462,20,'N','N',100,'Y',203472,'N','The date format is usually detected, but sometimes need to be defined.','Date format used in the input format','Date Format','361e4d18-9ad0-4b74-b730-bc6620502b40','Y','N',100,0,100,'Y','Y',100,0,2,211800,'D',TO_TIMESTAMP('2014-11-18 15:41:32','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2014-11-18 15:41:32','YYYY-MM-DD HH24:MI:SS')) +; + +-- Nov 18, 2014 3:43:32 PM IST +UPDATE AD_Field SET DisplayLogic='@AttributeValueType@=''D''', MandatoryLogic='@AttributeValueType@=''D''',Updated=TO_TIMESTAMP('2014-11-18 15:43:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203472 +; + +SELECT register_migration_script('201411190748_IDEMPIERE-2319.sql') FROM dual +; diff --git a/org.adempiere.base-feature/model.generator.launch b/org.adempiere.base-feature/model.generator.launch index 6358b1e9f6..8b5bcca936 100644 --- a/org.adempiere.base-feature/model.generator.launch +++ b/org.adempiere.base-feature/model.generator.launch @@ -20,7 +20,7 @@ - + diff --git a/org.adempiere.base/src/org/compiere/model/I_M_Attribute.java b/org.adempiere.base/src/org/compiere/model/I_M_Attribute.java index 8fcce2125c..46dceb22af 100644 --- a/org.adempiere.base/src/org/compiere/model/I_M_Attribute.java +++ b/org.adempiere.base/src/org/compiere/model/I_M_Attribute.java @@ -91,6 +91,19 @@ public interface I_M_Attribute */ public int getCreatedBy(); + /** Column name DateFormat */ + public static final String COLUMNNAME_DateFormat = "DateFormat"; + + /** Set Date Format. + * Date format used in the input format + */ + public void setDateFormat (String DateFormat); + + /** Get Date Format. + * Date format used in the input format + */ + public String getDateFormat(); + /** Column name Description */ public static final String COLUMNNAME_Description = "Description"; diff --git a/org.adempiere.base/src/org/compiere/model/I_M_AttributeInstance.java b/org.adempiere.base/src/org/compiere/model/I_M_AttributeInstance.java index 0bb37973d9..b67a330a2b 100644 --- a/org.adempiere.base/src/org/compiere/model/I_M_AttributeInstance.java +++ b/org.adempiere.base/src/org/compiere/model/I_M_AttributeInstance.java @@ -174,6 +174,15 @@ public interface I_M_AttributeInstance */ public String getValue(); + /** Column name ValueDate */ + public static final String COLUMNNAME_ValueDate = "ValueDate"; + + /** Set Value Date */ + public void setValueDate (Timestamp ValueDate); + + /** Get Value Date */ + public Timestamp getValueDate(); + /** Column name ValueNumber */ public static final String COLUMNNAME_ValueNumber = "ValueNumber"; diff --git a/org.adempiere.base/src/org/compiere/model/MAttribute.java b/org.adempiere.base/src/org/compiere/model/MAttribute.java index e2a38ac83c..7b56e68840 100644 --- a/org.adempiere.base/src/org/compiere/model/MAttribute.java +++ b/org.adempiere.base/src/org/compiere/model/MAttribute.java @@ -18,6 +18,7 @@ package org.compiere.model; import java.math.BigDecimal; import java.sql.ResultSet; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -219,6 +220,17 @@ public class MAttribute extends X_M_Attribute } // setAttributeInstance + public void setMAttributeInstance(int M_AttributeSetInstance_ID, Timestamp value) + { + MAttributeInstance instance = getMAttributeInstance(M_AttributeSetInstance_ID); + if (instance == null) + instance = new MAttributeInstance(getCtx(), getM_Attribute_ID(), M_AttributeSetInstance_ID, value, + get_TrxName()); + else + instance.setValueDate(value); + instance.saveEx(); + }// setAttributeInstance + /** * String Representation * @return info diff --git a/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java b/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java index 9b22be74ba..9b3298d605 100644 --- a/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java +++ b/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java @@ -18,6 +18,8 @@ package org.compiere.model; import java.math.BigDecimal; import java.sql.ResultSet; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; import java.util.Properties; /** @@ -101,15 +103,24 @@ public class MAttributeInstance extends X_M_AttributeInstance * @param Value String representation for fast display * @param trxName transaction */ - public MAttributeInstance (Properties ctx, int M_Attribute_ID, - int M_AttributeSetInstance_ID, int M_AttributeValue_ID, String Value, String trxName) + public MAttributeInstance(Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, + int M_AttributeValue_ID, String Value, String trxName) { super(ctx, 0, trxName); - setM_Attribute_ID (M_Attribute_ID); - setM_AttributeSetInstance_ID (M_AttributeSetInstance_ID); - setM_AttributeValue_ID (M_AttributeValue_ID); - setValue (Value); - } // MAttributeInstance + setM_Attribute_ID(M_Attribute_ID); + setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID); + setM_AttributeValue_ID(M_AttributeValue_ID); + setValue(Value); + } // MAttributeInstance + + public MAttributeInstance(Properties ctx, int m_Attribute_ID, int m_AttributeSetInstance_ID, Timestamp value, + String trxName) + { + super(ctx, 0, trxName); + setM_Attribute_ID(m_Attribute_ID); + setM_AttributeSetInstance_ID(m_AttributeSetInstance_ID); + setValueDate(value); + } /** @@ -152,9 +163,19 @@ public class MAttributeInstance extends X_M_AttributeInstance } } setValue(display.toString()); - } // setValueNumber - - + } // setValueNumber + + public void setValueDate(Timestamp valueDate) + { + super.setValueDate(valueDate); + if (valueDate != null) + { + SimpleDateFormat sdf = new SimpleDateFormat( + new MAttribute(getCtx(), getM_Attribute_ID(), get_TrxName()).getDateFormat()); + setValue(sdf.format(valueDate)); + } + } + /** * String Representation * @return info diff --git a/org.adempiere.base/src/org/compiere/model/X_M_Attribute.java b/org.adempiere.base/src/org/compiere/model/X_M_Attribute.java index 90489817ef..ae7a62972f 100644 --- a/org.adempiere.base/src/org/compiere/model/X_M_Attribute.java +++ b/org.adempiere.base/src/org/compiere/model/X_M_Attribute.java @@ -30,7 +30,7 @@ public class X_M_Attribute extends PO implements I_M_Attribute, I_Persistent /** * */ - private static final long serialVersionUID = 20171031L; + private static final long serialVersionUID = 20180911L; /** Standard Constructor */ public X_M_Attribute (Properties ctx, int M_Attribute_ID, String trxName) @@ -83,6 +83,8 @@ public class X_M_Attribute extends PO implements I_M_Attribute, I_Persistent public static final String ATTRIBUTEVALUETYPE_Number = "N"; /** List = L */ public static final String ATTRIBUTEVALUETYPE_List = "L"; + /** Date = D */ + public static final String ATTRIBUTEVALUETYPE_Date = "D"; /** Set Attribute Value Type. @param AttributeValueType Type of Attribute Value @@ -101,6 +103,23 @@ public class X_M_Attribute extends PO implements I_M_Attribute, I_Persistent return (String)get_Value(COLUMNNAME_AttributeValueType); } + /** Set Date Format. + @param DateFormat + Date format used in the input format + */ + public void setDateFormat (String DateFormat) + { + set_Value (COLUMNNAME_DateFormat, DateFormat); + } + + /** Get Date Format. + @return Date format used in the input format + */ + public String getDateFormat () + { + return (String)get_Value(COLUMNNAME_DateFormat); + } + /** Set Description. @param Description Optional short description of the record diff --git a/org.adempiere.base/src/org/compiere/model/X_M_AttributeInstance.java b/org.adempiere.base/src/org/compiere/model/X_M_AttributeInstance.java index cfcbf1c235..58ad542096 100644 --- a/org.adempiere.base/src/org/compiere/model/X_M_AttributeInstance.java +++ b/org.adempiere.base/src/org/compiere/model/X_M_AttributeInstance.java @@ -19,6 +19,7 @@ package org.compiere.model; import java.math.BigDecimal; import java.sql.ResultSet; +import java.sql.Timestamp; import java.util.Properties; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; @@ -32,7 +33,7 @@ public class X_M_AttributeInstance extends PO implements I_M_AttributeInstance, /** * */ - private static final long serialVersionUID = 20171031L; + private static final long serialVersionUID = 20180911L; /** Standard Constructor */ public X_M_AttributeInstance (Properties ctx, int M_AttributeInstance_ID, String trxName) @@ -196,6 +197,20 @@ public class X_M_AttributeInstance extends PO implements I_M_AttributeInstance, return (String)get_Value(COLUMNNAME_Value); } + /** Set Value Date. + @param ValueDate Value Date */ + public void setValueDate (Timestamp ValueDate) + { + set_Value (COLUMNNAME_ValueDate, ValueDate); + } + + /** Get Value Date. + @return Value Date */ + public Timestamp getValueDate () + { + return (Timestamp)get_Value(COLUMNNAME_ValueDate); + } + /** Set Value. @param ValueNumber Numeric Value diff --git a/org.adempiere.server-feature/server.product.launch b/org.adempiere.server-feature/server.product.launch index 8638ea45a9..c934321719 100644 --- a/org.adempiere.server-feature/server.product.launch +++ b/org.adempiere.server-feature/server.product.launch @@ -27,8 +27,8 @@ - - + + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPAttributePanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPAttributePanel.java index 83e599922b..887da69781 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPAttributePanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPAttributePanel.java @@ -30,6 +30,7 @@ import org.adempiere.webui.component.NumberBox; import org.adempiere.webui.component.Row; import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Window; +import org.adempiere.webui.editor.WDateEditor; import org.adempiere.webui.editor.WNumberEditor; import org.adempiere.webui.editor.WStringEditor; import org.adempiere.webui.util.ZKUpdateUtil; @@ -303,6 +304,10 @@ public class InfoPAttributePanel extends Window implements EventListener { field = new WNumberEditor(name, false, false, true, DisplayType.Number, name).getComponent(); } + else if(MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attributeValueType)) + { + field = new WDateEditor(name, false, false, true, name).getComponent(); + } else { field = new WStringEditor(name, false, false, true, 10, 40, null, null).getComponent(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WPAttributeDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WPAttributeDialog.java index f65c35159d..2c89f0a874 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WPAttributeDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WPAttributeDialog.java @@ -65,6 +65,7 @@ import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; +import org.compiere.util.Trx; import org.zkoss.zk.ui.HtmlBasedComponent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -497,12 +498,14 @@ public class WPAttributeDialog extends Window implements EventListener for (int i = 0; i < m_editors.size(); i++) { HtmlBasedComponent editor = m_editors.get(i); - if (editor instanceof InputElement) + if (editor instanceof Listbox) + ((Listbox)editor).setEnabled(rw); + else if (editor instanceof NumberBox) + ((NumberBox)editor).setEnabled(rw); + else if (editor instanceof Datebox) + ((Datebox)editor).setEnabled(rw); + else if (editor instanceof InputElement) ((InputElement)editor).setReadonly(!rw); - else if (editor instanceof Listbox) - ((Listbox)editor).setEnabled(rw); - else if (editor instanceof NumberBox) - ((NumberBox)editor).setEnabled(rw); } } @@ -571,6 +574,17 @@ public class WPAttributeDialog extends Window implements EventListener else m_editors.add (editor); } + else if(MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attribute.getAttributeValueType())) + { + Datebox editor = new Datebox(); + setDateAttribute(attribute, editor); + row.appendChild(editor); + if(readOnly) + editor.setEnabled(false); + else + m_editors.add(editor); + + } else // Text Field { Textbox editor = new Textbox(); @@ -596,6 +610,11 @@ public class WPAttributeDialog extends Window implements EventListener NumberBox editor = (NumberBox) m_editors.get(index); setNumberAttribute(attribute, editor); } + else if(MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attribute.getAttributeValueType())) + { + Datebox editor = (Datebox)m_editors.get(index); + setDateAttribute(attribute, editor); + } else // Text Field { Textbox editor = (Textbox) m_editors.get(index); @@ -616,6 +635,17 @@ public class WPAttributeDialog extends Window implements EventListener else editor.setValue(Env.ZERO); } + + private void setDateAttribute(MAttribute attribute,Datebox editor) + { + MAttributeInstance instance = attribute.getMAttributeInstance(m_M_AttributeSetInstance_ID); + if(instance != null) + editor.setValue(instance.getValueDate()); + else + editor.setValue(Env.getContextAsDate(Env.getCtx(), "#Date")); + + + } private void setListAttribute(MAttribute attribute, Listbox editor) { boolean found = false; @@ -774,12 +804,7 @@ public class WPAttributeDialog extends Window implements EventListener for (int i = 0; i < m_editors.size(); i++) { HtmlBasedComponent editor = m_editors.get(i); - if (editor instanceof InputElement) - { - ((InputElement)editor).setReadonly(false); - ((InputElement)editor).setText(null); - } - else if (editor instanceof Listbox) + if (editor instanceof Listbox) { ((Listbox)editor).setEnabled(true); ((Listbox)editor).setSelectedItem(null); @@ -789,6 +814,16 @@ public class WPAttributeDialog extends Window implements EventListener ((NumberBox)editor).setEnabled(true); ((NumberBox)editor).setValue(null); } + else if (editor instanceof Datebox) + { + ((Datebox)editor).setEnabled(true); + ((Datebox)editor).setValue(null); + } + else if (editor instanceof InputElement) + { + ((InputElement)editor).setReadonly(false); + ((InputElement)editor).setText(null); + } } fieldDescription.setText(""); } @@ -798,12 +833,15 @@ public class WPAttributeDialog extends Window implements EventListener for (int i = 0; i < m_editors.size(); i++) { HtmlBasedComponent editor = m_editors.get(i); - if (editor instanceof InputElement) - ((InputElement)editor).setReadonly(!check); + if (editor instanceof Datebox) + ((Datebox) editor).setEnabled(check); else if (editor instanceof Listbox) - ((Listbox)editor).setEnabled(check); + ((Listbox) editor).setEnabled(check); else if (editor instanceof NumberBox) - ((NumberBox)editor).setEnabled(check); + ((NumberBox) editor).setEnabled(check); + else if (editor instanceof InputElement) + ((InputElement) editor).setReadonly(!check); + } } @@ -897,12 +935,15 @@ public class WPAttributeDialog extends Window implements EventListener for (int i = 0; i < m_editors.size(); i++) { HtmlBasedComponent editor = m_editors.get(i); - if (editor instanceof InputElement) - ((InputElement)editor).setReadonly(!rw); - else if (editor instanceof Listbox) - ((Listbox)editor).setEnabled(rw); + if (editor instanceof Listbox) + ((Listbox) editor).setEnabled(rw); else if (editor instanceof NumberBox) - ((NumberBox)editor).setEnabled(rw); + ((NumberBox) editor).setEnabled(rw); + else if (editor instanceof Datebox) + ((Datebox) editor).setEnabled(rw); + else if (editor instanceof InputElement) + ((InputElement) editor).setReadonly(!rw); + } } // cmd_newEdit @@ -940,9 +981,17 @@ public class WPAttributeDialog extends Window implements EventListener private boolean saveSelection() { log.info(""); + MAttributeSet as = m_masi.getMAttributeSet(); + if (as == null) + { return true; + } + String trxName = Trx.createTrxName("WPAttributeDialog_SaveSelection"); + m_masi.set_TrxName(trxName); + as.set_TrxName(trxName); + // m_changed = false; String mandatory = ""; @@ -975,6 +1024,7 @@ public class WPAttributeDialog extends Window implements EventListener m_changed = true; } // GuaranteeDate + // *** Save Attributes *** // New Instance if (mandatory.isEmpty() && (m_changed || m_masi.getM_AttributeSetInstance_ID() == 0)) @@ -985,7 +1035,9 @@ public class WPAttributeDialog extends Window implements EventListener } // Save Instance Attributes + MAttribute[] attributes = as.getMAttributes(!m_productWindow); + MAttribute.set_TrxName(attributes, trxName); for (int i = 0; i < attributes.length; i++) { if (MAttribute.ATTRIBUTEVALUETYPE_List.equals(attributes[i].getAttributeValueType())) @@ -1010,6 +1062,15 @@ public class WPAttributeDialog extends Window implements EventListener value = value.setScale(1, BigDecimal.ROUND_HALF_UP); attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, value); } + else if (MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attributes[i].getAttributeValueType())) + { + Datebox editor = (Datebox) m_editors.get(i); + Date value = editor.getValue(); + Timestamp ts = value != null ? new Timestamp(value.getTime()) : null; + if (attributes[i].isMandatory() && value == null) + mandatory += " - " + attributes[i].getName(); + attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, ts); + } else { Textbox editor = (Textbox)m_editors.get(i); @@ -1023,6 +1084,18 @@ public class WPAttributeDialog extends Window implements EventListener } // for all attributes m_M_AttributeSetInstance_ID = m_masi.getM_AttributeSetInstance_ID (); m_M_AttributeSetInstanceName = m_masi.getDescription(); + + if (!m_changed || mandatory.length() > 0) + { + // Rollback + Trx.get(trxName, false).rollback(); + } + else + { + // Commit + Trx.get(trxName, false).commit(); + } + Trx.get(trxName, false).close(); // if (mandatory.length() > 0) {