From 59b7e3c89970ac607b348e583bdcdec83eff3308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Tak=C3=A1cs?= <93127072+PeterTakacs300@users.noreply.github.com> Date: Thu, 27 Oct 2022 05:27:13 +0200 Subject: [PATCH] IDEMPIERE-5443 - Date Range Filter Component (#1526) * IDEMPIERE-5443 - Date Range Filter Component * IDEMPIERE-5443 - fix migration script filename * IDEMPIERE-5443 - new reference type Date Range Picker for process * IDEMPIERE-5443 - remove Date Range Editor * IDEMPIERE-5443 - pr1526 patch * IDEMPIERE-5443 - fixes * IDEMPIERE-5443 - nix NPE, add Locale --- .../oracle/202210041053_IDEMPIERE-5443.sql | 178 +++++ .../oracle/202210251555_IDEMPIERE-5443.sql | 18 + .../202210041053_IDEMPIERE-5443.sql | 175 +++++ .../202210251555_IDEMPIERE-5443.sql | 15 + .../webui/apps/ProcessParameterPanel.java | 6 + .../org/adempiere/webui/editor/WEditor.java | 49 +- .../webui/window/DateRangeButton.java | 87 +++ .../webui/window/DateRangePicker.java | 690 ++++++++++++++++++ .../adempiere/webui/window/FindWindow.java | 116 ++- .../theme/default/css/fragment/window.css.dsp | 22 +- 10 files changed, 1316 insertions(+), 40 deletions(-) create mode 100644 migration/iD10/oracle/202210041053_IDEMPIERE-5443.sql create mode 100644 migration/iD10/oracle/202210251555_IDEMPIERE-5443.sql create mode 100644 migration/iD10/postgresql/202210041053_IDEMPIERE-5443.sql create mode 100644 migration/iD10/postgresql/202210251555_IDEMPIERE-5443.sql create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangeButton.java create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangePicker.java diff --git a/migration/iD10/oracle/202210041053_IDEMPIERE-5443.sql b/migration/iD10/oracle/202210041053_IDEMPIERE-5443.sql new file mode 100644 index 0000000000..0cc639082b --- /dev/null +++ b/migration/iD10/oracle/202210041053_IDEMPIERE-5443.sql @@ -0,0 +1,178 @@ +-- IDEMPIERE-5443 +SELECT register_migration_script('202210041053_IDEMPIERE-5443.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Oct 4, 2022, 4:07:25 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,Description,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200217,'DateSelectionMode','Date Selection Mode','L',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:07:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:07:25','YYYY-MM-DD HH24:MI:SS'),100,'D','N','c7a6eae8-e3af-4072-aced-cdd10a18f8da') +; + +-- Oct 4, 2022, 4:08:11 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200561,'Previous',200217,'P',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:11','YYYY-MM-DD HH24:MI:SS'),100,'D','573c8cf3-0c70-4a89-b7fc-595eba982c6d') +; + +-- Oct 4, 2022, 4:08:21 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200562,'Next',200217,'N',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:21','YYYY-MM-DD HH24:MI:SS'),100,'D','e7a8b7ad-c970-4a5e-85a5-fe6b1bb004b9') +; + +-- Oct 4, 2022, 4:08:36 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200563,'Current',200217,'C',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:36','YYYY-MM-DD HH24:MI:SS'),100,'D','1344c204-9744-4473-89ae-3188183ebc89') +; + +-- Oct 4, 2022, 4:08:47 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200564,'Before',200217,'B',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:47','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:47','YYYY-MM-DD HH24:MI:SS'),100,'D','603e46ea-12e6-4c4b-86bc-0b07924f9534') +; + +-- Oct 4, 2022, 4:08:56 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200565,'After',200217,'A',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:55','YYYY-MM-DD HH24:MI:SS'),100,'D','ca9abc44-80eb-4f22-abcc-9161af2e3057') +; + +-- Oct 4, 2022, 4:09:09 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200566,'On',200217,'O',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:09:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:09:08','YYYY-MM-DD HH24:MI:SS'),100,'D','7c20abd1-fabf-44ca-9b6f-e55a4af06e46') +; + +-- Oct 4, 2022, 4:09:22 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200567,'Between',200217,'BW',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:09:22','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:09:22','YYYY-MM-DD HH24:MI:SS'),100,'D','30b8b6bd-631d-4c23-924b-691f840041ed') +; + +-- Oct 6, 2022, 4:18:39 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','After {0}',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:18:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:18:39','YYYY-MM-DD HH24:MI:SS'),100,200790,'AfterDate','D','cf7ace7d-a6d0-4ef5-a7e4-84409100e6aa') +; + +-- Oct 6, 2022, 4:19:20 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Before {0}',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:19:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:19:20','YYYY-MM-DD HH24:MI:SS'),100,200791,'BeforeDate','D','280bb6a6-0d19-4c54-946c-d60b712093b6') +; + +-- Oct 6, 2022, 4:20:06 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','On {0}',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:20:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:20:06','YYYY-MM-DD HH24:MI:SS'),100,200792,'OnDate','D','f229dfef-7775-450f-be84-dc84c13ea7ff') +; + +-- Oct 6, 2022, 4:21:16 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Update Filter',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:21:15','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:21:15','YYYY-MM-DD HH24:MI:SS'),100,200793,'UpdateFilter','D','252c9784-e2ec-4cca-87b8-3a5d1b5b73e2') +; + +-- Oct 6, 2022, 5:25:59 PM CEST +UPDATE AD_Ref_List SET Value='01',Updated=TO_TIMESTAMP('2022-10-06 17:25:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200561 +; + +-- Oct 6, 2022, 5:26:02 PM CEST +UPDATE AD_Ref_List SET Value='02',Updated=TO_TIMESTAMP('2022-10-06 17:26:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200562 +; + +-- Oct 6, 2022, 5:26:07 PM CEST +UPDATE AD_Ref_List SET Value='03',Updated=TO_TIMESTAMP('2022-10-06 17:26:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200563 +; + +-- Oct 6, 2022, 5:26:20 PM CEST +UPDATE AD_Ref_List SET Value='04',Updated=TO_TIMESTAMP('2022-10-06 17:26:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200564 +; + +-- Oct 6, 2022, 5:26:23 PM CEST +UPDATE AD_Ref_List SET Value='05',Updated=TO_TIMESTAMP('2022-10-06 17:26:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200565 +; + +-- Oct 6, 2022, 5:26:27 PM CEST +UPDATE AD_Ref_List SET Value='07',Updated=TO_TIMESTAMP('2022-10-06 17:26:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200567 +; + +-- Oct 6, 2022, 5:26:39 PM CEST +UPDATE AD_Ref_List SET Value='06',Updated=TO_TIMESTAMP('2022-10-06 17:26:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200566 +; + +-- Oct 6, 2022, 5:31:25 PM CEST +UPDATE AD_Reference SET IsOrderByValue='Y',Updated=TO_TIMESTAMP('2022-10-06 17:31:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=200217 +; + +-- Oct 7, 2022, 4:45:08 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200568,'Quick',200217,'08',0,0,'Y',TO_TIMESTAMP('2022-10-07 16:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-07 16:45:07','YYYY-MM-DD HH24:MI:SS'),100,'D','b7e5adb3-b9ce-4bae-bd19-8c8e60413d18') +; + +-- Oct 11, 2022, 3:21:59 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200221,'Months','L',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:21:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:21:59','YYYY-MM-DD HH24:MI:SS'),100,'D','N','bbabc9d6-241d-4cb9-b5b5-2b02e37abdf1') +; + +-- Oct 11, 2022, 3:22:32 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200600,'January',200221,'01',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:22:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:22:32','YYYY-MM-DD HH24:MI:SS'),100,'D','d4575089-ba8d-4438-84e7-9e0ef0381f3e') +; + +-- Oct 11, 2022, 3:22:41 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200601,'February',200221,'02',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:22:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:22:40','YYYY-MM-DD HH24:MI:SS'),100,'D','d553098d-4e18-490c-ba35-3735e0546a77') +; + +-- Oct 11, 2022, 3:22:55 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200602,'March',200221,'03',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:22:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:22:55','YYYY-MM-DD HH24:MI:SS'),100,'D','7be305ae-1774-4200-b30d-8c62b896759c') +; + +-- Oct 11, 2022, 3:23:04 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200603,'April',200221,'04',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:03','YYYY-MM-DD HH24:MI:SS'),100,'D','f612d5c5-89d7-4abe-8f6b-387587a35386') +; + +-- Oct 11, 2022, 3:23:11 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200604,'May',200221,'05',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:11','YYYY-MM-DD HH24:MI:SS'),100,'D','50bbeb15-5ad4-490d-86a9-c3a892ca8ee8') +; + +-- Oct 11, 2022, 3:23:19 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200605,'June',200221,'06',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:18','YYYY-MM-DD HH24:MI:SS'),100,'D','38a38a15-233e-43ab-86e5-1ce87416f7f9') +; + +-- Oct 11, 2022, 3:23:27 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200606,'July',200221,'07',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:26','YYYY-MM-DD HH24:MI:SS'),100,'D','ea6cc9a3-80ca-439b-be9b-8bf261e0eeec') +; + +-- Oct 11, 2022, 3:23:43 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200607,'August',200221,'08',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:43','YYYY-MM-DD HH24:MI:SS'),100,'D','d15ff0d4-0997-4f49-a49a-fb197a38b090') +; + +-- Oct 11, 2022, 3:24:10 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200608,'September',200221,'09',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:10','YYYY-MM-DD HH24:MI:SS'),100,'D','289db278-fab8-43d6-a83d-621f1c0ef71d') +; + +-- Oct 11, 2022, 3:24:18 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200609,'October',200221,'10',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:18','YYYY-MM-DD HH24:MI:SS'),100,'D','d9bcc45a-dcb1-4c2b-bc90-581ea527625d') +; + +-- Oct 11, 2022, 3:24:25 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200610,'November',200221,'11',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:25','YYYY-MM-DD HH24:MI:SS'),100,'D','5d8b3451-0d70-4912-842d-dd19c40a681e') +; + +-- Oct 11, 2022, 3:24:33 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200611,'December',200221,'12',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:33','YYYY-MM-DD HH24:MI:SS'),100,'D','01cdce86-aa1b-4b80-9849-bc2df988ad4c') +; + +-- Oct 11, 2022, 3:24:41 PM CEST +UPDATE AD_Reference SET IsOrderByValue='Y',Updated=TO_TIMESTAMP('2022-10-11 15:24:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=200221 +; + +-- Oct 11, 2022, 3:24:53 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200222,'Quarters','L',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:52','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','c045f9d5-379c-490f-b96d-920c5ac59d50') +; + +-- Oct 11, 2022, 3:25:08 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200612,'First Quarter',200222,'01',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:08','YYYY-MM-DD HH24:MI:SS'),100,'D','3d5d0b5c-2239-41f9-ac3b-5f6f931357c3') +; + +-- Oct 11, 2022, 3:25:18 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200613,'Second Quarter',200222,'02',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:17','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:17','YYYY-MM-DD HH24:MI:SS'),100,'D','417f6b55-1451-4f85-bfbf-7fa3153a5473') +; + +-- Oct 11, 2022, 3:25:27 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200614,'Third Quarter',200222,'03',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:27','YYYY-MM-DD HH24:MI:SS'),100,'D','d984daa5-7b2b-4233-8860-a03ee0e72c7c') +; + +-- Oct 11, 2022, 3:25:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200615,'Fourth Quarter',200222,'04',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:34','YYYY-MM-DD HH24:MI:SS'),100,'D','95ecec3c-9829-488a-b376-d7af83ba9448') +; + +-- Oct 11, 2022, 4:51:05 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Current Year Months',0,0,'Y',TO_TIMESTAMP('2022-10-11 16:51:05','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 16:51:05','YYYY-MM-DD HH24:MI:SS'),100,200794,'CurrentYearMonths','D','6bd493c4-79a8-4a50-8eb0-c45b4a58bfa6') +; + +-- Oct 11, 2022, 4:51:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Current Year Quarters',0,0,'Y',TO_TIMESTAMP('2022-10-11 16:51:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 16:51:30','YYYY-MM-DD HH24:MI:SS'),100,200795,'CurrentYearQuarters','D','83a2c54d-6282-4a05-a016-19da13fdf681') +; + +-- Oct 11, 2022, 5:00:16 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Selected Time Range',0,0,'Y',TO_TIMESTAMP('2022-10-11 17:00:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 17:00:16','YYYY-MM-DD HH24:MI:SS'),100,200796,'SelectedTimeRange','D','16d9cce7-fff1-4375-8bbb-af300c3c1a18') +; + diff --git a/migration/iD10/oracle/202210251555_IDEMPIERE-5443.sql b/migration/iD10/oracle/202210251555_IDEMPIERE-5443.sql new file mode 100644 index 0000000000..2ce1ad380b --- /dev/null +++ b/migration/iD10/oracle/202210251555_IDEMPIERE-5443.sql @@ -0,0 +1,18 @@ +-- IDEMPIERE-5443 +SELECT register_migration_script('202210251555_IDEMPIERE-5443.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Oct 25, 2022, 3:55:13 PM CEST +UPDATE AD_Message SET MsgText='Range',Updated=TO_TIMESTAMP('2022-10-25 15:55:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200796 +; + +-- Oct 25, 2022, 3:55:43 PM CEST +UPDATE AD_Message SET MsgText='Apply', Value='ApplyFilter',Updated=TO_TIMESTAMP('2022-10-25 15:55:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200793 +; + +-- Oct 25, 2022, 4:15:00 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','End Date must be after Start Date',0,0,'Y',TO_TIMESTAMP('2022-10-25 16:14:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-25 16:14:59','YYYY-MM-DD HH24:MI:SS'),100,200797,'EndDateAfterStartDate','D','9d7aa27f-ec1f-407f-bbf0-6659885c7b80') +; + diff --git a/migration/iD10/postgresql/202210041053_IDEMPIERE-5443.sql b/migration/iD10/postgresql/202210041053_IDEMPIERE-5443.sql new file mode 100644 index 0000000000..5a49d4e281 --- /dev/null +++ b/migration/iD10/postgresql/202210041053_IDEMPIERE-5443.sql @@ -0,0 +1,175 @@ +-- IDEMPIERE-5443 +SELECT register_migration_script('202210041053_IDEMPIERE-5443.sql') FROM dual; + +-- Oct 4, 2022, 4:07:25 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,Description,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200217,'DateSelectionMode','Date Selection Mode','L',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:07:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:07:25','YYYY-MM-DD HH24:MI:SS'),100,'D','N','c7a6eae8-e3af-4072-aced-cdd10a18f8da') +; + +-- Oct 4, 2022, 4:08:11 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200561,'Previous',200217,'P',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:11','YYYY-MM-DD HH24:MI:SS'),100,'D','573c8cf3-0c70-4a89-b7fc-595eba982c6d') +; + +-- Oct 4, 2022, 4:08:21 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200562,'Next',200217,'N',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:21','YYYY-MM-DD HH24:MI:SS'),100,'D','e7a8b7ad-c970-4a5e-85a5-fe6b1bb004b9') +; + +-- Oct 4, 2022, 4:08:36 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200563,'Current',200217,'C',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:36','YYYY-MM-DD HH24:MI:SS'),100,'D','1344c204-9744-4473-89ae-3188183ebc89') +; + +-- Oct 4, 2022, 4:08:47 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200564,'Before',200217,'B',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:47','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:47','YYYY-MM-DD HH24:MI:SS'),100,'D','603e46ea-12e6-4c4b-86bc-0b07924f9534') +; + +-- Oct 4, 2022, 4:08:56 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200565,'After',200217,'A',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:08:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:08:55','YYYY-MM-DD HH24:MI:SS'),100,'D','ca9abc44-80eb-4f22-abcc-9161af2e3057') +; + +-- Oct 4, 2022, 4:09:09 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200566,'On',200217,'O',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:09:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:09:08','YYYY-MM-DD HH24:MI:SS'),100,'D','7c20abd1-fabf-44ca-9b6f-e55a4af06e46') +; + +-- Oct 4, 2022, 4:09:22 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200567,'Between',200217,'BW',0,0,'Y',TO_TIMESTAMP('2022-10-04 16:09:22','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-04 16:09:22','YYYY-MM-DD HH24:MI:SS'),100,'D','30b8b6bd-631d-4c23-924b-691f840041ed') +; + +-- Oct 6, 2022, 4:18:39 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','After {0}',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:18:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:18:39','YYYY-MM-DD HH24:MI:SS'),100,200790,'AfterDate','D','cf7ace7d-a6d0-4ef5-a7e4-84409100e6aa') +; + +-- Oct 6, 2022, 4:19:20 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Before {0}',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:19:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:19:20','YYYY-MM-DD HH24:MI:SS'),100,200791,'BeforeDate','D','280bb6a6-0d19-4c54-946c-d60b712093b6') +; + +-- Oct 6, 2022, 4:20:06 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','On {0}',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:20:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:20:06','YYYY-MM-DD HH24:MI:SS'),100,200792,'OnDate','D','f229dfef-7775-450f-be84-dc84c13ea7ff') +; + +-- Oct 6, 2022, 4:21:16 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Update Filter',0,0,'Y',TO_TIMESTAMP('2022-10-06 16:21:15','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-06 16:21:15','YYYY-MM-DD HH24:MI:SS'),100,200793,'UpdateFilter','D','252c9784-e2ec-4cca-87b8-3a5d1b5b73e2') +; + +-- Oct 6, 2022, 5:25:59 PM CEST +UPDATE AD_Ref_List SET Value='01',Updated=TO_TIMESTAMP('2022-10-06 17:25:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200561 +; + +-- Oct 6, 2022, 5:26:02 PM CEST +UPDATE AD_Ref_List SET Value='02',Updated=TO_TIMESTAMP('2022-10-06 17:26:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200562 +; + +-- Oct 6, 2022, 5:26:07 PM CEST +UPDATE AD_Ref_List SET Value='03',Updated=TO_TIMESTAMP('2022-10-06 17:26:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200563 +; + +-- Oct 6, 2022, 5:26:20 PM CEST +UPDATE AD_Ref_List SET Value='04',Updated=TO_TIMESTAMP('2022-10-06 17:26:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200564 +; + +-- Oct 6, 2022, 5:26:23 PM CEST +UPDATE AD_Ref_List SET Value='05',Updated=TO_TIMESTAMP('2022-10-06 17:26:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200565 +; + +-- Oct 6, 2022, 5:26:27 PM CEST +UPDATE AD_Ref_List SET Value='07',Updated=TO_TIMESTAMP('2022-10-06 17:26:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200567 +; + +-- Oct 6, 2022, 5:26:39 PM CEST +UPDATE AD_Ref_List SET Value='06',Updated=TO_TIMESTAMP('2022-10-06 17:26:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200566 +; + +-- Oct 6, 2022, 5:31:25 PM CEST +UPDATE AD_Reference SET IsOrderByValue='Y',Updated=TO_TIMESTAMP('2022-10-06 17:31:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=200217 +; + +-- Oct 7, 2022, 4:45:08 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200568,'Quick',200217,'08',0,0,'Y',TO_TIMESTAMP('2022-10-07 16:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-07 16:45:07','YYYY-MM-DD HH24:MI:SS'),100,'D','b7e5adb3-b9ce-4bae-bd19-8c8e60413d18') +; + +-- Oct 11, 2022, 3:21:59 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200221,'Months','L',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:21:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:21:59','YYYY-MM-DD HH24:MI:SS'),100,'D','N','bbabc9d6-241d-4cb9-b5b5-2b02e37abdf1') +; + +-- Oct 11, 2022, 3:22:32 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200600,'January',200221,'01',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:22:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:22:32','YYYY-MM-DD HH24:MI:SS'),100,'D','d4575089-ba8d-4438-84e7-9e0ef0381f3e') +; + +-- Oct 11, 2022, 3:22:41 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200601,'February',200221,'02',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:22:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:22:40','YYYY-MM-DD HH24:MI:SS'),100,'D','d553098d-4e18-490c-ba35-3735e0546a77') +; + +-- Oct 11, 2022, 3:22:55 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200602,'March',200221,'03',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:22:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:22:55','YYYY-MM-DD HH24:MI:SS'),100,'D','7be305ae-1774-4200-b30d-8c62b896759c') +; + +-- Oct 11, 2022, 3:23:04 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200603,'April',200221,'04',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:03','YYYY-MM-DD HH24:MI:SS'),100,'D','f612d5c5-89d7-4abe-8f6b-387587a35386') +; + +-- Oct 11, 2022, 3:23:11 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200604,'May',200221,'05',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:11','YYYY-MM-DD HH24:MI:SS'),100,'D','50bbeb15-5ad4-490d-86a9-c3a892ca8ee8') +; + +-- Oct 11, 2022, 3:23:19 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200605,'June',200221,'06',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:18','YYYY-MM-DD HH24:MI:SS'),100,'D','38a38a15-233e-43ab-86e5-1ce87416f7f9') +; + +-- Oct 11, 2022, 3:23:27 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200606,'July',200221,'07',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:26','YYYY-MM-DD HH24:MI:SS'),100,'D','ea6cc9a3-80ca-439b-be9b-8bf261e0eeec') +; + +-- Oct 11, 2022, 3:23:43 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200607,'August',200221,'08',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:23:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:23:43','YYYY-MM-DD HH24:MI:SS'),100,'D','d15ff0d4-0997-4f49-a49a-fb197a38b090') +; + +-- Oct 11, 2022, 3:24:10 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200608,'September',200221,'09',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:10','YYYY-MM-DD HH24:MI:SS'),100,'D','289db278-fab8-43d6-a83d-621f1c0ef71d') +; + +-- Oct 11, 2022, 3:24:18 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200609,'October',200221,'10',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:18','YYYY-MM-DD HH24:MI:SS'),100,'D','d9bcc45a-dcb1-4c2b-bc90-581ea527625d') +; + +-- Oct 11, 2022, 3:24:25 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200610,'November',200221,'11',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:25','YYYY-MM-DD HH24:MI:SS'),100,'D','5d8b3451-0d70-4912-842d-dd19c40a681e') +; + +-- Oct 11, 2022, 3:24:33 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200611,'December',200221,'12',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:33','YYYY-MM-DD HH24:MI:SS'),100,'D','01cdce86-aa1b-4b80-9849-bc2df988ad4c') +; + +-- Oct 11, 2022, 3:24:41 PM CEST +UPDATE AD_Reference SET IsOrderByValue='Y',Updated=TO_TIMESTAMP('2022-10-11 15:24:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=200221 +; + +-- Oct 11, 2022, 3:24:53 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200222,'Quarters','L',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:24:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:24:52','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','c045f9d5-379c-490f-b96d-920c5ac59d50') +; + +-- Oct 11, 2022, 3:25:08 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200612,'First Quarter',200222,'01',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:08','YYYY-MM-DD HH24:MI:SS'),100,'D','3d5d0b5c-2239-41f9-ac3b-5f6f931357c3') +; + +-- Oct 11, 2022, 3:25:18 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200613,'Second Quarter',200222,'02',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:17','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:17','YYYY-MM-DD HH24:MI:SS'),100,'D','417f6b55-1451-4f85-bfbf-7fa3153a5473') +; + +-- Oct 11, 2022, 3:25:27 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200614,'Third Quarter',200222,'03',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:27','YYYY-MM-DD HH24:MI:SS'),100,'D','d984daa5-7b2b-4233-8860-a03ee0e72c7c') +; + +-- Oct 11, 2022, 3:25:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200615,'Fourth Quarter',200222,'04',0,0,'Y',TO_TIMESTAMP('2022-10-11 15:25:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 15:25:34','YYYY-MM-DD HH24:MI:SS'),100,'D','95ecec3c-9829-488a-b376-d7af83ba9448') +; + +-- Oct 11, 2022, 4:51:05 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Current Year Months',0,0,'Y',TO_TIMESTAMP('2022-10-11 16:51:05','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 16:51:05','YYYY-MM-DD HH24:MI:SS'),100,200794,'CurrentYearMonths','D','6bd493c4-79a8-4a50-8eb0-c45b4a58bfa6') +; + +-- Oct 11, 2022, 4:51:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Current Year Quarters',0,0,'Y',TO_TIMESTAMP('2022-10-11 16:51:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 16:51:30','YYYY-MM-DD HH24:MI:SS'),100,200795,'CurrentYearQuarters','D','83a2c54d-6282-4a05-a016-19da13fdf681') +; + +-- Oct 11, 2022, 5:00:16 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Selected Time Range',0,0,'Y',TO_TIMESTAMP('2022-10-11 17:00:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-11 17:00:16','YYYY-MM-DD HH24:MI:SS'),100,200796,'SelectedTimeRange','D','16d9cce7-fff1-4375-8bbb-af300c3c1a18') +; + diff --git a/migration/iD10/postgresql/202210251555_IDEMPIERE-5443.sql b/migration/iD10/postgresql/202210251555_IDEMPIERE-5443.sql new file mode 100644 index 0000000000..cde5712f35 --- /dev/null +++ b/migration/iD10/postgresql/202210251555_IDEMPIERE-5443.sql @@ -0,0 +1,15 @@ +-- IDEMPIERE-5443 +SELECT register_migration_script('202210251555_IDEMPIERE-5443.sql') FROM dual; + +-- Oct 25, 2022, 3:55:13 PM CEST +UPDATE AD_Message SET MsgText='Range',Updated=TO_TIMESTAMP('2022-10-25 15:55:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200796 +; + +-- Oct 25, 2022, 3:55:43 PM CEST +UPDATE AD_Message SET MsgText='Apply', Value='ApplyFilter',Updated=TO_TIMESTAMP('2022-10-25 15:55:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200793 +; + +-- Oct 25, 2022, 4:15:00 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','End Date must be after Start Date',0,0,'Y',TO_TIMESTAMP('2022-10-25 16:14:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-10-25 16:14:59','YYYY-MM-DD HH24:MI:SS'),100,200797,'EndDateAfterStartDate','D','9d7aa27f-ec1f-407f-bbf0-6659885c7b80') +; + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java index d8935ccbe1..0c00dab058 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java @@ -49,6 +49,7 @@ import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.util.ZKUpdateUtil; +import org.adempiere.webui.window.DateRangeButton; import org.adempiere.webui.window.Dialog; import org.compiere.apps.IProcessParameter; import org.compiere.model.GridField; @@ -463,6 +464,11 @@ public class ProcessParameterPanel extends Panel implements box.appendChild(separator); box.appendChild(editor2.getComponent()); row.appendChild(box); + if (((mField.getDisplayType() == DisplayType.Date) || (mField.getDisplayType() == DisplayType.DateTime)) + && ((mField2.getDisplayType() == DisplayType.Date) || (mField2.getDisplayType() == DisplayType.DateTime))) { + DateRangeButton dateRangeButton = new DateRangeButton(editor, editor2); + box.appendChild(dateRangeButton); + } } else { row.appendChild(editor.getComponent()); m_mFields2.add(null); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java index 493e3c4c77..5b4e555771 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java @@ -21,6 +21,7 @@ import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.List; import java.util.Properties; import org.adempiere.webui.AdempiereWebUI; @@ -106,6 +107,8 @@ public abstract class WEditor implements EventListener, PropertyChangeLis private boolean isProcessParameter; private String sValidInput; + + private final List dynamicDisplayListeners = new ArrayList<>(); /** * call to show context menu of this field. @@ -490,13 +493,23 @@ public abstract class WEditor implements EventListener, PropertyChangeLis */ public abstract boolean isReadWrite(); + /** + * + * @param visible + */ + public void setVisible(boolean visible) + { + this.setVisible(visible, visible); + } + /** * * @param visible + * @param labelVisible */ - public void setVisible(boolean visible) + public void setVisible(boolean visible, boolean labelVisible) { - label.setVisible(visible); + label.setVisible(labelVisible); component.setVisible(visible); } @@ -608,6 +621,9 @@ public abstract class WEditor implements EventListener, PropertyChangeLis { updateStyle(); } + + if (!dynamicDisplayListeners.isEmpty()) + dynamicDisplayListeners.stream().forEach(e -> e.onDynamicDisplay(ctx, this)); } public void updateStyle(boolean applyDictionaryStyle) { @@ -964,4 +980,33 @@ public abstract class WEditor implements EventListener, PropertyChangeLis public boolean isValid(String input) { return Util.isEmpty(sValidInput) ? true : sValidInput.equals(input); } + + /** + * add listener + * @param listener + */ + public void addDynamicDisplayListener(DynamicDisplayListener listener) { + dynamicDisplayListeners.add(listener); + } + + /** + * + * @param listener + * @return true if listener is found and remove from listener list + */ + public boolean removeDynamicDisplayListener(DynamicDisplayListener listener) { + return dynamicDisplayListeners.remove(listener); + } + + /** + * interface for dynamic display event + */ + public static interface DynamicDisplayListener { + /** + * call when editor's dynamicDisplay(ctx) method is call + * @param ctx + * @param editor + */ + void onDynamicDisplay(Properties ctx, WEditor editor); + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangeButton.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangeButton.java new file mode 100644 index 0000000000..455d020adf --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangeButton.java @@ -0,0 +1,87 @@ +/********************************************************************** +* This file is part of iDempiere ERP Open Source * +* http://www.idempiere.org * +* * +* Copyright (C) Contributors * +* * +* This program is free software; you can redistribute it and/or * +* modify it under the terms of the GNU General Public License * +* as published by the Free Software Foundation; either version 2 * +* of the License, or (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the Free Software * +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * +* MA 02110-1301, USA. * +* * +* Contributors: * +* - Peter Takacs, Cloudempiere * +**********************************************************************/ +package org.adempiere.webui.window; + +import java.util.Properties; + +import org.adempiere.webui.LayoutUtils; +import org.adempiere.webui.component.ToolBarButton; +import org.adempiere.webui.editor.WEditor; +import org.adempiere.webui.theme.ThemeManager; +import org.compiere.util.Env; +import org.zkoss.zk.ui.event.Events; + +/** +* +* @author Peter Takacs, Cloudempiere +* +*/ +public class DateRangeButton extends ToolBarButton implements WEditor.DynamicDisplayListener { + + /** + * + */ + private static final long serialVersionUID = -4404182204288841866L; + + private static final String IMAGES_CONTEXT_HISTORY_PNG = "images/History16.png"; + + private WEditor editor; + private WEditor editor2; + + /** + * Constructor + */ + public DateRangeButton(WEditor editor, WEditor editor2) { + super(); + this.editor = editor; + this.editor2 = editor2; + init(); + } + + private void init() { + + if (ThemeManager.isUseFontIconForImage()) + setIconSclass("z-icon-History"); + else + setImage(ThemeManager.getThemeResource(IMAGES_CONTEXT_HISTORY_PNG)); + + DateRangePicker popup = new DateRangePicker(editor, editor2); + this.setTooltip(popup); + this.addEventListener(Events.ON_CLICK, event -> { + popup.setPage(this.getPage()); + popup.open(this, "after_center"); + LayoutUtils.autoDetachOnClose(popup); + }); + + editor.addDynamicDisplayListener(this); + onDynamicDisplay(Env.getCtx(), editor); + } + + @Override + public void onDynamicDisplay(Properties ctx, WEditor editor) { + setVisible(this.editor.isVisible() && editor2.isVisible()); + setDisabled(!(this.editor.isReadWrite() && editor2.isReadWrite())); + } +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangePicker.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangePicker.java new file mode 100644 index 0000000000..a0675ee2d2 --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/DateRangePicker.java @@ -0,0 +1,690 @@ +/********************************************************************** +* This file is part of iDempiere ERP Open Source * +* http://www.idempiere.org * +* * +* Copyright (C) Contributors * +* * +* This program is free software; you can redistribute it and/or * +* modify it under the terms of the GNU General Public License * +* as published by the Free Software Foundation; either version 2 * +* of the License, or (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the Free Software * +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * +* MA 02110-1301, USA. * +* * +* Contributors: * +* - Peter Takacs, Cloudempiere * +**********************************************************************/ +package org.adempiere.webui.window; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +import org.adempiere.exceptions.AdempiereException; +import org.adempiere.webui.component.Button; +import org.adempiere.webui.component.ComboItem; +import org.adempiere.webui.component.Combobox; +import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.ListItem; +import org.adempiere.webui.component.Listbox; +import org.adempiere.webui.component.Textbox; +import org.adempiere.webui.editor.WEditor; +import org.adempiere.webui.factory.ButtonFactory; +import org.compiere.model.MChart; +import org.compiere.model.MRefList; +import org.compiere.util.DisplayType; +import org.compiere.util.Env; +import org.compiere.util.Msg; +import org.compiere.util.Util; +import org.compiere.util.ValueNamePair; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.WrongValueException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.InputEvent; +import org.zkoss.zul.Div; +import org.zkoss.zul.Popup; +import org.zkoss.zul.Spinner; + +/** +* +* @author Peter Takacs, Cloudempiere +* +*/ +public class DateRangePicker extends Popup implements EventListener { + + /** + * + */ + private static final long serialVersionUID = -7959690713224781610L; + + // AD_Reference_ID + private static final int REFERENCE_TIMEUNIT = 53376; + private static final int REFERENCE_DATESELECTIONMODE = 200217; + private static final int REFERENCE_MONTHS = 200221; + private static final int REFERENCE_QUARTERS = 200222; + + private static final String DATESELECTIONMODE_PREVIOUS = "01"; + private static final String DATESELECTIONMODE_NEXT = "02"; + private static final String DATESELECTIONMODE_CURRENT = "03"; + private static final String DATESELECTIONMODE_BEFORE = "04"; + private static final String DATESELECTIONMODE_AFTER = "05"; + private static final String DATESELECTIONMODE_ON = "06"; + private static final String DATESELECTIONMODE_BETWEEN = "07"; + private static final String DATESELECTIONMODE_QUICK = "08"; + + private Button okBtn; + private Combobox modeCombobox; + private Spinner numberBox; + private Combobox unitCombobox; + private Textbox dateTextBox; + private org.zkoss.zul.Calendar cal; + private org.zkoss.zul.Calendar cal2; + private Div quickListBoxes; + + private WEditor editor; + private WEditor editor2; + private Date dateFrom; + private Date dateTo; + private Date oldValueFrom; + private Date oldValueTo; + + private ArrayList quickListBoxesArray = new ArrayList(); + private ListItem selectedQuickListItem; + + /** + * Constructor + */ + public DateRangePicker(WEditor editor, WEditor editor2) { + super(); + + this.editor = editor; + this.editor2 = editor2; + init(); + } + + private void init() { + + Div div = new Div(); + okBtn = ButtonFactory.createNamedButton(Msg.getMsg(Env.getCtx(), "ApplyFilter"), true, false); + okBtn.setStyle("color: white; background: #A9A9A9; float: right;"); + + modeCombobox = new Combobox(); + modeCombobox.setSclass("date-picker-component"); + modeCombobox.setWidth("90px"); + modeCombobox.addEventListener(Events.ON_SELECT, this); + + numberBox = new Spinner(1); + numberBox.setConstraint("no empty, min 1"); + numberBox.setStyle("margin: 5px;"); + numberBox.addEventListener(Events.ON_CHANGING, this); + + unitCombobox = new Combobox(); + unitCombobox.setSclass("date-picker-component"); + unitCombobox.setWidth("90px"); + unitCombobox.addEventListener(Events.ON_SELECT, this); + + cal = new org.zkoss.zul.Calendar(); + cal.setSclass("date-picker-component"); + cal.addEventListener(Events.ON_CHANGE, this); + cal2 = new org.zkoss.zul.Calendar(); + cal2.setSclass("date-picker-component"); + cal2.addEventListener(Events.ON_CHANGE, this); + + Label dateTextBoxLabel = new Label(Msg.getMsg(Env.getCtx(), "SelectedTimeRange")); + dateTextBoxLabel.setSclass("date-picker-label"); + + dateTextBox = new Textbox(); + dateTextBox.setSclass("date-picker-component"); + dateTextBox.setStyle("min-width: 170px;"); + dateTextBox.setValue(DisplayType.getDateFormat().format(cal.getValue())); + dateTextBox.addEventListener(Events.ON_CHANGE, this); + + okBtn.setSclass("date-picker-component"); + okBtn.addEventListener(Events.ON_CLICK, event -> { + if(dateFrom != null && dateTo != null && dateTo.before(dateFrom)) + throw new WrongValueException(dateTextBox, Msg.getMsg(Env.getCtx(), "EndDateAfterStartDate")); + setTimesOnDates(); + if(Util.isEmpty(dateTextBox.getValue())) { + oldValueFrom = dateFrom; + oldValueTo = dateTo; + dateFrom = null; + dateTo = null; + } + editor.setValue(dateFrom); + editor2.setValue(dateTo); + this.detach(); + }); + + quickListBoxes = new Div(); + quickListBoxes.appendChild(getQuickModeContent()); + + // Load Modes to ListBox + ComboItem selectedOnOpen = null; + ValueNamePair[] modes = MRefList.getList(Env.getCtx(), REFERENCE_DATESELECTIONMODE, false, "Value"); + for(ValueNamePair mode : modes) { + ComboItem item = new ComboItem(mode.getName(), mode.getValue()); + if(mode.getValue().equalsIgnoreCase(DATESELECTIONMODE_CURRENT)) + selectedOnOpen = item; + modeCombobox.appendChild(item); + } + if(selectedOnOpen != null) + modeCombobox.setSelectedItem(selectedOnOpen); + else + modeCombobox.setSelectedIndex(0); + + // Load Units to ListBox + ValueNamePair[] units = MRefList.getList(Env.getCtx(), REFERENCE_TIMEUNIT, false); + for(ValueNamePair timeUnit : units) { + ComboItem item = new ComboItem(timeUnit.getName(), timeUnit.getValue()); + if(timeUnit.getValue().equalsIgnoreCase(MChart.TIMEUNIT_Month)) + selectedOnOpen = item; + unitCombobox.appendChild(item); + } + if(selectedOnOpen != null) + unitCombobox.setSelectedItem(selectedOnOpen); + else + modeCombobox.setSelectedIndex(0); + + div.setSclass("date-picker-container"); + div.appendChild(modeCombobox); + div.appendChild(numberBox); + div.appendChild(unitCombobox); + this.appendChild(div); + + div = new Div(); + div.setSclass("date-picker-container"); + div.setStyle("Margin-top: 10px;"); + div.appendChild(cal); + div.appendChild(cal2); + div.appendChild(quickListBoxes); + this.appendChild(div); + + div = new Div(); + div.setSclass("date-picker-container"); + div.setStyle("margin: 10px 0 10px 0;"); + div.appendChild(dateTextBoxLabel); + div.appendChild(dateTextBox); + div.setSclass("date-picker-container"); + div.appendChild(okBtn); + this.appendChild(div); + + this.setStyle("min-width: 320px;"); + updateUI(); + setDisplayValue(); + } + + private void updateUI() { + String selectedMode = modeCombobox.getSelectedItem().getValue().toString(); + switch (selectedMode) { + case DATESELECTIONMODE_AFTER: + case DATESELECTIONMODE_BEFORE: + case DATESELECTIONMODE_ON: + numberBox.setVisible(false); + unitCombobox.setVisible(false); + cal.setVisible(true); + cal2.setVisible(false); + quickListBoxes.setVisible(false); + break; + case DATESELECTIONMODE_BETWEEN: + numberBox.setVisible(false); + unitCombobox.setVisible(false); + cal.setVisible(true); + cal2.setVisible(true); + quickListBoxes.setVisible(false); + break; + case DATESELECTIONMODE_CURRENT: + numberBox.setVisible(false); + unitCombobox.setVisible(true); + cal.setVisible(false); + cal2.setVisible(false); + quickListBoxes.setVisible(false); + break; + case DATESELECTIONMODE_NEXT: + case DATESELECTIONMODE_PREVIOUS: + numberBox.setVisible(true); + unitCombobox.setVisible(true); + cal.setVisible(false); + cal2.setVisible(false); + quickListBoxes.setVisible(false); + break; + case DATESELECTIONMODE_QUICK: + numberBox.setVisible(false); + unitCombobox.setVisible(false); + cal.setVisible(false); + cal2.setVisible(false); + quickListBoxes.setVisible(true); + break; + default: + break; + } + } + + @Override + public void onEvent(Event event) throws Exception { + Component target = event.getTarget(); + if(target.equals(modeCombobox)) + updateUI(); + if(target instanceof Listbox) { + for(Listbox listBox : quickListBoxesArray) { + if(!target.equals(listBox)) + listBox.setSelectedItem(null); + else + selectedQuickListItem = listBox.getSelectedItem(); + } + } + if(target instanceof Spinner) { + String actValue = String.valueOf(((InputEvent)event).getValue()); + if(!Util.isEmpty(actValue)) + numberBox.setValue(Integer.valueOf(actValue)); + } + + dateTextBox.clearErrorMessage(); + if(!Util.isEmpty(dateTextBox.getValue()) || !event.getTarget().equals(dateTextBox)) + setDisplayValue(); + } + + private void setDisplayValue() { + String displayValue = getDisplayValue(); + dateTextBox.setValue(displayValue); + } + + private String getDisplayValue() { + String returnVal = ""; + Timestamp ts = new Timestamp(cal.getValue().getTime()); + switch (modeCombobox.getSelectedItem().getValue().toString()) { + case DATESELECTIONMODE_AFTER: + returnVal = Msg.getMsg(Env.getCtx(), "AfterDate", new Object[] {DisplayType.getDateFormat().format(ts)}); + oldValueFrom = dateFrom; + oldValueTo = dateTo; + dateFrom = ts; + dateTo = null; + break; + case DATESELECTIONMODE_BEFORE: + returnVal = Msg.getMsg(Env.getCtx(), "BeforeDate", new Object[] {DisplayType.getDateFormat().format(ts)}); + oldValueFrom = dateFrom; + oldValueTo = dateTo; + dateFrom = null; + dateTo = ts; + break; + case DATESELECTIONMODE_BETWEEN: + returnVal = DisplayType.getDateFormat().format(cal.getValue()) + " - " + DisplayType.getDateFormat().format(cal2.getValue()); + oldValueFrom = dateFrom; + oldValueTo = dateTo; + dateFrom = new Timestamp(cal.getValue().getTime()); + dateTo = new Timestamp(cal2.getValue().getTime()); + break; + case DATESELECTIONMODE_CURRENT: + case DATESELECTIONMODE_NEXT: + case DATESELECTIONMODE_PREVIOUS: + returnVal = getInterval(); + break; + case DATESELECTIONMODE_ON: + returnVal = Msg.getMsg(Env.getCtx(), "OnDate", new Object[] {DisplayType.getDateFormat().format(ts)}); + oldValueFrom = dateFrom; + oldValueTo = dateTo; + dateFrom = ts; + dateTo = ts; + break; + case DATESELECTIONMODE_QUICK: + if(selectedQuickListItem != null) { + String unit = (String) selectedQuickListItem.getAttribute("TimeUnit"); + int offset = (int) selectedQuickListItem.getAttribute("Offset"); + Date dateFrom = (Date) selectedQuickListItem.getAttribute("DateFrom"); + Date[] dates = getInterval(unit, unit, offset, false, false, dateFrom); + this.oldValueFrom = this.dateFrom; + this.oldValueTo = this.dateTo; + this.dateFrom = new Timestamp(dates[0].getTime()); + this.dateTo = new Timestamp(dates[1].getTime()); + returnVal = DisplayType.getDateFormat().format(this.dateFrom) + " - " + DisplayType.getDateFormat().format(this.dateTo); + } + break; + default: + throw new AdempiereException("InvalidDateSelectionMode"); + } + return returnVal; + } + + private String getInterval() { + + String mode = modeCombobox.getSelectedItem().getValue().toString(); + String unit = unitCombobox.getSelectedItem().getValue().toString(); + Integer numBoxValue = numberBox.getValue(); + Date[] dates; + + if(numBoxValue == null) { + numBoxValue = 0; + numberBox.setValue(numBoxValue); + } + + if(mode.equalsIgnoreCase(DATESELECTIONMODE_PREVIOUS)) + numBoxValue = -numBoxValue; + + if(mode.equalsIgnoreCase(DATESELECTIONMODE_CURRENT)) + dates = getInterval(unit, 0); + else + dates = getInterval(unit, numBoxValue.intValue()); + + oldValueFrom = dateFrom; + oldValueTo = dateTo; + dateFrom = new Timestamp(dates[0].getTime()); + dateTo = new Timestamp(dates[1].getTime()); + return DisplayType.getDateFormat().format(dateFrom) + " - " + DisplayType.getDateFormat().format(dateTo); + } + + private Date[] getInterval(String timeUnit, int offset) { + return getInterval(timeUnit, null, offset, false, false, null); + } + + private Date[] getInterval(String timeUnit, String timeUnitForRange, int offset, boolean isToDate, boolean includeThis, Date dateFrom) { + + if(dateFrom == null) + dateFrom = new Date(System.currentTimeMillis()); + + Calendar cal1 = Calendar.getInstance(Env.getLocale(Env.getCtx())); + Calendar cal2 = Calendar.getInstance(Env.getLocale(Env.getCtx())); + cal1.setTime(dateFrom); + cal2.setTime(dateFrom); + + int iUnit; + int iDayUnit; + + // Transform Time Unit + switch (timeUnit) { + case MChart.TIMEUNIT_Day: + iUnit = Calendar.DAY_OF_YEAR; + iDayUnit = Calendar.DAY_OF_YEAR; + break; + case MChart.TIMEUNIT_Month: + iUnit = Calendar.MONTH; + iDayUnit = Calendar.DAY_OF_MONTH; + break; + case MChart.TIMEUNIT_Quarter: + iUnit = Calendar.MONTH; + iDayUnit = Calendar.DAY_OF_MONTH; + offset = offset * 3; + break; + case MChart.TIMEUNIT_Week: + iUnit = Calendar.WEEK_OF_YEAR; + iDayUnit = Calendar.DAY_OF_WEEK; + break; + case MChart.TIMEUNIT_Year: + iUnit = Calendar.YEAR; + iDayUnit = Calendar.DAY_OF_YEAR; + break; + default: + throw new AdempiereException("TimeUnitNotSupported"); + } + + if(!Util.isEmpty(timeUnitForRange) || !isToDate){ + boolean hasTimeUnitForRange = true; + // Set first and last Day of the given time period + if(Util.isEmpty(timeUnitForRange)) { + timeUnitForRange = timeUnit; + hasTimeUnitForRange = false; + } + if(timeUnitForRange.equalsIgnoreCase(MChart.TIMEUNIT_Week)) { + cal1.set(iDayUnit, cal1.getFirstDayOfWeek()); + cal2.set(iDayUnit, cal2.getFirstDayOfWeek()); + cal2.add(iDayUnit, 6); + } + else if(timeUnitForRange.equalsIgnoreCase(MChart.TIMEUNIT_Quarter)){ + if(cal1.after(new GregorianCalendar(cal1.get(Calendar.YEAR), Calendar.OCTOBER, 1))) { + cal1.set(Calendar.MONTH, Calendar.OCTOBER); + cal2.set(Calendar.MONTH, Calendar.DECEMBER); + } + else if(cal1.after(new GregorianCalendar(cal1.get(Calendar.YEAR), Calendar.JULY, 1))) { + cal1.set(Calendar.MONTH, Calendar.JULY); + cal2.set(Calendar.MONTH, Calendar.SEPTEMBER); + } + else if(cal1.after(new GregorianCalendar(cal1.get(Calendar.YEAR), Calendar.APRIL, 1))) { + cal1.set(Calendar.MONTH, Calendar.APRIL); + cal2.set(Calendar.MONTH, Calendar.JUNE); + } + else { + cal1.set(Calendar.MONTH, Calendar.JANUARY); + cal2.set(Calendar.MONTH, Calendar.MARCH); + } + cal1.set(Calendar.DAY_OF_MONTH, cal1.getActualMinimum(iDayUnit)); + cal2.set(Calendar.DAY_OF_MONTH, cal2.getActualMaximum(Calendar.DAY_OF_MONTH)); + } + else if (!timeUnitForRange.equalsIgnoreCase(MChart.TIMEUNIT_Day)) { + cal1.set(iDayUnit, cal1.getActualMinimum(iDayUnit)); + cal2.set(iDayUnit, cal2.getActualMaximum(iDayUnit)); + } + + // Add the offset + if(hasTimeUnitForRange && offset != 0) { + cal1.add(iUnit, offset); + cal2.add(iUnit, offset); + } + else if(!hasTimeUnitForRange && !isToDate) { + if(offset < 0) { + cal1.add(iUnit, offset); + if(!includeThis) { + if(timeUnitForRange.equalsIgnoreCase(MChart.TIMEUNIT_Quarter)) + cal2.add(iUnit, -3); + else + cal2.add(iUnit, -1); + } + } + else if (offset > 0) { + if(!includeThis) { + if(timeUnitForRange.equalsIgnoreCase(MChart.TIMEUNIT_Quarter)) + cal1.add(iUnit, 3); + else + cal1.add(iUnit, 1); + } + cal2.add(iUnit, offset); + } + } + } + else if(isToDate) { + if(offset < 0) + cal1.add(iUnit, offset); + else if (offset > 0) + cal2.add(iUnit, offset); + } + + Date date1 = cal1.getTime(); + Date date2 = cal2.getTime(); + + return new Date[] {date1, date2}; + } + + private void setTimesOnDates() { + Calendar cal = Calendar.getInstance(Env.getLocale(Env.getCtx())); + if(dateFrom != null) { + cal.setTime(dateFrom); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + dateFrom = new Timestamp(cal.getTime().getTime()); + } + if(dateTo != null) { + cal.setTime(dateTo); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + cal.add(Calendar.DAY_OF_MONTH, 1); + cal.add(Calendar.MILLISECOND, -1); + dateTo = new Timestamp(cal.getTime().getTime()); + } + } + + private ListItem createItem(String value, String timeUnit, int offset, Date dateFrom) { + ListItem item = new ListItem(value, value); + item.setAttribute("Offset", offset); + item.setAttribute("TimeUnit", timeUnit); + item.setAttribute("DateFrom", dateFrom); + return item; + } + + private Div getQuickModeContent() { + + Calendar cNow = Calendar.getInstance(Env.getLocale(Env.getCtx())); + cNow.setTime(new Date(System.currentTimeMillis())); + Calendar c = Calendar.getInstance(Env.getLocale(Env.getCtx())); + c.setTime(new Date(System.currentTimeMillis())); + + Div wrapperDiv1 = new Div(); + wrapperDiv1.setStyle("max-width: 420px; display: flex; border-top: 2px solid #CFCFCF;"); + + // Months + Div wrapperDiv2 = new Div(); + wrapperDiv2.setStyle("max-width: 420px; display: flex;"); + + Label label = new Label(Msg.getMsg(Env.getCtx(), "CurrentYearMonths")); + label.setSclass("date-picker-label"); + Div monthLabelDiv = new Div(); + monthLabelDiv.setStyle("margin-top: 10px;"); + monthLabelDiv.appendChild(label); + + c = cNow; + int idx=0; + int monthIdx = Calendar.APRIL; + ListItem item; + Listbox box; + Div innerDiv; + + while (monthIdx <= Calendar.DECEMBER) { + innerDiv = new Div(); + innerDiv.setSclass("date-picker-component"); + innerDiv.setStyle("margin: 5px 5px 16px 5px !important;"); + + box = new Listbox(); + box.addEventListener(Events.ON_SELECT, this); + box.setCheckmark(true); + + ValueNamePair[] months = MRefList.getList(Env.getCtx(), REFERENCE_MONTHS, false, "Value"); + + for(int i = idx; i <= monthIdx; i++) { + c.set(Calendar.MONTH, i); + item = createItem(months[i].getName(), MChart.TIMEUNIT_Month, 0, new Date(c.getTimeInMillis())); + box.appendChild(item); + idx=i; + } + innerDiv.appendChild(box); + quickListBoxesArray.add(box); + wrapperDiv1.appendChild(innerDiv); + + idx++; + monthIdx += 4; + } + + // Quarters + c = cNow; + innerDiv = new Div(); + innerDiv.setSclass("date-picker-component"); + label = new Label(Msg.getMsg(Env.getCtx(), "CurrentYearQuarters")); + label.setSclass("date-picker-label"); + innerDiv.appendChild(label); + + box = new Listbox(); + box.setStyle("border-top: 2px solid #CFCFCF;"); + box.addEventListener(Events.ON_SELECT, this); + box.setCheckmark(true); + + ValueNamePair[] quarters = MRefList.getList(Env.getCtx(), REFERENCE_QUARTERS, false, "Value"); + idx = 0; + for(ValueNamePair quarter : quarters) { + c.set(Calendar.MONTH, idx); + item = createItem(quarter.getName(), MChart.TIMEUNIT_Quarter, 0, new Date(c.getTimeInMillis())); + box.appendChild(item); + idx+=3; + } + + innerDiv.appendChild(box); + quickListBoxesArray.add(box); + wrapperDiv2.appendChild(innerDiv); + + // Year + innerDiv = new Div(); + innerDiv.setSclass("date-picker-component"); + label = new Label(Msg.getMsg(Env.getCtx(), "Year")); + label.setSclass("date-picker-label"); + innerDiv.appendChild(label); + + box = new Listbox(); + box.setStyle("border-top: 2px solid #CFCFCF;"); + box.addEventListener(Events.ON_SELECT, this); + box.setCheckmark(true); + + for(int i=0; i>=-3; i--) { + item = createItem(String.valueOf(c.get(Calendar.YEAR)), MChart.TIMEUNIT_Year, i, null); + box.appendChild(item); + c.add(Calendar.YEAR, -1); + } + innerDiv.appendChild(box); + quickListBoxesArray.add(box); + wrapperDiv2.appendChild(innerDiv); + + Div div = new Div(); + div.appendChild(monthLabelDiv); + div.appendChild(wrapperDiv1); + div.appendChild(wrapperDiv2); + + return div; + } + + /** + * Get Date Textbox + * @return Textbox + */ + public Textbox getDateTextbox() { + return dateTextBox; + } + + /** + * Get Update Button + * @return Button + */ + public Button getUpdateButton() { + return okBtn; + } + + /** + * Get Value From + * @return + */ + public Date getValueFrom() { + return dateFrom; + } + + /** + * Get Old Value From + * @return + */ + public Date getOldValueFrom() { + return oldValueFrom; + } + + /** + * Get Value To + * @return + */ + public Date getValueTo() { + return dateTo; + } + + /** + * Get Old Value To + * @return + */ + public Date getOldValueTo() { + return oldValueTo; + } +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index c88f640565..c31939ea31 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -1218,26 +1218,50 @@ public class FindWindow extends Window implements EventListener, ValueCha String tableName = listTable != null && listTable.getSelectedItem() != null ? listTable.getSelectedItem().getValue() : m_tableName; if (columnName == null || columnName == "") return; + WEditor editorFrom = null; String value = fields.length > INDEX_VALUE ? fields[INDEX_VALUE] : ""; if(value.length() > 0) { cellQueryFrom.setAttribute("value", value); // Elaine 2009/03/16 - set attribute value //Attribute Values Parsing - if(tableName.equals(MAttribute.COLUMNNAME_M_Attribute_ID)) + if(tableName.equals(MAttribute.COLUMNNAME_M_Attribute_ID)) + { cellQueryFrom.appendChild(parseAttributeString( Integer.valueOf(columnName), value, listItem, false)); - else - cellQueryFrom.appendChild(parseString(getTargetMField(columnName), value, listItem, false)); + } + else + { + editorFrom = parseString(getTargetMField(columnName), value, listItem, false); + if (editorFrom != null) + cellQueryFrom.appendChild(editorFrom.getComponent()); + } } // QueryTo + WEditor editorTo = null; String value2 = fields.length > INDEX_VALUE2 ? fields[INDEX_VALUE2] : ""; if(value2.length() > 0) { cellQueryTo.setAttribute("value", value2); // Elaine 2009/03/16 - set attribute value // Attribute Parsing if(tableName.equals(MAttribute.COLUMNNAME_M_Attribute_ID)) + { cellQueryTo.appendChild(parseAttributeString( Integer.valueOf(columnName), value2, listItem, true)); + } else - cellQueryTo.appendChild(parseString(getTargetMField(columnName), value2, listItem, true)); + { + editorTo = parseString(getTargetMField(columnName), value2, listItem, true); + if (editorTo != null) + { + if (editorFrom != null && editorFrom.getGridField() != null && DisplayType.isDate(editorFrom.getGridField().getDisplayType())) + { + Div div = createDateRangeWrapper(editorFrom, editorTo); + cellQueryTo.appendChild(div); + } + else + { + cellQueryTo.appendChild(editorTo.getComponent()); + } + } + } } // AndOr @@ -1280,6 +1304,14 @@ public class FindWindow extends Window implements EventListener, ValueCha } // createFields + private Div createDateRangeWrapper(WEditor editorFrom, WEditor editorTo) { + Div div = new Div(); + div.setWidth("100%"); + div.appendChild(editorTo.getComponent()); + div.appendChild(new DateRangeButton(editorFrom, editorTo)); + return div; + } + private void setValues(GridField[] findFields, Combobox listTable, Combobox listColumn, Combobox listOperator, String[] fields) { ArrayList tables = new ArrayList(); @@ -1561,14 +1593,18 @@ public class FindWindow extends Window implements EventListener, ValueCha m_sEditorsFlag.add(editorFlag); editorFlag.setMode("toggle"); div.appendChild(editorFlag); - div.appendChild(fieldEditorTo); + div.appendChild(fieldEditorTo); + DateRangeButton drb = new DateRangeButton(editor, editorTo); + div.appendChild(drb); fieldEditorTo.setVisible(false); + drb.setVisible(false); final Component editorRef = fieldEditorTo; editorFlag.addEventListener(Events.ON_CHECK, new EventListener() { @Override public void onEvent(Event event) throws Exception { ToolBarButton btn = (ToolBarButton) event.getTarget(); editorRef.setVisible(btn.isChecked()); + drb.setVisible(editorRef.isVisible()); } }); m_sEditorsTo.add(editorTo); @@ -1736,9 +1772,11 @@ public class FindWindow extends Window implements EventListener, ValueCha addRowEditor(componentTo,(ListCell)row.getFellow("cellQueryTo"+row.getId())); } } else { - Component componentFrom = getEditorCompQueryFrom(row); + WEditor editorFrom = getEditor(row, false); + Component componentFrom = editorFrom != null ? editorFrom.getComponent() : new Label(""); componentFrom.setId("searchFieldFrom"+row.getId()); - Component componentTo = getEditorCompQueryTo(row); + WEditor editorTo = getEditor(row, true); + Component componentTo = editorTo != null ? editorTo.getComponent() : new Label(""); componentTo.setId("searchFieldTo"+row.getId()); Combobox listOp = (Combobox) row.getFellow("listOperator"+row.getId()); String betweenValue = listOp.getSelectedItem() != null ? listOp.getSelectedItem().getValue().toString() : ""; @@ -1752,7 +1790,15 @@ public class FindWindow extends Window implements EventListener, ValueCha else if (listbox.getId().equals(listColumn.getId()) || listbox.getId().equals(listOperator.getId())) { addRowEditor(componentFrom, (ListCell)row.getFellow("cellQueryFrom"+row.getId())); - addRowEditor(componentTo,(ListCell)row.getFellow("cellQueryTo"+row.getId())); + if (editorTo != null && editorTo.getGridField() != null && DisplayType.isDate(editorTo.getGridField().getDisplayType())) + { + Div div = createDateRangeWrapper(editorFrom, editorTo); + addRowEditor(div,(ListCell)row.getFellow("cellQueryTo"+row.getId())); + } + else + { + addRowEditor(componentTo,(ListCell)row.getFellow("cellQueryTo"+row.getId())); + } } } } @@ -1987,11 +2033,11 @@ public class FindWindow extends Window implements EventListener, ValueCha * Parse String * @param field column * @param in value - * @param to - * @param listItem - * @return data type corrected value + * @param listItem + * @param to + * @return WEditor */ - private Component parseString(GridField field, String in, ListItem listItem, boolean to) + private WEditor parseString(GridField field, String in, ListItem listItem, boolean to) { if (in == null) return null; @@ -2062,7 +2108,7 @@ public class FindWindow extends Window implements EventListener, ValueCha editor.setVisible(enabled); editor.dynamicDisplay(); - return editor.getComponent(); + return editor; } catch (Exception ex) { @@ -2257,6 +2303,11 @@ public class FindWindow extends Window implements EventListener, ValueCha //Allowing Date validation before save compo = cellQueryTo.getFirstChild(); + //check DateRangeButton wrapper div + if (compo instanceof Div) { + if (compo.getFirstChild() instanceof Datebox || compo.getFirstChild() instanceof DatetimeBox) + compo = compo.getFirstChild(); + } if(compo instanceof Datebox) { Datebox dbox = (Datebox)compo; if(dbox.getValue() != null) @@ -2602,26 +2653,6 @@ public class FindWindow extends Window implements EventListener, ValueCha } // getColumnName - /** - * get editor component for 'query' field - * @param row row - * @return editor component - **/ - private Component getEditorCompQueryFrom(ListItem row) - { - return getEditorComponent(row, false); - } - - /** - * get editor component for 'query to' field - * @param row row - * @return editor component - **/ - private Component getEditorCompQueryTo(ListItem row) - { - return getEditorComponent(row, true); - } - /** * add the editor component in the 'QueryValue' field * @param component editor component @@ -2710,7 +2741,7 @@ public class FindWindow extends Window implements EventListener, ValueCha * @param row row * @return Editor component **/ - public Component getEditorComponent(ListItem row, boolean to) + public WEditor getEditor(ListItem row, boolean to) { String columnName = getColumnName(row); boolean between = false; @@ -2725,7 +2756,7 @@ public class FindWindow extends Window implements EventListener, ValueCha // Create Editor GridField field = getTargetMField(columnName); - if(field == null) return new Label(""); + if(field == null) return null; GridField findField = (GridField) field.clone(m_advanceCtx); findField.setGridTab(null); @@ -2800,9 +2831,20 @@ public class FindWindow extends Window implements EventListener, ValueCha row.setAttribute(FIND_ROW_EDITOR_TO, editor); else row.setAttribute(FIND_ROW_EDITOR, editor); - return editor.getComponent(); + return editor; - } // getTableCellEditorComponent + } + + /** + * Get Editor + * @param row row + * @return Editor component + **/ + public Component getEditorComponent(ListItem row, boolean to) + { + WEditor editor = getEditor(row, to); + return editor != null ? editor.getComponent() : new Label(""); + } /** * Get Target MField diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/window.css.dsp b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/window.css.dsp index fd63881fd2..2d35ad87b5 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/window.css.dsp +++ b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/window.css.dsp @@ -132,4 +132,24 @@ input[type="checkbox"]:focus { color: #252525 !important; opacity: .8; -} \ No newline at end of file +} + +.date-picker-container { + padding-left: 5px; +} + +.date-picker-component { + display: inline-grid; + min-height: 25px; + border-radius: 5px; + margin: 0px 5px 5px 0px !important; +} + +.date-picker-component .z-listbox { + border: none; +} + +.date-picker-label { + font-weight: bold; + margin: 5px; +}