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:
Deepak Pansheriya 2020-09-08 16:29:19 +05:30 committed by GitHub
parent e18d8001d4
commit e72dfd66c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 551 additions and 28 deletions

View File

@ -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
;

View File

@ -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
;

View File

@ -302,6 +302,24 @@ public interface I_PA_ReportLine
*/
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 */
public static final String COLUMNNAME_Updated = "Updated";

View File

@ -30,9 +30,9 @@ 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)
{
super (ctx, PA_ReportLine_ID, 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";
/** Calculation = C */
public static final String LINETYPE_Calculation = "C";
/** Blank line = B */
public static final String LINETYPE_BlankLine = "B";
/** Set Line Type.
@param LineType Line Type */
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 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);
}
}

View File

@ -20,6 +20,7 @@ import java.io.Serializable;
import java.sql.Clob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
@ -657,6 +658,9 @@ public class DataEngine
hasLevelNo = true;
if (sqlSELECT.indexOf("LevelNo") == -1)
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;
boolean hasLevelNo = pd.hasLevelNo();
int levelNo = 0;
int reportLineID = 0;
//
PreparedStatement pstmt = null;
ResultSet rs = null;
@ -843,11 +848,30 @@ public class DataEngine
{
pstmt = DB.prepareNormalReadReplicaStatement(pd.getSQL(), m_trxName);
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
while (rs.next())
{
if (hasLevelNo)
{
levelNo = rs.getInt("LevelNo");
if (isExistsT_Report_PA_ReportLine_ID)
reportLineID = rs.getInt("PA_ReportLine_ID");
}
else
levelNo = 0;
// Check Group Change ----------------------------------------
@ -923,8 +947,8 @@ public class DataEngine
printRunningTotal(pd, levelNo, rowNo++);
/** Report Summary FR [ 2011569 ]**/
if(!m_summary)
pd.addRow(false, levelNo);
if (!m_summary)
pd.addRow(false, levelNo, reportLineID);
int counter = 1;
// get columns
for (int i = 0; i < pd.getColumnInfo().length; i++)

View File

@ -35,6 +35,7 @@ import javax.xml.transform.stream.StreamResult;
import org.compiere.Adempiere;
import org.compiere.print.util.SerializableMatrix;
import org.compiere.print.util.SerializableMatrixImpl;
import org.compiere.report.MReportLine;
import org.compiere.util.CLogger;
import org.compiere.util.DisplayType;
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
@ -803,4 +804,37 @@ public class PrintData implements Serializable
pd1.dump();
} // 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

View File

@ -67,6 +67,7 @@ import org.compiere.print.PrintData;
import org.compiere.print.PrintDataElement;
import org.compiere.print.util.SerializableMatrix;
import org.compiere.print.util.SerializableMatrixImpl;
import org.compiere.report.MReportLine;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.DisplayType;
@ -1599,6 +1600,11 @@ public class LayoutEngine implements Pageable, Printable, Doc
//
HashMap<Point,Color> rowColBackground = new HashMap<Point,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
boolean multiLineHeader = tf.isMultiLineHeader();
int pageNoStart = m_pageNo;
@ -1649,6 +1655,7 @@ public class LayoutEngine implements Pageable, Printable, Doc
}
columnHeader[col] = new ValueNamePair(item.getColumnName(),
item.getPrintName(format.getLanguage()));
colPositions.put(item.getPrintName(), col);
columnMaxWidth[col] = item.getMaxWidth();
fixedWidth[col] = (columnMaxWidth[col] != 0 && item.isFixedWidth());
colSuppressRepeats[col] = item.isSuppressRepeats();
@ -1698,10 +1705,13 @@ public class LayoutEngine implements Pageable, Printable, Doc
String pkColumnName = null;
ArrayList<Integer> functionRows = new ArrayList<Integer>();
ArrayList<Integer> pageBreak = new ArrayList<Integer>();
ArrayList<Integer> finReportSumRows = new ArrayList<Integer>();
int lastLevelNo = 0;
// for all rows
for (int row = 0; row < rows; row++)
{
int levelNo = 0;
ArrayList<Serializable> columns = new ArrayList<Serializable>();
printData.setRowIndex(row);
if (printData.isFunctionRow())
@ -1717,23 +1727,32 @@ public class LayoutEngine implements Pageable, Printable, Doc
log.finer("PageBreak row=" + row);
}
}
// Summary/Line Levels for Finanial Reports
// Summary/Line Levels for Financial Reports
else
{
int levelNo = printData.getLineLevelNo();
levelNo = printData.getLineLevelNo();
if (levelNo < 0)
levelNo = -levelNo;
if (levelNo < lastLevelNo)
finReportSumRows.add(row);
if (levelNo != 0)
{
if (levelNo < 0)
levelNo = -levelNo;
Font base = printFont.getFont();
if (levelNo == 1)
rowColFont.put(new Point(row, TableElement.ALL), new Font (base.getName(),
Font.ITALIC, base.getSize()-levelNo));
rowColFont.put(new Point(row, TableElement.ALL),
new Font(base.getName(), Font.ITALIC, base.getSize() - levelNo));
else if (levelNo == 2)
rowColFont.put(new Point(row, TableElement.ALL), new Font (base.getName(),
Font.PLAIN, base.getSize()-levelNo));
rowColFont.put(new Point(row, TableElement.ALL),
new Font(base.getName(), Font.PLAIN, base.getSize() - levelNo));
}
lastLevelNo = levelNo;
}
MReportLine rLine = printData.getMReportLine();
// for all columns
for (int c = 0; c < format.getItemCount(); c++)
{
@ -1742,6 +1761,9 @@ public class LayoutEngine implements Pageable, Printable, Doc
Serializable dataElement = null;
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) )
{
;
@ -1813,7 +1835,7 @@ public class LayoutEngine implements Pageable, Printable, Doc
elements, pk, pkColumnName,
pageNoStart, firstPage, nextPages, repeatedColumns, additionalLines,
rowColFont, rowColColor, rowColBackground,
tf, pageBreak, colSuppressRepeats);
tf, pageBreak, colSuppressRepeats, rowColReportLine, finReportSumRows);
table.layout(0,0,false, MPrintFormatItem.FIELDALIGNMENTTYPE_LeadingLeft);
if (m_tableElement == null)
m_tableElement = table;

