IDEMPIERE-5794: New param for getBusinessDaysBetween to include/exlud… (#1928)
* IDEMPIERE-5794: New param for getBusinessDaysBetween to include/exlude end date https://idempiere.atlassian.net/browse/IDEMPIERE-5794 * IDEMPIERE-5794: New param for getBusinessDaysBetween to include/exlude end date - Unit tests Co-Authored-By: hengsin <152246+hengsin@users.noreply.github.com> --------- Co-authored-by: hengsin <152246+hengsin@users.noreply.github.com>
This commit is contained in:
parent
b7c089fc1d
commit
b28735509d
|
@ -812,9 +812,23 @@ public class TimeUtil
|
||||||
*/
|
*/
|
||||||
public static int getBusinessDaysBetween(Timestamp startDate, Timestamp endDate, int clientID, String trxName)
|
public static int getBusinessDaysBetween(Timestamp startDate, Timestamp endDate, int clientID, String trxName)
|
||||||
{
|
{
|
||||||
return getBusinessDaysBetween(startDate, endDate, clientID, MCountry.getDefault().getC_Country_ID(), trxName);
|
return getBusinessDaysBetween(startDate, endDate, clientID, false, trxName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @param clientID
|
||||||
|
* @param includeEndDate
|
||||||
|
* @param trxName
|
||||||
|
* @return number of business days between 2 dates for the country based on current default country
|
||||||
|
*/
|
||||||
|
public static int getBusinessDaysBetween(Timestamp startDate, Timestamp endDate, int clientID, boolean includeEndDate, String trxName)
|
||||||
|
{
|
||||||
|
return getBusinessDaysBetween(startDate, endDate, clientID, MCountry.getDefault().getC_Country_ID(), includeEndDate, trxName);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param startDate
|
* @param startDate
|
||||||
|
@ -825,6 +839,21 @@ public class TimeUtil
|
||||||
* @return number of business days between 2 dates for a specified country
|
* @return number of business days between 2 dates for a specified country
|
||||||
*/
|
*/
|
||||||
public static int getBusinessDaysBetween(Timestamp startDate, Timestamp endDate, int clientID, int countryID, String trxName)
|
public static int getBusinessDaysBetween(Timestamp startDate, Timestamp endDate, int clientID, int countryID, String trxName)
|
||||||
|
{
|
||||||
|
return getBusinessDaysBetween(startDate, endDate, clientID, countryID, false, trxName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @param clientID
|
||||||
|
* @param countryID
|
||||||
|
* @param includeEndDate
|
||||||
|
* @param trxName
|
||||||
|
* @return number of business days between 2 dates for a specified country, with ability to include the end date in the count
|
||||||
|
*/
|
||||||
|
public static int getBusinessDaysBetween(Timestamp startDate, Timestamp endDate, int clientID, int countryID, boolean includeEndDate, String trxName)
|
||||||
{
|
{
|
||||||
int retValue = 0;
|
int retValue = 0;
|
||||||
|
|
||||||
|
@ -856,7 +885,7 @@ public class TimeUtil
|
||||||
calEnd.set(Calendar.SECOND, 0);
|
calEnd.set(Calendar.SECOND, 0);
|
||||||
calEnd.set(Calendar.MILLISECOND, 0);
|
calEnd.set(Calendar.MILLISECOND, 0);
|
||||||
|
|
||||||
while (cal.before(calEnd)) {
|
while (cal.before(calEnd) || (includeEndDate && cal.equals(calEnd))) {
|
||||||
if (nbd == null || !nbd.contains(new Timestamp(cal.getTimeInMillis()))) {
|
if (nbd == null || !nbd.contains(new Timestamp(cal.getTimeInMillis()))) {
|
||||||
if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
|
if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
|
||||||
retValue++;
|
retValue++;
|
||||||
|
|
|
@ -265,8 +265,10 @@ public class TimeUtilTest extends AbstractTestCase {
|
||||||
//get business days
|
//get business days
|
||||||
to = expected;
|
to = expected;
|
||||||
assertEquals(2, TimeUtil.getBusinessDaysBetween(from, to, getAD_Client_ID(), getTrxName()));
|
assertEquals(2, TimeUtil.getBusinessDaysBetween(from, to, getAD_Client_ID(), getTrxName()));
|
||||||
|
assertEquals(3, TimeUtil.getBusinessDaysBetween(from, to, getAD_Client_ID(), true, getTrxName()));
|
||||||
nbd.deleteEx(true);
|
nbd.deleteEx(true);
|
||||||
assertEquals(3, TimeUtil.getBusinessDaysBetween(from, to, getAD_Client_ID(), getTrxName()));
|
assertEquals(3, TimeUtil.getBusinessDaysBetween(from, to, getAD_Client_ID(), getTrxName()));
|
||||||
|
assertEquals(4, TimeUtil.getBusinessDaysBetween(from, to, getAD_Client_ID(), true, getTrxName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue