Subversion Repositories Applications.gtt

Rev

Rev 101 | Rev 106 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 101 Rev 103
Line 10... Line 10...
10
    }
10
    }
Line 11... Line 11...
11
 
11
 
12
    public function executer()
12
    public function executer()
13
    {
13
    {
14
    	$aso_gestion = array();
14
    	$aso_gestion = array();
Line 15... Line 15...
15
    	$this->getRegistre()->setTitre('Gérer son temps');
15
    	$this->getRegistre()->setTitre('Gérer son temps');
16
 
16
 
17
    	//+-------------------------------------------------------------------------------------------------+
17
    	//+-------------------------------------------------------------------------------------------------+
18
		// GESTION DES CALENDRIERS
18
		// GESTION DES CALENDRIERS
Line 88... Line 88...
88
				}
88
				}
89
				$aso_gestion['elements'][$Week->thisWeek('n_in_year')][$num] = $element;
89
				$aso_gestion['elements'][$Week->thisWeek('n_in_year')][$num] = $element;
90
			}
90
			}
91
		}
91
		}
Line 92... Line 92...
92
 
92
 
93
		// Construction de l'url pour les mois précédent/suivant
93
		// Construction de l'url pour les mois précédent/suivant
94
		$PMonth = $Month->prevMonth('object');
94
		$PMonth = $Month->prevMonth('object');
95
		$aso_gestion['url_mois_precedent'] = 'index.php?action='.GTT_ACTION_GESTION.'&annee='.$PMonth->thisYear().'&mois='.$PMonth->thisMonth().'&jour='.$PMonth->thisDay();
95
		$aso_gestion['url_mois_precedent'] = 'index.php?action='.GTT_ACTION_GESTION.'&annee='.$PMonth->thisYear().'&mois='.$PMonth->thisMonth().'&jour='.$PMonth->thisDay();
96
		$NMonth = $Month->nextMonth('object');
96
		$NMonth = $Month->nextMonth('object');
97
		$aso_gestion['url_mois_suivant'] = 'index.php?action='.GTT_ACTION_GESTION.'&annee='.$NMonth->thisYear().'&mois='.$NMonth->thisMonth().'&jour='.$NMonth->thisDay();
97
		$aso_gestion['url_mois_suivant'] = 'index.php?action='.GTT_ACTION_GESTION.'&annee='.$NMonth->thisYear().'&mois='.$NMonth->thisMonth().'&jour='.$NMonth->thisDay();
98
		$aso_gestion['mois']['mois'] = $Calendrier->getNomMois($Month->thisMonth());
98
		$aso_gestion['mois']['mois'] = $Calendrier->getNomMois($Month->thisMonth());
Line 99... Line 99...
99
		$aso_gestion['mois']['annee'] = $Month->thisYear();
99
		$aso_gestion['mois']['annee'] = $Month->thisYear();
100
 
100
 
101
		// Construction de l'url pour les semaines précédente/suivante
101
		// Construction de l'url pour les semaines précédente/suivante
Line 102... Line 102...
102
		$Week = new Calendar_Week($_GET['annee'], $_GET['mois'], $_GET['jour']);
102
		$Week = new Calendar_Week($_GET['annee'], $_GET['mois'], $_GET['jour']);
103
		$aso_gestion['s'] = $Week->thisWeek('n_in_year');
103
		$aso_gestion['s'] = $Week->thisWeek('n_in_year');
Line 123... Line 123...
123
		}
123
		}
Line 124... Line 124...
124
 
124
 
125
		//+-------------------------------------------------------------------------------------------------+
125
		//+-------------------------------------------------------------------------------------------------+
126
		// GESTION DES PROJETS
126
		// GESTION DES PROJETS
127
		//+-------------------------------------------------------------------------------------------------+
127
		//+-------------------------------------------------------------------------------------------------+
128
    	// Récupération des projets sur lesquels l'utilisateur travaille
128
    	// Récupération des projets sur lesquels l'utilisateur travaille
129
		$UtilsateurAProjet = new UtilisateurAProjet();
129
		$UtilsateurAProjet = new UtilisateurAProjet();
130
    	$tab_uap = $UtilsateurAProjet->consulter(UtilisateurAProjet::GUAP_UTILISATEUR, $GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur());
