Add new Where to Financial Report

--HG--
branch : FinancialReport
This commit is contained in:
hodianto 2018-05-04 21:08:03 +07:00
parent 0db90f7bb6
commit 10f72c815a
2 changed files with 74 additions and 30 deletions

View File

@ -98,7 +98,7 @@ public class MID_FinReport extends SvrProcess
/** Report Definition */ /** Report Definition */
private MReport m_report = null; private MReport m_report = null;
/** Periods in Calendar */ /** Periods in Calendar */
private FinReportPeriod[] m_periods = null; private MID_FinReportPeriod[] m_periods = null;
/** Index of m_C_Period_ID in m_periods **/ /** Index of m_C_Period_ID in m_periods **/
private int m_reportPeriod = -1; private int m_reportPeriod = -1;
/** Parameter Where Clause */ /** Parameter Where Clause */
@ -153,10 +153,12 @@ public class MID_FinReport extends SvrProcess
p_DetailsSourceFirst = "Y".equals(para[i].getParameter()); p_DetailsSourceFirst = "Y".equals(para[i].getParameter());
else if (name.equals("PA_ReportCube_ID")) else if (name.equals("PA_ReportCube_ID"))
p_PA_ReportCube_ID = para[i].getParameterAsInt(); p_PA_ReportCube_ID = para[i].getParameterAsInt();
else if (name.equals("DATE1")) else if (name.equals("DATE")) {
p_Date1 = para[i].getParameterAsTimestamp(); p_Date1 = para[i].getParameterAsTimestamp();
else if (name.equals("DATE2")) p_Date2 = para[i].getParameter_ToAsTimestamp();
p_Date2 = para[i].getParameterAsTimestamp(); }
// else if (name.equals("DATE2"))
// p_Date2 = para[i].getParameterAsTimestamp();
else else
log.log(Level.SEVERE, "Unknown Parameter: " + name); log.log(Level.SEVERE, "Unknown Parameter: " + name);
} }
@ -254,7 +256,7 @@ public class MID_FinReport extends SvrProcess
p_C_Period_ID = 0; p_C_Period_ID = 0;
} }
} }
ArrayList<FinReportPeriod> list = new ArrayList<FinReportPeriod>(); ArrayList<MID_FinReportPeriod> list = new ArrayList<MID_FinReportPeriod>();
String sql = "SELECT p.C_Period_ID, p.Name, p.StartDate, p.EndDate, MIN(p1.StartDate) " String sql = "SELECT p.C_Period_ID, p.Name, p.StartDate, p.EndDate, MIN(p1.StartDate) "
+ "FROM C_Period p " + "FROM C_Period p "
@ -277,8 +279,8 @@ public class MID_FinReport extends SvrProcess
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
while (rs.next()) while (rs.next())
{ {
FinReportPeriod frp = new FinReportPeriod (rs.getInt(1), rs.getString(2), MID_FinReportPeriod frp = new MID_FinReportPeriod (rs.getInt(1), rs.getString(2),
rs.getTimestamp(3), rs.getTimestamp(4), rs.getTimestamp(5)); rs.getTimestamp(3), rs.getTimestamp(4), rs.getTimestamp(5), p_Date1, p_Date2);
list.add(frp); list.add(frp);
if (p_C_Period_ID == 0 && frp.inPeriod(today)) if (p_C_Period_ID == 0 && frp.inPeriod(today))
p_C_Period_ID = frp.getC_Period_ID(); p_C_Period_ID = frp.getC_Period_ID();
@ -294,7 +296,7 @@ public class MID_FinReport extends SvrProcess
rs = null; pstmt = null; rs = null; pstmt = null;
} }
// convert to Array // convert to Array
m_periods = new FinReportPeriod[list.size()]; m_periods = new MID_FinReportPeriod[list.size()];
list.toArray(m_periods); list.toArray(m_periods);
// today after latest period // today after latest period
if (p_C_Period_ID == 0) if (p_C_Period_ID == 0)
@ -413,25 +415,29 @@ public class MID_FinReport extends SvrProcess
String p_DateAcct = ""; String p_DateAcct = "";
if (p_PA_ReportCube_ID > 0) { if (p_PA_ReportCube_ID > 0) {
select.append(" FROM Fact_Acct_Summary fa WHERE ").append(p_AdjPeriodToExclude); select.append(" FROM Fact_Acct_Summary fa WHERE ").append(p_AdjPeriodToExclude);
if(p_Date1!=null) // if(p_Date1!=null)
select.append("DateAcct>="+DB.TO_DATE(p_Date1)+" AND DateAcct<="+DB.TO_DATE(p_Date2)+" AND"); // select.append("DateAcct>="+DB.TO_DATE(p_Date1)+" AND DateAcct<="+DB.TO_DATE(p_Date2)+" AND");
select.append("DateAcct "); select.append("DateAcct ");
}else { }else {
// Get Period/Date info // Get Period/Date info
select.append(" FROM Fact_Acct fa WHERE ").append(p_AdjPeriodToExclude); select.append(" FROM Fact_Acct fa WHERE ").append(p_AdjPeriodToExclude);
if(p_Date1!=null) // if(p_Date1!=null)
select.append("TRUNCT(DateAcct)>="+DB.TO_DATE(p_Date1)+" AND TRUNC(DateAcct)<="+DB.TO_DATE(p_Date2)+" AND"); // select.append("TRUNCT(DateAcct)>="+DB.TO_DATE(p_Date1)+" AND TRUNC(DateAcct)<="+DB.TO_DATE(p_Date2)+" AND");
select.append("TRUNC(DateAcct) "); select.append("TRUNC(DateAcct) ");
} }
BigDecimal relativeOffset = null; // current BigDecimal relativeOffset = null; // current
if (m_columns[col].isColumnTypeRelativePeriod()) if (m_columns[col].isColumnTypeRelativePeriod())
relativeOffset = m_columns[col].getRelativePeriod(); relativeOffset = m_columns[col].getRelativePeriod();
FinReportPeriod frp = getPeriod (relativeOffset); MID_FinReportPeriod frp = getPeriod (relativeOffset);
if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column
{ {
info.append(" - LineDateAcct="); info.append(" - LineDateAcct=");
if (m_lines[line].isPeriod()) if(p_Date1!=null) {
String sql = frp.getDateRangeWhere();
select.append(sql);
}
else if (m_lines[line].isPeriod())
{ {
String sql = frp.getPeriodWhere(); String sql = frp.getPeriodWhere();
info.append("Period"); info.append("Period");
@ -462,7 +468,11 @@ public class MID_FinReport extends SvrProcess
else if (m_columns[col].getPAPeriodType() != null) else if (m_columns[col].getPAPeriodType() != null)
{ {
info.append(" - ColumnDateAcct="); info.append(" - ColumnDateAcct=");
if (m_columns[col].isPeriod()) if(p_Date1!=null) {
String sql = frp.getDateRangeWhere();
select.append(sql);
}
else if (m_columns[col].isPeriod())
{ {
String sql = frp.getPeriodWhere(); String sql = frp.getPeriodWhere();
info.append("Period"); info.append("Period");
@ -1179,7 +1189,7 @@ public class MID_FinReport extends SvrProcess
* @param relativeOffset offset * @param relativeOffset offset
* @return reporting period * @return reporting period
*/ */
private FinReportPeriod getPeriod (BigDecimal relativeOffset) private MID_FinReportPeriod getPeriod (BigDecimal relativeOffset)
{ {
if (relativeOffset == null) if (relativeOffset == null)
return getPeriod(0); return getPeriod(0);
@ -1191,7 +1201,7 @@ public class MID_FinReport extends SvrProcess
* @param relativeOffset offset * @param relativeOffset offset
* @return reporting period * @return reporting period
*/ */
private FinReportPeriod getPeriod (int relativeOffset) private MID_FinReportPeriod getPeriod (int relativeOffset)
{ {
// find current reporting period C_Period_ID // find current reporting period C_Period_ID
if (m_reportPeriod < 0) if (m_reportPeriod < 0)
@ -1363,21 +1373,25 @@ public class MID_FinReport extends SvrProcess
if (p_PA_ReportCube_ID > 0) { if (p_PA_ReportCube_ID > 0) {
select.append(" FROM Fact_Acct_Summary fb WHERE ").append(p_AdjPeriodToExclude); select.append(" FROM Fact_Acct_Summary fb WHERE ").append(p_AdjPeriodToExclude);
if(p_Date1!=null) // if(p_Date1!=null)
select.append("DateAcct>="+DB.TO_DATE(p_Date1)+" AND DateAcct<="+DB.TO_DATE(p_Date2)+" AND"); // select.append("DateAcct>="+DB.TO_DATE(p_Date1)+" AND DateAcct<="+DB.TO_DATE(p_Date2)+" AND");
select.append("DateAcct "); select.append("DateAcct ");
} //report cube } //report cube
else { else {
// Get Period info // Get Period info
select.append(" FROM Fact_Acct fb WHERE ").append(p_AdjPeriodToExclude); select.append(" FROM Fact_Acct fb WHERE ").append(p_AdjPeriodToExclude);
if(p_Date1!=null) // if(p_Date1!=null)
select.append("TRUNC(DateAcct)>="+DB.TO_DATE(p_Date1)+" AND TRUNC(DateAcct)<="+DB.TO_DATE(p_Date2)+" AND"); // select.append("TRUNC(DateAcct)>="+DB.TO_DATE(p_Date1)+" AND TRUNC(DateAcct)<="+DB.TO_DATE(p_Date2)+" AND");
select.append("TRUNC(DateAcct) "); select.append("TRUNC(DateAcct) ");
} }
FinReportPeriod frp = getPeriod (m_columns[col].getRelativePeriod()); MID_FinReportPeriod frp = getPeriod (m_columns[col].getRelativePeriod());
if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column
{ {
if (m_lines[line].isPeriod()) if(p_Date1!=null) {
String sql = frp.getDateRangeWhere();
select.append(sql);
}
else if (m_lines[line].isPeriod())
select.append(frp.getPeriodWhere()); select.append(frp.getPeriodWhere());
else if (m_lines[line].isYear()) else if (m_lines[line].isYear())
select.append(frp.getYearWhere()); select.append(frp.getYearWhere());
@ -1388,7 +1402,11 @@ public class MID_FinReport extends SvrProcess
} }
else if (m_columns[col].getPAPeriodType() != null) else if (m_columns[col].getPAPeriodType() != null)
{ {
if (m_columns[col].isPeriod()) if(p_Date1!=null) {
String sql = frp.getDateRangeWhere();
select.append(sql);
}
else if (m_columns[col].isPeriod())
select.append(frp.getPeriodWhere()); select.append(frp.getPeriodWhere());
else if (m_columns[col].isYear()) else if (m_columns[col].isYear())
select.append(frp.getYearWhere()); select.append(frp.getYearWhere());
@ -1578,10 +1596,14 @@ public class MID_FinReport extends SvrProcess
// Get Period info // Get Period info
select.append(" FROM Fact_Acct fb WHERE ").append(p_AdjPeriodToExclude).append("TRUNC(DateAcct) "); select.append(" FROM Fact_Acct fb WHERE ").append(p_AdjPeriodToExclude).append("TRUNC(DateAcct) ");
} }
FinReportPeriod frp = getPeriod (m_columns[col].getRelativePeriod()); MID_FinReportPeriod frp = getPeriod (m_columns[col].getRelativePeriod());
if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column
{ {
if (m_lines[line].isPeriod()) if(p_Date1!=null) {
String sql = frp.getDateRangeWhere();
select.append(sql);
}
else if (m_lines[line].isPeriod())
select.append(frp.getPeriodWhere()); select.append(frp.getPeriodWhere());
else if (m_lines[line].isYear()) else if (m_lines[line].isYear())
select.append(frp.getYearWhere()); select.append(frp.getYearWhere());
@ -1592,7 +1614,11 @@ public class MID_FinReport extends SvrProcess
} }
else if (m_columns[col].getPAPeriodType() != null) else if (m_columns[col].getPAPeriodType() != null)
{ {
if (m_columns[col].isPeriod()) if(p_Date1!=null) {
String sql = frp.getDateRangeWhere();
select.append(sql);
}
else if (m_columns[col].isPeriod())
select.append(frp.getPeriodWhere()); select.append(frp.getPeriodWhere());
else if (m_columns[col].isYear()) else if (m_columns[col].isYear())
select.append(frp.getYearWhere()); select.append(frp.getYearWhere());
@ -1765,7 +1791,7 @@ public class MID_FinReport extends SvrProcess
if (m_columns[index].isColumnTypeRelativePeriod()) if (m_columns[index].isColumnTypeRelativePeriod())
{ {
BigDecimal relativeOffset = m_columns[index].getRelativePeriod(); BigDecimal relativeOffset = m_columns[index].getRelativePeriod();
FinReportPeriod frp = getPeriod (relativeOffset); MID_FinReportPeriod frp = getPeriod (relativeOffset);
if ( s.contains("@Period@") ) if ( s.contains("@Period@") )
s = s.replace("@Period@", frp.getName() ); s = s.replace("@Period@", frp.getName() );

View File

@ -37,13 +37,15 @@ public class MID_FinReportPeriod
* @param YearStartDate year start date * @param YearStartDate year start date
*/ */
public MID_FinReportPeriod (int C_Period_ID, String Name, Timestamp StartDate, Timestamp EndDate, public MID_FinReportPeriod (int C_Period_ID, String Name, Timestamp StartDate, Timestamp EndDate,
Timestamp YearStartDate) Timestamp YearStartDate, Timestamp date1, Timestamp date2)
{ {
m_C_Period_ID = C_Period_ID; m_C_Period_ID = C_Period_ID;
m_Name = Name; m_Name = Name;
m_StartDate = StartDate; m_StartDate = StartDate;
m_EndDate = EndDate; m_EndDate = EndDate;
m_YearStartDate = YearStartDate; m_YearStartDate = YearStartDate;
m_Date1 = date1;
m_Date2 = date2;
} // } //
private int m_C_Period_ID; private int m_C_Period_ID;
@ -51,7 +53,8 @@ public class MID_FinReportPeriod
private Timestamp m_StartDate; private Timestamp m_StartDate;
private Timestamp m_EndDate; private Timestamp m_EndDate;
private Timestamp m_YearStartDate; private Timestamp m_YearStartDate;
private Timestamp m_Date1;
private Timestamp m_Date2;
/** /**
* Get Period Info * Get Period Info
@ -160,5 +163,20 @@ public class MID_FinReportPeriod
return full; return full;
} }
public String getDateRangeWhere ()
{
StringBuilder sql = new StringBuilder ("BETWEEN ");
sql.append(DB.TO_DATE(m_Date1))
.append(" AND ")
.append(DB.TO_DATE(m_Date2));
return sql.toString();
}
public Timestamp getM_Date1() {
return m_Date1;
}
public Timestamp getM_Date2() {
return m_Date2;
}
} // FinReportPeriod } // FinReportPeriod