Merge pull request #19425 from marc-dll/13.0_FIX_project_timesheet_offdays_offset
FIX: project timesheet: public holidays offset by 1 day
This commit is contained in:
commit
110fa251e8
@ -87,6 +87,10 @@ $daytoparse = $now;
|
|||||||
if ($yearofday && $monthofday && $dayofday) $daytoparse = dol_mktime(0, 0, 0, $monthofday, $dayofday, $yearofday); // xxxofday is value of day after submit action 'addtime'
|
if ($yearofday && $monthofday && $dayofday) $daytoparse = dol_mktime(0, 0, 0, $monthofday, $dayofday, $yearofday); // xxxofday is value of day after submit action 'addtime'
|
||||||
elseif ($year && $month && $day) $daytoparse = dol_mktime(0, 0, 0, $month, $day, $year); // this are value submited after submit of action 'submitdateselect'
|
elseif ($year && $month && $day) $daytoparse = dol_mktime(0, 0, 0, $month, $day, $year); // this are value submited after submit of action 'submitdateselect'
|
||||||
|
|
||||||
|
$daytoparsegmt = dol_now('gmt');
|
||||||
|
if ($yearofday && $monthofday && $dayofday) $daytoparsegmt = dol_mktime(0, 0, 0, $monthofday, $dayofday, $yearofday, 'gmt'); // xxxofday is value of day after submit action 'addtime'
|
||||||
|
elseif ($year && $month && $day) $daytoparsegmt = dol_mktime(0, 0, 0, $month, $day, $year, 'gmt'); // this are value submited after submit of action 'submitdateselect'
|
||||||
|
|
||||||
|
|
||||||
if (empty($search_usertoprocessid) || $search_usertoprocessid == $user->id)
|
if (empty($search_usertoprocessid) || $search_usertoprocessid == $user->id)
|
||||||
{
|
{
|
||||||
@ -616,7 +620,7 @@ $statusofholidaytocheck = Holiday::STATUS_APPROVED;
|
|||||||
$isavailablefordayanduser = $holiday->verifDateHolidayForTimestamp($usertoprocess->id, $daytoparse, $statusofholidaytocheck); // $daytoparse is a date with hours = 0
|
$isavailablefordayanduser = $holiday->verifDateHolidayForTimestamp($usertoprocess->id, $daytoparse, $statusofholidaytocheck); // $daytoparse is a date with hours = 0
|
||||||
$isavailable[$daytoparse] = $isavailablefordayanduser; // in projectLinesPerWeek later, we are using $firstdaytoshow and dol_time_plus_duree to loop on each day
|
$isavailable[$daytoparse] = $isavailablefordayanduser; // in projectLinesPerWeek later, we are using $firstdaytoshow and dol_time_plus_duree to loop on each day
|
||||||
|
|
||||||
$test = num_public_holiday($daytoparse, $daytoparse + 86400, $mysoc->country_code);
|
$test = num_public_holiday($daytoparsegmt, $daytoparsegmt + 86400, $mysoc->country_code);
|
||||||
if ($test) $isavailable[$daytoparse] = array('morning'=>false, 'afternoon'=>false, 'morning_reason'=>'public_holiday', 'afternoon_reason'=>'public_holiday');
|
if ($test) $isavailable[$daytoparse] = array('morning'=>false, 'afternoon'=>false, 'morning_reason'=>'public_holiday', 'afternoon_reason'=>'public_holiday');
|
||||||
|
|
||||||
$tmparray = dol_getdate($daytoparse, true); // detail of current day
|
$tmparray = dol_getdate($daytoparse, true); // detail of current day
|
||||||
|
|||||||
@ -97,7 +97,7 @@ $next_day = $next['day'];
|
|||||||
|
|
||||||
// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1)
|
// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1)
|
||||||
$firstdaytoshow = dol_mktime(0, 0, 0, $first_month, $first_day, $first_year);
|
$firstdaytoshow = dol_mktime(0, 0, 0, $first_month, $first_day, $first_year);
|
||||||
$lastdaytoshow = dol_time_plus_duree($firstdaytoshow, 7, 'd');
|
$firstdaytoshowgmt = dol_mktime(0, 0, 0, $first_month, $first_day, $first_year, 'gmt');
|
||||||
|
|
||||||
if (empty($search_usertoprocessid) || $search_usertoprocessid == $user->id)
|
if (empty($search_usertoprocessid) || $search_usertoprocessid == $user->id)
|
||||||
{
|
{
|
||||||
@ -520,23 +520,16 @@ if (!empty($conf->global->MAIN_DEFAULT_WORKING_DAYS))
|
|||||||
for ($idw = 0; $idw < 7; $idw++)
|
for ($idw = 0; $idw < 7; $idw++)
|
||||||
{
|
{
|
||||||
$dayinloopfromfirstdaytoshow = dol_time_plus_duree($firstdaytoshow, $idw, 'd'); // $firstdaytoshow is a date with hours = 0
|
$dayinloopfromfirstdaytoshow = dol_time_plus_duree($firstdaytoshow, $idw, 'd'); // $firstdaytoshow is a date with hours = 0
|
||||||
|
$dayinloopfromfirstdaytoshowgmt = dol_time_plus_duree($firstdaytoshowgmt, $idw, 'd'); // $firstdaytoshow is a date with hours = 0
|
||||||
// Useless because $dayinloopwithouthours should be same than $dayinloopfromfirstdaytoshow
|
|
||||||
//$tmparray = dol_getdate($dayinloop);
|
|
||||||
//$dayinloopwithouthours=dol_mktime(0, 0, 0, $tmparray['mon'], $tmparray['mday'], $tmparray['year']);
|
|
||||||
//print dol_print_date($dayinloop, 'dayhour').' ';
|
|
||||||
//print dol_print_date($dayinloopwithouthours, 'dayhour').' ';
|
|
||||||
//print dol_print_date($dayinloopfromfirstdaytoshow, 'dayhour').'<br>';
|
|
||||||
|
|
||||||
$statusofholidaytocheck = Holiday::STATUS_APPROVED;
|
$statusofholidaytocheck = Holiday::STATUS_APPROVED;
|
||||||
|
|
||||||
$isavailablefordayanduser = $holiday->verifDateHolidayForTimestamp($usertoprocess->id, $dayinloopfromfirstdaytoshow, $statusofholidaytocheck);
|
$isavailablefordayanduser = $holiday->verifDateHolidayForTimestamp($usertoprocess->id, $dayinloopfromfirstdaytoshow, $statusofholidaytocheck);
|
||||||
$isavailable[$dayinloopfromfirstdaytoshow] = $isavailablefordayanduser; // in projectLinesPerWeek later, we are using $firstdaytoshow and dol_time_plus_duree to loop on each day
|
$isavailable[$dayinloopfromfirstdaytoshow] = $isavailablefordayanduser; // in projectLinesPerWeek later, we are using $firstdaytoshow and dol_time_plus_duree to loop on each day
|
||||||
|
|
||||||
$test = num_public_holiday($dayinloopfromfirstdaytoshow, $dayinloopfromfirstdaytoshow + 86400, $mysoc->country_code);
|
$test = num_public_holiday($dayinloopfromfirstdaytoshowgmt, $dayinloopfromfirstdaytoshowgmt + 86400, $mysoc->country_code);
|
||||||
if ($test) $isavailable[$dayinloopfromfirstdaytoshow] = array('morning'=>false, 'afternoon'=>false, 'morning_reason'=>'public_holiday', 'afternoon_reason'=>'public_holiday');
|
if ($test) $isavailable[$dayinloopfromfirstdaytoshow] = array('morning'=>false, 'afternoon'=>false, 'morning_reason'=>'public_holiday', 'afternoon_reason'=>'public_holiday');
|
||||||
}
|
}
|
||||||
//var_dump($isavailable);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -656,7 +649,6 @@ print '<th class="maxwidth75 right">'.$langs->trans("TimeSpent").($usertoprocess
|
|||||||
for ($idw = 0; $idw < 7; $idw++)
|
for ($idw = 0; $idw < 7; $idw++)
|
||||||
{
|
{
|
||||||
$dayinloopfromfirstdaytoshow = dol_time_plus_duree($firstdaytoshow, $idw, 'd'); // $firstdaytoshow is a date with hours = 0
|
$dayinloopfromfirstdaytoshow = dol_time_plus_duree($firstdaytoshow, $idw, 'd'); // $firstdaytoshow is a date with hours = 0
|
||||||
$dayinloop = dol_time_plus_duree($startday, $idw, 'd');
|
|
||||||
|
|
||||||
$cssweekend = '';
|
$cssweekend = '';
|
||||||
if ((($idw + 1) < $numstartworkingday) || (($idw + 1) > $numendworkingday)) // This is a day is not inside the setup of working days, so we use a week-end css.
|
if ((($idw + 1) < $numstartworkingday) || (($idw + 1) > $numendworkingday)) // This is a day is not inside the setup of working days, so we use a week-end css.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user