130
    	$tab_uap = $UtilsateurAProjet->consulter(UtilisateurAProjet::GUAP_UTILISATEUR, $GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur());
131
		// Si nous avons des données...
131
		// Si nous avons des données...
132
		$aso_gestion['bool_projets'] = false;
132
		$aso_gestion['bool_projets'] = false;
133
    	if ($tab_uap && count($tab_uap) >= 1) {
133
    	if ($tab_uap && count($tab_uap) >= 1) {
134
	    	$aso_gestion['bool_projets'] = true;
134
	    	$aso_gestion['bool_projets'] = true;
135
	    	$tab_projet_id = array();
135
	    	$tab_projet_id = array();
136
	    	foreach ($tab_uap as $uap) {
136
	    	foreach ($tab_uap as $uap) {
137
	    		$tab_projet_id[] = $uap->getIdProjet();
137
	    		$tab_projet_id[] = $uap->getIdProjet();
Line 138... Line 138...
138
	    	}
138
	    	}
139
 
139
 
140
	    	// Récupération du temps de travail pour un utilisateur à une date donnée
140
	    	// Récupération du temps de travail pour un utilisateur à une date donnée
141
	    	$TravailProjet = new TravailProjet();
141
	    	$TravailProjet = new TravailProjet();
142
			$cmd = TravailProjet::GTP_ID_UTILISATEUR_DATE_DEB_FIN;
142
			$cmd = TravailProjet::GTP_ID_UTILISATEUR_DATE_DEB_FIN;
Line 143... Line 143...
143
			$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_gestion['sj_1']['mysql'], $aso_gestion['sj_7']['mysql']);
143
			$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_gestion['sj_1']['mysql'], $aso_gestion['sj_7']['mysql']);
144
			$tab_tp = $TravailProjet->consulter($cmd, $param);
144
			$tab_tp = $TravailProjet->consulter($cmd, $param);
145
 
145
 
146
			// Récupération des infos sur les projets de l'utilisateur
146
			// Récupération des infos sur les projets de l'utilisateur
147
	    	$aso_gestion['totaux'] = $aso_tps_w_vide;
147
	    	$aso_gestion['totaux'] = $aso_tps_w_vide;
Line 148... Line 148...
148
	    	$Projet = new Projet();
148
	    	$Projet = new Projet();
149
	    	$tab_p = $Projet->consulter(Projet::GP_ID_LIST, array(implode(',', $tab_projet_id)));
149
	    	$tab_p = $Projet->consulter(Projet::GP_ID_LIST, array(implode(',', $tab_projet_id)));
150
			foreach ($tab_p as $Projet) {
150
			foreach ($tab_p as $Projet) {
Line 151... Line 151...
151
	
151
	
152
				// Récupération de la catégorie du projet
152
				// Récupération de la catégorie du projet
153
				$ProjetCategorie = new ProjetCategorie();
153
				$ProjetCategorie = new ProjetCategorie();
154
				$Categorie = current($ProjetCategorie->consulter(ProjetCategorie::GPC_ID, $Projet->getCeCategorie()));
154
				$Categorie = current($ProjetCategorie->consulter(ProjetCategorie::GPC_ID, $Projet->getCeCategorie()));
155
	
155
	
156
				// Nous vérifions le temps de travail pour ce projet pour la semaine courrante
156
				// Nous vérifions le temps de travail pour ce projet pour la semaine courrante
Line 167... Line 167...
167
							$aso_gestion['totaux'][$num] += $TP->getDuree();
167
							$aso_gestion['totaux'][$num] += $TP->getDuree();
168
						}
168
						}
169
					}
169
					}
170
				}
170
				}
Line 171... Line 171...
171
	
171
	
172
				// Stockage des infos nécessaire pour l'affichage
172
				// Stockage des infos nécessaire pour l'affichage
173
				$aso_gestion['preferences'][$Categorie->getLibelle()][] = array(
173
				$aso_gestion['preferences'][$Categorie->getLibelle()][] = array(
174
					'id' => $Projet->getIdProjet(),
174
					'id' => $Projet->getIdProjet(),
175
					'valeur' => $Projet->getIdProjet(),
175
					'valeur' => $Projet->getIdProjet(),
176
					'nom' => $Projet->getNom(),
176
					'nom' => $Projet->getNom(),
Line 180... Line 180...
180
			}
180
			}
