Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Mesure du temps de travail

0000003479     -      27/10/2026

Les fonctionnalités décrites ci-dessous requièrent l'option "Prestations" dans le voucher (PREST).

À partir du 1er janvier 2027, les employeurs belges devraient être tenus de mettre à disposition un système permettant d’enregistrer le temps de travail de leurs collaborateurs de manière objective, fiable et accessible. Cette nouvelle obligation, issue de la réglementation européenne, vise à garantir le respect des durées de travail et des périodes de repos. Les employeurs resteront libres de choisir l'outil le mieux adapté à leur organisation.

💡 Le conditionnel est employé ci-dessus, car à cette heure (octobre 2026), cette obligation n'est pas encore officiellement transcrite dans la loi en Belgique.

Le fondement juridique est un arrêt de la Cour de justice de l'Union européenne (CJUE) du 14 mai 2019. La Cour a établi que les États membres doivent imposer aux employeurs un système permettant de mesurer la durée quotidienne du travail de chaque salarié de manière objective, fiable et accessible. Une lecture attentive des textes à ce sujet montre que l'obligation ressemble finalement à un système d’inversion de la charge de la preuve, en ce qui concerne la mesure des dépassements du temps de travail prévu dans le contrat de l’employé. Précédemment, il était difficile pour un employé de prouver qu’il travaillait trop. A présent, il pourra utiliser l’outil que l’employeur doit mettre à disposition et ce sera à l’employeur de prouver par d’autres moyens que les encodages de temps ne sont pas conformes à la réalité. On note aussi qu’à aucun moment la réglementation n'indique que les mesures effectuées par cet outil devraient être reliées à la paie.

Utilisation dans Mercator Desktop

⚠️ L'utilisateur qui souhaite disposer de cette fonctionnalité doit au préalable être associé à un prestataire via son profil dans la gestion des utilisateurs.

Pour donner accès à la fonctionnalité, le plus simple est de personnaliser le ruban et de choisir la commande « Temps de travail ». Elle est disponible pour le ruban « gestion commerciale » et le ruban « comptabilité ». 

Les catégories sont modifiables depuis le menu "Outils / Paramètres / Catégories Temps de Travail". La catégorie "Heures normales" est toujours ajoutée automatiquement par Mercator lors de la création de la table WORK_TIME.

En le haut de cet écran, l'utilisateur choisit la catégorie des heures qu'il va prester. Ensuite, il utilise l’unique bouton du haut pour démarrer ou arrêter le travail. 

        

L'onglet « Mes temps de travail » permet à l'utilisateur de consulter son historique :

WorkTime4   WorkTime5

En double-cliquant sur une ligne, l'utilisateur peut la modifier. Il devra saisir un justificatif.

      WorkTime6

Utilisation dans MercatorPenguin

Voir cette page.

Utilisation dans MercatorPelican

Voir cette page.

💡 Ces trois modes d'utilisation sont compatibles simultanément. Par exemple, un temps de travail peut débuter sur la badgeuse de MercatorPelican, être interrompu dans MercatorDesktop et modifié via MercatorPelican. Les trois solutions s'adressent à la même table de données (voir ci-dessous).

 

Organisation des données

Afin de faciliter la réalisation de tout reporting, les données de mesure du temps de travail sont stockées dans une seule table : WORK_TIME. Cette table est créée automatiquement par Mercator.

  • ID : identifiant unique de la prestation.
  • MOMENT_1 : début de la prestation.
  • MOMENT_2 : fin de la prestations. null si cette prestation est en cours.
  • ID_YPREST : identifiant du prestataire.
  • ID_CAT : identifiant de la catégorie de prestation. En relation avec la table CAT_WORK_TIME.
  • NOTE : concaténation des justificatifs de modifications apportées par l'utilisateur, ainsi que les valeur "avant" et "après". 

Exemple de valeur pour NOTE :

*****   04/09/2026 16:13   ***** 
Au 04/09/2026 16:11 -> 04/09/2026 16:22
J’ai constaté que je m’étais encore trompé

