Skip to content

Commit

Permalink
Modifications et améliorations diverses
Browse files Browse the repository at this point in the history
* Passage des fichiers d'interface SIHAM en XML
* Création d'un fichier cron-xml.sh spécifique à l'intégration des fichiers XML d'interface
* Création de fichiers PHP d'import pour les fichiers XML
* Affichage du nom des agents dans la gestions de structures (envoyer à)
* Les membres des adresses mails de groupes sont maintenant autoatiquement notifiés en plus du groupe (<=> le groupe est explosé/applati)
* Début de compatibilité avec PHP 8.2 (fonctions utf8_decode/utf8_encode)
* Utilisation de constantes pour le code interne "agent_envoyer_a/resp_envoyer_a"
* Ajout d'une image animée lors de longs chargements de pages
* Dans le menu RH, la recherche d'un agent pour afficher son solde de congés se fait sur toute la base G2T (et non plus LDAP/WSGroups)
* Correction fautes de frappe
  • Loading branch information
pacomte-Paris1 committed Sep 25, 2023
1 parent 8048d79 commit 9915f0e
Show file tree
Hide file tree
Showing 40 changed files with 2,800 additions and 317 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@
/CRON/log/
/CRON/specific/*.php
!/CRON/specific/*_exemple.php
/INPUT_FILES_V3/
/INPUT_FILES_V3/*.xml
!/INPUT_FILES_V3/*_exemple.xml
/INPUT_FILES_V3/*/
/composer.lock
/config/*.php
!/config/*_exemple.php
/images/logo_paris1_prod.png
/images/logo_paris1_test.png
/images/chargement*.gif
!/images/chargement.gif
/nbproject/private/
/pdf/
/vendor/
Expand Down
82 changes: 82 additions & 0 deletions CRON/cron-xml.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#!/bin/bash
chemin=`dirname $0`
cd $chemin
chemin=`pwd`

mydate=`date +%Y-%m-%d`

logfilename="trace_cron_$mydate.log"
if [ -z "$G2T_LOG_PATH" ]
then
logfile="./log/$logfilename"
else
logfile="$G2T_LOG_PATH/$logfilename"
fi

echo `date` debut traitement >>$logfile

php php/switch_synchronisation.php actif >>$logfile

numjour=`date +%w`
## Si le numero du jour est different de 0 ou 6 alors on traite les fichiers d'import
## 0 = Dimanche
## 6 = Samedi
if [ $numjour -ne 6 -a $numjour -ne 0 ]
then
php php/import_agent_xml.php >>$logfile 2>>$logfile
php php/import_absence_xml.php >>$logfile 2>>$logfile
php php/import_structure_xml.php >>$logfile 2>>$logfile

nomfichierspecifique="specific/post_structure.php"
if [ -f "$nomfichierspecifique" ]
then
php $nomfichierspecifique >>$logfile 2>>$logfile
else
echo "Le fichier $nomfichierspecifique n'existe pas - On l'ignore" >>$logfile 2>>$logfile
fi

php php/import_affectation_siham_xml.php >>$logfile 2>>$logfile

nomfichierspecifique="specific/post_affectation.php"
if [ -f "$nomfichierspecifique" ]
then
php $nomfichierspecifique >>$logfile 2>>$logfile
else
echo "Le fichier $nomfichierspecifique n'existe pas - On l'ignore" >>$logfile
fi

php php/calcul_solde.php >>$logfile 2>>$logfile

nomfichierspecifique="specific/post_solde.php"
if [ -f "$nomfichierspecifique" ]
then
php $nomfichierspecifique >>$logfile 2>>$logfile
else
echo "Le fichier $nomfichierspecifique n'existe pas - On l'ignore" >>$logfile
fi

php php/mail_conges.php >>$logfile 2>>$logfile
php php/mail_declarationTP.php >>$logfile 2>>$logfile
php php/synchro_demandes_cet.php >>$logfile 2>>$logfile
php php/synchro_conventions_teletravail.php >>$logfile 2>>$logfile
fi

numjour=`date +%d`

##Si on est le premier jour du mois
if [ $numjour -eq 1 ]
then
echo "Avant generation solde" >>$logfile
php php/generer_solde.php >>$logfile 2>>$logfile
echo "Avant controles post MAJ" >>$logfile
php php/ctrl_post_maj.php >>$logfile 2>>$logfile
echo "Avant generation de l'historique des CET" >>$logfile
php php/demande_cet.php >>$logfile 2>>$logfile
fi
php php/mail_alerte_reliquats.php >>$logfile
php php/mail_alerte_teletravail.php >>$logfile

php php/switch_synchronisation.php inactif >>$logfile

echo `date` fin de traitement >>$logfile

22 changes: 11 additions & 11 deletions CRON/php/demande_cet.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@
$pdf->Image($fonctions->imagepath() . '/' . LOGO_FILENAME, 70, 25, 60, 20);
$pdf->Ln(40);
$pdf->SetFont('helvetica', 'B', 15, '', true);
$pdf->Cell(60, 10, utf8_decode("Historique des demandes de congés de CET depuis le $datedebut -- Edité le " . date("d/m/Y")));
$pdf->Cell(60, 10, $fonctions->utf8_decode("Historique des demandes de congés de CET depuis le $datedebut -- Edité le " . date("d/m/Y")));
$pdf->Ln(15);

$pdf->SetFont('helvetica', 'B', 11, '', true);
$pdf->Cell(100, 5, utf8_decode("Identité de l'agent"), 1, 0, 'C');
$pdf->Cell(60, 5, utf8_decode("Date de début"), 1, 0, 'C');
$pdf->Cell(60, 5, utf8_decode("Date de fin"), 1, 0, 'C');
$pdf->Cell(30, 5, utf8_decode("Nbre de jours"), 1, 0, 'C');
$pdf->Cell(30, 5, utf8_decode("Statut"), 1, 0, 'C');
$pdf->Cell(100, 5, $fonctions->utf8_decode("Identité de l'agent"), 1, 0, 'C');
$pdf->Cell(60, 5, $fonctions->utf8_decode("Date de début"), 1, 0, 'C');
$pdf->Cell(60, 5, $fonctions->utf8_decode("Date de fin"), 1, 0, 'C');
$pdf->Cell(30, 5, $fonctions->utf8_decode("Nbre de jours"), 1, 0, 'C');
$pdf->Cell(30, 5, $fonctions->utf8_decode("Statut"), 1, 0, 'C');
$pdf->Ln();

while ($result = mysqli_fetch_row($query)) {
Expand All @@ -98,16 +98,16 @@
if (($demande->statut() == demande::DEMANDE_VALIDE and $complement->valeur() != $demande->statut()) or ($demande->statut() == demande::DEMANDE_ANNULE and $complement->valeur() != $demande->statut() and $complement->valeur() != "")) {
$pdf->SetFont('helvetica', '', 11, '', true);
$pdf->SetTextColor(0, 0, 0);
$pdf->Cell(100, 5, utf8_decode($agent->identitecomplete()), 1, 0, 'C');
$pdf->Cell(60, 5, utf8_decode($demande->datedebut() . ' ' . $fonctions->nommoment($demande->moment_debut())), 1, 0, 'C');
$pdf->Cell(60, 5, utf8_decode($demande->datefin() . ' ' . $fonctions->nommoment($demande->moment_fin())), 1, 0, 'C');
$pdf->Cell(30, 5, utf8_decode($demande->nbrejrsdemande() . "jour(s)"), 1, 0, 'C');
$pdf->Cell(100, 5, $fonctions->utf8_decode($agent->identitecomplete()), 1, 0, 'C');
$pdf->Cell(60, 5, $fonctions->utf8_decode($demande->datedebut() . ' ' . $fonctions->nommoment($demande->moment_debut())), 1, 0, 'C');
$pdf->Cell(60, 5, $fonctions->utf8_decode($demande->datefin() . ' ' . $fonctions->nommoment($demande->moment_fin())), 1, 0, 'C');
$pdf->Cell(30, 5, $fonctions->utf8_decode($demande->nbrejrsdemande() . "jour(s)"), 1, 0, 'C');
// if (strcasecmp($demande->statut(), 'R') == 0) {
if (strcmp($demande->statut(), demande::DEMANDE_ANNULE) == 0 or strcmp($demande->statut(), demande::DEMANDE_REFUSE) == 0) { // Si la demande est annulée ou refusée
$pdf->SetFont('helvetica', 'B', 11, '', true);
$pdf->SetTextColor(255, 0, 0);
}
$pdf->Cell(30, 5, utf8_decode($fonctions->demandestatutlibelle($demande->statut())), 1, 0, 'C');
$pdf->Cell(30, 5, $fonctions->utf8_decode($fonctions->demandestatutlibelle($demande->statut())), 1, 0, 'C');
$pdf->SetFont('helvetica', '', 11, '', true);
$pdf->SetTextColor(0, 0, 0);
$pdf->Ln();
Expand Down
87 changes: 87 additions & 0 deletions CRON/php/import_absence_xml.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?php
require_once (dirname(__FILE__,3) . "/html/includes/dbconnection.php");
require_once (dirname(__FILE__,3) . "/html/includes/all_g2t_classes.php");

$fonctions = new fonctions($dbcon);

$date = date("Ymd");

echo "Début de l'import des absences de l'application RH " . date("d/m/Y H:i:s") . "\n";

// On charge la table des absences avec le fichier
$filename = $fonctions->g2tbasepath() . "/INPUT_FILES_V3/siham_absence_$date.xml";
if (! file_exists($filename)) {
echo "Le fichier $filename n'existe pas !!! \n";
exit();
}
else
{
// On vide la table des absences pour la recharger complètement
$sql = "DELETE FROM ABSENCERH";
mysqli_query($dbcon, $sql);
$erreur_requete = mysqli_error($dbcon);
if ($erreur_requete != "")
{
echo "DELETE ABSENCERH => $erreur_requete \n";
}

$xml = simplexml_load_file("$filename");
$agentnode = $xml->xpath('ABSENCE');
foreach ($agentnode as $node)
{
$agentid = trim($node->xpath('AGENTID')[0]);
$datedebut = trim($node->xpath('DATEDEBUT')[0]);
$datefin = trim($node->xpath('DATEFIN')[0]);
$typeabsence = trim($node->xpath('LIBELLE')[0]);
$datedebutformate = $fonctions->formatdatedb(str_replace('/','-',$datedebut));
echo "agentid = $agentid datedebut=$datedebut datefin=$datefin typeabsence=$typeabsence datedebutformate = $datedebutformate \n";

$agent = new agent($dbcon);
if (!$agent->existe($agentid))
{
// L'agent n'est pas dans la base => On n'intègre pas ses absences
echo "L'agent $agentid n'existe pas dans la base. On ne charge pas ses absences \n";
continue;
}

// Si c'est un congés bonifié et que la date de début est supérieure au 19/11/2021 ==> On ignore les congés bonifiés car "nouvelle version" (ticket GLPI 135729)
if (stripos($fonctions->my_real_escape_utf8($typeabsence)," Bonifié ")!==false and ($datedebutformate >= "20211119"))
{
echo "La demande de $typeabsence pour l'agent $agentid est un conge bonifie 'nouvelle version'. On ne charge pas cette absence \n";
continue;
}

$sql = sprintf("INSERT INTO ABSENCERH (AGENTID,DATEDEBUT,DATEFIN,TYPEABSENCE) VALUES('%s','%s ','%s','%s')", $fonctions->my_real_escape_utf8($agentid), $fonctions->my_real_escape_utf8($datedebut), $fonctions->my_real_escape_utf8($datefin), $fonctions->my_real_escape_utf8($typeabsence));

mysqli_query($dbcon, $sql);
$erreur_requete = mysqli_error($dbcon);
if ($erreur_requete != "") {
echo "INSERT ABSENCERH => $erreur_requete \n";
echo "sql = $sql \n";
}
}
}

$tabannees = array($fonctions->anneeref(),$fonctions->anneeref()+1);
$stringannee = "";
$separateur = "";
foreach($tabannees as $key => $annee)
{
if (strlen($stringannee)>0 and $key==count($tabannees)-1) $separateur = ' et '; elseif (strlen($stringannee)>0) $separateur = ', ';
$stringannee = $stringannee . $separateur . $annee . '/' . ($annee+1);
}
$tabferies = array();
echo "On importe les jours féries sur " . trim($stringannee) . "\n";
$erreur = $fonctions->synchronisationjoursferies($tabannees, $tabferies);
if ($erreur!='')
{
echo "Erreur lors de la synchronisation : $erreur.\n";
}
else
{
echo "La synchronisation s'est bien passee sur " . trim($stringannee) . "\n";
}

echo "Fin de l'import des absences de l'application RH " . date("d/m/Y H:i:s") . "\n";

?>
Loading

0 comments on commit 9915f0e

Please sign in to comment.