Subversion Repositories Applications.gtt

Rev

Rev 9 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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