From 9ed3cc95da9f5baf4f0590b4e295d09cdb4bc4b8 Mon Sep 17 00:00:00 2001 From: Nicolas Domenech Date: Tue, 9 Jul 2024 01:50:09 +0200 Subject: [PATCH] #261 [RegistrationCertificate] add: nextControl and improve design --- .../registrationcertificatefr_list.php | 72 +++++++++++++------ 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/view/registrationcertificatefr/registrationcertificatefr_list.php b/view/registrationcertificatefr/registrationcertificatefr_list.php index a520127..b924ef7 100644 --- a/view/registrationcertificatefr/registrationcertificatefr_list.php +++ b/view/registrationcertificatefr/registrationcertificatefr_list.php @@ -171,18 +171,25 @@ 'position' => 200 ]; - $arrayfields['t.last_control'] = [ - 'label' => 'LastControl', + $arrayfields['t.control_date'] = [ + 'label' => 'ControlDate', 'checked' => 1, 'enabled' => 1, 'position' => 210 ]; + $arrayfields['t.days_remaining_before_next_control'] = [ + 'label' => 'DaysBeforeNextControl', + 'checked' => 1, + 'enabled' => 1, + 'position' => 220 + ]; + $arrayfields['t.control_verdict'] = [ 'label' => 'Verdict', 'checked' => 1, 'enabled' => 1, - 'position' => 220 + 'position' => 230 ]; } foreach ($object->fields as $key => $val) { @@ -506,9 +513,10 @@ $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); if (isModEnabled('digiquali')) { - $object->fields['controls'] = $arrayfields['t.controls']; - $object->fields['last_control'] = $arrayfields['t.last_control']; - $object->fields['control_verdict'] = $arrayfields['t.control_verdict']; + $object->fields['controls'] = $arrayfields['t.controls']; + $object->fields['control_date'] = $arrayfields['t.control_date']; + $object->fields['days_remaining_before_next_control'] = $arrayfields['t.days_remaining_before_next_control']; + $object->fields['control_verdict'] = $arrayfields['t.control_verdict']; } print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table @@ -546,7 +554,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; $formadmin = new FormAdmin($db); print $formadmin->select_language($search[$key], 'search_lang', 0, null, 1, 0, 0, 'minwidth150 maxwidth200', 2); - } elseif ($key == 'controls' || $key == 'last_control' || $key == 'control_verdict' && isModEnabled('digiquali')) { + } elseif ($key == 'controls' || $key == 'control_date' || $key == 'control_verdict' || $key == 'days_remaining_before_next_control' && isModEnabled('digiquali')) { continue; } else { print ''; @@ -585,7 +593,7 @@ } if (!empty($arrayfields['t.'.$key]['checked'])) { $disableSortField = 0; - if ($key == 'controls' || $key == 'last_control' || $key == 'control_verdict' && isModEnabled('digiquali')) { + if ($key == 'controls' || $key == 'control_date' || $key == 'control_verdict' || $key == 'days_remaining_before_next_control' && isModEnabled('digiquali')) { $disableSortField = 1; } print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''), $disableSortField)."\n"; @@ -633,7 +641,7 @@ $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif ($key == 'status') { + } elseif ($key == 'status' || ($key == 'control_verdict' || $key == 'days_remaining_before_next_control' && isModEnabled('digiquali'))) { $cssforfield .= ($cssforfield ? ' ' : '').'center'; } @@ -647,27 +655,45 @@ $cssforfield .= ($cssforfield ? ' ' : '').'right'; } //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; - - $object->fetchObjectLinked($object->fk_lot,'productbatch', '', 'digiquali_control'); + if (isModEnabled('digiquali')) { + $controls = []; + $object->fetchObjectLinked($object->fk_lot,'productbatch', '', 'digiquali_control'); + if (is_array($object->linkedObjects['digiquali_control']) && !empty($object->linkedObjects['digiquali_control'])) { + $countControls = 1; + arsort($object->linkedObjects['digiquali_control']); + foreach ($object->linkedObjects['digiquali_control'] as $controlID => $control) { + if ($control->status == Control::STATUS_LOCKED) { + if ($countControls <= getDolGlobalInt('MAIN_SIZE_SHORTLIST_LIMIT')) { + $controls[$controlID] = $control; + } + $countControls++; + } + } + } + } if (!empty($arrayfields['t.'.$key]['checked'])) { print ''; if ($key == 'status') { print $object->getLibStatut(5); } elseif ($key == 'controls' && isModEnabled('digiquali')) { - if (is_array($object->linkedObjects['digiquali_control']) && !empty($object->linkedObjects['digiquali_control'])) { - foreach ($object->linkedObjects['digiquali_control'] as $control) { - print $control->getNomUrl(1) . '
'; - } - } - } elseif ($key == 'last_control' && isModEnabled('digiquali')) { - if (is_array($object->linkedObjects['digiquali_control']) && !empty($object->linkedObjects['digiquali_control'])) { - $control = end($object->linkedObjects['digiquali_control']); - print dol_print_date($control->control_date, 'day'); + $firstOccurrence = true; + foreach ($controls as $control) { + print $control->getNomUrl(1, '', 0, $firstOccurrence ? 'bold' : '') . '
'; + $firstOccurrence = false; } + } elseif ($key == 'control_date' && isModEnabled('digiquali')) { + $control = reset($controls); + print dol_print_date($control->control_date, 'day'); } elseif ($key == 'control_verdict' && isModEnabled('digiquali')) { - if (is_array($object->linkedObjects['digiquali_control']) && !empty($object->linkedObjects['digiquali_control'])) { - $control = end($object->linkedObjects['digiquali_control']); - print $control->fields['verdict']['arrayofkeyval'][(!empty($control->verdict)) ?: 3]; + $control = reset($controls); + $verdictColor = $control->verdict == 1 ? 'green' : ($control->verdict == 2 ? 'red' : 'grey'); + print dol_strlen($control->verdict) > 0 ? '
' . $control->fields['verdict']['arrayofkeyval'][(!empty($control->verdict)) ? $control->verdict : 3] . '
' : 'N/A'; + } elseif ($key == 'days_remaining_before_next_control' && isModEnabled('digiquali')) { + $control = reset($controls); + if (dol_strlen($control->next_control_date) > 0) { + $nextControl = floor(($control->next_control_date - dol_now('tzuser'))/(3600 * 24)); + $nextControlColor = $nextControl < 0 ? 'red' : ($nextControl <= 30 ? 'orange' : ($nextControl <= 60 ? 'yellow' : 'green')); + print '
' . $nextControl . '
'; } } elseif ($key == 'rowid') { print $object->showOutputField($val, $key, $object->id, '');