1234 |
); |
); |
1235 |
} |
} |
1236 |
|
|
1237 |
|
|
1238 |
|
/** |
1239 |
|
* WIDGET DASHBOARD - Dossiers en incomplet ou majoration sans retour RAR |
1240 |
|
* |
1241 |
|
* @return void |
1242 |
|
*/ |
1243 |
|
function view_widget_dossiers_evenement_incomplet_majoration($content = null) { |
1244 |
|
|
1245 |
|
/** |
1246 |
|
* Ce widget est configurable via l'interface Web. Lors de la création |
1247 |
|
* du widget dans le paramétrage il est possible de spécifier la ou les |
1248 |
|
* options suivantes : |
1249 |
|
* |
1250 |
|
* - filtre : |
1251 |
|
* = instructeur |
1252 |
|
* = division |
1253 |
|
* = aucun |
1254 |
|
* (default) Par défaut les dossiers sont filtrés sur l'instructeur. |
1255 |
|
*/ |
1256 |
|
// Liste des paramètres |
1257 |
|
$params = array("filtre", ); |
1258 |
|
// Formatage des arguments reçus en paramètres |
1259 |
|
$arguments = $this->get_arguments($content, $params); |
1260 |
|
// Récupération de la configuration du widget |
1261 |
|
$conf = $this->get_config_dossiers_evenement_incomplet_majoration($arguments); |
1262 |
|
// |
1263 |
|
$filtre = $conf["arguments"]["filtre"]; |
1264 |
|
|
1265 |
|
/** |
1266 |
|
* Composition de la requête |
1267 |
|
*/ |
1268 |
|
// |
1269 |
|
$query = sprintf(" |
1270 |
|
SELECT |
1271 |
|
%s |
1272 |
|
FROM |
1273 |
|
%s |
1274 |
|
WHERE |
1275 |
|
%s |
1276 |
|
%s |
1277 |
|
ORDER BY |
1278 |
|
%s |
1279 |
|
LIMIT 10", |
1280 |
|
$conf["query_ct_select"], |
1281 |
|
$conf["query_ct_from"], |
1282 |
|
$conf["query_ct_where_common"], |
1283 |
|
$conf["query_ct_where_user_filter"], |
1284 |
|
$conf["query_ct_orderby"] |
1285 |
|
); |
1286 |
|
|
1287 |
|
// Exécution de la requête |
1288 |
|
$res = $this->f->db->query($query); |
1289 |
|
$this->addToLog(__METHOD__."(): db->query(\"".$query."\");", VERBOSE_MODE); |
1290 |
|
$this->f->isDatabaseError($res); |
1291 |
|
|
1292 |
|
// Affichage du message d'informations |
1293 |
|
printf( |
1294 |
|
$this->template_help, |
1295 |
|
$conf["message_help"] |
1296 |
|
); |
1297 |
|
|
1298 |
|
/** |
1299 |
|
* Si il n'y a aucun dossier à afficher, alors on affiche un message |
1300 |
|
* clair à l'utilisateur et on sort de la vue. |
1301 |
|
*/ |
1302 |
|
// Si il n'y a aucun dossier à afficher |
1303 |
|
if ($res->numrows() == 0) { |
1304 |
|
// Affichage du message d'informations |
1305 |
|
echo _("Vous n'avez pas de dossiers avec un evenement incomplet ou majoration sans RAR pour le moment."); |
1306 |
|
// Exit |
1307 |
|
return; |
1308 |
|
} |
1309 |
|
|
1310 |
|
/** |
1311 |
|
* Template nécessaires à l'affichage du widget |
1312 |
|
*/ |
1313 |
|
// Lien vers le dossier d'instructions |
1314 |
|
|
1315 |
|
// Bouton consulter |
1316 |
|
$template_btn_consulter = ' |
1317 |
|
<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">' |
1318 |
|
._('Consulter') |
1319 |
|
.'</span> |
1320 |
|
'; |
1321 |
|
|
1322 |
|
$template_table = ' |
1323 |
|
<table class="tab-tab"> |
1324 |
|
<thead> |
1325 |
|
<tr class="ui-tabs-nav ui-accordion ui-state-default tab-title"> |
1326 |
|
<th class="title col-0 firstcol"> |
1327 |
|
<span class="name"> |
1328 |
|
%s |
1329 |
|
</span> |
1330 |
|
</th> |
1331 |
|
<th class="title col-1"> |
1332 |
|
<span class="name"> |
1333 |
|
%s |
1334 |
|
</span> |
1335 |
|
</th> |
1336 |
|
<th class="title col-2 lastcol"> |
1337 |
|
<span class="name"> |
1338 |
|
%s |
1339 |
|
</span> |
1340 |
|
</th> |
1341 |
|
</tr> |
1342 |
|
</thead> |
1343 |
|
<tbody> |
1344 |
|
%s |
1345 |
|
</tbody> |
1346 |
|
</table> |
1347 |
|
'; |
1348 |
|
|
1349 |
|
// Données dans le tableau |
1350 |
|
// |
1351 |
|
$template_line = ' |
1352 |
|
<tr class="tab-data odd"> |
1353 |
|
<td class="col-1 firstcol"> |
1354 |
|
%s |
1355 |
|
</td> |
1356 |
|
<td class="col-1"> |
1357 |
|
%s |
1358 |
|
</td> |
1359 |
|
<td class="col-2 lastcol"> |
1360 |
|
%s |
1361 |
|
</td> |
1362 |
|
</tr> |
1363 |
|
'; |
1364 |
|
// |
1365 |
|
$template_href = '../scr/form.php?obj=dossier_instruction&action=3&idx=%s'; |
1366 |
|
// |
1367 |
|
$template_link = ' |
1368 |
|
<a class="lienTable" href="%s"> |
1369 |
|
%s |
1370 |
|
</a> |
1371 |
|
'; |
1372 |
|
|
1373 |
|
/** |
1374 |
|
* Si il y a des dossiers à afficher, alors on affiche le widget. |
1375 |
|
*/ |
1376 |
|
// On construit le contenu du tableau |
1377 |
|
$ct_tbody = ''; |
1378 |
|
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) { |
1379 |
|
// On construit l'attribut href du lien |
1380 |
|
$ct_href = sprintf( |
1381 |
|
$template_href, |
1382 |
|
// idx |
1383 |
|
$row["dossier"] |
1384 |
|
); |
1385 |
|
// On construit la ligne |
1386 |
|
$ct_tbody .= sprintf( |
1387 |
|
$template_line, |
1388 |
|
// Colonne 1 - Bouton consulter |
1389 |
|
sprintf( |
1390 |
|
$template_link, |
1391 |
|
$ct_href, |
1392 |
|
$template_btn_consulter |
1393 |
|
), |
1394 |
|
// Colonne 2 - Numéro de dossier |
1395 |
|
sprintf( |
1396 |
|
$template_link, |
1397 |
|
$ct_href, |
1398 |
|
$row["dossier_libelle"] |
1399 |
|
), |
1400 |
|
// Colonne 3 - Date de dépôt |
1401 |
|
sprintf( |
1402 |
|
$template_link, |
1403 |
|
$ct_href, |
1404 |
|
$this->f->formatDate($row["date_depot"]) |
1405 |
|
) |
1406 |
|
); |
1407 |
|
} |
1408 |
|
// Affichage du tableau listant les dossiers |
1409 |
|
printf( |
1410 |
|
$template_table, |
1411 |
|
// Colonne 1 - Bouton consulter |
1412 |
|
'', |
1413 |
|
// Colonne 2 - Numéro de dossier |
1414 |
|
_('dossier'), |
1415 |
|
// Colonne 3 - Date de dépôt du dossier |
1416 |
|
_('date_depot'), |
1417 |
|
// Contenu du tableau |
1418 |
|
$ct_tbody |
1419 |
|
); |
1420 |
|
|
1421 |
|
// Affichage du footer |
1422 |
|
printf( |
1423 |
|
$this->template_footer, |
1424 |
|
// href (avec les paramètres du widget) |
1425 |
|
sprintf( |
1426 |
|
"../scr/tab.php?obj=dossiers_evenement_incomplet_majoration&filtre=%s", |
1427 |
|
$filtre |
1428 |
|
), |
1429 |
|
// titre |
1430 |
|
_("Voir tous les dossiers evenement incomplet ou majoration sans RAR") |
1431 |
|
); |
1432 |
|
} |
1433 |
|
|
1434 |
|
|
1435 |
|
/** |
1436 |
|
* Cette méthode permet de récupérer la configuration du widget 'Retours de |
1437 |
|
* consultation'. |
1438 |
|
* |
1439 |
|
* @return array |
1440 |
|
*/ |
1441 |
|
function get_config_dossiers_evenement_incomplet_majoration($arguments) { |
1442 |
|
// Initialisation du tableau des paramètres avec ses valeur par défaut |
1443 |
|
$arguments_default = array( |
1444 |
|
"filtre" => "instructeur", |
1445 |
|
); |
1446 |
|
// Vérification des arguments |
1447 |
|
foreach ($arguments_default as $key => $value) { |
1448 |
|
// |
1449 |
|
if (isset($arguments[$key])) { |
1450 |
|
// |
1451 |
|
$elem = trim($arguments[$key]); |
1452 |
|
// |
1453 |
|
if ($key === "filtre" |
1454 |
|
&& in_array($elem, array("instructeur", "division", "aucun"))) { |
1455 |
|
// La valeur doit être dans cette liste |
1456 |
|
$arguments[$key] = $elem; |
1457 |
|
continue; |
1458 |
|
} |
1459 |
|
} |
1460 |
|
// |
1461 |
|
$arguments[$key] = $value; |
1462 |
|
} |
1463 |
|
// |
1464 |
|
$filtre = $arguments["filtre"]; |
1465 |
|
|
1466 |
|
/** |
1467 |
|
* Construction de la requête |
1468 |
|
*/ |
1469 |
|
// SELECT |
1470 |
|
$query_ct_select = " |
1471 |
|
dossier.dossier, |
1472 |
|
dossier.dossier_libelle, |
1473 |
|
dossier.date_depot |
1474 |
|
"; |
1475 |
|
// SELECT - CHAMPAFFICHE |
1476 |
|
$query_ct_select_champaffiche = array( |
1477 |
|
'dossier.dossier as "'._("dossier").'"', |
1478 |
|
'dossier.dossier_libelle as "'._("dossier").'"', |
1479 |
|
'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"' |
1480 |
|
); |
1481 |
|
// FROM |
1482 |
|
$query_ct_from = " |
1483 |
|
".DB_PREFIXE."dossier |
1484 |
|
LEFT JOIN |
1485 |
|
".DB_PREFIXE."instruction |
1486 |
|
ON |
1487 |
|
dossier.dossier = instruction.dossier |
1488 |
|
LEFT JOIN |
1489 |
|
".DB_PREFIXE."evenement |
1490 |
|
ON |
1491 |
|
instruction.evenement = evenement.evenement |
1492 |
|
LEFT JOIN |
1493 |
|
".DB_PREFIXE."instructeur |
1494 |
|
ON |
1495 |
|
instructeur.instructeur = dossier.instructeur |
1496 |
|
LEFT JOIN |
1497 |
|
".DB_PREFIXE."om_utilisateur |
1498 |
|
ON |
1499 |
|
instructeur.om_utilisateur=om_utilisateur.om_utilisateur |
1500 |
|
"; |
1501 |
|
// WHERE - COMMON |
1502 |
|
$query_ct_where_common = " |
1503 |
|
( |
1504 |
|
LOWER(evenement.type) = 'incompletude' OR |
1505 |
|
LOWER(evenement.type) = 'majoration_delai' |
1506 |
|
) AND |
1507 |
|
( |
1508 |
|
instruction.date_envoi_rar > CURRENT_TIMESTAMP - interval '1 month' AND |
1509 |
|
instruction.date_envoi_rar <= CURRENT_TIMESTAMP |
1510 |
|
) AND |
1511 |
|
instruction.date_retour_rar IS NULL AND |
1512 |
|
evenement.retour = 'f' |
1513 |
|
"; |
1514 |
|
|
1515 |
|
// WHERE - USER |
1516 |
|
// Filtre sur les dossiers qui concernent l'utilisateur |
1517 |
|
$query_ct_where_user_filter = ""; |
1518 |
|
// |
1519 |
|
if ($filtre == "instructeur") { |
1520 |
|
// |
1521 |
|
$query_ct_where_user_filter .= " |
1522 |
|
AND om_utilisateur.login='".$_SESSION['login']."' |
1523 |
|
"; |
1524 |
|
} elseif ($filtre == "division") { |
1525 |
|
// |
1526 |
|
$query_ct_where_user_filter .= " |
1527 |
|
AND dossier.division = ".$_SESSION['division']." |
1528 |
|
"; |
1529 |
|
} elseif ($filtre == "aucun") { |
1530 |
|
// Dans tous les cas si l'utilisateur fait partie d'une collectivité |
1531 |
|
// de niveau 1 (mono), on restreint le listing sur les dossiers de sa |
1532 |
|
// collectivité |
1533 |
|
if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) { |
1534 |
|
$query_ct_where_user_filter = " |
1535 |
|
AND dossier.om_collectivite=".$_SESSION['collectivite']." |
1536 |
|
"; |
1537 |
|
} |
1538 |
|
} |
1539 |
|
// ORDER BY |
1540 |
|
$query_ct_orderby = " |
1541 |
|
dossier.date_depot desc |
1542 |
|
"; |
1543 |
|
|
1544 |
|
/** |
1545 |
|
* Message d'aide |
1546 |
|
*/ |
1547 |
|
// |
1548 |
|
$message_filtre = ""; |
1549 |
|
// |
1550 |
|
switch ($filtre) { |
1551 |
|
case "instructeur": |
1552 |
|
$message_filtre = " "._("dont je suis l'instructeur"); |
1553 |
|
break; |
1554 |
|
case "division": |
1555 |
|
$message_filtre = " "._("situés dans ma division"); |
1556 |
|
break; |
1557 |
|
case "aucun": |
1558 |
|
if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) { |
1559 |
|
$message_filtre = " "._("situés dans ma collectivité"); |
1560 |
|
} else { |
1561 |
|
$message_filtre = " "._("situés dans toutes les collectivités"); |
1562 |
|
} |
1563 |
|
break; |
1564 |
|
} |
1565 |
|
// |
1566 |
|
$message_help = sprintf( |
1567 |
|
_("Les dossiers d'instruction%s qui ont un evenement incomplet ou majoration". |
1568 |
|
" avec une date d'envoi RAR, mais pas de date de retour RAR."), |
1569 |
|
$message_filtre |
1570 |
|
); |
1571 |
|
|
1572 |
|
/** |
1573 |
|
* Return |
1574 |
|
*/ |
1575 |
|
// |
1576 |
|
return array( |
1577 |
|
"arguments" => $arguments, |
1578 |
|
"message_help" => $message_help, |
1579 |
|
"query_ct_select" => $query_ct_select, |
1580 |
|
"query_ct_select_champaffiche" => $query_ct_select_champaffiche, |
1581 |
|
"query_ct_from" => $query_ct_from, |
1582 |
|
"query_ct_where_common" => $query_ct_where_common, |
1583 |
|
"query_ct_where_user_filter" => $query_ct_where_user_filter, |
1584 |
|
"query_ct_orderby" => $query_ct_orderby, |
1585 |
|
); |
1586 |
|
} |
1587 |
|
|
1588 |
|
|
1589 |
} |
} |
1590 |
|
|
1591 |
?> |
?> |
1592 |
|
|
1593 |
|
|