Prise en compte des Samedi et Dimanche

Bonjour,

J’ai besoin que lors de la saisie d’un congé payé que les samedi et dimanche soient pris en compte dans la déduction des congé. J’ai essayé d’aller dans le menu config et régler dans « Affichage » les jours ouvrés mais ça ne change rien. Je passe peut être à coté de quelque chose ?

Je vous remercie pour votre aide.

Dolibarr Version 8.0.3

Salut Olidoli,
ça à l’air d’être codé en dur (j’ai juste jeté un œil sur une V9: \holiday\class\holiday.class.php appelé par \holiday\card.php le tout avec des fonctions qui viennent de \core\lib\date.lib.php)

Il y a des jours qui sont pris en compte en fonction du pays, notamment des calculs de jours fériés.
Mais je vois rien pour les week end, ni pour plus de généralité, la possibilité de définir un ou des calendriers d’ouverture.

Tu as regarder sur le store s’il y avait des modules ?
sinon … ben… pull request sur le github ^^

1 « J'aime »

Bonjour Arre,

Merci bien pour ton retour rapide.

Oui ça serait bien d’avoir un minium de configuration pour ce module pour un paramétrage propre à certain pays et aussi par organisation d’entreprise. Même en France beaucoup d’entreprises ont des équipes de weekend par exemple :happy: !

Pas encore trop l’habitude de github mais va falloir que je m’y mette !

Bonjour,

En France, les congés payés sont normalement comptés sur 6 jours (du lundi au samedi) et 2,5 jours de congés sont attribué par mois.

il est facile de paramétrer les 2, 5 jours sur le dictionnaire dans les type de congés (table llx_c_holiday_types) en indiquant 2,5 jours.

Par contre, effectivement le decompte du nombre de jours se fait dans la fonction « num_public_holiday » de \core\lib\date.lib.php

j’ai effectué une motif dans cette fonction pour que le samedi ne soit pas compté comme férié (j’avais déjà faite cette motif en version 7, et je viens de la faire sur version 10 sans aucun problème, mes jours sont décompté correctement) :
ligne 600
function num_public_holiday($timestampStart, $timestampEnd, $countrycode = ‹ FR ›, $lastday = 0)
{
global $conf;

$nbFerie = 0;

// Check to ensure we use correct parameters
if ((($timestampEnd \- $timestampStart) % 86400) != 0) return 'ErrorDates must use same hours and must be GMT dates';

$i=0;
while (( ($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd) )
    && ($i < 50000))		// Loop end when equals (Test on i is a security loop to avoid infinite loop)
{
	$ferie=false;
	$countryfound=0;
	$includesaturdayandsunday=1;
	[b]$includesaturday=0;       (à mettre à 1 si samedi férié)
	$includesunday=1;             (à mettre à 0 si dimanche non férié[/b]

ligne 870
// If we have to include saturday and sunday
//if ($includesaturdayandsunday)
if ($includesaturday || $includesunday)
{
$jour_julien = unixtojd($timestampStart);
$jour_semaine = jddayofweek($jour_julien, 0);
if ($includesaturday && $jour_semaine == 6) $ferie=true;
if ($includesunday && $jour_semaine == 0) $ferie=true;

// if($jour_semaine == 0 || $jour_semaine == 6) $ferie=true;
//Saturday (6) and Sunday (0)

Je pense que avec un développement réduit il serait possible que ces 2 variables ($includesaturday et $includesunday) soit le dictionnaire ou dans une Variable des PARAMETRES Divers (HIDDEN OPTIONS)

Cordialement

Bonjour
J’avais le problème.
Nous venons d’activer le module CP sur une 10.0.6.
Le problème est réglé grâce à vous
Merci
Cordialement

Bonjour
Attention on ne doit pas décompter plus de 5 samedi par année !
@+

Bonjour,
« philazerty » merci si tu as plus éléments. Je suis juste bénévole dans l’Association et nous avons du personnels mon poste de président impose la gestion RH, pour info nous somme ouverte 6 jours semaine.

Info du service conseil RH. ont ils raison ou tard ??? leur réponse
Cette règle des 5 samedis maximum n’existe pas dans la loi. Cela relève donc exclusivement des usages ou des règles de l’entreprise.
Sur la période estivale il doit au moins y avoir une période continue de 12 jours ouvrables.

Pour info depuis la mise a jour en version 11.0
le ficher « date.lib.php » ne marche plus. ligne 613 et ligne 815 peut être ?

Je pense retourner au papier et e-mail.
Cordialement
bruno

suite,
Lecture de https://doxygen.dolibarr.org/develop/db/df7/date_8lib_8php.html#af26f3504dd908e76070ad7caf198acfb

num_public_holiday

Ajout de 2 ligne après la 618
619 $includesaturday=0; // (à mettre à 0 si samedi non férié ou 1 pour férié)
620 $includesunday=1; // (à mettre à 0 si dimanche non férié)
Test RAS pour un semaine décompte 6 jours
Test RAS pour 2 semaine décompte 12 jours

il existe une solution sûrement plus propre je pense ?
Ouvert à tout explication ou solution merci d’avance.
@+
Bruno

1 « J'aime »

Merci Bruno pour votre réponse, elle m’a grandement servi !
Je vais tester sur le long terme, et je dirais si de mon côté ça continue de fonctionner.

Salut,
La modification de gfo de sept 19 a été prise en compte pour la parti 870 donc il doit être possible de déclarer les valeurs sans modification date.lib.php ???
Peut être que dans la partie Pays jour férie etc … ???
Cordialement
bruno

Bonjour,

suite à cela, est ce possible également d’ajouter le fractionnement des congés quelque part svp ?

Merci

Avec la v13. Il est possible de placer la constante
MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY à 0 pour avoir le samedi jour travaillé.

1 « J'aime »

Bonjour,
Merci pour l’info
Donc dans Mon tableau de bord → Configuration → Divers

  • création d’un nouveau paramètre.
    Nom = MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY
    Valeur = 1

Ci je comprends bien ?
cordialement
Bruno

Oui c’est exactement ça.

bonjour,
Je viens de tester.
Ne fonctionne pas ?
Dans Configuration → divers
Création :
Nom = MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY
Valeur = 1

Elle est présente dans Outils d’administration → Infos Dolibarr
Paramètres Base de données = MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY
Valeur = 1
Environnement = 1

Test congés :
Date Début 21/06/2021 Matin|
Date Fin 27/06/2021 Après-midi|
Nombre de jours de congés consommés 5 !

Normalement 6 ?

Cordialement
bruno

Bonjour,

Je confirme que cela ne fonctionne pas…

je vais essayer de corriger quand j’aurai deux minutes

Bonjour,
merci d’avance
Bruno

En fait il faut mettre la constante
MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY
à 0 est non à 1.
On ne veut pas que les jours chomés inclut le samedi.

Bonjour,
Mise a 0
Test RAS
Merci

Donc :
Dans Configuration → divers
Création :
Nom = MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY
Option :
Valeur = 1 sans prise en compte du samedi
Valeur = 0 avec prise en compte du samedi
A+