View File

@ -46,6 +46,7 @@ import org.compiere.print.MPrintTableFormat;
import org.compiere.print.PrintData;
import org.compiere.print.util.SerializableMatrix;
import org.compiere.print.util.SerializableMatrixImpl;
import org.compiere.report.MReportLine;
import org.compiere.util.Evaluator;
import org.compiere.util.KeyNamePair;
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 tFormat table format
* @param pageBreak Arraylist of rows with page break
*
* @param colSuppressRepeats
* @param rowColReportLine
* @param finReportSumRows
*/
public TableElement (ValueNamePair[] columnHeader,
int[] columnMaxWidth, int[] columnMaxHeight, String[] columnJustification,
@ -122,7 +127,8 @@ public class TableElement extends PrintElement
SerializableMatrix<Serializable> data, KeyNamePair[] pk, String pkColumnName,
int pageNoStart, Rectangle firstPage, Rectangle nextPages, int repeatedColumns, HashMap<Integer,Integer> additionalLines,
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();
if (log.isLoggable(Level.FINE))
@ -162,6 +168,8 @@ public class TableElement extends PrintElement
if (m_baseBackground == null)
m_baseBackground = Color.white;
m_tFormat = tFormat;
m_finReportSumRows = finReportSumRows;
m_rowColReportLine = rowColReportLine;
// Page Break - not two after each other
m_pageBreak = pageBreak;
@ -258,6 +266,11 @@ public class TableElement extends PrintElement
/** Key: Integer (original Column) - Value: Integer (below column) */
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 */
@ -334,6 +347,9 @@ public class TableElement extends PrintElement
{
dimensions.add(null);
}
Font font = getFont(row, dataCol);
Serializable dataItem = m_data.getRowData().get(dataCol);
if (dataItem == null)
{
@ -346,7 +362,19 @@ public class TableElement extends PrintElement
}
else
{
dimensions.set(dataCol, new Dimension2DImpl());
// Set Blank line height
if (getReportLine(row, dataCol) != null && getReportLine(row, dataCol).isLineTypeBlankLine())
{
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;
}
}
@ -356,7 +384,6 @@ public class TableElement extends PrintElement
dimensions.set(dataCol, new Dimension2DImpl());
continue;
}
Font font = getFont(row, dataCol);
// Print below existing column = (col != dataCol)
addPrintLines(row, col, dataItem);
@ -585,13 +612,26 @@ public class TableElement extends PrintElement
for (int row = 0; row < rows; row++)
{
float rowHeight = 0f;
float over = 0f;
float under = 0f;
dataSizes.setRowIndex(row);
List<Dimension2DImpl> dimensions = dataSizes.getRowData();
for (int col = 0; col < cols; col++)
{
if (dimensions.get(col).height > rowHeight) // max
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
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);
m_rowHeights.add(Float.valueOf(rowHeight));
p_height += rowHeight;
@ -1434,6 +1474,29 @@ public class TableElement extends PrintElement
(int)(colWidth-m_tFormat.getVLineStroke().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
curY += V_GAP;
@ -1607,9 +1670,37 @@ public class TableElement extends PrintElement
curX, (int)(rowYstart+rowHeight-m_tFormat.getLineStroke().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
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
* @author ashley
@ -1633,13 +1724,16 @@ public class TableElement extends PrintElement
boolean nextIsFunction = m_functionRows.contains(Integer.valueOf(row+1));
if (nextIsFunction && m_functionRows.contains(Integer.valueOf(row)))
nextIsFunction = false; // this is a function line too
if (nextIsFunction)
{
g2D.setPaint(m_tFormat.getFunctFG_Color());
g2D.setStroke(m_tFormat.getHLine_Stroke());
g2D.drawLine(origX, curY, // -> - (bottom)
(int)(origX+colWidth-m_tFormat.getVLineStroke().floatValue()), curY);
}
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.setStroke(m_tFormat.getHLine_Stroke());
g2D.drawLine(origX, curY, // -> - (bottom)
(int) (origX + colWidth - m_tFormat.getVLineStroke().floatValue()), curY);
}
else if (m_tFormat.isPaintHLines())
{
g2D.setPaint(m_tFormat.getHLine_Color());
@ -1725,6 +1819,22 @@ public class TableElement extends PrintElement
return coordinate.toArray();
} // 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)
{

View File

@ -313,7 +313,7 @@ public class FinReport extends SvrProcess
int PA_ReportLineSet_ID = m_report.getLineSet().getPA_ReportLineSet_ID();
StringBuilder sql = new StringBuilder ("INSERT INTO T_Report "
+ "(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 "
+ "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);

View File

@ -16,6 +16,9 @@
*****************************************************************************/
package org.compiere.report;
import java.awt.BasicStroke;
import java.awt.Stroke;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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
@ -346,6 +352,15 @@ public class MReportLine extends X_PA_ReportLine
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
* @return true if range
@ -422,5 +437,104 @@ public class MReportLine extends X_PA_ReportLine
return retValue;
} // 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