181
		}
181
		}
182
		//+-------------------------------------------------------------------------------------------------+
182
		//+-------------------------------------------------------------------------------------------------+
183
		// GESTION DES ABSENCES
183
		// GESTION DES ABSENCES
184
		//+-------------------------------------------------------------------------------------------------+
184
		//+-------------------------------------------------------------------------------------------------+
185
		// Récupération des motifs d'absence
185
		// Récupération des motifs d'absence
186
		$AbsenceMotif = new AbsenceMotif();
186
		$AbsenceMotif = new AbsenceMotif();
187
		$cmd = AbsenceMotif::GAM_TOUS;
187
		$cmd = AbsenceMotif::GAM_TOUS;
188
		$tab_am = $AbsenceMotif->consulter($cmd);
188
		$tab_am = $AbsenceMotif->consulter($cmd);
Line 189... Line 189...
189
 
189
 
190
		// Récupération des absences pour un utilisateur à une date donnée
190
		// Récupération des absences pour un utilisateur à une date donnée
191
    	$Absence = new Absence();
191
    	$Absence = new Absence();
192
		$cmd = Absence::GA_ID_UTILISATEUR_DATE_DEB_FIN;
192
		$cmd = Absence::GA_ID_UTILISATEUR_DATE_DEB_FIN;
193
		$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_gestion['sj_1']['mysql'], $aso_gestion['sj_7']['mysql']);
193
		$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_gestion['sj_1']['mysql'], $aso_gestion['sj_7']['mysql']);
194
		$tab_a = $Absence->consulter($cmd, $param);
194
		$tab_a = $Absence->consulter($cmd, $param);
Line 210... Line 210...
210
					}
210
					}
211
				}
211
				}
212
			}
212
			}
213
		}
213
		}
Line 214... Line 214...
214
		
214
		
215
		// Création de l'url de réponse du formulaire
215
		// Création de l'url de réponse du formulaire
Line 216... Line 216...
216
		$aso_gestion['url_gestion_valider'] = 'index.php?action='.GTT_ACTION_GESTION_VALIDER.$url_sc_param_date;
216
		$aso_gestion['url_gestion_valider'] = 'index.php?action='.GTT_ACTION_GESTION_VALIDER.$url_sc_param_date;
217
 
217
 
218
    	//echo '<pre>ici '.print_r($aso_gestion['ab'], true).'la</pre>';
218
    	//echo '<pre>ici '.print_r($aso_gestion['ab'], true).'la</pre>';
Line 227... Line 227...
227
 
227
 
228
	public function executerValider()
228
	public function executerValider()
229
    {
229
    {
Line 230... Line 230...
230
    	//echo '<pre>'.print_r($_POST, true).'</pre>';
230
    	//echo '<pre>'.print_r($_POST, true).'</pre>';
231
 
231
 
232
    	// Récupération des info sur la semaine courrante
232
    	// Récupération des info sur la semaine courrante
233
		$Week = new Calendar_Week($_GET['annee'], $_GET['mois'], $_GET['jour']);
233
		$Week = new Calendar_Week($_GET['annee'], $_GET['mois'], $_GET['jour']);
234
		$Week->build();
234
		$Week->build();
235
		$aso_jours = array();
235
		$aso_jours = array();
236
		$aso_semaine = array();
236
		$aso_semaine = array();
237
		foreach($Week->fetchAll() as $num => $j) {
237
		foreach($Week->fetchAll() as $num => $j) {
238
			$aso_semaine[$num]['mysql'] = $j->thisYear().'-'.sprintf("%02s", $j->thisMonth()).'-'.sprintf("%02s", $j->thisDay());
238
			$aso_semaine[$num]['mysql'] = $j->thisYear().'-'.sprintf("%02s", $j->thisMonth()).'-'.sprintf("%02s", $j->thisDay());
Line 239... Line 239...
239
			$aso_jours[$aso_semaine[$num]['mysql']] = $num;
239
			$aso_jours[$aso_semaine[$num]['mysql']] = $num;
240
		}
240
		}
241
 
241
 
242
		// Récupération du temps de travail pour un utilisateur à une date donnée
242
		// Récupération du temps de travail pour un utilisateur à une date donnée
243
    	$TravailProjet = new TravailProjet();
243
    	$TravailProjet = new TravailProjet();
Line 244... Line 244...
244
		$cmd = TravailProjet::GTP_ID_UTILISATEUR_DATE_DEB_FIN;
244
		$cmd = TravailProjet::GTP_ID_UTILISATEUR_DATE_DEB_FIN;
245
		$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_semaine[1]['mysql'], $aso_semaine[7]['mysql']);
245
		$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_semaine[1]['mysql'], $aso_semaine[7]['mysql']);
