IDEMPIERE-4067 : Support for Under/Over line and Blank line in finaci… (#244)
* IDEMPIERE-4067 : Support for Under/Over line and Blank line in finacial report line. * IDEMPIERE-4067 : Adding support for blank line export in CSV, HTML, Excel. Also allowing to show description if provided. fixed all review comments fron Carlos Ruiz
This commit is contained in:
parent
e18d8001d4
commit
e72dfd66c0
|
@ -0,0 +1,72 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Adding Over/Under line in Report
|
||||||
|
-- Oct 16, 2019 2:39:54 PM IST
|
||||||
|
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203371,0,0,'Y',TO_DATE('2019-10-16 14:39:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:39:53','YYYY-MM-DD HH24:MI:SS'),100,'OverlineStrokeType','Overline Stroke Type','Overline Stroke Type','D','18f9193c-b4a9-4dc2-ba69-8dcefc4d8e88')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:40:47 PM IST
|
||||||
|
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 (200174,'PA_ReportLine Line Stroke Type','L',0,0,'Y',TO_DATE('2019-10-16 14:40:46','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:40:46','YYYY-MM-DD HH24:MI:SS'),100,'D','N','a66f38f4-feeb-472f-a561-0f2134214e66')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:41:10 PM IST
|
||||||
|
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 (200477,'Dotted',200174,'DT',0,0,'Y',TO_DATE('2019-10-16 14:41:10','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:41:10','YYYY-MM-DD HH24:MI:SS'),100,'D','e61955b1-37f0-45ed-8bd3-d7b72f5f730b')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:41:45 PM IST
|
||||||
|
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 (200478,'Dashed',200174,'DS',0,0,'Y',TO_DATE('2019-10-16 14:41:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:41:44','YYYY-MM-DD HH24:MI:SS'),100,'D','035f9d9e-4650-43e8-a0ec-e931e07270d8')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:08 PM IST
|
||||||
|
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 (200479,'Double Dotted',200174,'DDT',0,0,'Y',TO_DATE('2019-10-16 14:42:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:42:07','YYYY-MM-DD HH24:MI:SS'),100,'D','011c9ad0-34a9-4bd4-9af3-50615790ffb6')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:22 PM IST
|
||||||
|
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 (200480,'Double Dashed',200174,'DDS',0,0,'Y',TO_DATE('2019-10-16 14:42:22','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:42:22','YYYY-MM-DD HH24:MI:SS'),100,'D','13cd13e4-af78-4252-957e-3b1e45f33497')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:38 PM IST
|
||||||
|
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 (200481,'Double Solid',200174,'DSD',0,0,'Y',TO_DATE('2019-10-16 14:42:37','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:42:37','YYYY-MM-DD HH24:MI:SS'),100,'D','e39cde64-0d54-4cf9-93c1-5068c0e97ee6')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:53 PM IST
|
||||||
|
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 (200482,'Solid',200174,'SD',0,0,'Y',TO_DATE('2019-10-16 14:42:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:42:52','YYYY-MM-DD HH24:MI:SS'),100,'D','9e450ade-e54b-46e1-b96f-36c02b3090eb')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:43:26 PM IST
|
||||||
|
INSERT INTO AD_Column (AD_Column_ID,Version,Name,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) VALUES (214088,0,'Overline Stroke Type',448,'OverlineStrokeType',3,'N','N','N','N','N',0,'N',17,200174,0,0,'Y',TO_DATE('2019-10-16 14:43:26','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:43:26','YYYY-MM-DD HH24:MI:SS'),100,203371,'Y','N','D','N','N','N','Y','b1529a0e-96a5-43e6-94b6-d78feea8e8c8','Y',0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:43:31 PM IST
|
||||||
|
ALTER TABLE PA_ReportLine ADD OverlineStrokeType VARCHAR2(3 CHAR) DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:44:08 PM IST
|
||||||
|
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203372,0,0,'Y',TO_DATE('2019-10-16 14:44:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:44:08','YYYY-MM-DD HH24:MI:SS'),100,'UnderlineStrokeType','Underline Stroke Type','Underline Stroke Type','D','36e60c3b-2eff-4d58-a530-101b2d060f4a')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:45:23 PM IST
|
||||||
|
INSERT INTO AD_Column (AD_Column_ID,Version,Name,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) VALUES (214089,0,'Underline Stroke Type',448,'UnderlineStrokeType',3,'N','N','N','N','N',0,'N',17,200174,0,0,'Y',TO_DATE('2019-10-16 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,203372,'Y','N','D','N','N','N','Y','d3504292-068e-4126-944c-dc3d165019c0','Y',0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:45:39 PM IST
|
||||||
|
ALTER TABLE PA_ReportLine ADD UnderlineStrokeType VARCHAR2(3 CHAR) DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:48:07 PM IST
|
||||||
|
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,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 (206214,'Overline Stroke Type',376,214088,'Y',0,200,0,'N','N','N','N',0,0,'Y',TO_DATE('2019-10-16 14:48:06','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:48:06','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','04733ecb-3dc6-4fde-82ab-33434b230ca5','Y',215,1,2,1,'N','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:48:25 PM IST
|
||||||
|
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,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 (206215,'Underline Stroke Type',376,214089,'Y',0,210,0,'N','N','N','N',0,0,'Y',TO_DATE('2019-10-16 14:48:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 14:48:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','e5614dd4-9884-4053-99d5-1cb59540e412','Y',225,4,2,1,'N','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Added Line Type Blank Line
|
||||||
|
-- Oct 16, 2019 5:29:02 PM IST
|
||||||
|
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 (200483,'Blank line',241,'B',0,0,'Y',TO_DATE('2019-10-16 17:29:01','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-10-16 17:29:01','YYYY-MM-DD HH24:MI:SS'),100,'D','bb000455-9057-4c8a-a656-b0f1074e3fd3')
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201912301800_IDEMPIERE-4067.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
-- Adding Over/Under line in Report
|
||||||
|
-- Oct 16, 2019 2:39:54 PM IST
|
||||||
|
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203371,0,0,'Y',TO_TIMESTAMP('2019-10-16 14:39:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:39:53','YYYY-MM-DD HH24:MI:SS'),100,'OverlineStrokeType','Overline Stroke Type','Overline Stroke Type','D','18f9193c-b4a9-4dc2-ba69-8dcefc4d8e88')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:40:47 PM IST
|
||||||
|
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 (200174,'PA_ReportLine Line Stroke Type','L',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:40:46','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:40:46','YYYY-MM-DD HH24:MI:SS'),100,'D','N','a66f38f4-feeb-472f-a561-0f2134214e66')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:41:10 PM IST
|
||||||
|
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 (200477,'Dotted',200174,'DT',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:41:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:41:10','YYYY-MM-DD HH24:MI:SS'),100,'D','e61955b1-37f0-45ed-8bd3-d7b72f5f730b')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:41:45 PM IST
|
||||||
|
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 (200478,'Dashed',200174,'DS',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:41:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:41:44','YYYY-MM-DD HH24:MI:SS'),100,'D','035f9d9e-4650-43e8-a0ec-e931e07270d8')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:08 PM IST
|
||||||
|
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 (200479,'Double Dotted',200174,'DDT',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:42:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:42:07','YYYY-MM-DD HH24:MI:SS'),100,'D','011c9ad0-34a9-4bd4-9af3-50615790ffb6')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:22 PM IST
|
||||||
|
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 (200480,'Double Dashed',200174,'DDS',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:42:22','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:42:22','YYYY-MM-DD HH24:MI:SS'),100,'D','13cd13e4-af78-4252-957e-3b1e45f33497')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:38 PM IST
|
||||||
|
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 (200481,'Double Solid',200174,'DSD',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:42:37','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:42:37','YYYY-MM-DD HH24:MI:SS'),100,'D','e39cde64-0d54-4cf9-93c1-5068c0e97ee6')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:42:53 PM IST
|
||||||
|
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 (200482,'Solid',200174,'SD',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:42:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:42:52','YYYY-MM-DD HH24:MI:SS'),100,'D','9e450ade-e54b-46e1-b96f-36c02b3090eb')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:43:26 PM IST
|
||||||
|
INSERT INTO AD_Column (AD_Column_ID,Version,Name,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) VALUES (214088,0,'Overline Stroke Type',448,'OverlineStrokeType',3,'N','N','N','N','N',0,'N',17,200174,0,0,'Y',TO_TIMESTAMP('2019-10-16 14:43:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:43:26','YYYY-MM-DD HH24:MI:SS'),100,203371,'Y','N','D','N','N','N','Y','b1529a0e-96a5-43e6-94b6-d78feea8e8c8','Y',0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:43:31 PM IST
|
||||||
|
ALTER TABLE PA_ReportLine ADD COLUMN OverlineStrokeType VARCHAR(3) DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:44:08 PM IST
|
||||||
|
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203372,0,0,'Y',TO_TIMESTAMP('2019-10-16 14:44:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:44:08','YYYY-MM-DD HH24:MI:SS'),100,'UnderlineStrokeType','Underline Stroke Type','Underline Stroke Type','D','36e60c3b-2eff-4d58-a530-101b2d060f4a')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:45:23 PM IST
|
||||||
|
INSERT INTO AD_Column (AD_Column_ID,Version,Name,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) VALUES (214089,0,'Underline Stroke Type',448,'UnderlineStrokeType',3,'N','N','N','N','N',0,'N',17,200174,0,0,'Y',TO_TIMESTAMP('2019-10-16 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,203372,'Y','N','D','N','N','N','Y','d3504292-068e-4126-944c-dc3d165019c0','Y',0,'N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:45:39 PM IST
|
||||||
|
ALTER TABLE PA_ReportLine ADD COLUMN UnderlineStrokeType VARCHAR(3) DEFAULT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:48:07 PM IST
|
||||||
|
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,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 (206214,'Overline Stroke Type',376,214088,'Y',0,200,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:48:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:48:06','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','04733ecb-3dc6-4fde-82ab-33434b230ca5','Y',215,1,2,1,'N','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 16, 2019 2:48:25 PM IST
|
||||||
|
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,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 (206215,'Underline Stroke Type',376,214089,'Y',0,210,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2019-10-16 14:48:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 14:48:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','e5614dd4-9884-4053-99d5-1cb59540e412','Y',225,4,2,1,'N','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Added Line Type Blank Line
|
||||||
|
-- Oct 16, 2019 5:29:02 PM IST
|
||||||
|
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 (200483,'Blank line',241,'B',0,0,'Y',TO_TIMESTAMP('2019-10-16 17:29:01','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-10-16 17:29:01','YYYY-MM-DD HH24:MI:SS'),100,'D','bb000455-9057-4c8a-a656-b0f1074e3fd3')
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201912301800_IDEMPIERE-4067.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -302,6 +302,24 @@ public interface I_PA_ReportLine
|
||||||
*/
|
*/
|
||||||
public int getSeqNo();
|
public int getSeqNo();
|
||||||
|
|
||||||
|
/** Column name OverlineStrokeType */
|
||||||
|
public static final String COLUMNNAME_OverlineStrokeType = "OverlineStrokeType";
|
||||||
|
|
||||||
|
/** Set Overline Stroke Type */
|
||||||
|
public void setOverlineStrokeType (String OverlineStrokeType);
|
||||||
|
|
||||||
|
/** Get Overline Stroke Type */
|
||||||
|
public String getOverlineStrokeType();
|
||||||
|
|
||||||
|
/** Column name UnderlineStrokeType */
|
||||||
|
public static final String COLUMNNAME_UnderlineStrokeType = "UnderlineStrokeType";
|
||||||
|
|
||||||
|
/** Set Underline Stroke Type */
|
||||||
|
public void setUnderlineStrokeType (String UnderlineStrokeType);
|
||||||
|
|
||||||
|
/** Get Underline Stroke Type */
|
||||||
|
public String getUnderlineStrokeType();
|
||||||
|
|
||||||
/** Column name Updated */
|
/** Column name Updated */
|
||||||
public static final String COLUMNNAME_Updated = "Updated";
|
public static final String COLUMNNAME_Updated = "Updated";
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class X_PA_ReportLine extends PO implements I_PA_ReportLine, I_Persistent
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20200413L;
|
private static final long serialVersionUID = -3681187042653339433L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_PA_ReportLine (Properties ctx, int PA_ReportLine_ID, String trxName)
|
public X_PA_ReportLine (Properties ctx, int PA_ReportLine_ID, String trxName)
|
||||||
|
@ -227,6 +227,8 @@ public class X_PA_ReportLine extends PO implements I_PA_ReportLine, I_Persistent
|
||||||
public static final String LINETYPE_SegmentValue = "S";
|
public static final String LINETYPE_SegmentValue = "S";
|
||||||
/** Calculation = C */
|
/** Calculation = C */
|
||||||
public static final String LINETYPE_Calculation = "C";
|
public static final String LINETYPE_Calculation = "C";
|
||||||
|
/** Blank line = B */
|
||||||
|
public static final String LINETYPE_BlankLine = "B";
|
||||||
/** Set Line Type.
|
/** Set Line Type.
|
||||||
@param LineType Line Type */
|
@param LineType Line Type */
|
||||||
public void setLineType (String LineType)
|
public void setLineType (String LineType)
|
||||||
|
@ -491,4 +493,62 @@ public class X_PA_ReportLine extends PO implements I_PA_ReportLine, I_Persistent
|
||||||
return 0;
|
return 0;
|
||||||
return ii.intValue();
|
return ii.intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** OverlineStrokeType AD_Reference_ID=200174 */
|
||||||
|
public static final int OVERLINESTROKETYPE_AD_Reference_ID=200174;
|
||||||
|
/** Dotted = DT */
|
||||||
|
public static final String OVERLINESTROKETYPE_Dotted = "DT";
|
||||||
|
/** Dashed = DS */
|
||||||
|
public static final String OVERLINESTROKETYPE_Dashed = "DS";
|
||||||
|
/** Double Dotted = DDT */
|
||||||
|
public static final String OVERLINESTROKETYPE_DoubleDotted = "DDT";
|
||||||
|
/** Double Dashed = DDS */
|
||||||
|
public static final String OVERLINESTROKETYPE_DoubleDashed = "DDS";
|
||||||
|
/** Double Solid = DSD */
|
||||||
|
public static final String OVERLINESTROKETYPE_DoubleSolid = "DSD";
|
||||||
|
/** Solid = SD */
|
||||||
|
public static final String OVERLINESTROKETYPE_Solid = "SD";
|
||||||
|
/** Set Overline Stroke Type.
|
||||||
|
@param OverlineStrokeType Overline Stroke Type */
|
||||||
|
public void setOverlineStrokeType (String OverlineStrokeType)
|
||||||
|
{
|
||||||
|
|
||||||
|
set_Value (COLUMNNAME_OverlineStrokeType, OverlineStrokeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Overline Stroke Type.
|
||||||
|
@return Overline Stroke Type */
|
||||||
|
public String getOverlineStrokeType ()
|
||||||
|
{
|
||||||
|
return (String)get_Value(COLUMNNAME_OverlineStrokeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** UnderlineStrokeType AD_Reference_ID=200174 */
|
||||||
|
public static final int UNDERLINESTROKETYPE_AD_Reference_ID=200174;
|
||||||
|
/** Dotted = DT */
|
||||||
|
public static final String UNDERLINESTROKETYPE_Dotted = "DT";
|
||||||
|
/** Dashed = DS */
|
||||||
|
public static final String UNDERLINESTROKETYPE_Dashed = "DS";
|
||||||
|
/** Double Dotted = DDT */
|
||||||
|
public static final String UNDERLINESTROKETYPE_DoubleDotted = "DDT";
|
||||||
|
/** Double Dashed = DDS */
|
||||||
|
public static final String UNDERLINESTROKETYPE_DoubleDashed = "DDS";
|
||||||
|
/** Double Solid = DSD */
|
||||||
|
public static final String UNDERLINESTROKETYPE_DoubleSolid = "DSD";
|
||||||
|
/** Solid = SD */
|
||||||
|
public static final String UNDERLINESTROKETYPE_Solid = "SD";
|
||||||
|
/** Set Underline Stroke Type.
|
||||||
|
@param UnderlineStrokeType Underline Stroke Type */
|
||||||
|
public void setUnderlineStrokeType (String UnderlineStrokeType)
|
||||||
|
{
|
||||||
|
|
||||||
|
set_Value (COLUMNNAME_UnderlineStrokeType, UnderlineStrokeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Underline Stroke Type.
|
||||||
|
@return Underline Stroke Type */
|
||||||
|
public String getUnderlineStrokeType ()
|
||||||
|
{
|
||||||
|
return (String)get_Value(COLUMNNAME_UnderlineStrokeType);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -20,6 +20,7 @@ import java.io.Serializable;
|
||||||
import java.sql.Clob;
|
import java.sql.Clob;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.ResultSetMetaData;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -657,6 +658,9 @@ public class DataEngine
|
||||||
hasLevelNo = true;
|
hasLevelNo = true;
|
||||||
if (sqlSELECT.indexOf("LevelNo") == -1)
|
if (sqlSELECT.indexOf("LevelNo") == -1)
|
||||||
sqlSELECT.append("LevelNo,");
|
sqlSELECT.append("LevelNo,");
|
||||||
|
|
||||||
|
if (tableName.equals("T_Report") && sqlSELECT.indexOf("PA_ReportLine_ID") == -1)
|
||||||
|
sqlSELECT.append("PA_ReportLine_ID,");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -836,6 +840,7 @@ public class DataEngine
|
||||||
PrintDataColumn pdc = null;
|
PrintDataColumn pdc = null;
|
||||||
boolean hasLevelNo = pd.hasLevelNo();
|
boolean hasLevelNo = pd.hasLevelNo();
|
||||||
int levelNo = 0;
|
int levelNo = 0;
|
||||||
|
int reportLineID = 0;
|
||||||
//
|
//
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
@ -843,11 +848,30 @@ public class DataEngine
|
||||||
{
|
{
|
||||||
pstmt = DB.prepareNormalReadReplicaStatement(pd.getSQL(), m_trxName);
|
pstmt = DB.prepareNormalReadReplicaStatement(pd.getSQL(), m_trxName);
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
|
|
||||||
|
boolean isExistsT_Report_PA_ReportLine_ID = false;
|
||||||
|
if (pd.getTableName().equals("T_Report"))
|
||||||
|
{
|
||||||
|
ResultSetMetaData rsmd = rs.getMetaData();
|
||||||
|
for (int i = 1; i <= rsmd.getColumnCount(); i++)
|
||||||
|
{
|
||||||
|
if (rsmd.getColumnLabel(i).equalsIgnoreCase("PA_ReportLine_ID"))
|
||||||
|
{
|
||||||
|
isExistsT_Report_PA_ReportLine_ID = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Row Loop
|
// Row Loop
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
if (hasLevelNo)
|
if (hasLevelNo)
|
||||||
|
{
|
||||||
levelNo = rs.getInt("LevelNo");
|
levelNo = rs.getInt("LevelNo");
|
||||||
|
if (isExistsT_Report_PA_ReportLine_ID)
|
||||||
|
reportLineID = rs.getInt("PA_ReportLine_ID");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
levelNo = 0;
|
levelNo = 0;
|
||||||
// Check Group Change ----------------------------------------
|
// Check Group Change ----------------------------------------
|
||||||
|
@ -923,8 +947,8 @@ public class DataEngine
|
||||||
printRunningTotal(pd, levelNo, rowNo++);
|
printRunningTotal(pd, levelNo, rowNo++);
|
||||||
|
|
||||||
/** Report Summary FR [ 2011569 ]**/
|
/** Report Summary FR [ 2011569 ]**/
|
||||||
if(!m_summary)
|
if (!m_summary)
|
||||||
pd.addRow(false, levelNo);
|
pd.addRow(false, levelNo, reportLineID);
|
||||||
int counter = 1;
|
int counter = 1;
|
||||||
// get columns
|
// get columns
|
||||||
for (int i = 0; i < pd.getColumnInfo().length; i++)
|
for (int i = 0; i < pd.getColumnInfo().length; i++)
|
||||||
|
|
|
@ -35,6 +35,7 @@ import javax.xml.transform.stream.StreamResult;
|
||||||
import org.compiere.Adempiere;
|
import org.compiere.Adempiere;
|
||||||
import org.compiere.print.util.SerializableMatrix;
|
import org.compiere.print.util.SerializableMatrix;
|
||||||
import org.compiere.print.util.SerializableMatrixImpl;
|
import org.compiere.print.util.SerializableMatrixImpl;
|
||||||
|
import org.compiere.report.MReportLine;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
import org.compiere.util.Trace;
|
import org.compiere.util.Trace;
|
||||||
|
@ -57,7 +58,7 @@ public class PrintData implements Serializable
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -5013410697934610197L;
|
private static final long serialVersionUID = 3493453909439452289L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data Parent Constructor
|
* Data Parent Constructor
|
||||||
|
@ -803,4 +804,37 @@ public class PrintData implements Serializable
|
||||||
pd1.dump();
|
pd1.dump();
|
||||||
} // main
|
} // main
|
||||||
|
|
||||||
|
public MReportLine getMReportLine()
|
||||||
|
{
|
||||||
|
List<Serializable> nodes = m_matrix.getRowData();
|
||||||
|
|
||||||
|
if (nodes == null || !m_hasLevelNo)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
for (int i = 0; i < nodes.size(); i++)
|
||||||
|
{
|
||||||
|
Object o = nodes.get(i);
|
||||||
|
if (o instanceof PrintDataElement)
|
||||||
|
{
|
||||||
|
PrintDataElement pde = (PrintDataElement) o;
|
||||||
|
if (MReportLine.COLUMNNAME_PA_ReportLine_ID.equals(pde.getColumnName()))
|
||||||
|
{
|
||||||
|
Integer ii = (Integer) pde.getValue();
|
||||||
|
if (ii > 0)
|
||||||
|
{
|
||||||
|
return new MReportLine(m_ctx, ii, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} // getMReportLine
|
||||||
|
|
||||||
|
public void addRow(boolean functionRow, int levelNo, int reportLineID)
|
||||||
|
{
|
||||||
|
addRow(functionRow, levelNo);
|
||||||
|
if (m_hasLevelNo && reportLineID != 0)
|
||||||
|
addNode(new PrintDataElement("PA_ReportLine_ID", reportLineID, DisplayType.Integer, null));
|
||||||
|
}
|
||||||
|
|
||||||
} // PrintData
|
} // PrintData
|
||||||
|
|
|
@ -67,6 +67,7 @@ import org.compiere.print.PrintData;
|
||||||
import org.compiere.print.PrintDataElement;
|
import org.compiere.print.PrintDataElement;
|
||||||
import org.compiere.print.util.SerializableMatrix;
|
import org.compiere.print.util.SerializableMatrix;
|
||||||
import org.compiere.print.util.SerializableMatrixImpl;
|
import org.compiere.print.util.SerializableMatrixImpl;
|
||||||
|
import org.compiere.report.MReportLine;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
|
@ -1599,6 +1600,11 @@ public class LayoutEngine implements Pageable, Printable, Doc
|
||||||
//
|
//
|
||||||
HashMap<Point,Color> rowColBackground = new HashMap<Point,Color>();
|
HashMap<Point,Color> rowColBackground = new HashMap<Point,Color>();
|
||||||
rowColBackground.put(new Point(TableElement.HEADER_ROW,TableElement.ALL), tf.getHeaderBG_Color());
|
rowColBackground.put(new Point(TableElement.HEADER_ROW,TableElement.ALL), tf.getHeaderBG_Color());
|
||||||
|
//
|
||||||
|
HashMap <Point, MReportLine> rowColReportLine = new HashMap <Point, MReportLine>();
|
||||||
|
//
|
||||||
|
HashMap <String, Integer> colPositions = new HashMap <String, Integer>();
|
||||||
|
|
||||||
// Sizes
|
// Sizes
|
||||||
boolean multiLineHeader = tf.isMultiLineHeader();
|
boolean multiLineHeader = tf.isMultiLineHeader();
|
||||||
int pageNoStart = m_pageNo;
|
int pageNoStart = m_pageNo;
|
||||||
|
@ -1649,6 +1655,7 @@ public class LayoutEngine implements Pageable, Printable, Doc
|
||||||
}
|
}
|
||||||
columnHeader[col] = new ValueNamePair(item.getColumnName(),
|
columnHeader[col] = new ValueNamePair(item.getColumnName(),
|
||||||
item.getPrintName(format.getLanguage()));
|
item.getPrintName(format.getLanguage()));
|
||||||
|
colPositions.put(item.getPrintName(), col);
|
||||||
columnMaxWidth[col] = item.getMaxWidth();
|
columnMaxWidth[col] = item.getMaxWidth();
|
||||||
fixedWidth[col] = (columnMaxWidth[col] != 0 && item.isFixedWidth());
|
fixedWidth[col] = (columnMaxWidth[col] != 0 && item.isFixedWidth());
|
||||||
colSuppressRepeats[col] = item.isSuppressRepeats();
|
colSuppressRepeats[col] = item.isSuppressRepeats();
|
||||||
|
@ -1698,10 +1705,13 @@ public class LayoutEngine implements Pageable, Printable, Doc
|
||||||
String pkColumnName = null;
|
String pkColumnName = null;
|
||||||
ArrayList<Integer> functionRows = new ArrayList<Integer>();
|
ArrayList<Integer> functionRows = new ArrayList<Integer>();
|
||||||
ArrayList<Integer> pageBreak = new ArrayList<Integer>();
|
ArrayList<Integer> pageBreak = new ArrayList<Integer>();
|
||||||
|
ArrayList<Integer> finReportSumRows = new ArrayList<Integer>();
|
||||||
|
int lastLevelNo = 0;
|
||||||
|
|
||||||
// for all rows
|
// for all rows
|
||||||
for (int row = 0; row < rows; row++)
|
for (int row = 0; row < rows; row++)
|
||||||
{
|
{
|
||||||
|
int levelNo = 0;
|
||||||
ArrayList<Serializable> columns = new ArrayList<Serializable>();
|
ArrayList<Serializable> columns = new ArrayList<Serializable>();
|
||||||
printData.setRowIndex(row);
|
printData.setRowIndex(row);
|
||||||
if (printData.isFunctionRow())
|
if (printData.isFunctionRow())
|
||||||
|
@ -1717,23 +1727,32 @@ public class LayoutEngine implements Pageable, Printable, Doc
|
||||||
log.finer("PageBreak row=" + row);
|
log.finer("PageBreak row=" + row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Summary/Line Levels for Finanial Reports
|
// Summary/Line Levels for Financial Reports
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int levelNo = printData.getLineLevelNo();
|
levelNo = printData.getLineLevelNo();
|
||||||
if (levelNo != 0)
|
|
||||||
{
|
|
||||||
if (levelNo < 0)
|
if (levelNo < 0)
|
||||||
levelNo = -levelNo;
|
levelNo = -levelNo;
|
||||||
|
|
||||||
|
if (levelNo < lastLevelNo)
|
||||||
|
finReportSumRows.add(row);
|
||||||
|
|
||||||
|
if (levelNo != 0)
|
||||||
|
{
|
||||||
Font base = printFont.getFont();
|
Font base = printFont.getFont();
|
||||||
if (levelNo == 1)
|
if (levelNo == 1)
|
||||||
rowColFont.put(new Point(row, TableElement.ALL), new Font (base.getName(),
|
rowColFont.put(new Point(row, TableElement.ALL),
|
||||||
Font.ITALIC, base.getSize()-levelNo));
|
new Font(base.getName(), Font.ITALIC, base.getSize() - levelNo));
|
||||||
else if (levelNo == 2)
|
else if (levelNo == 2)
|
||||||
rowColFont.put(new Point(row, TableElement.ALL), new Font (base.getName(),
|
rowColFont.put(new Point(row, TableElement.ALL),
|
||||||
Font.PLAIN, base.getSize()-levelNo));
|
new Font(base.getName(), Font.PLAIN, base.getSize() - levelNo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastLevelNo = levelNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MReportLine rLine = printData.getMReportLine();
|
||||||
|
|
||||||
// for all columns
|
// for all columns
|
||||||
for (int c = 0; c < format.getItemCount(); c++)
|
for (int c = 0; c < format.getItemCount(); c++)
|
||||||
{
|
{
|
||||||
|
@ -1742,6 +1761,9 @@ public class LayoutEngine implements Pageable, Printable, Doc
|
||||||
Serializable dataElement = null;
|
Serializable dataElement = null;
|
||||||
if (item.isPrinted()) // Text Columns
|
if (item.isPrinted()) // Text Columns
|
||||||
{
|
{
|
||||||
|
if (rLine != null && levelNo == 0 && item.getColumnName().startsWith("Col_"))
|
||||||
|
rowColReportLine.put(new Point(row, colPositions.get(item.getPrintName())), rLine);
|
||||||
|
|
||||||
if ( !PrintDataEvaluatee.hasPageLogic(item.getDisplayLogic()) && !isDisplayed(printData, item) )
|
if ( !PrintDataEvaluatee.hasPageLogic(item.getDisplayLogic()) && !isDisplayed(printData, item) )
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
|
@ -1813,7 +1835,7 @@ public class LayoutEngine implements Pageable, Printable, Doc
|
||||||
elements, pk, pkColumnName,
|
elements, pk, pkColumnName,
|
||||||
pageNoStart, firstPage, nextPages, repeatedColumns, additionalLines,
|
pageNoStart, firstPage, nextPages, repeatedColumns, additionalLines,
|
||||||
rowColFont, rowColColor, rowColBackground,
|
rowColFont, rowColColor, rowColBackground,
|
||||||
tf, pageBreak, colSuppressRepeats);
|
tf, pageBreak, colSuppressRepeats, rowColReportLine, finReportSumRows);
|
||||||
table.layout(0,0,false, MPrintFormatItem.FIELDALIGNMENTTYPE_LeadingLeft);
|
table.layout(0,0,false, MPrintFormatItem.FIELDALIGNMENTTYPE_LeadingLeft);
|
||||||
if (m_tableElement == null)
|
if (m_tableElement == null)
|
||||||
m_tableElement = table;
|
m_tableElement = table;
|
||||||
|
|
|
@ -46,6 +46,7 @@ import org.compiere.print.MPrintTableFormat;
|
||||||
import org.compiere.print.PrintData;
|
import org.compiere.print.PrintData;
|
||||||
import org.compiere.print.util.SerializableMatrix;
|
import org.compiere.print.util.SerializableMatrix;
|
||||||
import org.compiere.print.util.SerializableMatrixImpl;
|
import org.compiere.print.util.SerializableMatrixImpl;
|
||||||
|
import org.compiere.report.MReportLine;
|
||||||
import org.compiere.util.Evaluator;
|
import org.compiere.util.Evaluator;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
import org.compiere.util.NamePair;
|
import org.compiere.util.NamePair;
|
||||||
|
@ -80,7 +81,7 @@ public class TableElement extends PrintElement
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 4185521888252077894L;
|
private static final long serialVersionUID = -4144554863262696285L;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,6 +116,10 @@ public class TableElement extends PrintElement
|
||||||
* @param rowColBackground HashMap with Point as key with background Color overwrite
|
* @param rowColBackground HashMap with Point as key with background Color overwrite
|
||||||
* @param tFormat table format
|
* @param tFormat table format
|
||||||
* @param pageBreak Arraylist of rows with page break
|
* @param pageBreak Arraylist of rows with page break
|
||||||
|
*
|
||||||
|
* @param colSuppressRepeats
|
||||||
|
* @param rowColReportLine
|
||||||
|
* @param finReportSumRows
|
||||||
*/
|
*/
|
||||||
public TableElement (ValueNamePair[] columnHeader,
|
public TableElement (ValueNamePair[] columnHeader,
|
||||||
int[] columnMaxWidth, int[] columnMaxHeight, String[] columnJustification,
|
int[] columnMaxWidth, int[] columnMaxHeight, String[] columnJustification,
|
||||||
|
@ -122,7 +127,8 @@ public class TableElement extends PrintElement
|
||||||
SerializableMatrix<Serializable> data, KeyNamePair[] pk, String pkColumnName,
|
SerializableMatrix<Serializable> data, KeyNamePair[] pk, String pkColumnName,
|
||||||
int pageNoStart, Rectangle firstPage, Rectangle nextPages, int repeatedColumns, HashMap<Integer,Integer> additionalLines,
|
int pageNoStart, Rectangle firstPage, Rectangle nextPages, int repeatedColumns, HashMap<Integer,Integer> additionalLines,
|
||||||
HashMap<Point,Font> rowColFont, HashMap<Point,Color> rowColColor, HashMap<Point,Color> rowColBackground,
|
HashMap<Point,Font> rowColFont, HashMap<Point,Color> rowColColor, HashMap<Point,Color> rowColBackground,
|
||||||
MPrintTableFormat tFormat, ArrayList<Integer> pageBreak, Boolean[] colSuppressRepeats)
|
MPrintTableFormat tFormat, ArrayList<Integer> pageBreak, Boolean[] colSuppressRepeats, HashMap<Point, MReportLine> rowColReportLine,
|
||||||
|
ArrayList<Integer> finReportSumRows)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
if (log.isLoggable(Level.FINE))
|
if (log.isLoggable(Level.FINE))
|
||||||
|
@ -162,6 +168,8 @@ public class TableElement extends PrintElement
|
||||||
if (m_baseBackground == null)
|
if (m_baseBackground == null)
|
||||||
m_baseBackground = Color.white;
|
m_baseBackground = Color.white;
|
||||||
m_tFormat = tFormat;
|
m_tFormat = tFormat;
|
||||||
|
m_finReportSumRows = finReportSumRows;
|
||||||
|
m_rowColReportLine = rowColReportLine;
|
||||||
|
|
||||||
// Page Break - not two after each other
|
// Page Break - not two after each other
|
||||||
m_pageBreak = pageBreak;
|
m_pageBreak = pageBreak;
|
||||||
|
@ -258,6 +266,11 @@ public class TableElement extends PrintElement
|
||||||
/** Key: Integer (original Column) - Value: Integer (below column) */
|
/** Key: Integer (original Column) - Value: Integer (below column) */
|
||||||
private HashMap<Integer,Integer> m_additionalLines;
|
private HashMap<Integer,Integer> m_additionalLines;
|
||||||
|
|
||||||
|
/** List of Fin Report Summary Rows */
|
||||||
|
private ArrayList<Integer> m_finReportSumRows;
|
||||||
|
/** HashMap with Point as key with report line */
|
||||||
|
private HashMap<Point, MReportLine> m_rowColReportLine;
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
/** Header Row Indicator */
|
/** Header Row Indicator */
|
||||||
|
@ -334,6 +347,9 @@ public class TableElement extends PrintElement
|
||||||
{
|
{
|
||||||
dimensions.add(null);
|
dimensions.add(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Font font = getFont(row, dataCol);
|
||||||
|
|
||||||
Serializable dataItem = m_data.getRowData().get(dataCol);
|
Serializable dataItem = m_data.getRowData().get(dataCol);
|
||||||
if (dataItem == null)
|
if (dataItem == null)
|
||||||
{
|
{
|
||||||
|
@ -345,8 +361,20 @@ public class TableElement extends PrintElement
|
||||||
dataItem = " ";
|
dataItem = " ";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
// Set Blank line height
|
||||||
|
if (getReportLine(row, dataCol) != null && getReportLine(row, dataCol).isLineTypeBlankLine())
|
||||||
{
|
{
|
||||||
dimensions.set(dataCol, new Dimension2DImpl());
|
dimensions.set(dataCol, new Dimension2DImpl());
|
||||||
|
TextLayout layout = new TextLayout(" ", font, frc);
|
||||||
|
float height = layout.getAscent() + layout.getDescent() + layout.getLeading();
|
||||||
|
dimensions.get(dataCol).height = height;
|
||||||
|
dimensions.get(dataCol).roundUp();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dimensions.set(dataCol, new Dimension2DImpl());
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -356,7 +384,6 @@ public class TableElement extends PrintElement
|
||||||
dimensions.set(dataCol, new Dimension2DImpl());
|
dimensions.set(dataCol, new Dimension2DImpl());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Font font = getFont(row, dataCol);
|
|
||||||
|
|
||||||
// Print below existing column = (col != dataCol)
|
// Print below existing column = (col != dataCol)
|
||||||
addPrintLines(row, col, dataItem);
|
addPrintLines(row, col, dataItem);
|
||||||
|
@ -585,13 +612,26 @@ public class TableElement extends PrintElement
|
||||||
for (int row = 0; row < rows; row++)
|
for (int row = 0; row < rows; row++)
|
||||||
{
|
{
|
||||||
float rowHeight = 0f;
|
float rowHeight = 0f;
|
||||||
|
float over = 0f;
|
||||||
|
float under = 0f;
|
||||||
dataSizes.setRowIndex(row);
|
dataSizes.setRowIndex(row);
|
||||||
List<Dimension2DImpl> dimensions = dataSizes.getRowData();
|
List<Dimension2DImpl> dimensions = dataSizes.getRowData();
|
||||||
for (int col = 0; col < cols; col++)
|
for (int col = 0; col < cols; col++)
|
||||||
{
|
{
|
||||||
if (dimensions.get(col).height > rowHeight) // max
|
if (dimensions.get(col).height > rowHeight) // max
|
||||||
rowHeight = (float)dimensions.get(col).height;
|
rowHeight = (float)dimensions.get(col).height;
|
||||||
|
|
||||||
|
if (getReportLine(row, col) != null)
|
||||||
|
{
|
||||||
|
if (getReportLine(row, col).getOverline() > over)
|
||||||
|
over = getReportLine(row, col).getOverline();
|
||||||
|
if (getReportLine(row, col).getUnderline() > under)
|
||||||
|
under = getReportLine(row, col).getUnderline();
|
||||||
|
}
|
||||||
} // for all columns
|
} // for all columns
|
||||||
|
over = over == 2 ? over * m_tFormat.getLineStroke().floatValue() + V_GAP : over * m_tFormat.getLineStroke().floatValue();
|
||||||
|
under = under == 2 ? under * m_tFormat.getLineStroke().floatValue() + V_GAP : under * m_tFormat.getLineStroke().floatValue();
|
||||||
|
rowHeight += over + under;
|
||||||
rowHeight += m_tFormat.getLineStroke().floatValue() + (2*V_GAP);
|
rowHeight += m_tFormat.getLineStroke().floatValue() + (2*V_GAP);
|
||||||
m_rowHeights.add(Float.valueOf(rowHeight));
|
m_rowHeights.add(Float.valueOf(rowHeight));
|
||||||
p_height += rowHeight;
|
p_height += rowHeight;
|
||||||
|
@ -1434,6 +1474,29 @@ public class TableElement extends PrintElement
|
||||||
(int)(colWidth-m_tFormat.getVLineStroke().floatValue()),
|
(int)(colWidth-m_tFormat.getVLineStroke().floatValue()),
|
||||||
(int)(rowHeight-m_tFormat.getLineStroke().floatValue()) );
|
(int)(rowHeight-m_tFormat.getLineStroke().floatValue()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Over Line
|
||||||
|
MReportLine rLine = getReportLine(row, col);
|
||||||
|
if (rLine != null)
|
||||||
|
{
|
||||||
|
if (rLine.getOverline() > 1)
|
||||||
|
{
|
||||||
|
curY -= V_GAP + m_tFormat.getVLineStroke().floatValue();
|
||||||
|
g2D.setPaint(m_tFormat.getHeaderLine_Color());
|
||||||
|
g2D.setStroke(rLine.getOverlineStroke(m_tFormat.getVLineStroke()));
|
||||||
|
g2D.drawLine(curX, (int) (curY + m_tFormat.getVLineStroke().floatValue()),
|
||||||
|
(int) (curX + colWidth - m_tFormat.getVLineStroke().floatValue()), (int) (curY + m_tFormat.getVLineStroke().floatValue()));
|
||||||
|
curY += V_GAP + m_tFormat.getVLineStroke().floatValue();
|
||||||
|
}
|
||||||
|
if (rLine.getOverline() > 0)
|
||||||
|
{
|
||||||
|
g2D.setPaint(m_tFormat.getHeaderLine_Color());
|
||||||
|
g2D.setStroke(rLine.getOverlineStroke(m_tFormat.getVLineStroke()));
|
||||||
|
g2D.drawLine(curX, curY, (int) (curX + colWidth - m_tFormat.getVLineStroke().floatValue()), curY);
|
||||||
|
curY += m_tFormat.getVLineStroke().floatValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
curX += H_GAP; // upper left gap
|
curX += H_GAP; // upper left gap
|
||||||
curY += V_GAP;
|
curY += V_GAP;
|
||||||
|
|
||||||
|
@ -1607,9 +1670,37 @@ public class TableElement extends PrintElement
|
||||||
curX, (int)(rowYstart+rowHeight-m_tFormat.getLineStroke().floatValue()));
|
curX, (int)(rowYstart+rowHeight-m_tFormat.getLineStroke().floatValue()));
|
||||||
curX += m_tFormat.getVLineStroke().floatValue();
|
curX += m_tFormat.getVLineStroke().floatValue();
|
||||||
|
|
||||||
|
// Under Line
|
||||||
|
if (rLine != null && rLine.getUnderline() > 0)
|
||||||
|
{
|
||||||
|
if (rLine.getUnderline() > 1)
|
||||||
|
{
|
||||||
|
curY -= V_GAP + m_tFormat.getVLineStroke().floatValue();
|
||||||
|
g2D.setPaint(m_tFormat.getHeaderLine_Color());
|
||||||
|
g2D.setStroke(rLine.getUnderlineStroke(m_tFormat.getVLineStroke()));
|
||||||
|
g2D.drawLine(origX, curY, (int) (origX + colWidth - m_tFormat.getVLineStroke().floatValue()), curY);
|
||||||
|
curY += V_GAP + m_tFormat.getVLineStroke().floatValue();
|
||||||
|
}
|
||||||
|
if (rLine.getUnderline() > 0)
|
||||||
|
{
|
||||||
|
g2D.setPaint(m_tFormat.getHeaderLine_Color());
|
||||||
|
g2D.setStroke(rLine.getUnderlineStroke(m_tFormat.getVLineStroke()));
|
||||||
|
g2D.drawLine(origX, curY, (int) (origX + colWidth - m_tFormat.getVLineStroke().floatValue()), curY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Maintain financial report detail and column section Y position
|
||||||
|
if ((int) (rowYstart + rowHeight) > curY)
|
||||||
|
{
|
||||||
|
curY = (int) (rowYstart + rowHeight);
|
||||||
|
}
|
||||||
|
|
||||||
// X end line
|
// X end line
|
||||||
if (row == m_data.getRowCount()-1) // last Line
|
if (row == m_data.getRowCount()-1) // last Line
|
||||||
{
|
{
|
||||||
|
// left some space between underline and last line
|
||||||
|
curY += 2 * V_GAP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bug fix - Bottom line was always displayed whether or not header lines was set to be visible
|
* Bug fix - Bottom line was always displayed whether or not header lines was set to be visible
|
||||||
* @author ashley
|
* @author ashley
|
||||||
|
@ -1633,12 +1724,15 @@ public class TableElement extends PrintElement
|
||||||
boolean nextIsFunction = m_functionRows.contains(Integer.valueOf(row+1));
|
boolean nextIsFunction = m_functionRows.contains(Integer.valueOf(row+1));
|
||||||
if (nextIsFunction && m_functionRows.contains(Integer.valueOf(row)))
|
if (nextIsFunction && m_functionRows.contains(Integer.valueOf(row)))
|
||||||
nextIsFunction = false; // this is a function line too
|
nextIsFunction = false; // this is a function line too
|
||||||
if (nextIsFunction)
|
MReportLine nextLine = getReportLine(row + 1, col);
|
||||||
|
if (nextIsFunction || (m_finReportSumRows.contains(Integer.valueOf(row + 1)) && nextLine != null
|
||||||
|
&& nextLine.getOverline() == 0))
|
||||||
{
|
{
|
||||||
g2D.setPaint(m_tFormat.getFunctFG_Color());
|
g2D.setPaint(m_tFormat.getFunctFG_Color());
|
||||||
g2D.setStroke(m_tFormat.getHLine_Stroke());
|
g2D.setStroke(m_tFormat.getHLine_Stroke());
|
||||||
|
|
||||||
g2D.drawLine(origX, curY, // -> - (bottom)
|
g2D.drawLine(origX, curY, // -> - (bottom)
|
||||||
(int)(origX+colWidth-m_tFormat.getVLineStroke().floatValue()), curY);
|
(int) (origX + colWidth - m_tFormat.getVLineStroke().floatValue()), curY);
|
||||||
}
|
}
|
||||||
else if (m_tFormat.isPaintHLines())
|
else if (m_tFormat.isPaintHLines())
|
||||||
{
|
{
|
||||||
|
@ -1725,6 +1819,22 @@ public class TableElement extends PrintElement
|
||||||
return coordinate.toArray();
|
return coordinate.toArray();
|
||||||
} // getPrintItems
|
} // getPrintItems
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Report Line.
|
||||||
|
*
|
||||||
|
* @param row row
|
||||||
|
* @param col column
|
||||||
|
* @return ReportLine for row/col
|
||||||
|
*/
|
||||||
|
private MReportLine getReportLine(int row, int col)
|
||||||
|
{
|
||||||
|
// First specific position
|
||||||
|
MReportLine rLine = (MReportLine) m_rowColReportLine.get(new Point(row, col));
|
||||||
|
if (rLine != null)
|
||||||
|
return rLine;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
} // getReportLine
|
||||||
|
|
||||||
public void setPageLogics(ArrayList<String> pageLogics)
|
public void setPageLogics(ArrayList<String> pageLogics)
|
||||||
{
|
{
|
||||||
|
|
|
@ -313,7 +313,7 @@ public class FinReport extends SvrProcess
|
||||||
int PA_ReportLineSet_ID = m_report.getLineSet().getPA_ReportLineSet_ID();
|
int PA_ReportLineSet_ID = m_report.getLineSet().getPA_ReportLineSet_ID();
|
||||||
StringBuilder sql = new StringBuilder ("INSERT INTO T_Report "
|
StringBuilder sql = new StringBuilder ("INSERT INTO T_Report "
|
||||||
+ "(AD_PInstance_ID, PA_ReportLine_ID, Record_ID,Fact_Acct_ID, SeqNo,LevelNo, Name,Description) "
|
+ "(AD_PInstance_ID, PA_ReportLine_ID, Record_ID,Fact_Acct_ID, SeqNo,LevelNo, Name,Description) "
|
||||||
+ "SELECT ").append(getAD_PInstance_ID()).append(", rl.PA_ReportLine_ID, 0,0, rl.SeqNo,0, NVL(trl.Name, rl.Name) as Name, NVL(trl.Description,rl.Description) as Description "
|
+ "SELECT ").append(getAD_PInstance_ID()).append(", rl.PA_ReportLine_ID, 0,0, rl.SeqNo,0, CASE WHEN LineType='B' THEN '' ELSE NVL(trl.Name, rl.Name) END as Name, NVL(trl.Description,rl.Description) as Description "
|
||||||
+ "FROM PA_ReportLine rl "
|
+ "FROM PA_ReportLine rl "
|
||||||
+ "LEFT JOIN PA_ReportLine_Trl trl ON trl.PA_ReportLine_ID = rl.PA_ReportLine_ID AND trl.AD_Language = '" + Env.getAD_Language(Env.getCtx()) + "' "
|
+ "LEFT JOIN PA_ReportLine_Trl trl ON trl.PA_ReportLine_ID = rl.PA_ReportLine_ID AND trl.AD_Language = '" + Env.getAD_Language(Env.getCtx()) + "' "
|
||||||
+ "WHERE rl.IsActive='Y' AND rl.PA_ReportLineSet_ID=").append(PA_ReportLineSet_ID);
|
+ "WHERE rl.IsActive='Y' AND rl.PA_ReportLineSet_ID=").append(PA_ReportLineSet_ID);
|
||||||
|
|
|
@ -16,6 +16,9 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.report;
|
package org.compiere.report;
|
||||||
|
|
||||||
|
import java.awt.BasicStroke;
|
||||||
|
import java.awt.Stroke;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -38,7 +41,10 @@ public class MReportLine extends X_PA_ReportLine
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -3957315092529097396L;
|
private static final long serialVersionUID = -6310984172477566729L;
|
||||||
|
|
||||||
|
private BasicStroke overline_Stroke;
|
||||||
|
private Stroke underline_Stroke;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
@ -346,6 +352,15 @@ public class MReportLine extends X_PA_ReportLine
|
||||||
return LINETYPE_SegmentValue.equals(getLineType());
|
return LINETYPE_SegmentValue.equals(getLineType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Line Type Blank Line
|
||||||
|
* @return true if Blank Line
|
||||||
|
*/
|
||||||
|
public boolean isLineTypeBlankLine()
|
||||||
|
{
|
||||||
|
return LINETYPE_BlankLine.equals(getLineType());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculation Type Range
|
* Calculation Type Range
|
||||||
* @return true if range
|
* @return true if range
|
||||||
|
@ -422,5 +437,104 @@ public class MReportLine extends X_PA_ReportLine
|
||||||
return retValue;
|
return retValue;
|
||||||
} // copy
|
} // copy
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get overline style 0 - none, 1 - single, 2 - double
|
||||||
|
*
|
||||||
|
* @return int - Style No
|
||||||
|
*/
|
||||||
|
public int getOverline( )
|
||||||
|
{
|
||||||
|
if (OVERLINESTROKETYPE_Dotted.equals(getOverlineStrokeType()) || OVERLINESTROKETYPE_Solid.equals(getOverlineStrokeType())
|
||||||
|
|| OVERLINESTROKETYPE_Dashed.equals(getOverlineStrokeType()))
|
||||||
|
return 1;
|
||||||
|
else if (OVERLINESTROKETYPE_DoubleDotted.equals(getOverlineStrokeType()) || OVERLINESTROKETYPE_DoubleSolid.equals(getOverlineStrokeType())
|
||||||
|
|| OVERLINESTROKETYPE_DoubleDashed.equals(getOverlineStrokeType()))
|
||||||
|
return 2;
|
||||||
|
return 0;
|
||||||
|
} // getOverline
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get OverLine Stroke
|
||||||
|
*
|
||||||
|
* @return line based on line (1/2 of) width and stroke (default dotted 1/2p
|
||||||
|
*/
|
||||||
|
public Stroke getOverlineStroke(BigDecimal stroke)
|
||||||
|
{
|
||||||
|
if (overline_Stroke == null)
|
||||||
|
{
|
||||||
|
float width = stroke.floatValue() / 2;
|
||||||
|
// . . .
|
||||||
|
if (UNDERLINESTROKETYPE_Dotted.equals(getOverlineStrokeType()) || UNDERLINESTROKETYPE_DoubleDotted.equals(getOverlineStrokeType()))
|
||||||
|
overline_Stroke = new BasicStroke(width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1.0f, getPatternDotted(width), 0.0f);
|
||||||
|
// -
|
||||||
|
else if (UNDERLINESTROKETYPE_Solid.equals(getOverlineStrokeType()) || UNDERLINESTROKETYPE_DoubleSolid.equals(getOverlineStrokeType()))
|
||||||
|
overline_Stroke = new BasicStroke(width);
|
||||||
|
// - -
|
||||||
|
else if (UNDERLINESTROKETYPE_Dashed.equals(getOverlineStrokeType()) || UNDERLINESTROKETYPE_DoubleDashed.equals(getOverlineStrokeType()))
|
||||||
|
overline_Stroke = new BasicStroke(width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1.0f, getPatternDashed(width), 0.0f);
|
||||||
|
}
|
||||||
|
return overline_Stroke;
|
||||||
|
} // getUnderine_Stroke
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get underline style 0 - none 1 - single 2 - double
|
||||||
|
*
|
||||||
|
* @return int - Style No
|
||||||
|
*/
|
||||||
|
public int getUnderline( )
|
||||||
|
{
|
||||||
|
if (UNDERLINESTROKETYPE_Dotted.equals(getUnderlineStrokeType()) || UNDERLINESTROKETYPE_Solid.equals(getUnderlineStrokeType())
|
||||||
|
|| UNDERLINESTROKETYPE_Dashed.equals(getUnderlineStrokeType()))
|
||||||
|
return 1;
|
||||||
|
else if (UNDERLINESTROKETYPE_DoubleDotted.equals(getUnderlineStrokeType()) || UNDERLINESTROKETYPE_DoubleSolid.equals(getUnderlineStrokeType())
|
||||||
|
|| UNDERLINESTROKETYPE_DoubleDashed.equals(getUnderlineStrokeType()))
|
||||||
|
return 2;
|
||||||
|
return 0;
|
||||||
|
} // getUnderline
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get UnderLine Stroke
|
||||||
|
*
|
||||||
|
* @return line based on line (1/2 of) width and stroke (default dotted 1/2p
|
||||||
|
*/
|
||||||
|
public Stroke getUnderlineStroke(BigDecimal stroke)
|
||||||
|
{
|
||||||
|
if (underline_Stroke == null)
|
||||||
|
{
|
||||||
|
float width = stroke.floatValue() / 2;
|
||||||
|
// . . .
|
||||||
|
if (UNDERLINESTROKETYPE_Dotted.equals(getUnderlineStrokeType()) || UNDERLINESTROKETYPE_DoubleDotted.equals(getUnderlineStrokeType()))
|
||||||
|
underline_Stroke = new BasicStroke(width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1.0f, getPatternDotted(width), 0.0f);
|
||||||
|
// -
|
||||||
|
else if (UNDERLINESTROKETYPE_Solid.equals(getUnderlineStrokeType()) || UNDERLINESTROKETYPE_DoubleSolid.equals(getUnderlineStrokeType()))
|
||||||
|
underline_Stroke = new BasicStroke(width);
|
||||||
|
// - -
|
||||||
|
else if (UNDERLINESTROKETYPE_Dashed.equals(getUnderlineStrokeType()) || UNDERLINESTROKETYPE_DoubleDashed.equals(getUnderlineStrokeType()))
|
||||||
|
underline_Stroke = new BasicStroke(width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1.0f, getPatternDashed(width), 0.0f);
|
||||||
|
}
|
||||||
|
return underline_Stroke;
|
||||||
|
} // getUnderine_Stroke
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Pattern Dotted . . . .
|
||||||
|
*
|
||||||
|
* @param width - Width of line
|
||||||
|
* @return pattern
|
||||||
|
*/
|
||||||
|
private float[] getPatternDotted(float width)
|
||||||
|
{
|
||||||
|
return new float[] { 2 * width, 2 * width };
|
||||||
|
} // getPatternDotted
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Pattern Dashed - - - -
|
||||||
|
*
|
||||||
|
* @param width - Width of line
|
||||||
|
* @return pattern
|
||||||
|
*/
|
||||||
|
private float[] getPatternDashed(float width)
|
||||||
|
{
|
||||||
|
return new float[] { 10 * width, 4 * width };
|
||||||
|
} // getPatternDashed
|
||||||
|
|
||||||
} // MReportLine
|
} // MReportLine
|
||||||
|
|
Loading…
Reference in New Issue