Importer des heures de présence dans Planno
Importer des heures de présence dans Planno
Planno dispose d'un script permettant l'importation des heures de présence depuis un fichier CSV.
Le but est d'importer automatiquement les heures de présence générées par un logiciel tiers (logiciel RH ou GTT).
Emplacement du script
Depuis la version 23.10, le script a été déplacé dans le dossier src/Cron/Legacy et se nomme cron.planning_hebdo.import.php
Nouveau chemin complet : src/Cron/Legacy/cron.planning_hebdo.import.php
(ancien chemin complet : src/Cron/Legacy/cron.importCSV.php)
Il doit être exécuté en ligne de commande (CLI) avec le programme php
Exemple :
php /chemin/vers/planno/src/Cron/Legacy/cron.planning_hebdo.import.php\\
Paramètres
Pour utiliser ce script, il faut configurer Planno de la façon suivante :
- Utilisation du module Planning Hebdo :
- Menu Administration / Configuration / Heures de présence / cocher PlanningHebdo
- Avec ce module (activé par défaut), les heures de présence sont gérées dans le menu Administration / Heures de présence et sont bornées par des dates d'effet. Les heures de présence peuvent donc varier dans le temps.
- Renseignement du chemin d'accès vers le fichier CSV dans lequel seront renseignées les heures de présence à importer :
- Menu Administration / Configuration / Heures de présence / Renseigner le chemin complet vers le fichier dans le champ PlanningHebdo-CSV
- ça peut être un chemin absolut si le fichier est stocké sur le serveur Planno, ou une URL https
Le nouveau script accepte également le paramètre suivant :
PlanningHebdo-ImportAgentId
:
Il permet de définir le champ à utiliser pour identifier les agents.
Valeurs possibles : matricule, login, email
Valeur par défaut : login
Ce paramètre peut être ajouté, si sa valeur par défaut ne convient pas, dans le fichier custom_options.php.
Dans ce cas, ce fichier doit être ajouté à la racine du dossier Planno s'il n'existe pas.
Il doit commencer par la ligne :
<?php
Suivi du paramètre défini comme suit :
$config['PlanningHebdo-ImportAgentId'] = 'matricule';
Exemple complet d'un fichier custom_options.php :
<?php $config['PlanningHebdo-ImportAgentId'] = 'matricule';
Format du fichier CSV
Le fichier CSV doit comporter les informations suivantes :
- Une ligne par date et par agent
- IMPORTANT : le fichier doit comporter des dates précises et non des informations de période. Exemple : 2022-07-25 = OK, lundi = KO
- Le séparateur de champ est le point-virgule ;
- Le premier élément est le login de l'agent (tel qu'il existe dans Planno)
- Le deuxième élément est la date au format YYYY-MM-DD (ex: 2022-07-25)
- Le troisième élément est l'heure de début de journée au format HH:mm (ex: 09:00)
- Le quatrième élément est l'heure de fin de journée ou l'heure de début de la première pause au format HH:mm (ex: 12:00)
- Le script accepte jusqu'à 8 éléments afin d'importer plusieurs période de travail dans une journée.
- Exemple 1 : si sur le 3ème élément j'ai mis la date de début de journée, sur le 4ème la date de début de pause déjeuner, 3 et 4 forment la première période. Je peux ensuite la compléter par 5 et 6 pour l'après midi. Exemple : 5 = 13:00; 6 = 17:00
- Exemple 2 avec 2 pause par jour : 3 = 9:00; 4 = 12:00; 5 = 13:00; 6 = 15:00; 7 = 15:30; 8 = 17:30
Exemple de fichier CSV :
agathe.merle;2022-05-02;09:00;12:00;13:00;17:00 agathe.merle;2022-05-03;09:00;12:00;13:00;17:00 agathe.merle;2022-05-04;09:00;12:00;13:00;17:00 agathe.merle;2022-05-05;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-02;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-03;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-04;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-05;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-06;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-09;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-10;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-11;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-12;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-13;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-16;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-17;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-18;09:00;12:00;13:00;17:00 adam.leroyer;2022-05-19;09:00;16:00 adam.leroyer;2022-05-20;09:00;12:00;13:00;15:00;15:30;17:30
Dans l'exemple précédent :
- nous avons les plannings de présence d'Agathe du 2 au 5 mai et ceux de d'Adam du 2 au 20 mai.
- Les premières lignes sont des plannings de présence de 9h à 12h et de 13h à 17h.
- L'avant dernière ligne est une journée continue de 9h à 16h.
- La dernière ligne contient 2 pauses (donc 3 périodes : 9h-12h ; 13h-15h et 15h30-17h30)
Utilisation
- Faire un sorte que le fichier CSV soit déposé automatiquement et régulièrement sur un emplacement accessible par le serveur Planno ou directement sur le serveur Planno.
- Le nom et l'emplacement du fichier sont invariables. Chaque copie écrase la version précédente.
- Renseigner le chemin d'accès au fichier dans la configuration de Planno (champ "PlanningHebdo-CSV" dans la rubrique "Heures de présence")
- Exécuter régulièrement le script "src/Cron/Legacy/cron.planning_hebdo.import.php" avec la commande PHP (en CLI, avec la même version que le PHP du service web)
- Exemple : php /chemin/vers/planno/src/Cron/Legacy/cron.planning_hebdo.import.php
- Mettre en place une tâche planifiée pour exécuter ceci automatiquement
- Exemple pour une exécution tous les lundis à 3h00 : crontab -e –> Ajouter :
0 3 * * 1 php /chemin/vers/planno/src/Cron/Legacy/cron.planning_hebdo.import.php