246
		$tab_tp = $TravailProjet->consulter($cmd, $param);
246
		$tab_tp = $TravailProjet->consulter($cmd, $param);
247
 
247
 
248
		// Récupération des infos sur l'utilisateur courrant
248
		// Récupération des infos sur l'utilisateur courrant
249
		$tps_w_jour = $GLOBALS['_GTT_']['Utilisateur']->getTempsDeTravailJour();
249
		$tps_w_jour = $GLOBALS['_GTT_']['Utilisateur']->getTempsDeTravailJour();
250
		// Création d'un utilisateur pour les mises à jour des CP et RTT
250
		// Création d'un utilisateur pour les mises à jour des CP et RTT
251
		$Utilisateur = new Utilisateur();
251
		$Utilisateur = new Utilisateur();
Line 261... Line 261...
261
		$jours_w_semaine = array_flip(explode(',', GTT_SEMAINE_JOUR_W_NBRE));
261
		$jours_w_semaine = array_flip(explode(',', GTT_SEMAINE_JOUR_W_NBRE));
262
		foreach ($jours_w_semaine as $c => $v) {
262
		foreach ($jours_w_semaine as $c => $v) {
263
			$jours_w_semaine[$c] = array('act' => 0, 'pre' => 0);
263
			$jours_w_semaine[$c] = array('act' => 0, 'pre' => 0);
264
		}
264
		}
Line 265... Line 265...
265
 
265
 
266
		// Ajout ou Mise à jour des durées de travail
266
		// Ajout ou Mise à jour des durées de travail
267
		if (isset($_POST['pr'])) {
267
		if (isset($_POST['pr'])) {
268
			foreach($_POST['pr'] as $projet_id => $jours) {
268
			foreach($_POST['pr'] as $projet_id => $jours) {
269
				//echo '<pre>'.print_r($jours, true).'</pre>';
269
				//echo '<pre>'.print_r($jours, true).'</pre>';
270
				foreach($jours as $jour_num => $nbr_heure) {
270
				foreach($jours as $jour_num => $nbr_heure) {
Line 302... Line 302...
302
					}
302
					}
303
				}
303
				}
304
			}
304
			}
305
		}
305
		}
Line 306... Line 306...
306
 
306
 
307
		// Récupération des absences pour un utilisateur à une date donnée
307
		// Récupération des absences pour un utilisateur à une date donnée
308
    	$Absence = new Absence();
308
    	$Absence = new Absence();
309
		$cmd = Absence::GA_ID_UTILISATEUR_DATE_DEB_FIN;
309
		$cmd = Absence::GA_ID_UTILISATEUR_DATE_DEB_FIN;
310
		$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_semaine[1]['mysql'], $aso_semaine[7]['mysql']);
310
		$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $aso_semaine[1]['mysql'], $aso_semaine[7]['mysql']);
Line 311... Line 311...
311
		$tab_a = $Absence->consulter($cmd, $param);
311
		$tab_a = $Absence->consulter($cmd, $param);
312
 
312
 
313
		// Ajout ou Mise à jour des durées d'absences pour congés payés
313
		// Ajout ou Mise à jour des durées d'absences pour congés payés
314
		$cp_h_modif = 0;
314
		$cp_h_modif = 0;
315
		$hs_h_modif = 0;
315
		$hs_h_modif = 0;
316
		if (isset($_POST['ab'])) {
316
		if (isset($_POST['ab'])) {
317
			//echo '<pre>'.print_r($_POST['ab'], true).'</pre>';
317
			//echo '<pre>'.print_r($_POST['ab'], true).'</pre>';
318
			foreach($_POST['ab'] as $ab_id => $tab_num_j) {
318
			foreach($_POST['ab'] as $ab_id => $tab_num_j) {
319
				// Création du motif d'absence pour voir si on doit diminuer les congés payés
319
				// Création du motif d'absence pour voir si on doit diminuer les congés payés
Line 320... Line 320...
320
				$AbsenceMotif = new AbsenceMotif();
320
				$AbsenceMotif = new AbsenceMotif();
321
				$AbsenceMotif->consulter(AbsenceMotif::GAM_ID, $ab_id, true);
321
				$AbsenceMotif->consulter(AbsenceMotif::GAM_ID, $ab_id, true);
Line 374... Line 374...
374
						}
374
						}
375
					}
375
					}
