Some more checks to avoid invalid status / percent combinations

- changing type in edit dialog, and need to load default status for new type
- changing status via context menu
This commit is contained in:
Nathan Gray 2015-11-30 16:10:23 +00:00
parent 6124a7fc21
commit f650d8b5fe
2 changed files with 27 additions and 1 deletions

View File

@ -804,10 +804,20 @@ class infolog_bo
{ {
$values['info_datecompleted'] = $user2server ? $this->user_time_now : $this->now; // set date completed to today if status == done $values['info_datecompleted'] = $user2server ? $this->user_time_now : $this->now; // set date completed to today if status == done
} }
// Check for valid status / percent combinations
if (in_array($values['info_status'],array('done','billed'))) if (in_array($values['info_status'],array('done','billed')))
{ {
$values['info_percent'] = 100; $values['info_percent'] = 100;
} }
else if (in_array($values['info_status'], array('not-started')))
{
$values['info_percent'] = 0;
}
else if ((int)$values['info_percent'] == 100 || $values['info_percent'] == 0)
{
// We change percent to match status, not status to match percent
$values['info_percent'] = 10;
}
if ((int)$values['info_percent'] == 100 && !in_array($values['info_status'],array('done','billed','cancelled','archive'))) if ((int)$values['info_percent'] == 100 && !in_array($values['info_status'],array('done','billed','cancelled','archive')))
{ {
//echo "check_defaults:"; _debug_array($this->status[$values['info_type']]); //echo "check_defaults:"; _debug_array($this->status[$values['info_type']]);

View File

@ -1845,7 +1845,23 @@ class infolog_ui
if (!array_key_exists($content['info_status'],$this->bo->status[$content['info_type']])) if (!array_key_exists($content['info_status'],$this->bo->status[$content['info_type']]))
{ {
$content['info_status'] = $this->bo->status['defaults'][$content['info_type']]; $content['info_status'] = $this->bo->status['defaults'][$content['info_type']];
if ($content['info_status'] != 'done') $content['info_datecompleted'] = ''; // Make sure we don't end up with invalid status / percent combinations
if ($content['info_status'] != 'done')
{
$content['info_datecompleted'] = '';
if((int)$content['info_percent'] === 100)
{
$content['info_percent'] = 10;
}
}
else
{
$content['info_percent'] = 100;
}
if($content['info_status'] != 'not-started' && (int)$content['info_percent'] == 0)
{
$content['info_percent'] = 10;
}
} }
} }
else // new call via GET else // new call via GET