*****   14/09/2026 09:04   *****
Au 04/09/2026 16:22 -> 04/09/2026 22:22
Je me suis trompé 

 

Contrôle des modifications effectuées par l'utilisateur

Cette partie de la fonctionnalité offre toute la souplesse nécessaire afin de s'adapter aux desiderata et exigences de chaque entreprise. Aucun contrôle n'est donc codé de façon fixe et définitive dans le programme. Pour mettre en place ce contrôle, il faut créer un customizer WorkTime. Sa particularité est que le même code est exécuté par Mercator Desktop et par MercatorPenguin. Il ne fonctionne pas avec l'inscription d'événements (qu'il faudrait désinscrire) mais sur la base de l'héritage de la classe MercatorCommonCustomizers.WorkTimeCustomizer, qui permet sur surcharger la méthode OnUpdate.

Les contrôles placés peuvent être :

  • bloquants : DialogTypeEnum.Stop
  • de simples avertissements : DialogTypeEnum.AnswerYesNo
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;

// <CompileWithRoslyn />

namespace WorkTime
{
    public class Customizer : MercatorCommonCustomizers.WorkTimeCustomizer
    {
        public override OnUpdateRet OnUpdate(OnUpdateParam p)
        {
            // 1. Interdire le déplacement d'un pointage vers un autre jour
            if (IsDayChanged(p.Moment1Current, p.Moment1NewValue) || IsDayChanged(p.Moment2Current, p.Moment2NewValue))
            {
                return new OnUpdateRet
                {
                    DialogType = DialogTypeEnum.Stop,
                    Message = "Un pointage ne peut pas être déplacé vers un autre jour.",
                };
            }

            // 2. Demander confirmation si une heure est modifiée de plus de 2 heures
            if (IsChangedByMoreThan(p.Moment1Current, p.Moment1NewValue, TimeSpan.FromHours(2)) ||
                IsChangedByMoreThan(p.Moment2Current, p.Moment2NewValue, TimeSpan.FromHours(2)))
            {
                return new OnUpdateRet
                {
                    DialogType = DialogTypeEnum.AnswerYesNo,
                    Message = "Au moins une heure de pointage a été modifiée de plus de 2 heures. Voulez-vous confirmer cette modification ?",
                };
            }

            return new OnUpdateRet
            {
                DialogType = DialogTypeEnum._none,
            };
        }

        private static bool IsDayChanged(DateTime? current, DateTime? newValue)
        {
            return current.HasValue && newValue.HasValue && current.Value.Date != newValue.Value.Date;
        }

        private static bool IsChangedByMoreThan(DateTime? current, DateTime? newValue, TimeSpan tolerance)
        {
            return current.HasValue && newValue.HasValue && Math.Abs((newValue.Value - current.Value).TotalMinutes) > tolerance.TotalMinutes;
        }
    }
}

 

Reporting

Comme indiqué ci-dessus, le reporting est simple à mettre en place puisqu'il ne concerne que trois tables :

  • WORK_TIME : les pointages de temps de travail
  • YPREST : la table des prestataires
  • CAT_WORK_TIME : les catégories d'heures de travail

💡 Il n'est pas interdit de supprimer des catégories de temps de travail qui ne seraient plus utilisées. En conséquence, utilisez un left join vers la table CAT_WORK_TIME.

⚠️ Les colonnes MOMENT_1 et MOMENT_2 contiennent aussi des heures. Pour obtenir les données jusqu'au jour J, il faut un test "inférieur à J + 1".

Nous proposons ici un rapport permettant d'effectuer une extraction des temps de travail sur la base d'une fourchette de dates.

Exemple du résultat obtenu : 3479Y Temps de travail.pdf

Pour installer ce document :

  • Décompresser le fichier ZIP ci-joint dans le répertoire principal de Mercator. 
  • Relancer Mercator pour installer la nouvelle liste (installation rapide)


A télécharger : 0000003479.zip (20 Kb - 28/10/2026)


Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)