376
				}
376
				}
377
			}
377
			}
Line 378... Line 378...
378
			
378
			
379
			// Gestion de la mise à jour des congés payés
379
			// Gestion de la mise à jour des congés payés
380
			if ($cp_h_modif > 0) {
380
			if ($cp_h_modif > 0) {
381
				$Utilisateur->diminuerCongesPayes($cp_h_modif);
381
				$Utilisateur->diminuerCongesPayes($cp_h_modif);
382
			}
382
			}
383
			if ($cp_h_modif < 0) {
383
			if ($cp_h_modif < 0) {
Line 390... Line 390...
390
				$Utilisateur->augmenterQuotaHeuresSup(abs($hs_h_modif));
390
				$Utilisateur->augmenterQuotaHeuresSup(abs($hs_h_modif));
391
			}
391
			}
392
			$Utilisateur->modifier();
392
			$Utilisateur->modifier();
393
		}
393
		}
Line 394... Line 394...
394
 
394
 
395
		// Gestion de la mise à jour des heures sup
395
		// Gestion de la mise à jour des heures sup
396
		foreach ($jours_w_semaine as $c => $j) {
396
		foreach ($jours_w_semaine as $c => $j) {
397
			if (($j['pre'] - $j['act']) != 0) {// Modification sur le temps travaillé pour le jour courant
397
			if (($j['pre'] - $j['act']) != 0) {// Modification sur le temps travaillé pour le jour courant
398
				$heure_sup_pre = $j['pre'] - $tps_w_jour;// -7 = 0 - 7
398
				$heure_sup_pre = $j['pre'] - $tps_w_jour;// -7 = 0 - 7
399
				$heure_sup_act = $j['act'] - $tps_w_jour;// -5 = 2 - 7
399
				$heure_sup_act = $j['act'] - $tps_w_jour;// -5 = 2 - 7
400
				$heure_sup_dif = $heure_sup_act - $heure_sup_pre;// 2 = -5 - -7  
400
				$heure_sup_dif = $heure_sup_act - $heure_sup_pre;// 2 = -5 - -7  
401
				if (abs($heure_sup_pre) == $tps_w_jour) {// Premiere modifier du temps travaillé pour le jour courrant
401
				if (abs($heure_sup_pre) == $tps_w_jour) {// Premiere modifier du temps travaillé pour le jour courrant
402
					if ($heure_sup_act < 0) {
402
					if ($heure_sup_act < 0) {
403
						$Utilisateur->diminuerQuotaHeuresSup(abs($heure_sup_act));
403
						$Utilisateur->diminuerQuotaHeuresSup(abs($heure_sup_act));
404
					}
404
					}
405
					if ($heure_sup_act > 0) {
405
					if ($heure_sup_act > 0) {
Line 417... Line 417...
417
		}
417
		}
Line 418... Line 418...
418
		
418
		
419
		trigger_error(print_r($jours_w_semaine, true), E_USER_NOTICE);//$heure_sup_pre.'/'.$heure_sup_act.'-'.$total_jours
419
		trigger_error(print_r($jours_w_semaine, true), E_USER_NOTICE);//$heure_sup_pre.'/'.$heure_sup_act.'-'.$total_jours
Line 420... Line 420...
420
		$Utilisateur->modifier();
420
		$Utilisateur->modifier();
421
 
421
 
422
		// Mise à jour de la vue Identité pour les congés payés et RTT
422
		// Mise à jour de la vue Identité pour les congés payés et RTT
423
		$GttCtrlActionIdentification = new GttCtrlActionIdentification($this->getRegistre());
423
		$GttCtrlActionIdentification = new GttCtrlActionIdentification($this->getRegistre());
Line 424... Line 424...
424
		$GttCtrlActionIdentification->setSuivant('__defaut__');
424
		$GttCtrlActionIdentification->setSuivant('__defaut__');