2 |
jpm |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
// +------------------------------------------------------------------------------------------------------+
|
|
|
4 |
// | PHP version 4.1 |
|
|
|
5 |
// +------------------------------------------------------------------------------------------------------+
|
|
|
6 |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
|
|
|
7 |
// +------------------------------------------------------------------------------------------------------+
|
|
|
8 |
// | This library is free software; you can redistribute it and/or |
|
|
|
9 |
// | modify it under the terms of the GNU Lesser General Public |
|
|
|
10 |
// | License as published by the Free Software Foundation; either |
|
|
|
11 |
// | version 2.1 of the License, or (at your option) any later version. |
|
|
|
12 |
// | |
|
|
|
13 |
// | This library is distributed in the hope that it will be useful, |
|
|
|
14 |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
15 |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
|
|
16 |
// | Lesser General Public License for more details. |
|
|
|
17 |
// | |
|
|
|
18 |
// | You should have received a copy of the GNU Lesser General Public |
|
|
|
19 |
// | License along with this library; if not, write to the Free Software |
|
|
|
20 |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
|
|
21 |
// +------------------------------------------------------------------------------------------------------+
|
|
|
22 |
// |@author ABDOOL RAHEEM shaheen shaheenar50@hotmail.com |
|
|
|
23 |
// |@version 3 |
|
|
|
24 |
|
|
|
25 |
// +------------------------------------------------------------------------------------------------------+
|
|
|
26 |
/*
|
|
|
27 |
*fichier contenant le menu principal de l'application de gestion du temps de travail
|
|
|
28 |
*@package gtt_general
|
|
|
29 |
//Auteur original :
|
|
|
30 |
*@author Dorian Bannier <dbannier@aol.com>
|
|
|
31 |
//Autres auteurs :
|
|
|
32 |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
|
|
33 |
*@copyright Copyright (C) 2003 Tela-Botanica
|
|
|
34 |
*/
|
|
|
35 |
// +------------------------------------------------------------------------------------------------------+
|
|
|
36 |
include_once CHEMIN_MENU.'gtt_menu_travail.php';
|
|
|
37 |
include_once CHEMIN_CLASSES_METIER.'gtt_travail.class.php';
|
|
|
38 |
include_once CHEMIN_CLASSES_METIER.'gtt_taches.class.php';
|
|
|
39 |
include_once CHEMIN_CLASSES_METIER.'gtt_prevision_tache.class.php';
|
|
|
40 |
/**
|
|
|
41 |
*fonction verifiant si les heures rentrees sont bien valides
|
|
|
42 |
*verification si heure rentree dans une case <24 ou >0
|
|
|
43 |
*verifiaction si somme heure d'une journee<24
|
|
|
44 |
*/
|
|
|
45 |
|
|
|
46 |
|
|
|
47 |
function verifTempsTravail()
|
|
|
48 |
{
|
5 |
jpm |
49 |
$nb = $_POST['champ_nb_projet'];
|
|
|
50 |
$res = true;
|
|
|
51 |
// Iniatilisation des variables
|
|
|
52 |
$somme1 = $somme2 = $somme3 = $somme4 = $somme5 = $somme6 = $somme7 = 0;
|
|
|
53 |
$verif_a_faire = false;
|
|
|
54 |
// Tableau jour
|
|
|
55 |
$tabJour = array(0 => "champ_lundi", 1 => "champ_mardi", "champ_mercredi", "champ_jeudi", "champ_vendredi", "champ_samedi", "champ_dimanche");
|
2 |
jpm |
56 |
|
5 |
jpm |
57 |
for ($i = 0; $i < $nb; $i++) {
|
|
|
58 |
for ($j = 0; $j < count($tabJour); $j++) {
|
|
|
59 |
// On ne fait les tests que si des jours de travail ou de recuperation partielle
|
|
|
60 |
if ((isset($_POST[$tabJour[$j].$i]))and (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) or
|
|
|
61 |
($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j"))) {
|
|
|
62 |
$verif_a_faire = true;
|
|
|
63 |
//attribution de la limite selon le type de jour
|
|
|
64 |
if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
|
|
|
65 |
$limite = 24;
|
|
|
66 |
} elseif ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j") {
|
|
|
67 |
$limite = 12;
|
|
|
68 |
}
|
|
|
69 |
|
|
|
70 |
if ((!(($_POST[$tabJour[$j].$i]<$limite)and ($_POST[$tabJour[$j].$i]>=0))) or
|
|
|
71 |
(empty($_POST[$tabJour[$j].$i])!=1 and is_numeric($_POST[$tabJour[$j].$i]) != 1)) {
|
|
|
72 |
$res = false;
|
|
|
73 |
} else {
|
|
|
74 |
switch ($j) {
|
|
|
75 |
//cas lundi
|
|
|
76 |
case 1:
|
|
|
77 |
$somme1 += $_POST[$tabJour[$j].$i];
|
|
|
78 |
break;
|
|
|
79 |
//cas mardi
|
|
|
80 |
case 2 :
|
|
|
81 |
|
|
|
82 |
$somme2 += $_POST[$tabJour[$j].$i];
|
|
|
83 |
break;
|
|
|
84 |
|
|
|
85 |
//cas mercredi
|
|
|
86 |
case 3 :
|
|
|
87 |
$somme3 += $_POST[$tabJour[$j].$i];
|
|
|
88 |
break;
|
|
|
89 |
|
|
|
90 |
//cas jeudi
|
|
|
91 |
case 4 :
|
|
|
92 |
$somme4 += $_POST[$tabJour[$j].$i];
|
|
|
93 |
break;
|
|
|
94 |
//cas vendredi
|
|
|
95 |
case 5 :
|
|
|
96 |
$somme5 += $_POST[$tabJour[$j].$i];
|
|
|
97 |
break;
|
|
|
98 |
|
|
|
99 |
//cas samedi
|
|
|
100 |
case 6 :
|
|
|
101 |
$somme6 += $_POST[$tabJour[$j].$i];
|
|
|
102 |
break;
|
|
|
103 |
//cas dimanche
|
|
|
104 |
|
|
|
105 |
case 7 :
|
|
|
106 |
$somme7 += $_POST[$tabJour[$j].$i];
|
|
|
107 |
break;
|
|
|
108 |
}
|
|
|
109 |
}
|
|
|
110 |
}
|
2 |
jpm |
111 |
}
|
|
|
112 |
}
|
|
|
113 |
|
|
|
114 |
//test si une des valeurs >24
|
5 |
jpm |
115 |
if( $verif_a_faire == true) {
|
|
|
116 |
$resultat=(($somme1<$limite)and ($somme2<$limite)and ($somme3<$limite)and ($somme4<$limite)and ($somme5<$limite)
|
|
|
117 |
and ($somme6<$limite)and ($somme7<$limite)and ($res==true));
|
|
|
118 |
} else {
|
|
|
119 |
$resultat = true;
|
|
|
120 |
}
|
|
|
121 |
|
|
|
122 |
return $resultat;
|
2 |
jpm |
123 |
}
|
5 |
jpm |
124 |
|
2 |
jpm |
125 |
/**
|
|
|
126 |
*fonction traitant l'ajout d'un champ travail dans la base
|
|
|
127 |
*@param : utilisateur
|
|
|
128 |
*/
|
|
|
129 |
function traiterSemaine($utilisateur)
|
|
|
130 |
{
|
5 |
jpm |
131 |
if (isset($_POST['champ_valider_travail'])) {
|
|
|
132 |
// Récuperation de l'utilisateur
|
|
|
133 |
$user1 = Utilisateur::recupererUtilisateur($utilisateur);
|
|
|
134 |
// Parcours du tableau de jours
|
|
|
135 |
$tabListeJour = array(0 =>'champ_lundi',1 =>'champ_mardi','champ_mercredi','champ_jeudi','champ_vendredi','champ_samedi','champ_dimanche');
|
|
|
136 |
// Parcourt du tableau de jour
|
|
|
137 |
for ($nb = 0; $nb < $_POST["champ_nb_projet"]; $nb++) {
|
|
|
138 |
for($j = 0; $j < count($tabListeJour); $j++) {
|
|
|
139 |
// Test du type de jour
|
|
|
140 |
if (isset($_POST["champ_type_jour".$j])) {
|
|
|
141 |
//cas jour de travail ou recuperation partielle(recuperation partielle ne reduit pas le temps de travail
|
|
|
142 |
if (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_TRAVAIL)
|
|
|
143 |
or (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_RECUP_PART)
|
|
|
144 |
and ($_POST["champ_rtt_type_jour".$_POST["champ_type_jour".$j]] == 0))) {
|
|
|
145 |
|
|
|
146 |
//test si aucun conges prealablement rentre ne chevauche la date voulue
|
|
|
147 |
//construction d'un objet absence equivalent a la date de travail
|
|
|
148 |
$testAbs = new Absence($utilisateur,0,date('Y-m-d', $_POST["champ_date_j".$j]));
|
|
|
149 |
$testAbs->setDateFin(date('Y-m-d', $_POST["champ_date_j".$j]));
|
|
|
150 |
$tabAbsence = $testAbs->existeAbsence();
|
|
|
151 |
// Booleen pour indiquer si on peut ajouter
|
|
|
152 |
$possibleAjout = true;
|
|
|
153 |
// Si chevauchement: verification si tous validee
|
|
|
154 |
if (count($tabAbsence) > 0) {
|
|
|
155 |
if ($testAbs->existeAbsenceValidee() == true) {
|
|
|
156 |
$possibleAjout = false;
|
|
|
157 |
$_POST[$tabListeJour[$j].$nb] = '';
|
|
|
158 |
$codeErreur = 2;
|
|
|
159 |
} else {
|
|
|
160 |
//supression des absences non validees
|
|
|
161 |
for ($p = 0; $p < count($tabAbsence); $p++) {
|
|
|
162 |
$l = $tabAbsence[$p];
|
|
|
163 |
$absTemp2 = $testAbs;
|
|
|
164 |
$absTemp2->construireAbsence($l);
|
|
|
165 |
$nbJour2 = $absTemp2->getDureeAbsence();
|
|
|
166 |
// Mise a jour des quota heures sup et des conges payes de l'utilisateur
|
|
|
167 |
if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION) {
|
|
|
168 |
$quotaTemp=$user1->getQuota();
|
|
|
169 |
$user1->setQuota($quotaTemp+(($user1->getTempsTravail())*$nbJour2));
|
|
|
170 |
} elseif ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART) {
|
|
|
171 |
$quotaTemp=$user1->getQuota();
|
|
|
172 |
$user1->setQuota($quotaTemp+((($user1->getTempsTravail())/2)*$nbJour2));
|
|
|
173 |
} else {
|
|
|
174 |
if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES) {
|
|
|
175 |
$congesTemp=$user1->getConges();
|
|
|
176 |
$user1->setConges($congesTemp+($nbJour2*1));
|
|
|
177 |
}
|
|
|
178 |
}
|
|
|
179 |
$f = $testAbs->supprimerAbsence($utilisateur,$l[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
|
|
|
180 |
if ($f != 1) {
|
|
|
181 |
$codeErreur = 3;
|
|
|
182 |
}
|
|
|
183 |
}
|
|
|
184 |
}
|
|
|
185 |
}
|
2 |
jpm |
186 |
|
|
|
187 |
|
5 |
jpm |
188 |
//determination des limites de travail en fonction du type de jour
|
|
|
189 |
if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
|
|
|
190 |
$limiteHeureTravail = $GLOBALS['limiteJourTravail'];
|
|
|
191 |
} else {
|
|
|
192 |
$limiteHeureTravail=$GLOBALS['limiteJourRecupPart'];
|
|
|
193 |
//construction de l'absence
|
|
|
194 |
$absenceRecupPart=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
|
|
|
195 |
$absenceRecupPart->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
|
|
|
196 |
|
|
|
197 |
//traitement de l'enregistrement de la recuperation partielle
|
|
|
198 |
if ($possibleAjout == true) {
|
|
|
199 |
$q = $absenceRecupPart->enregistrerNewAbsence();
|
|
|
200 |
//mise a jour des quotas
|
|
|
201 |
$val=$user1->getQuota();
|
|
|
202 |
$duree=$user1->getTempsTravail();
|
|
|
203 |
$user1->setQuota($val-(($user1->getTempsTravail())/2));
|
|
|
204 |
|
|
|
205 |
if ($q != 1 ) {
|
|
|
206 |
//attribution d'un code erreur
|
|
|
207 |
$codeErreur=1;
|
|
|
208 |
}
|
|
|
209 |
}
|
|
|
210 |
}
|
|
|
211 |
//test si le champ n'est pas vide et le champ est different de 0
|
|
|
212 |
|
|
|
213 |
if (empty($_POST[$tabListeJour[$j].$nb])!=1 and ($_POST[$tabListeJour[$j].$nb])!=0)
|
2 |
jpm |
214 |
{
|
|
|
215 |
|
5 |
jpm |
216 |
//test si date <=date d'aujourd'hui
|
|
|
217 |
if ($_POST["champ_date_j".$j]<=time() and ($possibleAjout==true))
|
|
|
218 |
{
|
|
|
219 |
//impossible de modifier des donnees une fosi que l'absence
|
|
|
220 |
//est enregistree
|
|
|
221 |
//construction de l'objet travail
|
|
|
222 |
|
|
|
223 |
$travail= new Travail($utilisateur,$_POST["champ_tache".$nb]);
|
|
|
224 |
$travail->setDateTravail(date('Y-m-d',$_POST["champ_date_j".$j]));
|
|
|
225 |
$travail->setDureeTravail($_POST[$tabListeJour[$j].$nb]);
|
|
|
226 |
|
|
|
227 |
//traitement de l'objet travail
|
|
|
228 |
$t=traiterTravail($travail,$limiteHeureTravail);
|
|
|
229 |
$_POST[$tabListeJour[$j].$nb]='';
|
|
|
230 |
if($t!=1)$codeErreur=$t;
|
|
|
231 |
|
|
|
232 |
}else{
|
|
|
233 |
|
|
|
234 |
if($possibleAjout==true)
|
|
|
235 |
{
|
|
|
236 |
//cas ou la date est superieure a la date d'aujourd'hui
|
|
|
237 |
//construction de l'objet prevision
|
|
|
238 |
$prevision=new Prevision(1000,1000);
|
|
|
239 |
$tableau=array(GEST_CHAMPS_ID_UTILISATEUR=>$utilisateur,
|
|
|
240 |
GEST_CHAMPS_ID_TACHE=>$_POST["champ_tache".$nb],
|
|
|
241 |
GEST_CHAMPS_DATE_PREVISION=>date('Y-m-d',$_POST["champ_date_j".$j]),
|
|
|
242 |
GEST_CHAMPS_DUREE_PREVISION=> $_POST["$tabListeJour[$j]".$nb]);
|
|
|
243 |
|
|
|
244 |
$prevision->construirePrevision($tableau);
|
|
|
245 |
|
|
|
246 |
$o=traiterPrevision($prevision, $limiteHeureTravail);
|
|
|
247 |
$_POST[$tabListeJour[$j].$nb]='';
|
|
|
248 |
if($o!=1)$codeErreur=$o;
|
|
|
249 |
|
|
|
250 |
}
|
|
|
251 |
}
|
|
|
252 |
}//fin traitement travail et prevision
|
2 |
jpm |
253 |
}else{
|
5 |
jpm |
254 |
//cas des conges
|
|
|
255 |
//cas : conges paye,recup,maladie,greve,ferie
|
|
|
256 |
if(($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_CONGES_PAYES)
|
|
|
257 |
or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_RECUPERATION)
|
|
|
258 |
or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_MALADIE)
|
|
|
259 |
or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_GREVE)
|
|
|
260 |
or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_WEEK_END)
|
|
|
261 |
or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_FERIE))
|
2 |
jpm |
262 |
{
|
5 |
jpm |
263 |
//construction du nouvel objet absence
|
|
|
264 |
$objetAbsence=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
|
|
|
265 |
$objetAbsence->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
|
|
|
266 |
//traitement de l'objet absence
|
|
|
267 |
$g=traiterAbsence($objetAbsence,$user1,$_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]);
|
|
|
268 |
if ($g[0]!=1){
|
|
|
269 |
$codeErreur=$g[0];
|
|
|
270 |
}else {
|
|
|
271 |
$user1=$g[1];
|
|
|
272 |
|
|
|
273 |
}
|
2 |
jpm |
274 |
|
|
|
275 |
}
|
5 |
jpm |
276 |
}//fin traitement type jour
|
|
|
277 |
}//typr jour
|
|
|
278 |
|
|
|
279 |
}
|
|
|
280 |
// }
|
|
|
281 |
}
|
|
|
282 |
$h=$user1->mettreAJourUtilisateur();
|
|
|
283 |
if ($h!=1) {
|
|
|
284 |
$codeErreur = 25;
|
|
|
285 |
}
|
2 |
jpm |
286 |
}
|
5 |
jpm |
287 |
$_POST['champ_valider_travail'] = 'dejaValider';
|
2 |
jpm |
288 |
}
|
|
|
289 |
|
|
|
290 |
/**
|
|
|
291 |
fonction qui traite les travaux
|
|
|
292 |
*enregistre si nouveau travail
|
|
|
293 |
*met a jour si existe deja
|
|
|
294 |
*@param : $travail : objet travail
|
|
|
295 |
*@param :limiteHeuretravail=la limite des heure sde travail
|
|
|
296 |
*/
|
|
|
297 |
function traiterTravail($travail,$limiteHeureTravail)
|
|
|
298 |
{
|
|
|
299 |
//verification si on ne depasse pas 24 heures
|
|
|
300 |
$sommeTravail= $travail->sommeHeureTravail($travail->getIdUserTravail(),$travail->getDateTravail());
|
|
|
301 |
|
|
|
302 |
if (is_null($sommeTravail))
|
|
|
303 |
{
|
|
|
304 |
$sommeTravail=0;
|
|
|
305 |
}
|
|
|
306 |
|
|
|
307 |
//verification si donnees precedemment rentrees
|
|
|
308 |
if (($travail->existeTravail()!=0)and ($travail->existeTravail()!=-1))
|
|
|
309 |
{
|
|
|
310 |
if (($sommeTravail + ($travail->getDureeTravail())-($travail->existeTravail()))<$limiteHeureTravail)
|
|
|
311 |
{
|
|
|
312 |
$q=$travail->mettreAjourTravail();
|
|
|
313 |
|
|
|
314 |
if ($q!=1) {
|
|
|
315 |
$res=4;
|
|
|
316 |
}else $res=1;
|
|
|
317 |
}
|
|
|
318 |
|
|
|
319 |
}else
|
|
|
320 |
//cas travail n'existe pas encore
|
|
|
321 |
{
|
|
|
322 |
if ($travail->existeTravail()==0)
|
|
|
323 |
{
|
|
|
324 |
//test si on de depasse pas 24 heures pour une journee
|
|
|
325 |
if ($sommeTravail + ($travail->getDureeTravail())<$limiteHeureTravail)
|
|
|
326 |
{
|
|
|
327 |
$w=$travail->enregistrerNewTravail();
|
|
|
328 |
if ($w!=1){
|
|
|
329 |
$res=5;
|
|
|
330 |
}else $res=1;
|
|
|
331 |
}
|
|
|
332 |
|
|
|
333 |
}
|
|
|
334 |
}
|
|
|
335 |
return $res;
|
|
|
336 |
}
|
|
|
337 |
|
|
|
338 |
/**
|
|
|
339 |
*fonction qui traite les previsions
|
|
|
340 |
*@param $prevision: l'objet prevision
|
|
|
341 |
*@param : limite heure de travail
|
|
|
342 |
*@return 1 si aucun erreur
|
|
|
343 |
*@return 5 ou 6 si erreur
|
|
|
344 |
*/
|
|
|
345 |
function traiterPrevision($prevision, $limiteHeureTravail)
|
|
|
346 |
{
|
|
|
347 |
//verification si on ne depasse pas 24 heures pour les donnees
|
|
|
348 |
//rentrees a unedate donnee dans la base de donnees
|
|
|
349 |
$sommePrev = $prevision->sommeHeurePrevision($prevision->getIdUserPrevision(),$prevision->getDatePrevision());
|
|
|
350 |
//verification si une prevision a deja ete faite
|
|
|
351 |
|
|
|
352 |
if (($prevision->existePrevision()!=0) and (($prevision->existePrevision()!=-1)))
|
|
|
353 |
{
|
|
|
354 |
if ($sommePrev+($prevision->getDureePrevision())-($prevision->existePrevision())<$limiteHeureTravail)
|
|
|
355 |
{
|
|
|
356 |
$q=$prevision->mettreAJourPrevision();
|
|
|
357 |
if ($q!=1)
|
|
|
358 |
{
|
|
|
359 |
$res=5;
|
|
|
360 |
echo "echec enregistrement prevision dans base de donnees <br />";
|
|
|
361 |
}else $res=1;
|
|
|
362 |
}
|
|
|
363 |
}else{
|
|
|
364 |
//cas ou aucuen prevsion n'a deja ete rentree
|
|
|
365 |
if( $prevision->existePrevision()==0)
|
|
|
366 |
{
|
|
|
367 |
//test si la somme des previsions de depasse pas 24 heures
|
|
|
368 |
if (($sommePrev+($prevision->getDureePrevision()))<<$limiteHeureTravail)
|
|
|
369 |
{
|
|
|
370 |
$w =$prevision->enregistrerNewPrevision();
|
|
|
371 |
if ($w!=1) {
|
|
|
372 |
$res=6;
|
|
|
373 |
echo "erreur enregistrement prevision";
|
|
|
374 |
}else $res=1;
|
|
|
375 |
}
|
|
|
376 |
}
|
|
|
377 |
}
|
|
|
378 |
return $res;
|
|
|
379 |
}
|
|
|
380 |
/**
|
|
|
381 |
*fonction qui traite les absences
|
|
|
382 |
*@param : $abs : objet absence
|
|
|
383 |
*@param : user: objet utilisateur
|
|
|
384 |
*@param $j : jour de la semaine : lundi =0
|
|
|
385 |
*supression d'eventuelle absences prealablement rentree
|
|
|
386 |
*supression et enregistrement effectif que si aucune lettre n'a prealablement ete
|
|
|
387 |
*renvoie 1 si enregistrement effectuee
|
|
|
388 |
*met a jour la det de fin si l'absence fait partie d'une periode
|
|
|
389 |
*renvoie code erreur si erreur
|
|
|
390 |
*/
|
|
|
391 |
function traiterAbsence($abs,$user,$libelle)
|
|
|
392 |
{
|
|
|
393 |
$tabAbs=$abs->existeAbsence();
|
|
|
394 |
$ok=true;//booleen indiquant si traitement a faire ou non
|
|
|
395 |
$possible=true;//booleen indiquant que l'absence est possible
|
|
|
396 |
|
|
|
397 |
//test si weekend =>on n'insere aucun enregistrement
|
|
|
398 |
if($libelle==GTT_NOM_WEEK_END)
|
|
|
399 |
{
|
|
|
400 |
$ok=false;
|
|
|
401 |
}
|
|
|
402 |
//si chevauchement existe
|
|
|
403 |
|
|
|
404 |
if(count($tabAbs)>0)
|
|
|
405 |
{
|
|
|
406 |
//on sait que $tabAbs contient au plus un enregistrement
|
|
|
407 |
//car la periode ne tient que sur une journee
|
|
|
408 |
$line=$tabAbs[0];
|
|
|
409 |
//si pas meme identifiant
|
|
|
410 |
if($line[GEST_CHAMPS_ID_MOTIF]!=$abs->getIdMotif())
|
|
|
411 |
{
|
|
|
412 |
if($line[GEST_CHAMPS_DATE_ENVOI_LETTRE]!='0000-00-00')
|
|
|
413 |
{
|
|
|
414 |
//si le jour d'absence a ete valide
|
|
|
415 |
$ok=false;
|
|
|
416 |
}else{
|
|
|
417 |
//si absence non encore validee
|
|
|
418 |
//verifiaction pour un jour de conges payes ou recuperation
|
|
|
419 |
if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
|
|
|
420 |
{
|
|
|
421 |
|
|
|
422 |
//recuperation de la duree de l'absence qui chevauche le jour demande
|
|
|
423 |
$debut=explode('-',$line[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
|
|
|
424 |
$fin=explode('-',$line[GEST_CHAMPS_DATE_FIN_ABSENCE]);
|
|
|
425 |
$dateDeb=mktime(0,0,0,$debut[1],$debut[2],$debut[0]);
|
|
|
426 |
$dateFin=mktime(0,0,0,$fin[1],$fin[2],$fin[0]);
|
|
|
427 |
|
|
|
428 |
//verification si absence precedente est un conges payes
|
|
|
429 |
if($_POST["champ_libelle_type_jour".$line[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
|
|
|
430 |
{
|
|
|
431 |
$duree=intval((($dateFin-$dateDeb)/3600)/24);
|
|
|
432 |
}else $duree=0;
|
|
|
433 |
|
|
|
434 |
|
|
|
435 |
//verification si possible de prendre le conge paye
|
|
|
436 |
if($libelle==GTT_NOM_CONGES_PAYES)
|
|
|
437 |
{
|
|
|
438 |
if (((($user->getConges())+($duree)-($abs->getDureeAbsence()))<0))
|
|
|
439 |
{
|
|
|
440 |
$possible=false;
|
|
|
441 |
}
|
|
|
442 |
}else
|
|
|
443 |
{
|
|
|
444 |
//mise a jour de la quantite d'heure supp
|
|
|
445 |
$heureSup=$user->getQuota();
|
|
|
446 |
$user->setQuota($heureSup-($user->getTempsTravail()));
|
|
|
447 |
|
|
|
448 |
}
|
|
|
449 |
}//fin test conges payes
|
|
|
450 |
|
|
|
451 |
|
|
|
452 |
|
|
|
453 |
//supression des anciennes absence dans le cas d'une nouvelle absence
|
|
|
454 |
if($possible==true)
|
|
|
455 |
{
|
|
|
456 |
for ($p=0;$p<count($tabAbs);$p++)
|
|
|
457 |
{
|
|
|
458 |
$line1=$tabAbs[$p];
|
|
|
459 |
//duree de l'absence a supprimer
|
|
|
460 |
$abs2=$abs;
|
|
|
461 |
$abs2->construireAbsence($line1);
|
|
|
462 |
|
|
|
463 |
$nbJour=$abs2->getDureeAbsence();
|
|
|
464 |
|
|
|
465 |
//mise a jour des quota heures sup et des conges payes de l'utilisateur
|
|
|
466 |
if($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION)
|
|
|
467 |
{
|
|
|
468 |
$quotaTemp=$user->getQuota();
|
|
|
469 |
$user->setQuota($quotaTemp+(($user->getTempsTravail())*$nbJour));
|
|
|
470 |
|
|
|
471 |
}elseif($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART)
|
|
|
472 |
{
|
|
|
473 |
$quotaTemp=$user->getQuota();
|
|
|
474 |
$user->setQuota($quotaTemp+($nbJour*(($user->getTempsTravail())/2)));
|
|
|
475 |
|
|
|
476 |
}else
|
|
|
477 |
{
|
|
|
478 |
if ($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
|
|
|
479 |
{
|
|
|
480 |
$congesTemp=$user->getConges();
|
|
|
481 |
$user->setConges($congesTemp+(1*$nbJour));
|
|
|
482 |
|
|
|
483 |
}
|
|
|
484 |
}
|
|
|
485 |
$z=$abs->supprimerAbsence($abs->getIdUserAbsence(),$line1[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
|
|
|
486 |
if($z!=1)
|
|
|
487 |
{
|
|
|
488 |
$res=7;
|
|
|
489 |
}else $res=1;
|
|
|
490 |
}
|
|
|
491 |
}
|
|
|
492 |
|
|
|
493 |
}
|
|
|
494 |
}else
|
|
|
495 |
{
|
|
|
496 |
//si meme motif on ne fait rien
|
|
|
497 |
$ok=false;
|
|
|
498 |
}
|
|
|
499 |
|
|
|
500 |
}else{
|
|
|
501 |
//si pas de chevauchement
|
|
|
502 |
$supprimTravail=true;
|
|
|
503 |
|
|
|
504 |
//supression d'eventuelles travaux
|
|
|
505 |
if ($supprimTravail==true)
|
|
|
506 |
{
|
|
|
507 |
$res=&Travail::supprimerTachesUserDate($abs->getIdUserAbsence(),$abs->getDateDebAbsence());
|
|
|
508 |
if($res!=1)
|
|
|
509 |
{
|
|
|
510 |
$res=8;
|
|
|
511 |
}
|
|
|
512 |
}
|
|
|
513 |
|
|
|
514 |
//mise a jour des conge spayes et heures sup
|
|
|
515 |
|
|
|
516 |
if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
|
|
|
517 |
{
|
|
|
518 |
|
|
|
519 |
//verification si possible de prendre le conge paye
|
|
|
520 |
if($libelle==GTT_NOM_CONGES_PAYES)
|
|
|
521 |
{
|
|
|
522 |
if ((($user->getConges())-($abs->getDureeAbsence()))>=0)
|
|
|
523 |
{
|
|
|
524 |
$temp=$user->getConges();
|
|
|
525 |
//mise a jour des conges payes
|
|
|
526 |
$user->setConges($temp-($abs->getDureeAbsence()));
|
|
|
527 |
|
|
|
528 |
}else $ok=false;
|
|
|
529 |
}else
|
|
|
530 |
{
|
|
|
531 |
//mise a jour de la quantite d'heure supp
|
|
|
532 |
$heureSup=$user->getQuota();
|
|
|
533 |
$user->setQuota($heureSup-($user->getTempsTravail()));
|
|
|
534 |
|
|
|
535 |
}
|
|
|
536 |
}//fin test conges payes
|
|
|
537 |
}
|
|
|
538 |
//enregistrement de la nouvelle absence
|
|
|
539 |
//si traitement a faire
|
|
|
540 |
if($ok==true and $possible==true)
|
|
|
541 |
{
|
|
|
542 |
$nouveau=true; //booleen indiquant s'il faut enregistrer une nouvelle absence
|
|
|
543 |
$absencePrec=$abs->getAbsencesPrec();
|
|
|
544 |
$absenceSuiv=$abs->getAbsencesSuiv();
|
|
|
545 |
//timestamp de la date de debut d'absence
|
|
|
546 |
$dDeb=explode('-',$abs->getDateDebAbsence());
|
|
|
547 |
$timeDeb=mktime(0,0,0,$dDeb[1],$dDeb[2],$dDeb[0]);
|
|
|
548 |
|
|
|
549 |
//timestamp de la date de fin d'absence
|
|
|
550 |
$dFin=explode('-',$abs->getDateFinAbsence());
|
|
|
551 |
$timeFin=mktime(0,0,0, $dFin[1], $dFin[2], $dFin[0]);
|
|
|
552 |
|
|
|
553 |
//creation des timestamp des absences precedentes et suivantes
|
|
|
554 |
if($absencePrec!=-1)
|
|
|
555 |
{
|
|
|
556 |
$finPrec=explode('-',$absencePrec->getDateFinAbsence());
|
|
|
557 |
$datePrec=mktime(0,0,0,$finPrec[1],$finPrec[2],$finPrec[0]);
|
|
|
558 |
}
|
|
|
559 |
//timestamp de l'absence suivant
|
|
|
560 |
if($absenceSuiv!=-1)
|
|
|
561 |
{
|
|
|
562 |
$debSuiv=explode('-',$absenceSuiv->getDateDebAbsence());
|
|
|
563 |
$dateSuiv=mktime(0,0,0,$debSuiv[1],$debSuiv[2],$debSuiv[0]);
|
|
|
564 |
}
|
|
|
565 |
//verification s'il existe des absences precedentes
|
|
|
566 |
//non encore validees
|
|
|
567 |
//si pas d'absence precedentes
|
|
|
568 |
if($absencePrec==-1)
|
|
|
569 |
{
|
|
|
570 |
if ($absenceSuiv!=-1)
|
|
|
571 |
{
|
|
|
572 |
//si absence suivante est contigue
|
|
|
573 |
if(isDateContigues($timeFin,$dateSuiv)==1)
|
|
|
574 |
{
|
|
|
575 |
$absTemp=$absenceSuiv;
|
|
|
576 |
|
|
|
577 |
$absTemp->setDateDeb($abs->getDateDebAbsence());
|
|
|
578 |
|
|
|
579 |
$w=$absTemp->supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
|
|
|
580 |
$resTemp=$absTemp->enregistrerNewAbsence();
|
|
|
581 |
$nouveau=false;
|
|
|
582 |
if ($resTemp!=1 or $w!=1)
|
|
|
583 |
{
|
|
|
584 |
$res=9;
|
|
|
585 |
}
|
|
|
586 |
}
|
|
|
587 |
}
|
|
|
588 |
}else//s'il existe une absence precedentes
|
|
|
589 |
{
|
|
|
590 |
//si absence precedente contigue
|
|
|
591 |
if(isDateContigues($datePrec,$timeDeb)==1)
|
|
|
592 |
{
|
|
|
593 |
$absTemp=$absencePrec;
|
|
|
594 |
$absTemp->setDateFin($abs->getDateFinAbsence());
|
|
|
595 |
$nouveau=false;
|
|
|
596 |
//test si l'absence suivante est vide
|
|
|
597 |
if($absenceSuiv==-1)
|
|
|
598 |
{
|
|
|
599 |
|
|
|
600 |
$resTemp=$absTemp->mettreAJourAbsence();
|
|
|
601 |
|
|
|
602 |
if($resTemp!=1)
|
|
|
603 |
{
|
|
|
604 |
$res=10;
|
|
|
605 |
}
|
|
|
606 |
}else//si absence suivante existe
|
|
|
607 |
{
|
|
|
608 |
//test si absence suivante contigue
|
|
|
609 |
if(isDateContigues($timeFin,$dateSuiv)==1)
|
|
|
610 |
{
|
|
|
611 |
$absTemp->setDateFin($absenceSuiv->getDateFinAbsence());
|
|
|
612 |
//supression de l'absence suivante
|
|
|
613 |
$res=&Absence::supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
|
|
|
614 |
if($res!=1)
|
|
|
615 |
{
|
|
|
616 |
$res=11;
|
|
|
617 |
}
|
|
|
618 |
//mise a jour de l'absence
|
|
|
619 |
|
|
|
620 |
$resTemp=$absTemp->enregistrerNewAbsence();
|
|
|
621 |
|
|
|
622 |
if($resTemp!=1)
|
|
|
623 |
{
|
|
|
624 |
$res=12;
|
|
|
625 |
}
|
|
|
626 |
|
|
|
627 |
}else
|
|
|
628 |
{
|
|
|
629 |
//absence suivante non contigue
|
|
|
630 |
//mise a jour de l'absence
|
|
|
631 |
$resTemp=$absTemp->mettreAJourAbsence();
|
|
|
632 |
|
|
|
633 |
if($resTemp!=1)
|
|
|
634 |
{
|
|
|
635 |
$res=13;
|
|
|
636 |
}
|
|
|
637 |
}
|
|
|
638 |
}
|
|
|
639 |
|
|
|
640 |
|
|
|
641 |
}else
|
|
|
642 |
{
|
|
|
643 |
//si l'absence precedente n'est pas contigue
|
|
|
644 |
if($absenceSuiv!=-1)//verification si absence suivante non vide
|
|
|
645 |
{
|
|
|
646 |
if(isDateContigues($timeFin,$dateSuiv)==1)
|
|
|
647 |
{
|
|
|
648 |
//si contigue
|
|
|
649 |
$absTemp=$absenceSuiv;
|
|
|
650 |
$absTemp->setDateDeb($abs->getDateDebAbsence());
|
|
|
651 |
//enregistrement de l'absence
|
|
|
652 |
$w=$absTemp->supprimerAbsence($absTemp->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
|
|
|
653 |
$resTemp=$absTemp->enregistrerNewAbsence();
|
|
|
654 |
if($resTemp!=1 or $w!=1)
|
|
|
655 |
{
|
|
|
656 |
$res=14;
|
|
|
657 |
}
|
|
|
658 |
$nouveau=false;
|
|
|
659 |
}
|
|
|
660 |
}
|
|
|
661 |
|
|
|
662 |
}
|
|
|
663 |
}
|
|
|
664 |
if($nouveau==true)
|
|
|
665 |
{
|
|
|
666 |
$res=$abs->enregistrerNewAbsence();
|
|
|
667 |
if($res!=1)
|
|
|
668 |
{
|
|
|
669 |
$res=15;
|
|
|
670 |
}
|
|
|
671 |
}
|
|
|
672 |
|
|
|
673 |
|
|
|
674 |
return array($res,$user);
|
|
|
675 |
}
|
|
|
676 |
}
|
|
|
677 |
/**
|
|
|
678 |
*fonction qui verifie si deu dates sont contigues
|
|
|
679 |
*@param $dateVerif : timestamp unix
|
|
|
680 |
*@param $date : timestamp unix
|
|
|
681 |
*/
|
|
|
682 |
function isDateContigues($dateVerif,$date)
|
|
|
683 |
{
|
|
|
684 |
if ($dateVerif<$date)
|
|
|
685 |
{
|
|
|
686 |
$dateDeb=$date;
|
|
|
687 |
$dateFin=$dateVerif;
|
|
|
688 |
}else{
|
|
|
689 |
$dateDeb=$dateVerif;
|
|
|
690 |
$dateFin=$date;
|
|
|
691 |
}
|
|
|
692 |
$r=-1;
|
|
|
693 |
|
|
|
694 |
|
|
|
695 |
//verification si la date de debut est en semaine
|
|
|
696 |
//ou lundi
|
|
|
697 |
$jour=date('w',$dateDeb);
|
|
|
698 |
//si c un lundi
|
|
|
699 |
if ($jour==1)
|
|
|
700 |
{
|
|
|
701 |
if(($dateDeb-(3600*24*3))==$dateFin)
|
|
|
702 |
{
|
|
|
703 |
$r=1;
|
|
|
704 |
}
|
|
|
705 |
}else//si c un jour de semaine
|
|
|
706 |
{
|
|
|
707 |
if(($dateDeb-(3600*24))==$dateFin)
|
|
|
708 |
{
|
|
|
709 |
$r=1;
|
|
|
710 |
}
|
|
|
711 |
}
|
|
|
712 |
return $r;
|
|
|
713 |
|
|
|
714 |
}
|
|
|
715 |
|
|
|
716 |
/**
|
|
|
717 |
*fonction traitant le menu travail
|
|
|
718 |
*/
|
5 |
jpm |
719 |
function traiterAdminTravail($url, $semaine, $annee, $utilisateur)
|
2 |
jpm |
720 |
{
|
5 |
jpm |
721 |
$text = creerEntetePage(GESTION_GESTIONDEPOSTE_L);
|
|
|
722 |
$form = afficherTableauJour($url, $utilisateur, $semaine, $annee);
|
2 |
jpm |
723 |
|
5 |
jpm |
724 |
if (isset($_POST['champ_valider_travail']) and $_POST['champ_valider_travail'] != 'dejaValider' and $form->validate()) {
|
|
|
725 |
$form->process(traiterSemaine($utilisateur));
|
|
|
726 |
$t = afficherTableauJour($url, $utilisateur, $semaine, $annee);
|
|
|
727 |
$text .= $t->ToHTml();
|
|
|
728 |
} else {
|
|
|
729 |
$text .= $form->ToHtml();
|
|
|
730 |
}
|
|
|
731 |
return $text;
|
2 |
jpm |
732 |
}
|
|
|
733 |
|
|
|
734 |
?>
|