diff --git a/migration/i7.1z/oracle/201602171713_IDEMPIERE-2999.sql b/migration/i7.1z/oracle/201602171713_IDEMPIERE-2999.sql new file mode 100644 index 0000000000..ce6ab0acda --- /dev/null +++ b/migration/i7.1z/oracle/201602171713_IDEMPIERE-2999.sql @@ -0,0 +1,110 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-2999 Attribute, Table Direct and date field support +-- Mar 3, 2016 11:15:59 AM IST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200352,'Reference','Reference',326,'R',0,0,'Y',TO_DATE('2016-03-03 11:15:58','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-03-03 11:15:58','YYYY-MM-DD HH24:MI:SS'),100,'D','57503d9a-9bd2-4eb9-b2cf-1f43dc144dcc') +; + +-- Mar 3, 2016 11:16:56 AM IST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType) VALUES (212643,0,'Reference','System Reference and Validation','The Reference could be a display type, list or table validation.',562,'AD_Reference_ID',22,'N','N','N','N','N',0,'N',18,1,0,0,'Y',TO_DATE('2016-03-03 11:16:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-03-03 11:16:55','YYYY-MM-DD HH24:MI:SS'),100,120,'Y','N','D','N','N','N','Y','30425bec-829d-4fdd-9781-be453810859b','Y',0,'N','N','N') +; + +-- Mar 3, 2016 11:16:59 AM IST +UPDATE AD_Column SET FKConstraintName='ADReference_MAttribute', FKConstraintType='N',Updated=TO_DATE('2016-03-03 11:16:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212643 +; + +-- Mar 3, 2016 11:16:59 AM IST +ALTER TABLE M_Attribute ADD AD_Reference_ID NUMBER(10) DEFAULT NULL +; + +-- Mar 3, 2016 11:16:59 AM IST +ALTER TABLE M_Attribute ADD CONSTRAINT ADReference_MAttribute FOREIGN KEY (AD_Reference_ID) REFERENCES ad_reference(ad_reference_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Mar 3, 2016 11:17:19 AM IST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType) VALUES (212644,0,'Reference Key','Required to specify, if data type is Table or List','The Reference Value indicates where the reference values are stored. It must be specified if the data type is Table or List. ',562,115,'AD_Reference_Value_ID',22,'N','N','N','N','N',0,'N',18,4,0,0,'Y',TO_DATE('2016-03-03 11:17:19','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-03-03 11:17:19','YYYY-MM-DD HH24:MI:SS'),100,121,'Y','N','D','N','N','N','Y','4773b14c-3fd5-4a27-b612-f2c055e30906','Y',0,'N','N','N') +; + +-- Mar 3, 2016 11:17:28 AM IST +UPDATE AD_Column SET FKConstraintName='ADReferenceValue_MAttribute', FKConstraintType='N',Updated=TO_DATE('2016-03-03 11:17:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212644 +; + +-- Mar 3, 2016 11:17:28 AM IST +ALTER TABLE M_Attribute ADD AD_Reference_Value_ID NUMBER(10) DEFAULT NULL +; + +-- Mar 3, 2016 11:17:28 AM IST +ALTER TABLE M_Attribute ADD CONSTRAINT ADReferenceValue_MAttribute FOREIGN KEY (AD_Reference_Value_ID) REFERENCES ad_reference(ad_reference_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Mar 3, 2016 11:25:44 AM IST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (204143,'Reference','System Reference and Validation','The Reference could be a display type, list or table validation.',462,212643,'Y','@AttributeValueType@=''R''',0,90,0,'N','N','N','N',0,0,'Y',TO_DATE('2016-03-03 11:25:42','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-03-03 11:25:42','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','6662da7e-b41c-44d0-aa42-edc15857a9f3','Y',100,1,1,1,'N','N','N') +; + +-- Mar 3, 2016 11:38:57 AM IST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (204144,'Reference Key','Required to specify, if data type is Table or List','The Reference Value indicates where the reference values are stored. It must be specified if the data type is Table or List. ',462,212644,'Y','@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 & @AttributeValueType@=''R''',0,100,0,'N','N','N','N',0,0,'Y',TO_DATE('2016-03-03 11:38:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-03-03 11:38:56','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0ac3e965-019d-4da4-a8c5-7fa0ced885fa','Y',110,1,1,1,'N','N','N') +; + +-- Mar 3, 2016 11:39:18 AM IST +UPDATE AD_Field SET SeqNo=90, ColumnSpan=2,Updated=TO_DATE('2016-03-03 11:39:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204143 +; + +-- Mar 3, 2016 11:39:18 AM IST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=4, ColumnSpan=2,Updated=TO_DATE('2016-03-03 11:39:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144 +; + +-- Mar 3, 2016 11:40:04 AM IST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200090,'AD_Reference Attribute','S','AD_Reference_ID IN (10,11,12,13,14,15,16,17,18,19,20,22,24,25,27,29,30,31,32,33,34,36,37,38,39,40)',0,0,'Y',TO_DATE('2016-03-03 11:40:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-03-03 11:40:03','YYYY-MM-DD HH24:MI:SS'),100,'D','df9e32eb-59df-49b8-a7fa-a6fb9c1f6786') +; + +-- Mar 3, 2016 11:40:25 AM IST +UPDATE AD_Column SET AD_Val_Rule_ID=200090,Updated=TO_DATE('2016-03-03 11:40:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212643 +; + +-- Sep 18, 2020, 10:02:10 PM IST +UPDATE AD_Tab SET ReadOnlyLogic='@AttributeValueType@!L',Updated=TO_DATE('2020-09-18 22:02:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=463 +; + +-- Sep 21, 2020, 3:02:02 PM IST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214317,0,'Dynamic Validation','Dynamic Validation Rule','These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',562,'AD_Val_Rule_ID',22,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_DATE('2020-09-21 15:02:00','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-09-21 15:02:00','YYYY-MM-DD HH24:MI:SS'),100,139,'Y','N','D','N','N','N','Y','6e0bea95-2518-4833-b8c4-3c65f94b07ea','Y',0,'N','N','N','N') +; + +-- Sep 21, 2020, 3:02:14 PM IST +UPDATE AD_Column SET FKConstraintName='ADValRule_MAttribute', FKConstraintType='N',Updated=TO_DATE('2020-09-21 15:02:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214317 +; + +-- Sep 21, 2020, 3:02:14 PM IST +ALTER TABLE M_Attribute ADD AD_Val_Rule_ID NUMBER(10) DEFAULT NULL +; + +-- Sep 21, 2020, 3:02:14 PM IST +ALTER TABLE M_Attribute ADD CONSTRAINT ADValRule_MAttribute FOREIGN KEY (AD_Val_Rule_ID) REFERENCES ad_val_rule(ad_val_rule_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Sep 21, 2020, 3:04:22 PM IST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (206510,'Dynamic Validation','Dynamic Validation Rule','These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',462,214317,'Y','@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=30 & @AttributeValueType@=''R''',0,110,0,'N','N','N','N',0,0,'Y',TO_DATE('2020-09-21 15:04:20','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-09-21 15:04:20','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','544966ca-d50d-4481-ae43-cc56b1a0c478','Y',120,4,2,1,'N','N','N') +; + +-- Sep 21, 2020, 3:04:50 PM IST +UPDATE AD_Field SET SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-09-21 15:04:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144 +; + +-- Sep 21, 2020, 3:04:50 PM IST +UPDATE AD_Field SET SeqNo=120, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-09-21 15:04:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206510 +; + +-- Sep 21, 2020, 3:04:50 PM IST +UPDATE AD_Field SET SeqNo=0, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-09-21 15:04:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204868 +; + +-- Sep 21, 2020, 3:09:42 PM IST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_DATE('2020-09-21 15:09:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144 +; + +-- Sep 21, 2020, 3:09:42 PM IST +UPDATE AD_Field SET SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-09-21 15:09:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203472 +; + +SELECT register_migration_script('201602171713_IDEMPIERE-2999.sql') FROM dual +; diff --git a/migration/i7.1z/postgresql/201602171713_IDEMPIERE-2999.sql b/migration/i7.1z/postgresql/201602171713_IDEMPIERE-2999.sql new file mode 100644 index 0000000000..683fd76158 --- /dev/null +++ b/migration/i7.1z/postgresql/201602171713_IDEMPIERE-2999.sql @@ -0,0 +1,107 @@ +-- IDEMPIERE-2999 Attribute, Table Direct and date field support +-- Mar 3, 2016 11:15:59 AM IST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200352,'Reference','Reference',326,'R',0,0,'Y',TO_TIMESTAMP('2016-03-03 11:15:58','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-03-03 11:15:58','YYYY-MM-DD HH24:MI:SS'),100,'D','57503d9a-9bd2-4eb9-b2cf-1f43dc144dcc') +; + +-- Mar 3, 2016 11:16:56 AM IST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType) VALUES (212643,0,'Reference','System Reference and Validation','The Reference could be a display type, list or table validation.',562,'AD_Reference_ID',22,'N','N','N','N','N',0,'N',18,1,0,0,'Y',TO_TIMESTAMP('2016-03-03 11:16:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-03-03 11:16:55','YYYY-MM-DD HH24:MI:SS'),100,120,'Y','N','D','N','N','N','Y','30425bec-829d-4fdd-9781-be453810859b','Y',0,'N','N','N') +; + +-- Mar 3, 2016 11:16:59 AM IST +UPDATE AD_Column SET FKConstraintName='ADReference_MAttribute', FKConstraintType='N',Updated=TO_TIMESTAMP('2016-03-03 11:16:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212643 +; + +-- Mar 3, 2016 11:16:59 AM IST +ALTER TABLE M_Attribute ADD COLUMN AD_Reference_ID NUMERIC(10) DEFAULT NULL +; + +-- Mar 3, 2016 11:16:59 AM IST +ALTER TABLE M_Attribute ADD CONSTRAINT ADReference_MAttribute FOREIGN KEY (AD_Reference_ID) REFERENCES ad_reference(ad_reference_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Mar 3, 2016 11:17:19 AM IST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType) VALUES (212644,0,'Reference Key','Required to specify, if data type is Table or List','The Reference Value indicates where the reference values are stored. It must be specified if the data type is Table or List. ',562,115,'AD_Reference_Value_ID',22,'N','N','N','N','N',0,'N',18,4,0,0,'Y',TO_TIMESTAMP('2016-03-03 11:17:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-03-03 11:17:19','YYYY-MM-DD HH24:MI:SS'),100,121,'Y','N','D','N','N','N','Y','4773b14c-3fd5-4a27-b612-f2c055e30906','Y',0,'N','N','N') +; + +-- Mar 3, 2016 11:17:28 AM IST +UPDATE AD_Column SET FKConstraintName='ADReferenceValue_MAttribute', FKConstraintType='N',Updated=TO_TIMESTAMP('2016-03-03 11:17:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212644 +; + +-- Mar 3, 2016 11:17:28 AM IST +ALTER TABLE M_Attribute ADD COLUMN AD_Reference_Value_ID NUMERIC(10) DEFAULT NULL +; + +-- Mar 3, 2016 11:17:28 AM IST +ALTER TABLE M_Attribute ADD CONSTRAINT ADReferenceValue_MAttribute FOREIGN KEY (AD_Reference_Value_ID) REFERENCES ad_reference(ad_reference_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Mar 3, 2016 11:25:44 AM IST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (204143,'Reference','System Reference and Validation','The Reference could be a display type, list or table validation.',462,212643,'Y','@AttributeValueType@=''R''',0,90,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2016-03-03 11:25:42','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-03-03 11:25:42','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','6662da7e-b41c-44d0-aa42-edc15857a9f3','Y',100,1,1,1,'N','N','N') +; + +-- Mar 3, 2016 11:38:57 AM IST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (204144,'Reference Key','Required to specify, if data type is Table or List','The Reference Value indicates where the reference values are stored. It must be specified if the data type is Table or List. ',462,212644,'Y','@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 & @AttributeValueType@=''R''',0,100,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2016-03-03 11:38:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-03-03 11:38:56','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0ac3e965-019d-4da4-a8c5-7fa0ced885fa','Y',110,1,1,1,'N','N','N') +; + +-- Mar 3, 2016 11:39:18 AM IST +UPDATE AD_Field SET SeqNo=90, ColumnSpan=2,Updated=TO_TIMESTAMP('2016-03-03 11:39:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204143 +; + +-- Mar 3, 2016 11:39:18 AM IST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=4, ColumnSpan=2,Updated=TO_TIMESTAMP('2016-03-03 11:39:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144 +; + +-- Mar 3, 2016 11:40:04 AM IST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200090,'AD_Reference Attribute','S','AD_Reference_ID IN (10,11,12,13,14,15,16,17,18,19,20,22,24,25,27,29,30,31,32,33,34,36,37,38,39,40)',0,0,'Y',TO_TIMESTAMP('2016-03-03 11:40:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-03-03 11:40:03','YYYY-MM-DD HH24:MI:SS'),100,'D','df9e32eb-59df-49b8-a7fa-a6fb9c1f6786') +; + +-- Mar 3, 2016 11:40:25 AM IST +UPDATE AD_Column SET AD_Val_Rule_ID=200090,Updated=TO_TIMESTAMP('2016-03-03 11:40:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212643 +; + +-- Sep 18, 2020, 10:02:10 PM IST +UPDATE AD_Tab SET ReadOnlyLogic='@AttributeValueType@!L',Updated=TO_TIMESTAMP('2020-09-18 22:02:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=463 +; + +-- Sep 21, 2020, 3:02:02 PM IST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214317,0,'Dynamic Validation','Dynamic Validation Rule','These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',562,'AD_Val_Rule_ID',22,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2020-09-21 15:02:00','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-09-21 15:02:00','YYYY-MM-DD HH24:MI:SS'),100,139,'Y','N','D','N','N','N','Y','6e0bea95-2518-4833-b8c4-3c65f94b07ea','Y',0,'N','N','N','N') +; + +-- Sep 21, 2020, 3:02:14 PM IST +UPDATE AD_Column SET FKConstraintName='ADValRule_MAttribute', FKConstraintType='N',Updated=TO_TIMESTAMP('2020-09-21 15:02:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214317 +; + +-- Sep 21, 2020, 3:02:14 PM IST +ALTER TABLE M_Attribute ADD COLUMN AD_Val_Rule_ID NUMERIC(10) DEFAULT NULL +; + +-- Sep 21, 2020, 3:02:14 PM IST +ALTER TABLE M_Attribute ADD CONSTRAINT ADValRule_MAttribute FOREIGN KEY (AD_Val_Rule_ID) REFERENCES ad_val_rule(ad_val_rule_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Sep 21, 2020, 3:04:22 PM IST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (206510,'Dynamic Validation','Dynamic Validation Rule','These rules define how an entry is determined to valid. You can use variables for dynamic (context sensitive) validation.',462,214317,'Y','@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=30 & @AttributeValueType@=''R''',0,110,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2020-09-21 15:04:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-09-21 15:04:20','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','544966ca-d50d-4481-ae43-cc56b1a0c478','Y',120,4,2,1,'N','N','N') +; + +-- Sep 21, 2020, 3:04:50 PM IST +UPDATE AD_Field SET SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-09-21 15:04:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144 +; + +-- Sep 21, 2020, 3:04:50 PM IST +UPDATE AD_Field SET SeqNo=120, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-09-21 15:04:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206510 +; + +-- Sep 21, 2020, 3:04:50 PM IST +UPDATE AD_Field SET SeqNo=0, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-09-21 15:04:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204868 +; + +-- Sep 21, 2020, 3:09:42 PM IST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-09-21 15:09:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144 +; + +-- Sep 21, 2020, 3:09:42 PM IST +UPDATE AD_Field SET SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-09-21 15:09:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203472 +; + +SELECT register_migration_script('201602171713_IDEMPIERE-2999.sql') FROM dual +; 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 ccdbf4488f..29dd9221c6 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 @@ -62,6 +62,51 @@ public interface I_M_Attribute */ public int getAD_Org_ID(); + /** Column name AD_Reference_ID */ + public static final String COLUMNNAME_AD_Reference_ID = "AD_Reference_ID"; + + /** Set Reference. + * System Reference and Validation + */ + public void setAD_Reference_ID (int AD_Reference_ID); + + /** Get Reference. + * System Reference and Validation + */ + public int getAD_Reference_ID(); + + public org.compiere.model.I_AD_Reference getAD_Reference() throws RuntimeException; + + /** Column name AD_Reference_Value_ID */ + public static final String COLUMNNAME_AD_Reference_Value_ID = "AD_Reference_Value_ID"; + + /** Set Reference Key. + * Required to specify, if data type is Table or List + */ + public void setAD_Reference_Value_ID (int AD_Reference_Value_ID); + + /** Get Reference Key. + * Required to specify, if data type is Table or List + */ + public int getAD_Reference_Value_ID(); + + public org.compiere.model.I_AD_Reference getAD_Reference_Value() throws RuntimeException; + + /** Column name AD_Val_Rule_ID */ + public static final String COLUMNNAME_AD_Val_Rule_ID = "AD_Val_Rule_ID"; + + /** Set Dynamic Validation. + * Dynamic Validation Rule + */ + public void setAD_Val_Rule_ID (int AD_Val_Rule_ID); + + /** Get Dynamic Validation. + * Dynamic Validation Rule + */ + public int getAD_Val_Rule_ID(); + + public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule() throws RuntimeException; + /** Column name AttributeValueType */ public static final String COLUMNNAME_AttributeValueType = "AttributeValueType"; diff --git a/org.adempiere.base/src/org/compiere/model/MAttribute.java b/org.adempiere.base/src/org/compiere/model/MAttribute.java index 333c1cdd5e..56e83958a7 100644 --- a/org.adempiere.base/src/org/compiere/model/MAttribute.java +++ b/org.adempiere.base/src/org/compiere/model/MAttribute.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Properties; import java.util.logging.Level; +import org.compiere.util.CCache; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; @@ -41,7 +42,14 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport /** * */ - private static final long serialVersionUID = 7513117649181926813L; + private static final long serialVersionUID = 7869800574413317999L; + /** Logger */ + private static CLogger s_log = CLogger.getCLogger (MAttribute.class); + + private static CCache s_cache = new CCache(Table_Name, 30, 60); + + /** Values */ + private MAttributeValue[] m_values = null; /** * Get Attributes Of Client @@ -58,15 +66,15 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport ArrayList params = new ArrayList(); params.add(AD_Client_ID); if (onlyProductAttributes) - { - sql += " AND IsInstanceAttribute=?"; - params.add(false); - } + { + sql += " AND IsInstanceAttribute=?"; + params.add(false); + } if (onlyListAttributes) - { - sql += " AND AttributeValueType=?"; - params.add(MAttribute.ATTRIBUTEVALUETYPE_List); - } + { + sql += " AND AttributeValueType=?"; + params.add(MAttribute.ATTRIBUTEVALUETYPE_List); + } StringBuilder whereClause = new StringBuilder("AD_Client_ID=?").append(sql); Listlist = new Query(ctx,I_M_Attribute.Table_Name,whereClause.toString(),null) @@ -80,11 +88,7 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport if (s_log.isLoggable(Level.FINE)) s_log.fine("AD_Client_ID=" + AD_Client_ID + " - #" + list.size()); return retValue; } // getOfClient - - /** Logger */ - private static CLogger s_log = CLogger.getCLogger (MAttribute.class); - /** * Standard Constructor * @param ctx context @@ -144,9 +148,6 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport copyPO(copy); this.m_values = copy.m_values != null ? Arrays.stream(copy.m_values).map(e -> {return new MAttributeValue(ctx, e, trxName);}).toArray(MAttributeValue[]::new) : null; } - - /** Values */ - private MAttributeValue[] m_values = null; /** * Get Values if List @@ -170,6 +171,20 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport return m_values; } // getValues + public static MAttribute get(Properties ctx, int M_Attribute_ID) + { + Integer key = Integer.valueOf(M_Attribute_ID); + MAttribute retValue = (MAttribute) s_cache.get(key); + + if (retValue != null) + return retValue; + + retValue = (MAttribute) MTable.get(ctx, MAttribute.Table_ID).getPO(M_Attribute_ID, null); + + s_cache.put(key, retValue); + + return retValue; + } // get /************************************************************************** * Get Attribute Instance @@ -252,6 +267,22 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport instance.saveEx(); } // setAttributeInstance + /** + * Set Attribute Instance + * + * @param valueInt Integer value + * @param M_AttributeSetInstance_ID id + * @param value + */ + public void setMAttributeInstance(int M_AttributeSetInstance_ID, int valueInt, String value) + { + MAttributeInstance instance = getMAttributeInstance(M_AttributeSetInstance_ID); + if (instance == null) + instance = new MAttributeInstance(getCtx(), getM_Attribute_ID(), M_AttributeSetInstance_ID, valueInt, get_TrxName()); + else + instance.setValueInt(valueInt, value); + instance.saveEx(); + } // setAttributeInstance public void setMAttributeInstance(int M_AttributeSetInstance_ID, Timestamp value) { @@ -302,6 +333,11 @@ public class MAttribute extends X_M_Attribute implements ImmutablePOSupport } return success; } // afterSave + + public boolean isAttributeValueTypeReference() + { + return ATTRIBUTEVALUETYPE_Reference.equals(getAttributeValueType()); + } // isAttributeValueTypeReference @Override public MAttribute markImmutable() { diff --git a/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java b/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java index 73b24e8e96..1ad46653df 100644 --- a/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java +++ b/org.adempiere.base/src/org/compiere/model/MAttributeInstance.java @@ -22,6 +22,8 @@ import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Properties; +import org.compiere.util.DisplayType; + /** * Product Attribute Set * @@ -33,7 +35,7 @@ public class MAttributeInstance extends X_M_AttributeInstance /** * */ - private static final long serialVersionUID = 6154044437449512042L; + private static final long serialVersionUID = 5697542928282761922L; /** @@ -61,7 +63,7 @@ public class MAttributeInstance extends X_M_AttributeInstance } // MAttributeInstance /** - * String Value Constructior + * String Value Constructor * @param ctx context * @param M_Attribute_ID attribute * @param M_AttributeSetInstance_ID instance @@ -95,7 +97,7 @@ public class MAttributeInstance extends X_M_AttributeInstance } // MAttributeInstance /** - * Selection Value Constructior + * Selection Value Constructor * @param ctx context * @param M_Attribute_ID attribute * @param M_AttributeSetInstance_ID instance @@ -113,6 +115,16 @@ public class MAttributeInstance extends X_M_AttributeInstance setValue(Value); } // MAttributeInstance + + public MAttributeInstance (Properties ctx, int M_Attribute_ID, + int M_AttributeSetInstance_ID, int Value, String trxName) + { + super(ctx, 0, trxName); + setM_Attribute_ID (M_Attribute_ID); + setM_AttributeSetInstance_ID (M_AttributeSetInstance_ID); + setValueNumber(BigDecimal.valueOf(Value)); + } // MAttributeInstance + public MAttributeInstance(Properties ctx, int m_Attribute_ID, int m_AttributeSetInstance_ID, Timestamp value, String trxName) { @@ -120,9 +132,8 @@ public class MAttributeInstance extends X_M_AttributeInstance setM_Attribute_ID(m_Attribute_ID); setM_AttributeSetInstance_ID(m_AttributeSetInstance_ID); setValueDate(value); - } + } // MAttributeInstance - /** * Set ValueNumber * @param ValueNumber number @@ -165,20 +176,63 @@ public class MAttributeInstance extends X_M_AttributeInstance setValue(display.toString()); } // setValueNumber + /** + * Set valueDate + * + * @param valueDate + */ 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)); - } - else + if (valueDate == null) { setValue(null); + return; } - } + + SimpleDateFormat sdf = null; + MAttribute attribute = MAttribute.get(getCtx(), getM_Attribute_ID()); + int displayType = attribute.getAD_Reference_ID(); + + if (MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attribute.getAttributeValueType())) + sdf = DisplayType.getDateFormat_JDBC(); + // Based on reference type, Format timestamp into string value + else if (displayType == DisplayType.DateTime) + sdf = DisplayType.getTimestampFormat_Default(); + else if (displayType == DisplayType.Time) + sdf = DisplayType.getTimeFormat_Default(); + else + sdf = DisplayType.getDateFormat_JDBC(); + + setValue(sdf.format(valueDate)); + } // setValueDate + + /** + * Set ValueInt + * + * @param valueInt + * @param value + */ + public void setValueInt(int valueInt, String value) + { + super.setValueNumber(BigDecimal.valueOf(valueInt)); + if (value == null) + value = String.valueOf(valueInt); + setValue(value); + } // setValueInt + + /** + * Get Value as Integer + * + * @return + */ + public int getValueInt() + { + if (super.getValueNumber() == null) + return 0; + else + return super.getValueNumber().intValue(); + } // getValueInt /** * String Representation 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 79792d2bc7..96b5dd8f25 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 = 20200413L; + private static final long serialVersionUID = 20200921L; /** Standard Constructor */ public X_M_Attribute (Properties ctx, int M_Attribute_ID, String trxName) @@ -75,6 +75,90 @@ public class X_M_Attribute extends PO implements I_M_Attribute, I_Persistent return sb.toString(); } + public org.compiere.model.I_AD_Reference getAD_Reference() throws RuntimeException + { + return (org.compiere.model.I_AD_Reference)MTable.get(getCtx(), org.compiere.model.I_AD_Reference.Table_Name) + .getPO(getAD_Reference_ID(), get_TrxName()); } + + /** Set Reference. + @param AD_Reference_ID + System Reference and Validation + */ + public void setAD_Reference_ID (int AD_Reference_ID) + { + if (AD_Reference_ID < 1) + set_Value (COLUMNNAME_AD_Reference_ID, null); + else + set_Value (COLUMNNAME_AD_Reference_ID, Integer.valueOf(AD_Reference_ID)); + } + + /** Get Reference. + @return System Reference and Validation + */ + public int getAD_Reference_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Reference_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + public org.compiere.model.I_AD_Reference getAD_Reference_Value() throws RuntimeException + { + return (org.compiere.model.I_AD_Reference)MTable.get(getCtx(), org.compiere.model.I_AD_Reference.Table_Name) + .getPO(getAD_Reference_Value_ID(), get_TrxName()); } + + /** Set Reference Key. + @param AD_Reference_Value_ID + Required to specify, if data type is Table or List + */ + public void setAD_Reference_Value_ID (int AD_Reference_Value_ID) + { + if (AD_Reference_Value_ID < 1) + set_Value (COLUMNNAME_AD_Reference_Value_ID, null); + else + set_Value (COLUMNNAME_AD_Reference_Value_ID, Integer.valueOf(AD_Reference_Value_ID)); + } + + /** Get Reference Key. + @return Required to specify, if data type is Table or List + */ + public int getAD_Reference_Value_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Reference_Value_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule() throws RuntimeException + { + return (org.compiere.model.I_AD_Val_Rule)MTable.get(getCtx(), org.compiere.model.I_AD_Val_Rule.Table_Name) + .getPO(getAD_Val_Rule_ID(), get_TrxName()); } + + /** Set Dynamic Validation. + @param AD_Val_Rule_ID + Dynamic Validation Rule + */ + public void setAD_Val_Rule_ID (int AD_Val_Rule_ID) + { + if (AD_Val_Rule_ID < 1) + set_Value (COLUMNNAME_AD_Val_Rule_ID, null); + else + set_Value (COLUMNNAME_AD_Val_Rule_ID, Integer.valueOf(AD_Val_Rule_ID)); + } + + /** Get Dynamic Validation. + @return Dynamic Validation Rule + */ + public int getAD_Val_Rule_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Val_Rule_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + /** AttributeValueType AD_Reference_ID=326 */ public static final int ATTRIBUTEVALUETYPE_AD_Reference_ID=326; /** String (max 40) = S */ @@ -85,6 +169,8 @@ public class X_M_Attribute extends PO implements I_M_Attribute, I_Persistent public static final String ATTRIBUTEVALUETYPE_List = "L"; /** Date = D */ public static final String ATTRIBUTEVALUETYPE_Date = "D"; + /** Reference = R */ + public static final String ATTRIBUTEVALUETYPE_Reference = "R"; /** Set Attribute Value Type. @param AttributeValueType Type of Attribute Value 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 51c52a4683..a219e3f433 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 @@ -33,7 +33,7 @@ public class X_M_AttributeInstance extends PO implements I_M_AttributeInstance, /** * */ - private static final long serialVersionUID = 20200413L; + private static final long serialVersionUID = 20201006L; /** Standard Constructor */ public X_M_AttributeInstance (Properties ctx, int M_AttributeInstance_ID, String trxName) 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 8494aed321..d79710a6b0 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 @@ -39,16 +39,22 @@ import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.ListItem; import org.adempiere.webui.component.Listbox; -import org.adempiere.webui.component.NumberBox; import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.Row; import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; +import org.adempiere.webui.component.Urlbox; import org.adempiere.webui.component.Window; +import org.adempiere.webui.editor.WEditor; +import org.adempiere.webui.editor.WebEditorFactory; import org.adempiere.webui.event.DialogEvents; +import org.adempiere.webui.event.ValueChangeEvent; +import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.util.ZKUpdateUtil; +import org.compiere.model.GridField; +import org.compiere.model.GridFieldVO; import org.compiere.model.MAttribute; import org.compiere.model.MAttributeInstance; import org.compiere.model.MAttributeSet; @@ -63,11 +69,12 @@ import org.compiere.model.MSerNoCtl; import org.compiere.model.X_M_MovementLine; import org.compiere.util.CLogger; import org.compiere.util.DB; +import org.compiere.util.DisplayType; 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.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -77,7 +84,6 @@ import org.zkoss.zul.Menuitem; import org.zkoss.zul.Menupopup; import org.zkoss.zul.South; import org.zkoss.zul.Space; -import org.zkoss.zul.impl.InputElement; /** * Product Attribute Set Product/Instance Dialog Editor. @@ -172,7 +178,7 @@ public class WPAttributeDialog extends Window implements EventListener /** Row Counter */ private int m_row = 0; /** List of Editors */ - private ArrayList m_editors = new ArrayList(); + private ArrayList m_editors = new ArrayList(); /** Length of Instance value (40) */ //private static final int INSTANCE_VALUE_LENGTH = 40; @@ -506,15 +512,8 @@ public class WPAttributeDialog extends Window implements EventListener boolean rw = m_M_AttributeSetInstance_ID == 0; for (int i = 0; i < m_editors.size(); i++) { - HtmlBasedComponent editor = m_editors.get(i); - 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); + WEditor editor = m_editors.get(i); + editor.setReadWrite(rw); } } @@ -543,141 +542,185 @@ public class WPAttributeDialog extends Window implements EventListener if (log.isLoggable(Level.FINE)) log.fine(attribute + ", Product=" + product + ", R/O=" + readOnly); m_row++; - Label label = new Label (attribute.getName()); - if (product) - label.setStyle("font-weight: bold"); - - if (attribute.getDescription() != null) - label.setTooltiptext(attribute.getDescription()); - - Row row = rows.newRow(); - row.appendChild(label.rightAlign()); + WEditor editor = null; // - if (MAttribute.ATTRIBUTEVALUETYPE_List.equals(attribute.getAttributeValueType())) { - MAttributeValue[] values = attribute.getMAttributeValues(); // optional = null - Listbox editor = new Listbox(); - editor.setMold("select"); - for (MAttributeValue value : values) - { - ListItem item = new ListItem(value != null ? value.getName() : "", value); - editor.appendChild(item); - } - if (readOnly) - editor.setEnabled(false); - else - m_editors.add (editor); - row.appendChild(editor); - ZKUpdateUtil.setHflex(editor, "1"); - setListAttribute(attribute, editor); + editor = WebEditorFactory.getEditor(getListTypeGridField(attribute), true); } else if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attribute.getAttributeValueType())) { - NumberBox editor = new NumberBox(false); - setNumberAttribute(attribute, editor); - row.appendChild(editor); - ZKUpdateUtil.setHflex(editor, "1"); - if (readOnly) - editor.setEnabled(false); - else - m_editors.add (editor); + editor = WebEditorFactory.getEditor(getNumberGridField(attribute), true); } - else if(MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attribute.getAttributeValueType())) + else if (MAttribute.ATTRIBUTEVALUETYPE_Reference.equals(attribute.getAttributeValueType())) { - Datebox editor = new Datebox(); - setDateAttribute(attribute, editor); - row.appendChild(editor); - if(readOnly) - editor.setEnabled(false); + editor = WebEditorFactory.getEditor(getGridField(attribute), true); + } + else if (MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attribute.getAttributeValueType())) + { + editor = WebEditorFactory.getEditor(getDateGridField(attribute), true); + } + else // Text Field + { + editor = WebEditorFactory.getEditor(getStringGridField(attribute), true); + } + + if (editor != null) + { + Row row = rows.newRow(); + + Label label = editor.getLabel(); + if (label.getValue() == null || label.getValue().trim().length() < 1) + label.setValue(attribute.getName()); + + if (product) + label.setStyle("font-weight: bold"); + + row.appendChild(label.rightAlign()); + + editor.setMandatory(attribute.isMandatory()); + editor.fillHorizontal(); + setEditorAttribute(attribute, editor); + editor.addValueChangeListener(new ValueChangeListener() { + + @Override + public void valueChange(ValueChangeEvent evt) + { + if (evt.getSource() instanceof WEditor) + { + WEditor sourceEditor = (WEditor) evt.getSource(); + // IDEMPIERE-2999 - set value in online button as HRef + if (sourceEditor.getGridField().getDisplayType() == DisplayType.URL) + ((Urlbox) sourceEditor.getComponent()).setText((String) evt.getNewValue()); + } + } + }); + + Component fieldEditor = editor.getComponent(); + row.appendChild(fieldEditor); + editor.showMenu(); + if (readOnly) + editor.setReadWrite(false); else m_editors.add(editor); - - } - else // Text Field - { - Textbox editor = new Textbox(); - setStringAttribute(attribute, editor); - row.appendChild(editor); - ZKUpdateUtil.setHflex(editor, "1"); - if (readOnly) - editor.setEnabled(false); - else - m_editors.add (editor); } } // addAttributeLine - private void updateAttributeEditor(MAttribute attribute, int index) { - if (MAttribute.ATTRIBUTEVALUETYPE_List.equals(attribute.getAttributeValueType())) - { - Listbox editor = (Listbox) m_editors.get(index); - setListAttribute(attribute, editor); - - } - else if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attribute.getAttributeValueType())) - { - 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); - setStringAttribute(attribute, editor); - } - } - - private void setStringAttribute(MAttribute attribute, Textbox editor) { - MAttributeInstance instance = attribute.getMAttributeInstance (m_M_AttributeSetInstance_ID); - if (instance != null) - editor.setText(instance.getValue()); - } + public GridField getGridField(MAttribute attribute) + { + GridFieldVO vo = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, AEnv.getADWindowID(m_WindowNo), 0, 0, attribute.getName(), + Msg.translate(Env.getCtx(), attribute.get_Translation("Name")), attribute.getAD_Reference_ID(), + attribute.getAD_Reference_Value_ID(), false, false, null); - private void setNumberAttribute(MAttribute attribute, NumberBox editor) { - MAttributeInstance instance = attribute.getMAttributeInstance (m_M_AttributeSetInstance_ID); - if (instance != null) - editor.setValue(instance.getValueNumber()); - else - editor.setValue(Env.ZERO); - } - - private void setDateAttribute(MAttribute attribute,Datebox editor) + if (attribute.isAttributeValueTypeReference() && DisplayType.isLookup(attribute.getAD_Reference_ID()) && attribute.getAD_Val_Rule_ID() > 0) + { + vo.ValidationCode = attribute.getAD_Val_Rule().getCode(); + if (vo.lookupInfo != null) + { + vo.lookupInfo.ValidationCode = vo.ValidationCode; + vo.lookupInfo.IsValidated = false; + } + } + + return createGridField(attribute, vo); + } // getGridField + + public GridField getStringGridField(MAttribute attribute) + { + GridFieldVO vo = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, AEnv.getADWindowID(m_WindowNo), 0, 0, attribute.getName(), + Msg.translate(Env.getCtx(), attribute.get_Translation("Name")), DisplayType.String, 0, false, false, null); + + return createGridField(attribute, vo); + } // getStringGridField + + public GridField getNumberGridField(MAttribute attribute) + { + GridFieldVO vo = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, AEnv.getADWindowID(m_WindowNo), 0, 0, attribute.getName(), + Msg.translate(Env.getCtx(), attribute.get_Translation("Name")), DisplayType.Number, 0, false, false, null); + + return createGridField(attribute, vo); + } // getNumberGridField + + public GridField getDateGridField(MAttribute attribute) + { + GridFieldVO vo = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, AEnv.getADWindowID(m_WindowNo), 0, 0, attribute.getName(), + Msg.translate(Env.getCtx(), attribute.get_Translation("Name")), DisplayType.Date, 0, false, false, null); + + return createGridField(attribute, vo); + } // getDateGridField + + public GridField getListTypeGridField(MAttribute attribute) + { + GridFieldVO vo = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, AEnv.getADWindowID(m_WindowNo), 0, 0, + "M_AttributeValue_ID", attribute.getName(), DisplayType.TableDir, 0, false, false, null); + + // Validation for List - Attribute Values + vo.ValidationCode = "M_AttributeValue.M_Attribute_ID=" + attribute.get_ID(); + vo.lookupInfo.ValidationCode = vo.ValidationCode; + vo.lookupInfo.IsValidated = false; + + return createGridField(attribute, vo); + } // getListTypeGridField + + private GridField createGridField(MAttribute attribute, GridFieldVO vo) + { + String desc = attribute.get_Translation("Description"); + vo.Description = desc != null ? desc : ""; + return new GridField(vo); + } // createGridField + + public void updateAttributeEditor(MAttribute attribute, int index) + { + WEditor editor = m_editors.get(index); + if (editor != null) + setEditorAttribute(attribute, editor); + } // updateAttributeEditor + + public void setEditorAttribute(MAttribute attribute, WEditor editor) { MAttributeInstance instance = attribute.getMAttributeInstance(m_M_AttributeSetInstance_ID); - if(instance != null) - editor.setValue(instance.getValueDate()); - else - editor.setValue(null); - } - - private void setListAttribute(MAttribute attribute, Listbox editor) { - boolean found = false; - MAttributeInstance instance = attribute.getMAttributeInstance (m_M_AttributeSetInstance_ID); - MAttributeValue[] values = attribute.getMAttributeValues(); // optional = null if (instance != null) { - for (int i = 0; i < values.length; i++) + if (MAttribute.ATTRIBUTEVALUETYPE_List.equals(attribute.getAttributeValueType())) { - if (values[i] != null && values[i].getM_AttributeValue_ID () == instance.getM_AttributeValue_ID ()) + if (instance.getM_AttributeValue_ID() > 0) + editor.setValue(instance.getM_AttributeValue_ID()); + } + else + { + int displayType = editor.getGridField().getDisplayType(); + if (displayType == DisplayType.Date || displayType == DisplayType.DateTime || displayType == DisplayType.Time) { - editor.setSelectedIndex (i); - found = true; - break; + if (instance.getValueDate() != null) + editor.setValue(instance.getValueDate()); + } + else if (displayType == DisplayType.Image || displayType == DisplayType.Assignment + || displayType == DisplayType.Locator + || displayType == DisplayType.TableDir + || displayType == DisplayType.Table + || displayType == DisplayType.Search + || displayType == DisplayType.Account) + { + if (instance.getValueInt() > 0) + editor.setValue(instance.getValueInt()); + } + else if (displayType == DisplayType.Integer) + { + editor.setValue(instance.getValueInt()); + } + else if (DisplayType.isNumeric(displayType)) + { + if (instance.getValueNumber() != null) + editor.setValue(instance.getValueNumber()); + } + else + { + if (instance.getValue() != null) + editor.setValue(instance.getValue()); } } - if (found ){ - if (log.isLoggable(Level.FINE)) log.fine("Attribute=" + attribute.getName() + " #" + values.length + " - found: " + instance); - } else { - log.warning("Attribute=" + attribute.getName() + " #" + values.length + " - NOT found: " + instance); - } - } // setComboBox - else - if (log.isLoggable(Level.FINE)) log.fine("Attribute=" + attribute.getName() + " #" + values.length + " no instance"); - } + } + } // setEditorAttribute /** * dispose @@ -810,27 +853,9 @@ public class WPAttributeDialog extends Window implements EventListener m_masi = new MAttributeSetInstance (Env.getCtx(), m_M_AttributeSetInstance_ID, M_AttributeSet_ID, null); for (int i = 0; i < m_editors.size(); i++) { - HtmlBasedComponent editor = m_editors.get(i); - if (editor instanceof Listbox) - { - ((Listbox)editor).setEnabled(true); - ((Listbox)editor).setSelectedItem(null); - } - else if (editor instanceof NumberBox) - { - ((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); - } + WEditor editor = m_editors.get(i); + editor.setReadWrite(true); + editor.setValue(null); } fieldDescription.setText(""); } @@ -839,18 +864,9 @@ public class WPAttributeDialog extends Window implements EventListener boolean check = cbNewEdit.isSelected(); for (int i = 0; i < m_editors.size(); i++) { - HtmlBasedComponent editor = m_editors.get(i); - if (editor instanceof Datebox) - ((Datebox) editor).setEnabled(check); - else if (editor instanceof Listbox) - ((Listbox) editor).setEnabled(check); - else if (editor instanceof NumberBox) - ((NumberBox) editor).setEnabled(check); - else if (editor instanceof InputElement) - ((InputElement) editor).setReadonly(!check); - + WEditor editor = m_editors.get(i); + editor.setReadWrite(check); } - } /** @@ -941,16 +957,8 @@ 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 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); - + WEditor editor = m_editors.get(i); + editor.setReadWrite(rw); } } // cmd_newEdit @@ -997,119 +1005,122 @@ public class WPAttributeDialog extends Window implements EventListener } Trx trx = null; String mandatory = ""; - try { - String trxName = Trx.createTrxName("WPAD"); - trx = Trx.get(trxName, false); - trx.setDisplayName(getClass().getName()+"_saveSelection"); - m_masi.set_TrxName(trxName); - as.set_TrxName(trxName); - - // - m_changed = false; - if (!m_productWindow && as.isLot()) - { - if (log.isLoggable(Level.FINE)) log.fine("Lot=" + fieldLotString.getText ()); - String text = fieldLotString.getText(); - m_masi.setLot (text); - if (as.isLotMandatory() && (text == null || text.length() == 0)) - mandatory += " - " + Msg.translate(Env.getCtx(), "Lot"); - m_changed = true; - } // Lot - if (!m_productWindow && as.isSerNo()) - { - if (log.isLoggable(Level.FINE)) log.fine("SerNo=" + fieldSerNo.getText()); - String text = fieldSerNo.getText(); - m_masi.setSerNo(text); - if (as.isSerNoMandatory() && (text == null || text.length() == 0)) - mandatory += " - " + Msg.translate(Env.getCtx(), "SerNo"); - m_changed = true; - } // SerNo - if (!m_productWindow && as.isGuaranteeDate()) - { - if (log.isLoggable(Level.FINE)) log.fine("GuaranteeDate=" + fieldGuaranteeDate.getValue()); - Date gDate = fieldGuaranteeDate.getValue(); - Timestamp ts = gDate != null ? new Timestamp(gDate.getTime()) : null; - m_masi.setGuaranteeDate(ts); - if (as.isGuaranteeDateMandatory() && ts == null) - mandatory += " - " + Msg.translate(Env.getCtx(), "GuaranteeDate"); - m_changed = true; - } // GuaranteeDate - - - // *** Save Attributes *** - // New Instance - if (mandatory.isEmpty() && (m_changed || m_masi.getM_AttributeSetInstance_ID() == 0)) - { - m_masi.saveEx(); + try { + String trxName = Trx.createTrxName("WPAD"); + trx = Trx.get(trxName, false); + trx.setDisplayName(getClass().getName()+"_saveSelection"); + m_masi.set_TrxName(trxName); + as.set_TrxName(trxName); + + // + m_changed = false; + if (!m_productWindow && as.isLot()) + { + if (log.isLoggable(Level.FINE)) log.fine("Lot=" + fieldLotString.getText ()); + String text = fieldLotString.getText(); + m_masi.setLot (text); + if (as.isLotMandatory() && (text == null || text.length() == 0)) + mandatory += " - " + Msg.translate(Env.getCtx(), "Lot"); + m_changed = true; + } // Lot + if (!m_productWindow && as.isSerNo()) + { + if (log.isLoggable(Level.FINE)) log.fine("SerNo=" + fieldSerNo.getText()); + String text = fieldSerNo.getText(); + m_masi.setSerNo(text); + if (as.isSerNoMandatory() && (text == null || text.length() == 0)) + mandatory += " - " + Msg.translate(Env.getCtx(), "SerNo"); + m_changed = true; + } // SerNo + if (!m_productWindow && as.isGuaranteeDate()) + { + if (log.isLoggable(Level.FINE)) log.fine("GuaranteeDate=" + fieldGuaranteeDate.getValue()); + Date gDate = fieldGuaranteeDate.getValue(); + Timestamp ts = gDate != null ? new Timestamp(gDate.getTime()) : null; + m_masi.setGuaranteeDate(ts); + if (as.isGuaranteeDateMandatory() && ts == null) + mandatory += " - " + Msg.translate(Env.getCtx(), "GuaranteeDate"); + m_changed = true; + } // GuaranteeDate + + // *** Save Attributes *** + // New Instance + if (mandatory.isEmpty() && (m_changed || m_masi.getM_AttributeSetInstance_ID() == 0)) + { + m_masi.saveEx(); + m_M_AttributeSetInstance_ID = m_masi.getM_AttributeSetInstance_ID (); + m_M_AttributeSetInstanceName = m_masi.getDescription(); + } + + // 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())) + { + WEditor editor = (WEditor) m_editors.get(i); + Object item = editor.getValue(); + MAttributeValue value = (item != null && Integer.valueOf(String.valueOf(item)) > 0) ? new MAttributeValue( + Env.getCtx(), Integer.valueOf(String.valueOf(item)), null) : null; + if (log.isLoggable(Level.FINE)) log.fine(attributes[i].getName() + "=" + value); + if (attributes[i].isMandatory() && value == null) + mandatory += " - " + attributes[i].getName(); + attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, value); + } + else if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attributes[i].getAttributeValueType())) + { + WEditor editor = (WEditor)m_editors.get(i); + BigDecimal value = (BigDecimal) editor.getValue(); + if (log.isLoggable(Level.FINE)) log.fine(attributes[i].getName() + "=" + value); + if (attributes[i].isMandatory() && value == null) + mandatory += " - " + attributes[i].getName(); + //setMAttributeInstance doesn't work without decimal point + if (value != null && value.scale() == 0) + value = value.setScale(1, RoundingMode.HALF_UP); + attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, value); + } + else if (MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attributes[i].getAttributeValueType())) + { + WEditor editor = (WEditor) m_editors.get(i); + Date value = (Date)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 if(MAttribute.ATTRIBUTEVALUETYPE_Reference.equals(attributes[i].getAttributeValueType())) + { + setEditorValue(mandatory, attributes[i], m_editors.get(i)); + } + else + { + WEditor editor = m_editors.get(i); + String value = String.valueOf(editor.getValue()); + if (log.isLoggable(Level.FINE)) log.fine(attributes[i].getName() + "=" + value); + if (attributes[i].isMandatory() && (value == null || value.length() == 0)) + mandatory += " - " + attributes[i].getName(); + attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, value); + } + m_changed = true; + } // for all attributes m_M_AttributeSetInstance_ID = m_masi.getM_AttributeSetInstance_ID (); m_M_AttributeSetInstanceName = m_masi.getDescription(); + // + if (mandatory.length() > 0) + { + FDialog.error(m_WindowNo, this, "FillMandatory", mandatory); + return false; + } + // Save Model + else if (m_changed) + { + m_masi.setDescription (); + m_masi.saveEx(); + } } - - // 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())) - { - Listbox editor = (Listbox)m_editors.get(i); - ListItem item = editor.getSelectedItem(); - MAttributeValue value = item != null ? (MAttributeValue)item.getValue() : null; - if (log.isLoggable(Level.FINE)) log.fine(attributes[i].getName() + "=" + value); - if (attributes[i].isMandatory() && value == null) - mandatory += " - " + attributes[i].getName(); - attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, value); - } - else if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attributes[i].getAttributeValueType())) - { - NumberBox editor = (NumberBox)m_editors.get(i); - BigDecimal value = editor.getValue(); - if (log.isLoggable(Level.FINE)) log.fine(attributes[i].getName() + "=" + value); - if (attributes[i].isMandatory() && value == null) - mandatory += " - " + attributes[i].getName(); - //setMAttributeInstance doesn't work without decimal point - if (value != null && value.scale() == 0) - value = value.setScale(1, RoundingMode.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); - String value = editor.getText(); - if (log.isLoggable(Level.FINE)) log.fine(attributes[i].getName() + "=" + value); - if (attributes[i].isMandatory() && (value == null || value.length() == 0)) - mandatory += " - " + attributes[i].getName(); - attributes[i].setMAttributeInstance(m_M_AttributeSetInstance_ID, value); - } - m_changed = true; - } // for all attributes - m_M_AttributeSetInstance_ID = m_masi.getM_AttributeSetInstance_ID (); - m_M_AttributeSetInstanceName = m_masi.getDescription(); - // - if (mandatory.length() > 0) - { - FDialog.error(m_WindowNo, this, "FillMandatory", mandatory); - return false; - } - // Save Model - else if (m_changed) - { - m_masi.setDescription (); - m_masi.saveEx(); - } - } - finally { - if (trx != null) { + finally { + if (trx != null) { if (!m_changed || mandatory.length() > 0) { // Rollback @@ -1122,11 +1133,70 @@ public class WPAttributeDialog extends Window implements EventListener } trx.close(); trx = null; - } - } + } + } return true; } // saveSelection + public String setEditorValue(String mandatory, MAttribute attributes, WEditor editor) + { + int displayType = editor.getGridField().getDisplayType(); + if (displayType == DisplayType.YesNo) + { + String value = (boolean) editor.getValue() ? "Y" : "N"; + attributes.setMAttributeInstance(m_M_AttributeSetInstance_ID, value); + } + else if (displayType == DisplayType.Date || displayType == DisplayType.DateTime || displayType == DisplayType.Time) + { + Timestamp valueTimeStamp = (Timestamp) editor.getValue(); + if (attributes.isMandatory() && valueTimeStamp == null) + mandatory += " - " + attributes.getName(); + + attributes.setMAttributeInstance(m_M_AttributeSetInstance_ID, valueTimeStamp); + } + else if (DisplayType.isNumeric(displayType)) + { + Object value = editor.getValue(); + if (attributes.isMandatory() && value == null) + mandatory += " - " + attributes.getName(); + if (displayType == DisplayType.Integer) + attributes.setMAttributeInstance(m_M_AttributeSetInstance_ID, value == null ? 0 : ((Number) value).intValue(), null); + else + attributes.setMAttributeInstance(m_M_AttributeSetInstance_ID, (BigDecimal) value); + } + else if (displayType == DisplayType.Image + || displayType == DisplayType.Assignment + || displayType == DisplayType.Locator + || displayType == DisplayType.TableDir + || displayType == DisplayType.Table + || displayType == DisplayType.Search + || displayType == DisplayType.Account) + { + Integer value = (Integer) editor.getValue(); + if (attributes.isMandatory() && value == null) + mandatory += " - " + attributes.getName(); + + String valueLable = null; + if (displayType == DisplayType.TableDir + || displayType == DisplayType.Table + || displayType == DisplayType.Search + || displayType == DisplayType.Account) + { + valueLable = editor.getDisplay(); + } + + attributes.setMAttributeInstance(m_M_AttributeSetInstance_ID, value == null ? 0 : value.intValue(), valueLable); + } + else + { + String value = (String) editor.getValue(); + if (attributes.isMandatory() && value == null) + mandatory += " - " + attributes.getName(); + + attributes.setMAttributeInstance(m_M_AttributeSetInstance_ID, value); + } + return mandatory; + } // setEditorValue /************************************************************************** * Get Instance ID