Premier commit
							
								
								
									
										62
									
								
								controleurs/c_connexion.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,62 @@
 | 
			
		||||
<?php
 | 
			
		||||
// ***************************************'
 | 
			
		||||
//  Le CASTEL-BTS SIO/ PROJET PPE4 GSB    '
 | 
			
		||||
//  Programme: c_connexion.php  v2.0      '
 | 
			
		||||
//  Objet    : gestion remboursements frais'
 | 
			
		||||
//  Client   : laboratoires GSB           '
 | 
			
		||||
//  Date     : 03/05/2023 à 11H01         '
 | 
			
		||||
//  Auteur   : pascal-blain@wanadoo.fr    '
 | 
			
		||||
//****************************************'
 | 
			
		||||
if (!isset($_REQUEST['action'])) {
 | 
			
		||||
	$_REQUEST['action'] = 'demandeConnexion';
 | 
			
		||||
}
 | 
			
		||||
$action = $_REQUEST['action'];
 | 
			
		||||
switch ($action) {
 | 
			
		||||
	case 'demandeConnexion': {
 | 
			
		||||
			session_unset();
 | 
			
		||||
			$param = $pdo->getParametre("adresse");
 | 
			
		||||
			$_SESSION['adr1'] = $param[1]['pLibelle']; //rue
 | 
			
		||||
			$_SESSION['adr2'] = $param[2]['pLibelle'] . ' ' . $param[3]['pLibelle']; //codePostal et ville
 | 
			
		||||
			include("vues/v_entete.php");
 | 
			
		||||
			include("vues/v_connexion.php");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	case 'valideConnexion': {
 | 
			
		||||
			$login = $_REQUEST['login'];
 | 
			
		||||
			$mdp = $_REQUEST['mdp'];
 | 
			
		||||
			$utilisateur = $pdo->getInfosUtilisateur($login, $mdp);
 | 
			
		||||
			if (!is_array($utilisateur)) {
 | 
			
		||||
				include("vues/v_entete.php");
 | 
			
		||||
				ajouterErreur("Login ou mot de passe incorrect");
 | 
			
		||||
				include("vues/v_erreurs.php");
 | 
			
		||||
				include("vues/v_connexion.php");
 | 
			
		||||
			} else {
 | 
			
		||||
				$id = $utilisateur['id'];
 | 
			
		||||
				$nom = $utilisateur['nom'];
 | 
			
		||||
				$prenom = $utilisateur['prenom'];
 | 
			
		||||
				$statut = $utilisateur['statut'];
 | 
			
		||||
				connecter($id, $nom, $prenom, $statut);
 | 
			
		||||
				if (date('m') - 1 > 0) {
 | 
			
		||||
					$leMoisPrecedent = date('Y') * 100 + date('m') - 1;
 | 
			
		||||
				} else {
 | 
			
		||||
					$leMoisPrecedent = (date('Y') - 1) * 100 + 12;
 | 
			
		||||
				}
 | 
			
		||||
				//penser ici à faire la cloture du mois précédent !
 | 
			
		||||
				if ($statut == 'V')		/* si le remboursement pour le mois courant n'existe pas (=0) il faut le créer*/{
 | 
			
		||||
					$leMois = date('Ym');
 | 
			
		||||
					$leRemboursement = $pdo->existeRemboursement($id, $leMois);
 | 
			
		||||
					if ($leRemboursement == 0) {
 | 
			
		||||
						$pdo->creeNouveauRemboursement($id, $leMois);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				header('location: index.php?uc=etatFrais&action=voir');
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	default: {
 | 
			
		||||
			include("vues/v_entete.php");
 | 
			
		||||
			include("vues/v_connexion.php");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										62
									
								
								controleurs/c_etatFrais.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,62 @@
 | 
			
		||||
<?php
 | 
			
		||||
// ***************************************'
 | 
			
		||||
//  Le CASTEL-BTS SIO/ PROJET PPE4 GSB    '
 | 
			
		||||
//  Programme: c_etatFrais.php            '
 | 
			
		||||
//  Objet    : consultations des frais    '
 | 
			
		||||
//  Client   : laboratoires GSB           '
 | 
			
		||||
//  Version  : 3.0                        '
 | 
			
		||||
//  Date     : 03/05/2023 à 14H09         '
 | 
			
		||||
//  Auteur   : pascal-blain@wanadoo.fr    '
 | 
			
		||||
//****************************************'
 | 
			
		||||
 | 
			
		||||
$action = $_REQUEST['action'];
 | 
			
		||||
switch($action) {
 | 
			
		||||
case 'voir':
 | 
			
		||||
	{
 | 
			
		||||
		$nbRemboursementsAValider=$pdo->getNbRemboursementsAValider();
 | 
			
		||||
		include("vues/v_entete.php");
 | 
			
		||||
		
 | 
			
		||||
		if ($_SESSION['statut']!='1')
 | 
			
		||||
			{
 | 
			
		||||
			$lesVisiteurs=$pdo->getLesVisiteurs();
 | 
			
		||||
			include("vues/v_choixVisiteur.php");
 | 
			
		||||
			if ($_SESSION['idVisiteur']!=$visiteurChoisi) {unset($_REQUEST['lstMois']);$_SESSION['idVisiteur']=$visiteurChoisi;}
 | 
			
		||||
			} 
 | 
			
		||||
		$idVisiteur = $_SESSION['idVisiteur'];
 | 
			
		||||
		$lesMois=$pdo->getLesMoisDisponibles($idVisiteur);
 | 
			
		||||
		include("vues/v_choixMois.php");
 | 
			
		||||
		$_SESSION['leMois']= $moisChoisi;
 | 
			
		||||
		
 | 
			
		||||
		$leMois=$_SESSION['leMois'];
 | 
			
		||||
		$lesInfosRemboursement = $pdo->getInfosRemboursement($idVisiteur,$leMois);
 | 
			
		||||
		$libEtat = $lesInfosRemboursement['libEtat'];
 | 
			
		||||
		$montantValide = $lesInfosRemboursement['montantValide'];
 | 
			
		||||
		$nbJustificatifs = $lesInfosRemboursement['nbJustificatifs'];
 | 
			
		||||
		$dateModif =  $lesInfosRemboursement['dateModif'];
 | 
			
		||||
		$etatRemboursement = $lesInfosRemboursement['rEtat'];
 | 
			
		||||
		
 | 
			
		||||
		$lesFraisForfait= $pdo->getLesFraisForfait($idVisiteur,$leMois);
 | 
			
		||||
		$lesFraisHorsForfait = $pdo->getLesFraisHorsForfait($idVisiteur,$leMois);
 | 
			
		||||
		
 | 
			
		||||
		$ajoutFraisPossible = $pdo->getAjoutFraisPossible($idVisiteur, $leMois, $etatRemboursement);
 | 
			
		||||
		include("vues/v_etatFrais.php");
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
case 'validerEtat':
 | 
			
		||||
	{
 | 
			
		||||
	// code à rédiger ici ...
 | 
			
		||||
		/*
 | 
			
		||||
		// il faut actualiser le code etat, la date, le nombre de justificatifs et le montant valide
 | 
			
		||||
		$pdo->valideRemboursement($idVisiteur,$leMois);
 | 
			
		||||
		$moisASelectionner = $leMois;
 | 
			
		||||
		header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois);
 | 
			
		||||
		break;*/
 | 
			
		||||
	}
 | 
			
		||||
default :
 | 
			
		||||
	{
 | 
			
		||||
		echo 'erreur d\'aiguillage !'.$action;
 | 
			
		||||
		break;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}	
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										74
									
								
								controleurs/c_gererFraisForfaitaire.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,74 @@
 | 
			
		||||
<?php
 | 
			
		||||
// *****************************************'
 | 
			
		||||
//  Le CASTEL-BTS SIO/ PROJET PPE4 GSB      '
 | 
			
		||||
//  Programme: c_gererFraisForfaitaire.php  '
 | 
			
		||||
//  Objet    : Ajout/modif/suppression frais'
 | 
			
		||||
//  Client   : laboratoires GSB             '
 | 
			
		||||
//  Version  : 3.0                          '
 | 
			
		||||
//  Date     : 03/05/2023 <20> 11H01           '
 | 
			
		||||
//  Auteur   : pascal-blain@wanadoo.fr      '
 | 
			
		||||
//******************************************'
 | 
			
		||||
$idVisiteur = $_SESSION['idVisiteur'];
 | 
			
		||||
$leMois = $_SESSION['leMois'];
 | 
			
		||||
$action = $_REQUEST['action'];
 | 
			
		||||
//----------------------------------------- AJOUT
 | 
			
		||||
if ($action=='choix')
 | 
			
		||||
	{ 
 | 
			
		||||
		include("vues/v_entete.php"); 
 | 
			
		||||
		$lesForfaitsPossibles= $pdo->getLesForfaitsPossibles();
 | 
			
		||||
		$prixKm=$pdo->getPrixKm($idVisiteur,$leMois);
 | 
			
		||||
		include("vues/v_ajoutFraisForfaitaire.php");
 | 
			
		||||
	}
 | 
			
		||||
if ($action=='valider')
 | 
			
		||||
	{// enregistrement de la ligne et retour vers l'etat des frais
 | 
			
		||||
		$qte = $_REQUEST['zQte'];
 | 
			
		||||
		if ($qte>0)
 | 
			
		||||
		{	$forfait = $_REQUEST['zForfait'];
 | 
			
		||||
			$montant = str_replace(",",".",$_REQUEST['zPrix']);
 | 
			
		||||
			$montant = str_replace(" ","",$montant);
 | 
			
		||||
			$pdo->ajoutFraisForfait($idVisiteur, $leMois, $forfait, $qte, $montant); //insertion dans la table;
 | 
			
		||||
		}
 | 
			
		||||
		$moisASelectionner = $leMois;
 | 
			
		||||
		header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois);
 | 
			
		||||
	}
 | 
			
		||||
//----------------------------------------- MODIFICATION
 | 
			
		||||
if ($action=='editer')
 | 
			
		||||
	{ 
 | 
			
		||||
		include("vues/v_entete.php");
 | 
			
		||||
		$forfait = $_REQUEST['forfait'];	
 | 
			
		||||
		$unForfait = $pdo->getUnFraisForfait($idVisiteur, $leMois, $forfait);
 | 
			
		||||
		include("vues/v_unFraisForfaitaire.php");
 | 
			
		||||
	}
 | 
			
		||||
if ($action=='validerModifier')
 | 
			
		||||
	{// mise <20> jour de la ligne et retour vers l'etat des frais
 | 
			
		||||
		$qte = $_REQUEST['zQte'];
 | 
			
		||||
		if ($qte>0)
 | 
			
		||||
		{
 | 
			
		||||
			$forfait = $_REQUEST['forfait'];
 | 
			
		||||
			$pdo->majFraisForfait($idVisiteur, $leMois, $forfait, $qte); //mise <20> jour de la table;
 | 
			
		||||
		}
 | 
			
		||||
		$moisASelectionner = $leMois;
 | 
			
		||||
		header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois);
 | 
			
		||||
	}
 | 
			
		||||
//----------------------------------------- SUPPRESSION
 | 
			
		||||
if ($action=='supprimer')
 | 
			
		||||
	{ 
 | 
			
		||||
		include("vues/v_entete.php");
 | 
			
		||||
		$forfait = $_REQUEST['forfait'];
 | 
			
		||||
		
 | 
			
		||||
		$unForfait = $pdo->getUnFraisForfait($idVisiteur, $leMois, $forfait);
 | 
			
		||||
	 	include("vues/v_unFraisForfaitaire.php");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
if ($action=='validerSupprimer')
 | 
			
		||||
	{// suppression de la ligne et retour vers l'etat des frais
 | 
			
		||||
		$qte = $_REQUEST['zQte'];
 | 
			
		||||
		if ($qte>0)
 | 
			
		||||
		{
 | 
			
		||||
			$forfait = $_REQUEST['forfait'];
 | 
			
		||||
			$pdo->supprimerFraisForfait($idVisiteur, $leMois, $forfait); //suppession de la ligne dans la table;
 | 
			
		||||
		}
 | 
			
		||||
		$moisASelectionner = $leMois;
 | 
			
		||||
		header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois);
 | 
			
		||||
	}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										75
									
								
								controleurs/c_gererFraisHorsForfait.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,75 @@
 | 
			
		||||
<?php
 | 
			
		||||
// *****************************************'
 | 
			
		||||
//  Le CASTEL-BTS SIO/ PROJET PPE4 GSB      '
 | 
			
		||||
//  Programme: c_gererFraisHorsForfait.php  '
 | 
			
		||||
//  Objet    : Ajout/modif/suppression frais'
 | 
			
		||||
//  Client   : laboratoires GSB             '
 | 
			
		||||
//  Version  : 3.0                          '
 | 
			
		||||
//  Date     : 03/05/2023 <20> 11H01           '  
 | 
			
		||||
//  Auteur v1: pascal-blain@wanadoo.fr      '
 | 
			
		||||
//******************************************'
 | 
			
		||||
$idVisiteur = $_SESSION['idVisiteur'];
 | 
			
		||||
$leMois = $_SESSION['leMois'];
 | 
			
		||||
$action = $_REQUEST['action'];
 | 
			
		||||
//----------------------------------------- AJOUT
 | 
			
		||||
if ($action=='ajouter')
 | 
			
		||||
	{ 
 | 
			
		||||
		include("vues/v_entete.php");
 | 
			
		||||
		include("vues/v_ajoutFraisHorsForfait.php");
 | 
			
		||||
	}
 | 
			
		||||
if ($action=='valider')
 | 
			
		||||
	{// enregistrement de la ligne et retour vers l'etat des frais
 | 
			
		||||
		$date = $_REQUEST['zDate'];
 | 
			
		||||
		if ($date>0)
 | 
			
		||||
		{	$libelle=addslashes($_REQUEST['zLibelle']);
 | 
			
		||||
			$montant = str_replace(",",".",$_REQUEST['zMontant']);
 | 
			
		||||
			$montant = str_replace(" ","",$montant);
 | 
			
		||||
			$pdo->ajoutFraisHorsForfait($idVisiteur, $leMois, $date, $libelle, $montant); //insertion dans la table;
 | 
			
		||||
		}
 | 
			
		||||
		$moisASelectionner = $leMois;
 | 
			
		||||
		header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois);
 | 
			
		||||
	}
 | 
			
		||||
//----------------------------------------- MODIFICATION
 | 
			
		||||
if ($action=='editer')
 | 
			
		||||
	{ 
 | 
			
		||||
		include("vues/v_entete.php");
 | 
			
		||||
		$idFrais = $_REQUEST['idFrais'];	
 | 
			
		||||
		$unFrais = $pdo->getUnFraisHorsForfait($idFrais);
 | 
			
		||||
		include("vues/v_unFraisHorsForfait.php");
 | 
			
		||||
	}
 | 
			
		||||
if ($action=='validerModifier')
 | 
			
		||||
	{// mise <20> jour de la ligne et retour vers l'etat des frais
 | 
			
		||||
		$montant = $_REQUEST['zMontant'];
 | 
			
		||||
		if ($montant>0)
 | 
			
		||||
		{
 | 
			
		||||
			$idFrais = $_REQUEST['idFrais'];
 | 
			
		||||
			$date = $_REQUEST['zDate'];
 | 
			
		||||
			$libelle=addslashes($_REQUEST['zLibelle']);
 | 
			
		||||
			$montant = str_replace(",",".",$_REQUEST['zMontant']);
 | 
			
		||||
			$montant = str_replace(" ","",$montant);
 | 
			
		||||
			$pdo->majFraisHorsForfait($idFrais, $date, $libelle, $montant); //mise <20> jour de la table;
 | 
			
		||||
		}
 | 
			
		||||
		$moisASelectionner = $leMois;
 | 
			
		||||
		header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois);
 | 
			
		||||
	}
 | 
			
		||||
//----------------------------------------- SUPPRESSION
 | 
			
		||||
if ($action=='supprimer')
 | 
			
		||||
	{ 
 | 
			
		||||
			
 | 
			
		||||
		
 | 
			
		||||
		
 | 
			
		||||
	 	
 | 
			
		||||
	}
 | 
			
		||||
if ($action=='validerSupprimer')
 | 
			
		||||
	{
 | 
			
		||||
		$montant = $_REQUEST['zMontant'];
 | 
			
		||||
		if ($montant>0)
 | 
			
		||||
		{
 | 
			
		||||
			
 | 
			
		||||
			
 | 
			
		||||
			 
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/AP4 GSB-CahierCharges version 2024.doc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										4
									
								
								docs/Espace de travail.ws
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,4 @@
 | 
			
		||||
@vernum 3
 | 
			
		||||
@code WD_WORKSPACE
 | 
			
		||||
@nom "Espace de travail"
 | 
			
		||||
@i 1 @t 103 @f "MCDGSBLABO.MCD" @n "MCDGSBLabo" @o
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/GSB-ApplisWebPHP-NormesDevlpt.doc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/GSBcomplet.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 134 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/MCDGSBLabo.mcd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/MCDGSBLabo.mcd.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										9611
									
								
								docs/gsb2024.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										9611
									
								
								gsb2024.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								images/Thumbs.db
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								images/ajouter.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/annuler.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 16 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/castel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/cocheB.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/cocheR.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 14 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/cocheV.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 14 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/copyleft.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 457 B  | 
							
								
								
									
										
											BIN
										
									
								
								images/deconnexion.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 57 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/editer.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 16 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/goDernier.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 271 B  | 
							
								
								
									
										
											BIN
										
									
								
								images/goPrecedent.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 597 B  | 
							
								
								
									
										
											BIN
										
									
								
								images/goPremier.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 405 B  | 
							
								
								
									
										
											BIN
										
									
								
								images/goSuivant.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 601 B  | 
							
								
								
									
										
											BIN
										
									
								
								images/logo.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/supprimer.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/validation.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/valider.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 16 KiB  | 
							
								
								
									
										149
									
								
								include/aide javascript.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,149 @@
 | 
			
		||||
http://www.toutjavascript.com/savoir/savoir06_2.php3
 | 
			
		||||
 | 
			
		||||
En javascript, la concat<61>nation se fait avec le caract<63>re plus (+) ou bien grace <20> la m<>thode concat().
 | 
			
		||||
 | 
			
		||||
Dans les deux exemples ci-dessous, la variable cha<68>ne 3 contient la cha<68>ne "Bonjour tout le monde" :
 | 
			
		||||
 | 
			
		||||
var chaine1 = "Bonjour ";
 | 
			
		||||
var chaine2 = "tout le monde";
 | 
			
		||||
var chaine3 = chaine1+chaine2;
 | 
			
		||||
 | 
			
		||||
L'exemple ci-dessus est <20>quivalent <20> l'exemple suivant :
 | 
			
		||||
 | 
			
		||||
var chaine1 = "Bonjour ";
 | 
			
		||||
var chaine2 = "tout le monde";
 | 
			
		||||
var chaine3 = chaine1.concat(chaine2);
 | 
			
		||||
---------------------------------------------------------
 | 
			
		||||
indexOf: Retourne la position d'une sous-cha<68>ne (lettre ou groupe de lettres) dans une cha<68>ne de caract<63>re, en effectuant la recherche de gauche <20> droite, <20> partir de la position sp<73>cifi<66>e en param<61>tre. Retourne -1 si la sous-cha<68>ne n'est pas trouv<75>e dans la cha<68>ne principale.
 | 
			
		||||
 | 
			
		||||
var Chaine = 'Comment <20>a marche?';
 | 
			
		||||
var Sous_Chaine = 'mar';
 | 
			
		||||
var Sous_Chaine_2 = 'zzz';
 | 
			
		||||
 | 
			
		||||
var Resultat = Chaine.indexOf(Sous_Chaine); //Retourne 11
 | 
			
		||||
var Resultat = Chaine.indexOf(Sous_Chaine_2); //Retourne -1
 | 
			
		||||
 | 
			
		||||
---------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
Pour r<>cup<75>rer l'indice la ligne s<>lectionn<6E>e :
 | 
			
		||||
 this.form.elements['liste'].selectedIndex
 | 
			
		||||
Pour r<>cup<75>rer le nombre de lignes :
 | 
			
		||||
 this.form.elements['liste'].options.length
 | 
			
		||||
Pour r<>cup<75>rer la valeur de la ligne s<>lectionn<6E>e :
 | 
			
		||||
 this.form.elements['liste'].options[this.form.elements['liste'].selectedIndex].value 
 | 
			
		||||
 | 
			
		||||
En JavaScript, la structure d'un <20>l<EFBFBD>ment de type SELECT reprend ce sch<63>ma :
 | 
			
		||||
name 		Nom de la liste 	 
 | 
			
		||||
selectedIndex 	Indice de la ligne s<>lectionn<6E>e (ligne 1 : indice=0) 	
 | 
			
		||||
options 	Tableau des lignes 	 
 | 
			
		||||
length 		Nombre de lignes 	
 | 
			
		||||
   value 	Valeur d'une ligne 	
 | 
			
		||||
   text 	Libell<6C> d'une ligne
 | 
			
		||||
 | 
			
		||||
---------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
<FORM>
 | 
			
		||||
    <INPUT type="text" name="zonedetexte" value="Valeur initiale">
 | 
			
		||||
    <INPUT type="button" value="Changer le contenu"
 | 
			
		||||
    onClick=' this.form.zonedetexte.value="NOUVEAU" '>
 | 
			
		||||
</FORM>
 | 
			
		||||
Gr<EFBFBD>ce <20> this.form, on peut acc<63>der au formulaire de l'<27>l<EFBFBD>ment en cours. 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
---------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
Pour donner le focus au champ texte du haut de cette page, il faut appeler la m<>thode focus() sur cet <20>l<EFBFBD>ment.
 | 
			
		||||
document.forms["general"].elements["champ1"].focus() 
 | 
			
		||||
 | 
			
		||||
Pour donner le focus <20> un champ de formulaire <20> l'ouverture de la page, il faut ajouter cette ligne dans la balise BODY :
 | 
			
		||||
onLoad="document.forms['nomduform'].elements['nomchamp'].focus()"
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------
 | 
			
		||||
Pour manipuler les nombres en javascript, il faut utiliser l'objet Math.
 | 
			
		||||
abs()
 | 
			
		||||
 | 
			
		||||
x=Math.abs(y);
 | 
			
		||||
 | 
			
		||||
La m<>thode abs() renvoie la valeur absolue (valeur positive) de y. Il supprime en quelque sorte le signe n<>gatif d'un nombre.
 | 
			
		||||
 | 
			
		||||
y = 4;
 | 
			
		||||
x = math.abs(y);
 | 
			
		||||
x = Math.abs(4);
 | 
			
		||||
x = math.abs(-4);
 | 
			
		||||
ont comme r<>sultat
 | 
			
		||||
x = 4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
ceil()
 | 
			
		||||
 | 
			
		||||
x=Math.ceil(y);
 | 
			
		||||
 | 
			
		||||
La m<>thode ceil() renvoie l'entier sup<75>rieur ou <20>gal <20> y.
 | 
			
		||||
 | 
			
		||||
Attention ! Cette fonction n'arrondit pas le nombre.
 | 
			
		||||
Comme montr<74> dans l'exemple, si y = 1.01, la valeur de x sera mise <20> 2.
 | 
			
		||||
 | 
			
		||||
y=1.01;
 | 
			
		||||
x=Math.ceil(y);
 | 
			
		||||
a comme r<>sultat 2.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
floor()
 | 
			
		||||
 | 
			
		||||
x=Math.floor(y);
 | 
			
		||||
 | 
			
		||||
La m<>thode floor() renvoie l'entier inf<6E>rieur ou <20>gal <20> y.
 | 
			
		||||
 | 
			
		||||
Attention ! Cette fonction n'arrondit pas le nombre.
 | 
			
		||||
Comme montr<74> dans l'exemple, si y = 1.99, la valeur de x sera mise <20> 1.
 | 
			
		||||
 | 
			
		||||
y=1.999;
 | 
			
		||||
x=Math.floor(y);
 | 
			
		||||
a comme r<>sultat 1.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
round()
 | 
			
		||||
 | 
			
		||||
x=Math.round(y);
 | 
			
		||||
 | 
			
		||||
La m<>thode round() arrondit le nombre <20> l'entier le plus proche.
 | 
			
		||||
 | 
			
		||||
y=20.355;
 | 
			
		||||
x=Math.round(y);
 | 
			
		||||
a comme r<>sultat
 | 
			
		||||
x=20;
 | 
			
		||||
 | 
			
		||||
Attention ! Certains calculs r<>clament une plus grande pr<70>cision. Pour avoir deux d<>cimales apr<70>s la virgule, on utilisera la formule :
 | 
			
		||||
 | 
			
		||||
x=(Math.round(y*100))/100;
 | 
			
		||||
et dans ce cas
 | 
			
		||||
x=20.36;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
max()
 | 
			
		||||
 | 
			
		||||
x=Math.max(y,z);
 | 
			
		||||
 | 
			
		||||
La m<>thode max(y,z) renvoie le plus grand des 2 nombres y et z.
 | 
			
		||||
 | 
			
		||||
y=20; z=10;
 | 
			
		||||
x=Math.max(y,z);
 | 
			
		||||
a comme r<>sultat
 | 
			
		||||
x=20;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
min()
 | 
			
		||||
 | 
			
		||||
x=Math.min(y,z);
 | 
			
		||||
 | 
			
		||||
La m<>thode min(y,z) renvoie le plus petit des 2 nombres y et z.
 | 
			
		||||
 | 
			
		||||
y=20; z=10;
 | 
			
		||||
x=Math.min(y,z);
 | 
			
		||||
a comme r<>sultat
 | 
			
		||||
x=10; 
 | 
			
		||||
							
								
								
									
										34
									
								
								include/appelIni.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,34 @@
 | 
			
		||||
stocker le nom d'utilisateur et le mot de passe dans la classe n'est pas une très bonne idée pour le code mis en production ... Une bonne solution consiste a stocker les paramètres de connexion à la base de données dans un fichier .ini et à en restreindre l'accès. Par exemple de cette façon:
 | 
			
		||||
 | 
			
		||||
private static $serveur='mysql:host=localhost';
 | 
			
		||||
      	private static $bdd='dbname=gsb2021';   		
 | 
			
		||||
      	private static $user='root' ;    		
 | 
			
		||||
      	private static $mdp='root' ;
 | 
			
		||||
		
 | 
			
		||||
gsb.ini:
 | 
			
		||||
[database]
 | 
			
		||||
driver = mysql
 | 
			
		||||
host = localhost
 | 
			
		||||
port = 3306
 | 
			
		||||
schema = gsb2021
 | 
			
		||||
username = root
 | 
			
		||||
password = root	
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
Database connection:
 | 
			
		||||
<?php
 | 
			
		||||
class MyPDO extends PDO
 | 
			
		||||
{
 | 
			
		||||
    public function __construct($file = 'gsb.ini')
 | 
			
		||||
    {
 | 
			
		||||
        if (!$settings = parse_ini_file($file, TRUE)) throw new exception('acces impossible ' . $file . '.');
 | 
			
		||||
       
 | 
			
		||||
        $dns = $settings['database']['driver'] .
 | 
			
		||||
        ':host=' . $settings['database']['host'] .
 | 
			
		||||
        ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
 | 
			
		||||
        ';dbname=' . $settings['database']['schema'];
 | 
			
		||||
       
 | 
			
		||||
        parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										632
									
								
								include/class.pdogsb.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,632 @@
 | 
			
		||||
<?php
 | 
			
		||||
/** derniere modification le 124/12/2023 à 09h40 par Pascal BLAIN (attention a la casse !)
 | 
			
		||||
 | 
			
		||||
 * Classe d'acces aux donnees. 
 | 
			
		||||
 * Utilise les services de la classe PDO pour l'application GSB
 | 
			
		||||
 * Les attributs sont tous statiques, les 4 premiers pour la connexion
 | 
			
		||||
 * $monPdo de type PDO 
 | 
			
		||||
 * $monPdoGsb qui contiendra l'unique instance de la classe
 | 
			
		||||
 
 | 
			
		||||
 * @link       http://www.php.net/manual/fr/book.pdo.php
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
class PdoGsb
 | 
			
		||||
{
 | 
			
		||||
	private static $serveur = 'pgsql:host=localhost';
 | 
			
		||||
	private static $bdd = 'dbname=gsb2024';
 | 
			
		||||
	private static $user = 'postgres';
 | 
			
		||||
	private static $mdp = 'postgres';
 | 
			
		||||
	private static $monPdo;
 | 
			
		||||
	private static $monPdoGsb = null;
 | 
			
		||||
	/**
 | 
			
		||||
	 * Constructeur prive, cree l'instance de PDO qui sera sollicitee
 | 
			
		||||
	 * pour toutes les methodes de la classe
 | 
			
		||||
	 */
 | 
			
		||||
	private function __construct()
 | 
			
		||||
	{
 | 
			
		||||
		PdoGsb::$monPdo = new PDO(PdoGsb::$serveur . ';' . PdoGsb::$bdd, PdoGsb::$user, PdoGsb::$mdp);
 | 
			
		||||
 | 
			
		||||
		//PdoGsb::$monPdo->query("SET CHARACTER SET utf8");SET client_encoding = 'UTF8'; 
 | 
			
		||||
	}
 | 
			
		||||
	public function _destruct()
 | 
			
		||||
	{
 | 
			
		||||
		PdoGsb::$monPdo = null;
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * Fonction statique qui cree l'unique instance de la classe
 | 
			
		||||
	 * Appel : $instancePdoGsb = PdoGsb::getPdoGsb();
 | 
			
		||||
	 * @return l'unique objet de la classe PdoGsb
 | 
			
		||||
	 */
 | 
			
		||||
	public static function getPdoGsb()
 | 
			
		||||
	{
 | 
			
		||||
		if (PdoGsb::$monPdoGsb == null) {
 | 
			
		||||
			PdoGsb::$monPdoGsb = new PdoGsb();
 | 
			
		||||
		}
 | 
			
		||||
		return PdoGsb::$monPdoGsb;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne les informations d'un utilisateur
 | 
			
		||||
	 * @param $login 
 | 
			
		||||
	 * @param $mdp
 | 
			
		||||
	 * @return l'id, le nom et le prenom sous la forme d'un tableau associatif 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getInfosUtilisateur($login, $mdp)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "select \"uId\" as id, \"uNom\" as nom, \"uPrenom\" as prenom, \"uStatut\" as statut
 | 
			
		||||
				from utilisateur
 | 
			
		||||
				where \"uLogin\"='$login' 
 | 
			
		||||
				and \"uMdp\"='$mdp'";
 | 
			
		||||
		$req = $this->entourerNoms($req);
 | 
			
		||||
		//echo $req;
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$ligne = $rs->fetch();
 | 
			
		||||
		return $ligne;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne les informations de la table Visiteur
 | 
			
		||||
	 * @return un tableau associatif 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesVisiteurs()
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne deux valeurs indiquant si un ajout de frais est possible
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @paral etatRemboursement
 | 
			
		||||
	 */
 | 
			
		||||
	public function getAjoutFraisPossible($idVisiteur, $leMois, $etatRemboursement)
 | 
			
		||||
	{
 | 
			
		||||
		$possible = array('forfait' => "non", 'horsForfait' => "non", 'modifComptable' => 'non');
 | 
			
		||||
		if ($_SESSION['statut'] == '1' && $etatRemboursement == 'CR') {
 | 
			
		||||
			$req = "select	count(*) as nbForfaits
 | 
			
		||||
				from	forfait 
 | 
			
		||||
				where	fId not in (select lfForfait
 | 
			
		||||
									from ligneForfait
 | 
			
		||||
									where lfVisiteur='$idVisiteur' 
 | 
			
		||||
									and lfMois = '$leMois')";
 | 
			
		||||
			//$req = $this->entourerNoms($req);									
 | 
			
		||||
			$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
			if ($rs === false) {
 | 
			
		||||
				afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
			}
 | 
			
		||||
			$laLigne = $rs->fetch();
 | 
			
		||||
			if ($laLigne['nbForfaits'] == 0 ? $possible = array('forfait' => "non", 'horsForfait' => "oui", 'modifComptable' => 'non') : $possible = array('forfait' => "oui", 'horsForfait' => "oui", 'modifComptable' => 'non'))
 | 
			
		||||
				;
 | 
			
		||||
		} else {
 | 
			
		||||
			if ($_SESSION['statut'] != '1' && $etatRemboursement == 'CL') {
 | 
			
		||||
				$possible = array('forfait' => "non", 'horsForfait' => "non", 'modifComptable' => "oui");
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return $possible;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne les informations pour ajout d'un nouveau frais forfaitaire
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @return l'id, le libell, le montant sous la forme d'un tableau associatif 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesForfaitsPossibles()
 | 
			
		||||
	{
 | 
			
		||||
		$req = "select	\"fId\", \"fLibelle\", \"fMontant\"
 | 
			
		||||
				from	forfait";
 | 
			
		||||
		//$req = $this->entourerNoms($req); 
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$lesLignes = $rs->fetchAll();
 | 
			
		||||
		return $lesLignes;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne le tarif KM pour un motorisation et une puissance donnee a une date 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getPrixKm($idVisiteur, $leMois)
 | 
			
		||||
	{
 | 
			
		||||
		$laDate = substr($leMois, 0, 4) . '-' . substr($leMois, 4, 2) . '-01';
 | 
			
		||||
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/** 
 | 
			
		||||
	 * Retourne sous forme d'un tableau associatif toutes les lignes de frais hors forfait concernees par les deux arguments
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @return tous les champs des lignes de frais hors forfait sous la forme d'un tableau associatif 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesFraisHorsForfait($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$lesLignes = $rs->fetchAll();
 | 
			
		||||
		return $lesLignes;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesFraisReportes($idVisiteur, $mois, $justifies)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$lesLignes = $rs->fetchAll();
 | 
			
		||||
		return $lesLignes;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne le nombre de justificatif d'un Visiteurpour un mois donnee
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @return le nombre entier de justificatifs 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getNbjustificatifs($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne['nb'];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne le montant valide pour un remboursement (cumul des frais forfaitaires et des autres depenses (hors forfaits)
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @return le montant 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getMontantValide($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		$montantValide = $laLigne['montant'];
 | 
			
		||||
		return $montantValide;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne sous forme d'un tableau associatif toutes les lignes de frais au forfait concernees par les deux arguments
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @return l'id, le libelle et la quantite sous la forme d'un tableau associatif 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesFraisForfait($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$lesLignes = $rs->fetchAll();
 | 
			
		||||
		return $lesLignes;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Met a jour la table ligneForfait pour un Visiteur et un mois donne en enregistrant le nouveau montant
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @param $qte
 | 
			
		||||
	 */
 | 
			
		||||
	public function getUnFraisForfait($idVisiteur, $mois, $forfait)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "select lfVisiteur, lfMois, lfForfait, lfQuantite, lfMontant, fLibelle
 | 
			
		||||
				from ligneForfait inner join forfait on ligneForfait.lfForfait=forfait.fId
 | 
			
		||||
				where lfVisiteur= '$idVisiteur' 
 | 
			
		||||
				and lfMois = '$mois'
 | 
			
		||||
				and lfForfait = '$forfait'";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Met a jour la table ligneForfait pour un Visiteur et un mois donne en enregistrant le nouveau montant
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @param $qte
 | 
			
		||||
	 */
 | 
			
		||||
	public function majFraisForfait($idVisiteur, $mois, $forfait, $qte)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * supprime une ligneForfait pour un Visiteur et un mois donne 
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @param $forfait
 | 
			
		||||
	 */
 | 
			
		||||
	public function supprimerFraisForfait($idVisiteur, $mois, $forfait)
 | 
			
		||||
	{
 | 
			
		||||
		$req = $req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * ajoute une ligne dans la table ligneForfait pour un Visiteur et un mois donne
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @param $forfait
 | 
			
		||||
	 * @param $qte
 | 
			
		||||
	 * @param $montant
 | 
			
		||||
	 */
 | 
			
		||||
	public function ajoutFraisForfait($idVisiteur, $mois, $forfait, $qte, $montant)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Met a jour la table ligneForfait pour un Visiteur et un mois donne en enregistrant le nouveau montant
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @param $qte
 | 
			
		||||
	 */
 | 
			
		||||
	public function getUnFraisHorsForfait($idFrais)
 | 
			
		||||
	{
 | 
			
		||||
		$req = $req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Met ajour la table ligneHorsForfait (nouvelles valeurs)
 | 
			
		||||
	 */
 | 
			
		||||
	public function majFraisHorsForfait($idFrais, $date, $libelle, $montant)
 | 
			
		||||
	{
 | 
			
		||||
		$dateFr = dateFrancaisVersAnglais($date);
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Met a jour la table ligneHorsForfait pour report au mois suivant
 | 
			
		||||
	 */
 | 
			
		||||
	public function transfertFraisHorsForfait($idFrais, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Cree un nouveau frais hors forfait pour un Visiteurun mois donne a partir des parametres
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @param $libelle : le libelle du frais
 | 
			
		||||
	 * @param $date : la date du frais au format français jj//mm/aaaa
 | 
			
		||||
	 * @param $montant : le montant
 | 
			
		||||
	 */
 | 
			
		||||
	public function ajoutFraisHorsForfait($idVisiteur, $mois, $date, $libelle, $montant)
 | 
			
		||||
	{
 | 
			
		||||
		$dateFr = dateFrancaisVersAnglais($date);
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Supprime le frais hors forfait dont l'id est passe en argument 
 | 
			
		||||
	 * @param $idFrais 
 | 
			
		||||
	 */
 | 
			
		||||
	public function supprimerFraisHorsForfait($idFrais, $libelle)
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne les mois pour lesquel un Visiteura une fiche de frais 
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @return un tableau associatif de clefs un mois -aaaamm- et de valeurs l'anne et le mois correspondant 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesMoisDisponibles($idVisiteur)
 | 
			
		||||
	{
 | 
			
		||||
		$tabMois = array('01' => "Janvier",
 | 
			
		||||
			'02' => "Février",
 | 
			
		||||
			'03' => "Mars",
 | 
			
		||||
			'04' => "Avril",
 | 
			
		||||
			'05' => "Mai",
 | 
			
		||||
			'06' => "Juin",
 | 
			
		||||
			'07' => "Juillet",
 | 
			
		||||
			'08' => "Août",
 | 
			
		||||
			'09' => "Septembre",
 | 
			
		||||
			'10' => "Octobre",
 | 
			
		||||
			'11' => "Novembre",
 | 
			
		||||
			'12' => "Décembre");
 | 
			
		||||
		$req = "select	\"rMois\" as mois 
 | 
			
		||||
				from 	remboursement 
 | 
			
		||||
				where	\"rVisiteur\"='$idVisiteur' ";
 | 
			
		||||
		if ($_SESSION['statut'] <> '1') {
 | 
			
		||||
			$req = $req . "and	\"rEtat\"<>'CR'";
 | 
			
		||||
		}
 | 
			
		||||
		$req = $req . " order by \"rMois\" desc limit 12";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		$lesMois = array();
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		while ($laLigne != null) {
 | 
			
		||||
			$mois = $laLigne['mois'];
 | 
			
		||||
			$numAnnee = substr($mois, 0, 4);
 | 
			
		||||
			$numMois = $tabMois[substr($mois, 4, 2)];
 | 
			
		||||
			$lesMois["$mois"] = array("mois" => "$mois", "numAnnee" => "$numAnnee", "numMois" => "$numMois");
 | 
			
		||||
			$laLigne = $rs->fetch();
 | 
			
		||||
		}
 | 
			
		||||
		return $lesMois;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 */
 | 
			
		||||
	public function existeRemboursement($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "select	count(*) as nb
 | 
			
		||||
				from	remboursement
 | 
			
		||||
				where	\"rVisiteur\"='$idVisiteur'
 | 
			
		||||
				and		\"rMois\"='$mois'";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne['nb'];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 */
 | 
			
		||||
	public function getNbRemboursementsAValider()
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1 as nb;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne['nb'];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 */
 | 
			
		||||
	public function creeNouveauRemboursement($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne les informations d'une fiche de frais d'un Visiteur pour un mois donne
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 * @return un tableau avec des champs de jointure entre une fiche de frais et la ligne d'etat 
 | 
			
		||||
	 */
 | 
			
		||||
	public function getInfosRemboursement($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$laLigne = $rs->fetch();
 | 
			
		||||
		return $laLigne;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Actualise le montant valide et le nb de justificatifs recus 
 | 
			
		||||
	 */
 | 
			
		||||
	public function valideRemboursement($idVisiteur, $mois)
 | 
			
		||||
	{
 | 
			
		||||
		$NbJustificatifs = $this->getNbjustificatifs($idVisiteur, $mois);
 | 
			
		||||
		$montantValide = $this->getMontantValide($idVisiteur, $mois);
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Modifie l'etat et la date de modification d'une fiche de frais
 | 
			
		||||
	 * Modifie le champ idEtat et met la date de modif a aujourd'hui
 | 
			
		||||
	 * @param $idVisiteur 
 | 
			
		||||
	 * @param $mois sous la forme aaaamm
 | 
			
		||||
	 */
 | 
			
		||||
	public function majRemboursement($idVisiteur, $mois, $etat)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "update	remboursement set \"rEtat\" = '$etat', \"rDateModif\" = now() 
 | 
			
		||||
				where	\"rVisiteur\"='$idVisiteur' 
 | 
			
		||||
				and 	\"rMois\"='$mois'";
 | 
			
		||||
		PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Clos les fiches de frais
 | 
			
		||||
	 * Modifie le champ idEtat et met la date de modif a aujourd'hui
 | 
			
		||||
	 */
 | 
			
		||||
	public function clotureMois($mois)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT 1;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		//PdoGsb::$monPdo->exec($req);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne les informations de la table TYPEPARAMETRE
 | 
			
		||||
	 */
 | 
			
		||||
	public function getLesParametres()
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT \"tlId\", \"tlLibelle\", \"tlBooleen\", \"tlChoixMultiple\", \"tlCumul\"
 | 
			
		||||
					FROM \"typeParametre\"
 | 
			
		||||
					ORDER BY \"tlLibelle\";";
 | 
			
		||||
		$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$lesLignes = $rs->fetchAll();
 | 
			
		||||
		return $lesLignes;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne dans un tableau associatif les informations de la table PARAMETRE (pour un type particulier)
 | 
			
		||||
	 */
 | 
			
		||||
	public function getParametre($type)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "SELECT \"pIndice\", \"pLibelle\"
 | 
			
		||||
				FROM parametre
 | 
			
		||||
				WHERE \"pType\"='$type'
 | 
			
		||||
				ORDER by \"pIndice\";";
 | 
			
		||||
		//echo $req;
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la recherche des parametres dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$lesLignes = $rs->fetchAll();
 | 
			
		||||
		return $lesLignes;
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * Retourne dans un tableau associatifles informations de la table PARAMETRE (pour un type particulier)
 | 
			
		||||
	 */
 | 
			
		||||
	public function getInfosParam($type, $valeur)
 | 
			
		||||
	{
 | 
			
		||||
		if ($valeur == "NULL") {
 | 
			
		||||
			$req = "SELECT \"pType\", max(\"pIndice\")+1 AS pIndice, ' ' AS pLibelle, \"tlLibelle\", \"pPlancher\", \"pPlafond\"
 | 
			
		||||
						 FROM parametre INNER JOIN \"typeParametre\" ON \"typeParametre\".\"tlId\"=parametre.\"pType\"
 | 
			
		||||
						 WHERE pType='$type';";
 | 
			
		||||
		} else {
 | 
			
		||||
			$req = "SELECT \"pType\", \"pIndice\", \"pLibelle\", \"tlLibelle\", \"pPlancher\", \"pPlafond\"
 | 
			
		||||
						 FROM parametre INNER JOIN \"typeParametre\" ON \"typeParametre\".\"tlId\"=parametre.\"pType\"
 | 
			
		||||
						 WHERE \"pType\"='$type'
 | 
			
		||||
						 AND \"pIndice\" like '$valeur';";
 | 
			
		||||
		}
 | 
			
		||||
		$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
		$ligne = $rs->fetch();
 | 
			
		||||
		return $ligne;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Met a jour une ligne de la table PARAMETRE
 | 
			
		||||
	 */
 | 
			
		||||
	public function majParametre($type, $valeur, $libelle, $territoire, $dep, $plancher, $plafond)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "UPDATE parametre SET \"pLibelle\"='$libelle', \"pPlancher\"=$plancher, \"pPlafond\"=$plafond
 | 
			
		||||
					WHERE \"pType\"='$type'
 | 
			
		||||
					AND \"pIndice\"=$valeur;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->exec($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la mise a jour des parametres dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * supprime une ligne de la table PARAMETRE 
 | 
			
		||||
	 */
 | 
			
		||||
	public function supprimeParametre($type, $valeur)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "DELETE 
 | 
			
		||||
				FROM parametre
 | 
			
		||||
				WHERE \"pType\"='$type'
 | 
			
		||||
				AND \"pIndice\"=$valeur;";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->exec($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de la suppression d'un parametre dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * ajoute une ligne dans la table PARAMETRE
 | 
			
		||||
	 */
 | 
			
		||||
	public function ajoutParametre($type, $valeur, $libelle, $territoire, $dep, $plancher, $plafond)
 | 
			
		||||
	{
 | 
			
		||||
		$req = "INSERT INTO parametre 
 | 
			
		||||
					(\"pType\", \"pIndice\", \"pLibelle\", \"pPlancher\", \"pPlafond\") 
 | 
			
		||||
					VALUES ('$type', $valeur, '$libelle', $plancher, $plafond);";
 | 
			
		||||
		//$req = $this->entourerNoms($req);
 | 
			
		||||
		$rs = PdoGsb::$monPdo->exec($req);
 | 
			
		||||
		if ($rs === false) {
 | 
			
		||||
			afficherErreurSQL("Probleme lors de l'insertion d'un parametre dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * Fonction pour entourer les noms de tables et de champs par des guillemets doubles
 | 
			
		||||
	 */
 | 
			
		||||
	private function entourerNoms($requete)
 | 
			
		||||
	{
 | 
			
		||||
		$pattern = '/SELECT(.*?)[\n\r\s]FROM/i';
 | 
			
		||||
		echo 'le patron : ' . $pattern . ' la requete : ' . $requete;
 | 
			
		||||
		preg_match_all($pattern, $requete, $matches);
 | 
			
		||||
 | 
			
		||||
		if (isset($matches[1])) {
 | 
			
		||||
			var_dump($matches);
 | 
			
		||||
			foreach ($matches[1] as $match) {
 | 
			
		||||
				// Ajouter des guillemets doubles autour des noms de tables et de champs
 | 
			
		||||
				$noms_entoures = preg_replace_callback('/\b([A-Za-z_][A-Za-z0-9_]*)\b/', function ($match) {
 | 
			
		||||
					return '\"' . $match[0] . '\"';
 | 
			
		||||
				}, $match);
 | 
			
		||||
 | 
			
		||||
				$requete = str_replace($match, $noms_entoures, $requete);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		//echo $requete;
 | 
			
		||||
		return $requete;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										202
									
								
								include/fct.inc.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,202 @@
 | 
			
		||||
<?php
 | 
			
		||||
/** 
 | 
			
		||||
 * Fonctions pour l'application GSB
 | 
			
		||||
 
 | 
			
		||||
 * @package default
 | 
			
		||||
 * @author PB et GM
 | 
			
		||||
 * @version    3.0 version MVC modifiee le 03/05/2023 à 11H01 par Blain Pascal
 | 
			
		||||
 */
 | 
			
		||||
 /**
 | 
			
		||||
 * Teste si un quelconque visiteur est connecté
 | 
			
		||||
 * @return vrai ou faux 
 | 
			
		||||
 */
 | 
			
		||||
function estConnecte(){
 | 
			
		||||
  return isset($_SESSION['idUtilisateur']);
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Enregistre dans une variable session les infos d'un visiteur
 | 
			
		||||
 * @param $idUtilisateur 
 | 
			
		||||
 * @param $idVisiteur  
 | 
			
		||||
 * @param $nom
 | 
			
		||||
 * @param $prenom
 | 
			
		||||
 * @param $typeUtilisateur
 | 
			
		||||
 */
 | 
			
		||||
function connecter($id,$nom,$prenom,$statut){
 | 
			
		||||
	$_SESSION['idUtilisateur']= $id;
 | 
			
		||||
	$_SESSION['idVisiteur']= $id; 
 | 
			
		||||
	$_SESSION['nom']= $nom;
 | 
			
		||||
	$_SESSION['prenom']= $prenom;
 | 
			
		||||
	$_SESSION['statut']= $statut;
 | 
			
		||||
	if ($statut=='1') $_SESSION['typeUtilisateur'] = 'Visiteur';
 | 
			
		||||
	if ($statut=='2') $_SESSION['typeUtilisateur'] = 'Administrateur';
 | 
			
		||||
	if ($statut=='0') $_SESSION['typeUtilisateur'] = 'Comptable';
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Detruit la session active
 | 
			
		||||
 */
 | 
			
		||||
function deconnecter(){
 | 
			
		||||
	session_destroy();
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Transforme une date au format français jj/mm/aaaa vers le format anglais aaaa-mm-jj
 | 
			
		||||
 * @param $madate au format  jj/mm/aaaa
 | 
			
		||||
 * @return la date au format anglais aaaa-mm-jj
 | 
			
		||||
*/
 | 
			
		||||
function dateFrancaisVersAnglais($maDate){
 | 
			
		||||
	@list($jour,$mois,$annee) = explode('/',$maDate);
 | 
			
		||||
	return date('Y-m-d',mktime(0,0,0,$mois,$jour,$annee));
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Transforme une date au format format anglais aaaa-mm-jj vers le format français jj/mm/aaaa 
 | 
			
		||||
 * @param $madate au format  aaaa-mm-jj
 | 
			
		||||
 * @return la date au format format français jj/mm/aaaa
 | 
			
		||||
*/
 | 
			
		||||
function dateAnglaisVersFrancais($maDate)
 | 
			
		||||
{
 | 
			
		||||
   @list($annee,$mois,$jour)=explode('-',$maDate);
 | 
			
		||||
   $date="$jour"."/".$mois."/".$annee;
 | 
			
		||||
   return $date;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * retourne le mois au format aaaamm selon le jour dans le mois
 | 
			
		||||
 * @param $date au format  jj/mm/aaaa
 | 
			
		||||
 * @return le mois au format aaaamm
 | 
			
		||||
*/
 | 
			
		||||
function getMois($date)
 | 
			
		||||
{
 | 
			
		||||
		@list($jour,$mois,$annee) = explode('/',$date);
 | 
			
		||||
		if(strlen($mois) == 1){
 | 
			
		||||
			$mois = "0".$mois;
 | 
			
		||||
		}
 | 
			
		||||
		return $annee.$mois;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* gestion des erreurs*/
 | 
			
		||||
/**
 | 
			
		||||
 * Indique si une valeur est un entier positif ou nul
 | 
			
		||||
 * @param $valeur
 | 
			
		||||
 * @return vrai ou faux
 | 
			
		||||
*/
 | 
			
		||||
function estEntierPositif($valeur) 
 | 
			
		||||
{
 | 
			
		||||
	return preg_match("/[^0-9]/", $valeur) == 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Indique si un tableau de valeurs est constitué d'entiers positifs ou nuls
 | 
			
		||||
 * @param $tabEntiers : le tableau
 | 
			
		||||
 * @return vrai ou faux
 | 
			
		||||
*/
 | 
			
		||||
function estTableauEntiers($tabEntiers) 
 | 
			
		||||
{
 | 
			
		||||
	$ok = true;
 | 
			
		||||
	foreach($tabEntiers as $unEntier)
 | 
			
		||||
	{
 | 
			
		||||
		if(!estEntierPositif($unEntier)){$ok=false;}
 | 
			
		||||
	}
 | 
			
		||||
	return $ok;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Vérifie si une date est inférieure d'un an à la date actuelle
 | 
			
		||||
 * @param $dateTestee 
 | 
			
		||||
 * @return vrai ou faux
 | 
			
		||||
*/
 | 
			
		||||
function estDateDepassee($dateTestee)
 | 
			
		||||
{
 | 
			
		||||
	$dateActuelle=date("d/m/Y");
 | 
			
		||||
	@list($jour,$mois,$annee) = explode('/',$dateActuelle);
 | 
			
		||||
	$annee--;
 | 
			
		||||
	$AnPasse = $annee.$mois.$jour;
 | 
			
		||||
	@list($jourTeste,$moisTeste,$anneeTeste) = explode('/',$dateTestee);
 | 
			
		||||
	return ($anneeTeste.$moisTeste.$jourTeste < $AnPasse); 
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Vérifie la validité du format d'une date française jj/mm/aaaa 
 | 
			
		||||
 * @param $date 
 | 
			
		||||
 * @return vrai ou faux
 | 
			
		||||
*/
 | 
			
		||||
function estDateValide($date){
 | 
			
		||||
	$tabDate = explode('/',$date);
 | 
			
		||||
	$dateOK = true;
 | 
			
		||||
	if (count($tabDate) != 3) {
 | 
			
		||||
	    $dateOK = false;
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
		if (!estTableauEntiers($tabDate)) {
 | 
			
		||||
			$dateOK = false;
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			if (!checkdate($tabDate[1], $tabDate[0], $tabDate[2])) {
 | 
			
		||||
				$dateOK = false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
    }
 | 
			
		||||
	return $dateOK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Verifie que le tableau de frais ne contient que des valeurs numeriques 
 | 
			
		||||
 * @param $lesFrais 
 | 
			
		||||
 * @return vrai ou faux
 | 
			
		||||
*/
 | 
			
		||||
function lesQteFraisValides($lesFrais){
 | 
			
		||||
	return estTableauEntiers($lesFrais);
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Vérifie la validité des trois arguments : la date, le libellé du frais et le montant 
 | 
			
		||||
 * des message d'erreurs sont ajoutés au tableau des erreurs
 | 
			
		||||
 * @param $dateFrais 
 | 
			
		||||
 * @param $libelle 
 | 
			
		||||
 * @param $montant
 | 
			
		||||
 */
 | 
			
		||||
function valideInfosFrais($dateFrais,$libelle,$montant){
 | 
			
		||||
	if($dateFrais==""){
 | 
			
		||||
		ajouterErreur("Le champ date ne doit pas etre vide");
 | 
			
		||||
	}
 | 
			
		||||
	else{
 | 
			
		||||
		if(!estDatevalide($dateFrais)){
 | 
			
		||||
			ajouterErreur("Date invalide");
 | 
			
		||||
		}	
 | 
			
		||||
		else{
 | 
			
		||||
			if(estDateDepassee($dateFrais)){
 | 
			
		||||
				ajouterErreur("date d'enregistrement du frais dépassé, plus de 1 an");
 | 
			
		||||
			}			
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if($libelle == ""){
 | 
			
		||||
		ajouterErreur("Le champ description ne peut pas etre vide");
 | 
			
		||||
	}
 | 
			
		||||
	if($montant == ""){
 | 
			
		||||
		ajouterErreur("Le champ montant ne peut pas etre vide");
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		if( !is_numeric($montant) ){
 | 
			
		||||
			ajouterErreur("Le champ montant doit être numérique");
 | 
			
		||||
		}
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Ajoute le libelle d'une erreur au tableau des erreurs 
 | 
			
		||||
 
 | 
			
		||||
 * @param $msg : le libellé de l'erreur 
 | 
			
		||||
 */
 | 
			
		||||
function ajouterErreur($msg){
 | 
			
		||||
   if (! isset($_REQUEST['erreurs'])){
 | 
			
		||||
      $_REQUEST['erreurs']=array();
 | 
			
		||||
	} 
 | 
			
		||||
   $_REQUEST['erreurs'][]=$msg;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Retoune le nombre de lignes du tableau des erreurs 
 | 
			
		||||
 
 | 
			
		||||
 * @return le nombre d'erreurs
 | 
			
		||||
 */
 | 
			
		||||
function nbErreurs(){
 | 
			
		||||
   if (!isset($_REQUEST['erreurs'])){
 | 
			
		||||
	   return 0;
 | 
			
		||||
	}
 | 
			
		||||
	else{
 | 
			
		||||
	   return count($_REQUEST['erreurs']);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										7
									
								
								include/gsb.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,7 @@
 | 
			
		||||
[database]
 | 
			
		||||
driver = mysql
 | 
			
		||||
host = localhost
 | 
			
		||||
port = 3306
 | 
			
		||||
schema = gsb2021
 | 
			
		||||
username = root
 | 
			
		||||
password = root	
 | 
			
		||||
							
								
								
									
										71
									
								
								include/menu.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,71 @@
 | 
			
		||||
<div class="col-auto col-md-3 col-xl-2 px-sm-2 px-0 bg-dark">
 | 
			
		||||
    <div class="d-flex flex-column align-items-center align-items-sm-start px-3 pt-2 text-white min-vh-100">
 | 
			
		||||
        <a href="/" class="d-flex align-items-center pb-3 mb-md-0 me-md-auto text-white text-decoration-none">
 | 
			
		||||
            <span class="fs-5 d-none d-sm-inline">GSB LABORATOIRE</span>
 | 
			
		||||
        </a>
 | 
			
		||||
        <ul class="nav nav-pills flex-column mb-sm-auto mb-0 align-items-center align-items-sm-start" id="menu">
 | 
			
		||||
            <li class="nav-item">
 | 
			
		||||
                <a href="../index.php" class="nav-link align-middle px-0">
 | 
			
		||||
                    <i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">Home</span>
 | 
			
		||||
                </a>
 | 
			
		||||
            </li>
 | 
			
		||||
            <!-- 
 | 
			
		||||
                            Partie visiteur
 | 
			
		||||
                         -->
 | 
			
		||||
            <li>
 | 
			
		||||
                <a href="#submenu1" data-bs-toggle="collapse" class="nav-link px-0 align-middle">
 | 
			
		||||
                    <i class="fs-4 bi-speedometer2"></i> <span class="ms-1 d-none d-sm-inline">Fiche de frais</span>
 | 
			
		||||
                </a>
 | 
			
		||||
                <ul class="collapse show nav flex-column ms-1" id="submenu1" data-bs-parent="#menu">
 | 
			
		||||
                    <li class="w-100">
 | 
			
		||||
                        <a href="vues/v_gestionFiches.php" class="nav-link px-0"> <span class="d-none d-sm-inline">Gérer ses fiches</span>
 | 
			
		||||
                        </a>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    <li>
 | 
			
		||||
                        <a href="#" class="nav-link px-0"> <span class="d-none d-sm-inline">Nouvelle Fiche</span>
 | 
			
		||||
                        </a>
 | 
			
		||||
                    </li>
 | 
			
		||||
                </ul>
 | 
			
		||||
            </li>
 | 
			
		||||
            <li>
 | 
			
		||||
                <a href="#" class="nav-link px-0 align-middle">
 | 
			
		||||
                    <i class="fs-4 bi-table"></i> <span class="ms-1 d-none d-sm-inline">Visites</span></a>
 | 
			
		||||
            </li>
 | 
			
		||||
 | 
			
		||||
            <!-- 
 | 
			
		||||
                Partie comptable
 | 
			
		||||
             -->
 | 
			
		||||
            <li>
 | 
			
		||||
                <a href="#submenu2" data-bs-toggle="collapse" class="nav-link px-0 align-middle">
 | 
			
		||||
                    <i class="fs-4 bi-speedometer2"></i> <span class="ms-1 d-none d-sm-inline">Fiche de frais</span>
 | 
			
		||||
                </a>
 | 
			
		||||
                <ul class="collapse show nav flex-column ms-1" id="submenu2" data-bs-parent="#menu">
 | 
			
		||||
                    <li class="w-100">
 | 
			
		||||
                        <a href="#" class="nav-link px-0"> <span class="d-none d-sm-inline">A valider</span>
 | 
			
		||||
                        </a>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    <li>
 | 
			
		||||
                        <a href="#" class="nav-link px-0"> <span class="d-none d-sm-inline">Historique</span>
 | 
			
		||||
                        </a>
 | 
			
		||||
                    </li>
 | 
			
		||||
                </ul>
 | 
			
		||||
            </li>
 | 
			
		||||
        </ul>
 | 
			
		||||
        <hr>
 | 
			
		||||
        <div class="dropdown pb-4">
 | 
			
		||||
            <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle"
 | 
			
		||||
                id="dropdownUser1" data-bs-toggle="dropdown" aria-expanded="false">
 | 
			
		||||
 | 
			
		||||
                <span class="d-none d-sm-inline mx-1">Nom</span>
 | 
			
		||||
            </a>
 | 
			
		||||
            <ul class="dropdown-menu dropdown-menu-dark text-small shadow" aria-labelledby="dropdownUser1">
 | 
			
		||||
                <li><a class="dropdown-item" href="#">Settings</a></li>
 | 
			
		||||
                <li><a class="dropdown-item" href="#">Profile</a></li>
 | 
			
		||||
                <li>
 | 
			
		||||
                    <hr class="dropdown-divider">
 | 
			
		||||
                </li>
 | 
			
		||||
                <li><a class="dropdown-item" href="#">Sign out</a></li>
 | 
			
		||||
            </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										100
									
								
								include/proceduresJava.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,100 @@
 | 
			
		||||
if(document.images) /* PRECHARGEMENT DE L IMAGE DANS LE CACHE DU NAVIGATEUR */
 | 
			
		||||
	{
 | 
			
		||||
	zTous = new Image;
 | 
			
		||||
	zTous = "images/cocheR.gif";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
function format_euro(valeur) 
 | 
			
		||||
{
 | 
			
		||||
// formate un nombre avec 2 chiffres apr<70>s la virgule et un espace separateur de milliers
 | 
			
		||||
	var ndecimal=2;
 | 
			
		||||
	var separateur=' ';
 | 
			
		||||
	var deci=Math.round( Math.pow(10,ndecimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
 | 
			
		||||
	var val=Math.floor(Math.abs(valeur));
 | 
			
		||||
	if ((ndecimal==0)||(deci==Math.pow(10,ndecimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
 | 
			
		||||
	var val_format=val+"";
 | 
			
		||||
	var nb=val_format.length;
 | 
			
		||||
	for (var i=1;i<4;i++) 
 | 
			
		||||
	{
 | 
			
		||||
		if (val>=Math.pow(10,(3*i))) 
 | 
			
		||||
		{
 | 
			
		||||
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if (ndecimal>0) 
 | 
			
		||||
	{
 | 
			
		||||
		var decim=""; 
 | 
			
		||||
		for (var j=0;j<(ndecimal-deci.toString().length);j++) {decim+="0";}
 | 
			
		||||
		deci=decim+deci.toString();
 | 
			
		||||
		val_format=val_format+","+deci;
 | 
			
		||||
	}
 | 
			
		||||
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
 | 
			
		||||
	return val_format;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ========================= fonctions de navigation dans les listes (mois/visiteurs)
 | 
			
		||||
function premier(statut)
 | 
			
		||||
	{ 
 | 
			
		||||
	if (statut=='V') {
 | 
			
		||||
		document.choixM.lstMois.value = document.choixM.lstMois.options[0].value;
 | 
			
		||||
		document.choixM.submit();}
 | 
			
		||||
	else { 
 | 
			
		||||
		document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[0].value;
 | 
			
		||||
		document.choixV.submit();}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
function precedent(statut)
 | 
			
		||||
	{
 | 
			
		||||
	if (statut=='V') {
 | 
			
		||||
		document.choixM.lstMois.value = document.choixM.lstMois.options[Math.max(0,document.choixM.lstMois.selectedIndex-1)].value;
 | 
			
		||||
		document.choixM.submit(statut);}
 | 
			
		||||
	else {
 | 
			
		||||
		document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[Math.max(0,document.choixV.lstVisiteurs.selectedIndex-1)].value;
 | 
			
		||||
		document.choixV.submit();}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
function suivant(statut)
 | 
			
		||||
	{
 | 
			
		||||
	if (statut=='V') {
 | 
			
		||||
		document.choixM.lstMois.value = document.choixM.lstMois.options[(Math.min((document.choixM.lstMois.options.length-1),document.choixM.lstMois.selectedIndex+1))].value;
 | 
			
		||||
		document.choixM.submit();}
 | 
			
		||||
	else {
 | 
			
		||||
		document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[(Math.min((document.choixV.lstVisiteurs.options.length-1),document.choixV.lstVisiteurs.selectedIndex+1))].value;
 | 
			
		||||
		document.choixV.submit();}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
function dernier(statut)
 | 
			
		||||
	{
 | 
			
		||||
	if (statut=='V') {
 | 
			
		||||
		document.choixM.lstMois.value = document.choixM.lstMois.options[(document.choixM.lstMois.options.length-1)].value;
 | 
			
		||||
		document.choixM.submit();}
 | 
			
		||||
	else {
 | 
			
		||||
		document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[(document.choixV.lstVisiteurs.options.length-1)].value;
 | 
			
		||||
		document.choixV.submit();}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
// ========================= acivation/desactivation des cases a cocher "justificatifs" pour les frais hors forfaits	
 | 
			
		||||
function tousLesJustificatifs(frm)
 | 
			
		||||
	{
 | 
			
		||||
	inputs = frm.getElementsByTagName("input");
 | 
			
		||||
	var sens = frm.zSens.value;
 | 
			
		||||
	for(i=0 ; i<inputs.length ; i++)
 | 
			
		||||
		{
 | 
			
		||||
		    if(inputs[i].type=="checkbox")
 | 
			
		||||
			{	
 | 
			
		||||
			if (sens=="off") {inputs[i].checked = true;} else {inputs[i].checked = false;};
 | 
			
		||||
			}
 | 
			
		||||
		
 | 
			
		||||
		}
 | 
			
		||||
	if (sens=="off") {frm.zSens.value="on";} else {frm.zSens.value="off";}
 | 
			
		||||
	}
 | 
			
		||||
		
 | 
			
		||||
function tousLesJustificatifs2(frm)
 | 
			
		||||
	{
 | 
			
		||||
	var sens = frm.zSens.value;
 | 
			
		||||
	for (i = 0; i < frm.justificatifs.length; i++) 
 | 
			
		||||
		{	
 | 
			
		||||
		if (sens=="off") {frm.justificatifs[i].checked = true;} else {frm.justificatifs[i].checked = false;};
 | 
			
		||||
		}
 | 
			
		||||
	if (sens=="off") {frm.zSens.value="on";} else {frm.zSens.value="off";}
 | 
			
		||||
	}
 | 
			
		||||
							
								
								
									
										44
									
								
								index(2).php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,44 @@
 | 
			
		||||
<?php
 | 
			
		||||
session_start();
 | 
			
		||||
// ***************************************'
 | 
			
		||||
//  Le CASTEL-BTS SIO/ PROJET PPE4 GSB    '
 | 
			
		||||
//  Programme: index.php                  '
 | 
			
		||||
//  Objet    : Gestion des frais          '
 | 
			
		||||
//  Client   : laboratoires GSB           '
 | 
			
		||||
//  Version  : 3.0                        '
 | 
			
		||||
//  Date     : 03/05/2023 à 11H01         '
 | 
			
		||||
//  Auteur v1: pascal-blain@wanadoo.fr    '
 | 
			
		||||
//****************************************'
 | 
			
		||||
 | 
			
		||||
require_once("include/fct.inc.php");
 | 
			
		||||
require_once("include/class.pdogsb.php");
 | 
			
		||||
 | 
			
		||||
$pdo = PdoGsb::getPdoGsb();
 | 
			
		||||
$estConnecte = estConnecte();
 | 
			
		||||
 | 
			
		||||
// on vrifie que l'utilisateur est authentifi
 | 
			
		||||
if (!isset($_REQUEST['uc']) || !$estConnecte) {
 | 
			
		||||
	$_REQUEST['uc'] = 'connexion';
 | 
			
		||||
}
 | 
			
		||||
// on analyse le cas d'utilisation en cours ...
 | 
			
		||||
$uc = $_REQUEST['uc'];
 | 
			
		||||
switch ($uc) {
 | 
			
		||||
	case 'connexion': {
 | 
			
		||||
			include("controleurs/c_connexion.php");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	case 'etatFrais': {
 | 
			
		||||
			include("controleurs/c_etatFrais.php");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	case 'gererFraisForfaitaire': {
 | 
			
		||||
			include("controleurs/c_gererFraisForfaitaire.php");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	case 'gererFraisHorsForfait': {
 | 
			
		||||
			include("controleurs/c_gererFraisHorsForfait.php");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
}
 | 
			
		||||
include("vues/v_pied.php");
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										37
									
								
								index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,37 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
    <meta charset="UTF-8">
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
			
		||||
    <title>Page accueil</title>
 | 
			
		||||
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
 | 
			
		||||
        integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
 | 
			
		||||
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
 | 
			
		||||
        integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
 | 
			
		||||
        crossorigin="anonymous"></script>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
    <div class="container-fluid">
 | 
			
		||||
        <div class="row flex-nowrap">
 | 
			
		||||
            <?php include('include/menu.php') ?>
 | 
			
		||||
            <div class="col py-3">
 | 
			
		||||
                <h3>Left Sidebar with Submenus</h3>
 | 
			
		||||
                <p class="lead">
 | 
			
		||||
                    An example 2-level sidebar with collasible menu items. The menu functions like an "accordion" where
 | 
			
		||||
                    only a single
 | 
			
		||||
                    menu is be open at a time. While the sidebar itself is not toggle-able, it does responsively shrink
 | 
			
		||||
                    in width on smaller screens.</p>
 | 
			
		||||
                <ul class="list-unstyled">
 | 
			
		||||
                    <li>
 | 
			
		||||
                        <h5>Responsive</h5> shrinks in width, hides text labels and collapses to icons only on mobile
 | 
			
		||||
                    </li>
 | 
			
		||||
                </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										0
									
								
								sidebar.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										352
									
								
								styles/stylesGSB.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,352 @@
 | 
			
		||||
/* Styles des divisions principales de la page : modifié le 4 janvier  par Pascal Blain*/
 | 
			
		||||
#navigation {
 | 
			
		||||
	position: relative;
 | 
			
		||||
	float: right;
 | 
			
		||||
	top : -2.75em;
 | 
			
		||||
	right: 2em;
 | 
			
		||||
	padding: 0em;
 | 
			
		||||
	color: rgb(0,85,227);
 | 
			
		||||
}
 | 
			
		||||
#sommaire {
 | 
			
		||||
	float: right;
 | 
			
		||||
	margin-top : 20px;
 | 
			
		||||
	margin-right: -30px;
 | 
			
		||||
	padding: 0em;
 | 
			
		||||
	color: rgb(0,85,227);
 | 
			
		||||
}
 | 
			
		||||
#sommaire ul {
 | 
			
		||||
	padding:0;
 | 
			
		||||
	margin:0;
 | 
			
		||||
	list-style-type:none;
 | 
			
		||||
}
 | 
			
		||||
#sommaire li
 | 
			
		||||
{
 | 
			
		||||
	vertical-align: middle;
 | 
			
		||||
	margin-left:2px;
 | 
			
		||||
	float:left; /*pour IE*/
 | 
			
		||||
}
 | 
			
		||||
#sommaire ul li a
 | 
			
		||||
{
 | 
			
		||||
	vertical-align: middle;	
 | 
			
		||||
	display:block;
 | 
			
		||||
	float:left;   
 | 
			
		||||
	width:150px;
 | 
			
		||||
	text-decoration:none;
 | 
			
		||||
	text-align:center;
 | 
			
		||||
	/* background-color:#6495ED;
 | 
			
		||||
	color:black;
 | 
			
		||||
	padding:5px;
 | 
			
		||||
	border-width:2px;
 | 
			
		||||
	border-style:solid;
 | 
			
		||||
	border-color:#DCDCDC #696969 #696969 #DCDCDC;  /*pour avoir un effet "outset" avec IE */
 | 
			
		||||
}
 | 
			
		||||
#sommaire ul li a:hover
 | 
			
		||||
{
 | 
			
		||||
	color: rgb(0,85,227);
 | 
			
		||||
	font-size: 16px; /*
 | 
			
		||||
	background-color:#D3D3D3;
 | 
			
		||||
	border-color: #696969 #DCDCDC #DCDCDC #696969; */
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
body{
 | 
			
		||||
  	background-color: #77AADD;
 | 
			
		||||
	background-image: url(imgs/FONDGLOBAL.jpg);
 | 
			
		||||
	background-repeat: repeat-x;
 | 
			
		||||
  	margin:0% 0%;
 | 
			
		||||
  	padding : 0.6em;
 | 
			
		||||
  	font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif;
 | 
			
		||||
  	font-size:0.8em;
 | 
			
		||||
}
 | 
			
		||||
#page {
 | 
			
		||||
  	background-color:white;
 | 
			
		||||
  	width : 65%;
 | 
			
		||||
  	margin : auto ;
 | 
			
		||||
  	border : 0.2em solid black;
 | 
			
		||||
  	padding : 0.1em;
 | 
			
		||||
}
 | 
			
		||||
#entete{
 | 
			
		||||
  	background-color:rgb(72,198,236);
 | 
			
		||||
	color : #980101;
 | 
			
		||||
	border: solid 0.1em #980101;
 | 
			
		||||
	height: 122px;
 | 
			
		||||
	padding: 0em;
 | 
			
		||||
	border-collapse: separate;
 | 
			
		||||
}
 | 
			
		||||
#pied{
 | 
			
		||||
  	clear : both;
 | 
			
		||||
	border : solid 0.2em #980101;
 | 
			
		||||
	margin-left : 18%;
 | 
			
		||||
	margin-top : 1em;
 | 
			
		||||
	padding:0.4em;
 | 
			
		||||
	padding: 0.2em;
 | 
			
		||||
	border-collapse: separate;
 | 
			
		||||
}
 | 
			
		||||
#menu{
 | 
			
		||||
	position: relative;
 | 
			
		||||
	float:right;
 | 
			
		||||
	right: 0px;
 | 
			
		||||
	margin-top : -100px;
 | 
			
		||||
	margin-left: -10px;
 | 
			
		||||
	padding: 0em;
 | 
			
		||||
	background-color:transparent;
 | 
			
		||||
	color: rgb(0,85,227);
 | 
			
		||||
	width: 160px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#contenu{
 | 
			
		||||
	border: none;
 | 
			
		||||
	padding: 1.3em;
 | 
			
		||||
	background-color: white;
 | 
			
		||||
	border-left :  groove 0.8em #980101;
 | 
			
		||||
  	margin-top : 1.2em;
 | 
			
		||||
	margin-left: 18%;
 | 
			
		||||
/* permet de fixer une hauteur mini sur les navigateurs modernes */
 | 
			
		||||
  min-height:27em;
 | 
			
		||||
/* pour obtenir le même effet sur IE, sachant que si le contenu dépasse, il
 | 
			
		||||
"poussera" la hauteur en ne respectant pas la norme. On se joue de ses lacunes
 | 
			
		||||
*/
 | 
			
		||||
  height:27em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* pour rétablir le mauvais effet sur les nav. modernes */
 | 
			
		||||
html>body #contenu{
 | 
			
		||||
  height:auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* style à appliquer à la balise ul d'identifiant menulist */
 | 
			
		||||
ul#menuList{
 | 
			
		||||
    list-style:none;
 | 
			
		||||
    margin:0px;
 | 
			
		||||
    padding:0px;
 | 
			
		||||
    width:98%;
 | 
			
		||||
    font-size: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* style à appliquer aux éléments de la balise ul d'identifiant menulist */
 | 
			
		||||
ul#menuList li {
 | 
			
		||||
    position:relative;
 | 
			
		||||
    margin:0px;
 | 
			
		||||
    padding:0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* apparences des liens dans listes et sous-listes non numérotées */
 | 
			
		||||
ul#menuList a {
 | 
			
		||||
    color:rgb(0,85,227);
 | 
			
		||||
    display:block;
 | 
			
		||||
    text-decoration:none;
 | 
			
		||||
    width:100%;
 | 
			
		||||
}
 | 
			
		||||
ul#menuList a:hover {
 | 
			
		||||
    background: rgb(0,85,227);
 | 
			
		||||
    color: white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#entete #logoGSB {
 | 
			
		||||
  float : left;
 | 
			
		||||
  width : 191px;
 | 
			
		||||
  height : 122px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#entete h1 {
 | 
			
		||||
  margin-top :	50px;
 | 
			
		||||
  margin-right:	20px;
 | 
			
		||||
  font-size :	x-large;
 | 
			
		||||
  text-align:	right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#contenu pre {
 | 
			
		||||
  width:95%;
 | 
			
		||||
  overflow : scroll;
 | 
			
		||||
}
 | 
			
		||||
#contenu h2 {
 | 
			
		||||
  font-size : large;
 | 
			
		||||
  text-align:left;
 | 
			
		||||
  margin:0;
 | 
			
		||||
  margin-bottom:0.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.logoValidW3c {
 | 
			
		||||
  display: inline;
 | 
			
		||||
}
 | 
			
		||||
#libValidW3c{
 | 
			
		||||
  display : inline;
 | 
			
		||||
  vertical-align:middle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Style des formulaires */
 | 
			
		||||
.corpsForm {
 | 
			
		||||
  border : solid 0.1em #000;
 | 
			
		||||
  border-bottom-width:1px;
 | 
			
		||||
  margin-bottom : 0em;
 | 
			
		||||
  width : 95%;
 | 
			
		||||
}
 | 
			
		||||
.piedForm {
 | 
			
		||||
  border-bottom-width : 0.1em;
 | 
			
		||||
  border-left-width : 0.1em;
 | 
			
		||||
  border-right-width : 0.1em;
 | 
			
		||||
  border-top-width : 0em;
 | 
			
		||||
  border-style : solid;
 | 
			
		||||
  border-color : #000;
 | 
			
		||||
  text-align:right ;
 | 
			
		||||
  width : 95%;
 | 
			
		||||
  margin-top:0em;
 | 
			
		||||
}
 | 
			
		||||
form {
 | 
			
		||||
  margin-bottom:1em;  
 | 
			
		||||
}
 | 
			
		||||
.corpsForm legend {
 | 
			
		||||
  font-weight:bold;
 | 
			
		||||
  font-size:1.2em;
 | 
			
		||||
}
 | 
			
		||||
.corpsForm label{
 | 
			
		||||
  float: left;
 | 
			
		||||
  text-align:right;
 | 
			
		||||
  width:33%;
 | 
			
		||||
	margin: 0;
 | 
			
		||||
	padding: 0 .5em 0 0;
 | 
			
		||||
	line-height: 1.8;	
 | 
			
		||||
}
 | 
			
		||||
input, button, textarea, select{
 | 
			
		||||
  font-family:"Trebuchet MS", sans-serif;
 | 
			
		||||
  font-size : 1em;
 | 
			
		||||
}
 | 
			
		||||
button{
 | 
			
		||||
  width : 60px;
 | 
			
		||||
  height : 30px;
 | 
			
		||||
  text-align:center;
 | 
			
		||||
  vertical-align:middle;
 | 
			
		||||
}
 | 
			
		||||
input:hover, textarea:hover, select:hover{
 | 
			
		||||
  background-color : #FAFAE6;
 | 
			
		||||
  cursor : pointer;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*  Le texte des messages d'erreur est de couleur rose sur fond ocre et de 
 | 
			
		||||
taille de caractères légèrement supérieure à la normale */
 | 
			
		||||
.erreur{ 
 | 
			
		||||
   background-color:rgb(237,210,229);
 | 
			
		||||
   color:rgb(203,28,128);
 | 
			
		||||
   font-size:1.1em;
 | 
			
		||||
   margin-left:200px;
 | 
			
		||||
   width:75%;
 | 
			
		||||
}
 | 
			
		||||
.centre {
 | 
			
		||||
  text-align:center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.info {
 | 
			
		||||
   background-color:rgb(178,207,81);
 | 
			
		||||
   color : white;
 | 
			
		||||
   font-size:1.1em;
 | 
			
		||||
   width : 95%  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.encadre {
 | 
			
		||||
  border : solid 0.1em #000;
 | 
			
		||||
  width : 100%;
 | 
			
		||||
}
 | 
			
		||||
/* Style pour les liens de la page principale */
 | 
			
		||||
#contenu .corpsTexte {
 | 
			
		||||
  width:80%;
 | 
			
		||||
  font-size:1.2em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Style pour les liens de la page principale */
 | 
			
		||||
#contenu a {
 | 
			
		||||
   font-size : 1.1em;
 | 
			
		||||
   color:gray;
 | 
			
		||||
   text-decoration:none;
 | 
			
		||||
}
 | 
			
		||||
#contenu a:hover {
 | 
			
		||||
   text-decoration:underline;
 | 
			
		||||
   background-color : #D9BB7A;
 | 
			
		||||
   font-size : 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Style pour les parties importantes de la page principale */
 | 
			
		||||
#contenu strong {
 | 
			
		||||
  font-weight:bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Styles pour les tableaux de la page principale */
 | 
			
		||||
#contenu table {
 | 
			
		||||
   background-color:#FFF;
 | 
			
		||||
   border : 0.1em solid #777777;
 | 
			
		||||
   color:black;
 | 
			
		||||
   margin-right : auto ;
 | 
			
		||||
   margin-left:0.3em;
 | 
			
		||||
   border-collapse : collapse;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Style pour les lignes d'en-tête des tableaux */
 | 
			
		||||
#contenu th {  
 | 
			
		||||
   background-color:#77AADD;
 | 
			
		||||
   height:21px;
 | 
			
		||||
   text-align:left;
 | 
			
		||||
   vertical-align:top;
 | 
			
		||||
   font-weight:bold;
 | 
			
		||||
   border-bottom:0.1em solid #777777;
 | 
			
		||||
   font-size:1.1em;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
#contenu td {
 | 
			
		||||
   border :1px solid #777777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#contenu h3 {
 | 
			
		||||
    font-size : 1.2em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.listeLegere {
 | 
			
		||||
    margin-bottom : 0.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Tableaux quadrillés utilisés pour l'affichage de listes avec contenu léger*/ 
 | 
			
		||||
table.listeLegere th, table.listeLegere td {
 | 
			
		||||
  border : dotted rgb(178,207,81) 0.1em;
 | 
			
		||||
  padding:0.5em;
 | 
			
		||||
  vertical-align : top;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.listeLegere caption {
 | 
			
		||||
  font-size : 1.1em;
 | 
			
		||||
  text-align : left;
 | 
			
		||||
  margin-bottom : 0.3em;
 | 
			
		||||
}
 | 
			
		||||
table.listeLegere td {
 | 
			
		||||
  vertical-align:top;
 | 
			
		||||
  font-weight:normal;
 | 
			
		||||
}
 | 
			
		||||
table.listeLegere th.eltForfait{
 | 
			
		||||
  width:320px;
 | 
			
		||||
  color:black;
 | 
			
		||||
}
 | 
			
		||||
table.listeLegere th.date, table.listeLegere th.montant{
 | 
			
		||||
  width:70px;
 | 
			
		||||
  color:black;
 | 
			
		||||
}
 | 
			
		||||
table.listeLegere th.libelle{
 | 
			
		||||
  width:405px;
 | 
			
		||||
  color:black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#contenu h2 {
 | 
			
		||||
	font-family: Verdana, Arial, Helvetica, sans-serif;
 | 
			
		||||
	font-size: 14px;
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
	color: #1D2941;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
	border : 1px solid #6988BE;
 | 
			
		||||
	padding-left: 25px;
 | 
			
		||||
	background-color: #E9F1FE;
 | 
			
		||||
  height : 28px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#contenu img {
 | 
			
		||||
  height :	21px;
 | 
			
		||||
  border-style:	none;
 | 
			
		||||
  float :	left;
 | 
			
		||||
}
 | 
			
		||||
#contenu li img:hover {
 | 
			
		||||
  height :	26px;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										75
									
								
								vues/v_ajoutFraisForfaitaire.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,75 @@
 | 
			
		||||
<!-- Derniere modification le 03/05/2023 à 11H01 -->
 | 
			
		||||
<div id="contenu">
 | 
			
		||||
	<h2>AJOUT FRAIS FORFAITAIRE</h2>
 | 
			
		||||
	<form name="nouveauFraisForfaitaire" action="index.php?uc=gererFraisForfaitaire&action=valider" method="POST">
 | 
			
		||||
		<table class="listeLegere">
 | 
			
		||||
			<thead>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<th class="date">Quantité</th>
 | 
			
		||||
					<th class="eltForfait">Nature de la dépense</th>
 | 
			
		||||
					<th class="montant">Prix</th>
 | 
			
		||||
					<th class="montant">Montant</th>
 | 
			
		||||
				</tr>
 | 
			
		||||
			</thead>
 | 
			
		||||
			<tbody>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<td><input type="hidden" name="zMois" value="<?PHP echo $leMois; ?>">
 | 
			
		||||
					<input type="text" name="zQte" onkeyup="calculer()" style="text-align:right;"></td>
 | 
			
		||||
					<td><select name="zForfait" onchange="calculer()">
 | 
			
		||||
						<?PHP
 | 
			
		||||
							foreach ($lesForfaitsPossibles as $unForfait)
 | 
			
		||||
							{echo'<option value="'.$unForfait['fId'].'" size="1">'.$unForfait['fLibelle'].'</option>';}
 | 
			
		||||
						?>
 | 
			
		||||
						</select>
 | 
			
		||||
					</td>
 | 
			
		||||
					<td><input type="text" name="zPrix" style="text-align:right;" disabled></td>
 | 
			
		||||
					<td><input type="text" name="zMontant" style="text-align:right;" disabled></td>
 | 
			
		||||
					
 | 
			
		||||
				</tr>
 | 
			
		||||
			</tbody>
 | 
			
		||||
		</table>
 | 
			
		||||
		<?php echo 'Puissance du véhicule : '.$prixKm['aPuissance'].' - Carburant : '.$prixKm['aMotorisation'].'  (tarif en vigueur depuis le : '.$prixKm['aDate'].')'; ?>
 | 
			
		||||
		<p align="right"><input type="image" name="zValider" alt="Valider" src="images/valider.jpg" onclick="valider()"><input type="image" name="zAnnuler" alt="Annuler" src="images/annuler.jpg" onclick="annuler()"></p>
 | 
			
		||||
	</form>	
 | 
			
		||||
</div>
 | 
			
		||||
	
 | 
			
		||||
	<script src="include/proceduresJava.js" type="text/javascript"></script>
 | 
			
		||||
	<script type="text/javascript">
 | 
			
		||||
		function calculer()
 | 
			
		||||
		{
 | 
			
		||||
		<?php
 | 
			
		||||
			$tarif = 'var tarif = ['; 
 | 
			
		||||
			foreach ($lesForfaitsPossibles as $unForfait)
 | 
			
		||||
			{
 | 
			
		||||
				
 | 
			
		||||
				
 | 
			
		||||
				
 | 
			
		||||
				$tarif .= $unForfait['fMontant'].',';
 | 
			
		||||
			}
 | 
			
		||||
			$tarif .='];';
 | 
			
		||||
			echo $tarif."\n"; 
 | 
			
		||||
		?>
 | 
			
		||||
			var iLeChoix = document.nouveauFraisForfaitaire.zForfait.selectedIndex;		
 | 
			
		||||
			var quantite = document.nouveauFraisForfaitaire.zQte.value;
 | 
			
		||||
			
 | 
			
		||||
			if (!isNaN(quantite))
 | 
			
		||||
			{
 | 
			
		||||
				document.nouveauFraisForfaitaire.zMontant.value = format_euro(quantite * (parseInt(parseFloat(tarif[iLeChoix])*1000))/1000);
 | 
			
		||||
			}
 | 
			
		||||
			document.nouveauFraisForfaitaire.zPrix.value = format_euro((parseInt(parseFloat(tarif[iLeChoix])*1000))/1000);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		function valider()
 | 
			
		||||
		{
 | 
			
		||||
			document.nouveauFraisForfaitaire.zPrix.disabled=false;
 | 
			
		||||
			document.nouveauFraisForfaitaire.submit();
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		function annuler()
 | 
			
		||||
		{
 | 
			
		||||
			document.nouveauFraisForfaitaire.reset();
 | 
			
		||||
			document.nouveauFraisForfaitaire.submit();
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		window.onload = function() { calculer(); };
 | 
			
		||||
	</script>
 | 
			
		||||
							
								
								
									
										39
									
								
								vues/v_ajoutFraisHorsForfait.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,39 @@
 | 
			
		||||
<!-- ajout d'un frais hors forfaits / Derni<6E>re modification le 03/05/2023 <20> 11H01 par P. Blain -->
 | 
			
		||||
<div id="contenu">
 | 
			
		||||
	<h2>AJOUT D'UN FRAIS HORS FORFAIT</h2>
 | 
			
		||||
	<form name="unFraisHorsForfait" action="index.php?uc=gererFraisHorsForfait&action=valider" method="POST">
 | 
			
		||||
		<table class="listeLegere">
 | 
			
		||||
			<thead>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<th class="date">Date</th>
 | 
			
		||||
					<th class="eltForfait">Nature de la dépense</th>
 | 
			
		||||
					<th class="montant">Montant</th>
 | 
			
		||||
				</tr>
 | 
			
		||||
			</thead>
 | 
			
		||||
			<tbody>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<td><input type="hidden" name="zMois" value="<?PHP echo $leMois; ?>">
 | 
			
		||||
					<input type="text" name="zDate" style="text-align:center;border:0;"></td>
 | 
			
		||||
					<td><input type="text" name="zLibelle" style="text-align:left;border:0;" size='80' maxlength='80' ></td>
 | 
			
		||||
					<td><input type="text" name="zMontant" style="text-align:right;border:0;"></td>	
 | 
			
		||||
				</tr>
 | 
			
		||||
			</tbody>
 | 
			
		||||
		</table>
 | 
			
		||||
		<p align="right"><input type="image" name="zValider" alt="Valider" src="images/valider.jpg" onclick="valider()"><input type="image" name="zAnnuler" alt="Annuler" src="images/annuler.jpg" onclick="annuler()"></p>
 | 
			
		||||
	</form>	
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
		function valider()
 | 
			
		||||
			{
 | 
			
		||||
			document.unFraisHorsForfait.submit();
 | 
			
		||||
			}
 | 
			
		||||
		
 | 
			
		||||
		function annuler()
 | 
			
		||||
			{
 | 
			
		||||
			document.unFraisHorsForfait.reset();
 | 
			
		||||
			document.unFraisHorsForfait.submit();
 | 
			
		||||
			}
 | 
			
		||||
		
 | 
			
		||||
</script>
 | 
			
		||||
<!-- fin -->
 | 
			
		||||
							
								
								
									
										49
									
								
								vues/v_choixMois.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,49 @@
 | 
			
		||||
<!-- choix d'un mois / Derniere modification le 03/05/2023 à 11H01 par Pascal Blain -->
 | 
			
		||||
	<script src="include/proceduresJava.js" type="text/javascript"></script>
 | 
			
		||||
<?php
 | 
			
		||||
	if ($_SESSION['statut']=="1") {
 | 
			
		||||
	$nbM=count($lesMois);
 | 
			
		||||
	echo '
 | 
			
		||||
 <div id="contenu">
 | 
			
		||||
	<form name="choixM" action="index.php?uc=etatFrais&action=voir" method="post">
 | 
			
		||||
	<h2>Etat de frais de ';} ?>
 | 
			
		||||
 
 | 
			
		||||
	        <select id="lstMois" name="lstMois" onchange="submit();">
 | 
			
		||||
	            <?php 
 | 
			
		||||
	            if (!isset($_REQUEST['lstMois']))
 | 
			
		||||
	            	{$moisChoisi = 'premier';}
 | 
			
		||||
	            else
 | 
			
		||||
	            	{$moisChoisi=$_REQUEST['lstMois'];
 | 
			
		||||
	            	}	
 | 
			
		||||
	            $i=1; 
 | 
			
		||||
	            foreach ($lesMois as $unMois)
 | 
			
		||||
				{	
 | 
			
		||||
					if($unMois['mois'] == $moisChoisi or $moisChoisi == 'premier')
 | 
			
		||||
						{echo "<option selected value=\"".$unMois['mois']."\">".$unMois['numMois']." ".$unMois['numAnnee']."</option>\n	";
 | 
			
		||||
						$moisChoisi = $unMois['mois'];
 | 
			
		||||
						$noM=$i;}
 | 
			
		||||
					else
 | 
			
		||||
						{echo "<option value=\"".$unMois['mois']."\">".$unMois['numMois']." ".$unMois['numAnnee']."</option>\n		";
 | 
			
		||||
						$i=$i+1;}
 | 
			
		||||
				}	           
 | 
			
		||||
			    echo '   
 | 
			
		||||
	        </select></h2>';
 | 
			
		||||
	        ?>
 | 
			
		||||
	        <!-- ============================================================== navigation dans les listes visiteurs et mois -->
 | 
			
		||||
	        <div id="navigation">
 | 
			
		||||
		        <input type="image" id="zPremier" alt="premier" src="images/goPremier.gif" onclick="premier(<?php echo "'".$_SESSION['statut']."'"; ?>)">    
 | 
			
		||||
		        <input type="image" id="zPrecedent" alt="précédent" src="images/goPrecedent.gif" onclick="precedent(<?php echo "'".$_SESSION['statut']."'"; ?>)"> 
 | 
			
		||||
		        <?php
 | 
			
		||||
		        echo '
 | 
			
		||||
			        <input type="text" id="zNumero" alt="indice" value="'.$noM.'/'.$nbM.'" disabled="true" size="5" style="text-align:center;vertical-align:top;">';
 | 
			
		||||
		        	
 | 
			
		||||
		        
 | 
			
		||||
			        
 | 
			
		||||
			        
 | 
			
		||||
			        
 | 
			
		||||
			    ?>
 | 
			
		||||
		        <input type="image" id="zSuivant" alt="premier" src="images/goSuivant.gif" onclick="suivant(<?php echo "'".$_SESSION['statut']."'"; ?>)">    
 | 
			
		||||
		        <input type="image" id="zDernier" alt="premier" src="images/goDernier.gif" onclick="dernier(<?php echo "'".$_SESSION['statut']."'"; ?>)">    
 | 
			
		||||
		    </div>
 | 
			
		||||
	</form>
 | 
			
		||||
<!-- fin liste de choix -->
 | 
			
		||||
							
								
								
									
										34
									
								
								vues/v_choixVisiteur.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,34 @@
 | 
			
		||||
<!-- Choix d'un visiteur / Derniere modification le 03/05/2023 à 11H01 par Pascal Blain -->
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	
 | 
			
		||||
	if ($_SESSION['statut']!="1")
 | 
			
		||||
	{
 | 
			
		||||
	echo ' 
 | 
			
		||||
 <div id="contenu">
 | 
			
		||||
	<form name="choixV" action="index.php?uc=etatFrais&action=voir" method="post">
 | 
			
		||||
	<h2>Etat de frais de 
 | 
			
		||||
		        
 | 
			
		||||
		        <select id="lstVisiteurs" name="lstVisiteurs" onchange="submit();">';
 | 
			
		||||
	            if (!isset($_REQUEST['lstVisiteurs']))
 | 
			
		||||
	            	{$visiteurChoisi = 'premier';}
 | 
			
		||||
	            else
 | 
			
		||||
	            	{
 | 
			
		||||
	            	$visiteurChoisi=$_REQUEST['lstVisiteurs'];	
 | 
			
		||||
	            	}
 | 
			
		||||
	            
 | 
			
		||||
	            
 | 
			
		||||
				 
 | 
			
		||||
					
 | 
			
		||||
						
 | 
			
		||||
						
 | 
			
		||||
						
 | 
			
		||||
					
 | 
			
		||||
						
 | 
			
		||||
						
 | 
			
		||||
					           
 | 
			
		||||
			   echo '    
 | 
			
		||||
	        </select>
 | 
			
		||||
	        Mois de ';
 | 
			
		||||
	  }      
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										22
									
								
								vues/v_connexion.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,22 @@
 | 
			
		||||
<!-- 03/05/2023 à 11H01 -->
 | 
			
		||||
<div id="contenu">
 | 
			
		||||
      <h2>Identification utilisateur</h2>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<form method="POST" action="index.php?uc=connexion&action=valideConnexion">
 | 
			
		||||
   
 | 
			
		||||
    
 | 
			
		||||
			<p>
 | 
			
		||||
       <label for="nom">Login*</label>
 | 
			
		||||
       <input id="login" type="text" name="login"  size="30" maxlength="45">
 | 
			
		||||
      </p>
 | 
			
		||||
			<p>
 | 
			
		||||
				<label for="mdp">Mot de passe*</label>
 | 
			
		||||
			  <input id="mdp"  type="password"  name="mdp" size="30" maxlength="45">
 | 
			
		||||
      </p>
 | 
			
		||||
         <input type="submit" value="Valider" name="valider">
 | 
			
		||||
         <input type="reset" value="Annuler" name="annuler"> 
 | 
			
		||||
      </p>
 | 
			
		||||
</form>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										30
									
								
								vues/v_entete.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,30 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 | 
			
		||||
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 | 
			
		||||
  <head>
 | 
			
		||||
    <title>Intranet du Laboratoire Galaxy-Swiss Bourdin</title>
 | 
			
		||||
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
    <link href="./styles/stylesGSB.css" rel="stylesheet" type="text/css" />
 | 
			
		||||
    <link rel="shortcut icon" type="image/x-icon" href="./images/favicon.ico" />
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div id="page">
 | 
			
		||||
		<div id="entete">
 | 
			
		||||
	        <img src="./images/logo.jpg" id="logoGSB" alt="Laboratoire Galaxy-Swiss Bourdin" title="Laboratoire Galaxy-Swiss Bourdin" />
 | 
			
		||||
	<?php if (isset($_SESSION['idUtilisateur'])) 
 | 
			
		||||
		{echo '
 | 
			
		||||
		<!-- affichage du menu / Derniere  modification le 03/05/2023 à 11H01  par P. Blain -->
 | 
			
		||||
			<div id="sommaire">
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li><a href="" title=""> </a></li>
 | 
			
		||||
					<li><a href="" title=""> </a>|</li>
 | 
			
		||||
					<li><b>Bienvenue '.$_SESSION['prenom'].'  '.strtoupper($_SESSION['nom']).'</b> ('.$_SESSION['typeUtilisateur'].')';
 | 
			
		||||
					if ($_SESSION['statut']<>'1') {echo '<br /><i>Il y a '.$nbRemboursementsAValider.' demandes à valider</i>';}
 | 
			
		||||
					echo ' </li>
 | 
			
		||||
					<li><a href="index.php?uc=connexion&action=demandeConnexion" title="Se déconnecter"><img alt="déconnexion" src="images/deconnexion.png" border="0" height="26px"></a></li>
 | 
			
		||||
				</ul>      
 | 
			
		||||
			</div>';} ?>
 | 
			
		||||
	        <br /><br /><h1>ÉTAT DES FRAIS ENGAGÉS</h1>
 | 
			
		||||
	        <p style="text-align=left;"><?php echo $_SESSION['adr1'].'<br />'.$_SESSION['adr2'].'</p>';?>
 | 
			
		||||
		</div>
 | 
			
		||||
<!-- fin affichage du menu -->
 | 
			
		||||
							
								
								
									
										10
									
								
								vues/v_erreurs.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
			
		||||
<div class ="erreur">
 | 
			
		||||
	<ul>
 | 
			
		||||
	<?php 
 | 
			
		||||
	foreach($_REQUEST['erreurs'] as $erreur)
 | 
			
		||||
		{
 | 
			
		||||
	      echo "<li>$erreur</li>";
 | 
			
		||||
		}
 | 
			
		||||
	?>
 | 
			
		||||
	</ul>
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										140
									
								
								vues/v_etatFrais.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,140 @@
 | 
			
		||||
 | 
			
		||||
<!-- affichage du detail de la fiche frais / Derniere modification le 03/05/2023 à 11H01 par Pascal BLAIN -->
 | 
			
		||||
	<div class="encadre">
 | 
			
		||||
	<!-- ============================================================== frais forfaitaires -->
 | 
			
		||||
  	<table class="listeLegere">
 | 
			
		||||
  	   <caption><h3> Éléments forfaitisés 
 | 
			
		||||
  	   <?php 
 | 
			
		||||
  	   if ($ajoutFraisPossible['forfait']=="oui") echo '
 | 
			
		||||
	   <a href="index.php?uc=gererFraisForfaitaire&action=choix" title="ajout frais forfaitaire">
 | 
			
		||||
	   <img alt="Ajouter un frais forfaitaire" src="images/ajouter.jpg" border="0"> </a>
 | 
			
		||||
	   ';?></h3>
 | 
			
		||||
	   </caption>
 | 
			
		||||
		<thead>
 | 
			
		||||
			<tr>
 | 
			
		||||
				<th class="date">Quantité</th>
 | 
			
		||||
				<th class="eltForfait">Nature de la dépense</th>
 | 
			
		||||
				<th class="montant">Prix</th>
 | 
			
		||||
				<th class="montant">Montant</th>
 | 
			
		||||
				<?php
 | 
			
		||||
				if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") {echo '
 | 
			
		||||
				<th> </th>
 | 
			
		||||
				<th> </th>';} ?>
 | 
			
		||||
			</tr>
 | 
			
		||||
		</thead>
 | 
			
		||||
		<tbody>
 | 
			
		||||
 | 
			
		||||
	        <?php
 | 
			
		||||
	        $totalFraisForfait=0;
 | 
			
		||||
			foreach ( $lesFraisForfait as $unFraisForfait ) 
 | 
			
		||||
			{	echo '
 | 
			
		||||
			 <tr>
 | 
			
		||||
				<td align="right">'.$unFraisForfait['lfQuantite'].'</td>
 | 
			
		||||
				<td>'.$unFraisForfait['fLibelle'].'</td>
 | 
			
		||||
				<td align="right">'.number_format($unFraisForfait['lfMontant'],2,',','.').'</td>
 | 
			
		||||
				<td align="right">'.number_format($unFraisForfait['totalLigne'],2,',','.').'</td>';
 | 
			
		||||
 | 
			
		||||
  	   			if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") echo '				
 | 
			
		||||
	         	<td><a href="index.php?uc=gererFraisForfaitaire&action=editer&forfait='.$unFraisForfait['idfrais'].'"><img alt="modifier" src="images/editer.jpg" border="0"></a></td>
 | 
			
		||||
	        	<td><a href="index.php?uc=gererFraisForfaitaire&action=supprimer&forfait='.$unFraisForfait['idfrais'].'"><img alt="supprimer" src="images/supprimer.jpg" border="0"></a></td>';
 | 
			
		||||
	        	
 | 
			
		||||
	        	echo '
 | 
			
		||||
			 </tr>';
 | 
			
		||||
			 $totalFraisForfait=$totalFraisForfait + $unFraisForfait['totalLigne'];
 | 
			
		||||
	         }
 | 
			
		||||
	         echo '
 | 
			
		||||
	         <tr>
 | 
			
		||||
	         	<td> </td>
 | 
			
		||||
	        	<td> </td>
 | 
			
		||||
	        	<td align="right"><b>Total</b></td>
 | 
			
		||||
	        	<td align="right"><b>'.number_format($totalFraisForfait,2,',','.').'</b></td>';
 | 
			
		||||
	        	
 | 
			
		||||
	        	if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") {echo '
 | 
			
		||||
				<td> </td>
 | 
			
		||||
				<td> </td>
 | 
			
		||||
	         </tr>';}
 | 
			
		||||
			?>
 | 
			
		||||
		</tbody>
 | 
			
		||||
	    </table>
 | 
			
		||||
	    
 | 
			
		||||
	    <!-- ============================================================== rappel des elements du remboursement -->
 | 
			
		||||
	    <form name="autresfrais" action="index.php?uc=etatFrais&action=validerEtat" method="post">
 | 
			
		||||
	    <div id="menu"> 
 | 
			
		||||
	    	<ul>
 | 
			
		||||
				<li>Etat : <b><?php echo $libEtat;?> </b></li>
 | 
			
		||||
				<li>depuis le :<br /><b><?php echo $dateModif;?></b> </li>
 | 
			
		||||
				<li>Justificatifs : <b><?php echo $nbJustificatifs; ?></b></li>
 | 
			
		||||
				<li>Montant validé : <br /><b><?php echo number_format($montantValide,2,',','.').' €';?></b> </li><br />
 | 
			
		||||
				<?php 
 | 
			
		||||
				if ($ajoutFraisPossible['modifComptable']=="oui") { echo '
 | 
			
		||||
				<li style="list-style-type:none;"><img alt="validation de la demande de remboursement" src="images/validation.jpg" onClick="document.autresfrais.submit();"></li>';} 
 | 
			
		||||
				?>
 | 
			
		||||
			</ul>
 | 
			
		||||
		</div>
 | 
			
		||||
		
 | 
			
		||||
	    <!-- ============================================================== frais hors forfaits -->
 | 
			
		||||
	  	<table class="listeLegere">
 | 
			
		||||
	  	   <caption><h3> Autres dépenses (hors forfaits) 
 | 
			
		||||
	  	   <?php 
 | 
			
		||||
  	   		if ($ajoutFraisPossible['horsForfait']=="oui") echo '
 | 
			
		||||
	   		<a href="index.php?uc=gererFraisHorsForfait&action=ajouter" title="ajout frais hors forfait">
 | 
			
		||||
	   		<img alt="Ajouter un frais hors forfait" src="images/ajouter.jpg" border="0"> </a>
 | 
			
		||||
	   		';?></h3>
 | 
			
		||||
	       </caption>
 | 
			
		||||
			<thead>
 | 
			
		||||
	             <tr>
 | 
			
		||||
	                <th class="date">Date</th>
 | 
			
		||||
	                <th class="libelle">Nature de la dépense</th>
 | 
			
		||||
	                <th class="montant">Montant</th>
 | 
			
		||||
	                <?php
 | 
			
		||||
					if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") {echo '
 | 
			
		||||
					<th> </th>
 | 
			
		||||
					<th> </th>';}
 | 
			
		||||
					if ($ajoutFraisPossible['modifComptable']=="oui") {echo '
 | 
			
		||||
					<th><img name="zTous" alt="valider tous les justificatifs" src="images/cocheB.gif" width="20px" onClick="tousLesJustificatifs(document.autresfrais);" onMouseOver="src=\'images/cocheR.gif\'"  onMouseOut="src=\'images/cocheB.gif\'">
 | 
			
		||||
					<input type="hidden" name="zSens" value="on"></th>';} 
 | 
			
		||||
					?>
 | 
			
		||||
	             </tr> 
 | 
			
		||||
	        </thead>
 | 
			
		||||
	        <tbody> 
 | 
			
		||||
	        <?php 
 | 
			
		||||
	        	$totalFraisHorsForfait=0;     
 | 
			
		||||
		        foreach ( $lesFraisHorsForfait as $unFraisHorsForfait ) 
 | 
			
		||||
				{if (substr($unFraisHorsForfait['lhLibelle'],0,6)<>'REFUSE') {$td='<td style="text-decoration:none;"';} else {$td='<td style="text-decoration:line-through; color:red;"';} 
 | 
			
		||||
				echo '<tr>'.
 | 
			
		||||
		            $td.'>'.$unFraisHorsForfait['lhDate'].'</td>'.
 | 
			
		||||
		            $td.'>'.$unFraisHorsForfait['lhLibelle'].'</td>'.
 | 
			
		||||
		            $td.' align="right">'.number_format($unFraisHorsForfait['lhMontant'],2,',','.').'</td>';
 | 
			
		||||
		            
 | 
			
		||||
	  	   			if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") 
 | 
			
		||||
	  	   			{echo '				
 | 
			
		||||
		         	<td><a href="index.php?uc=gererFraisHorsForfait&action=editer&idFrais='.$unFraisHorsForfait['lhId'].'"><img alt="modifier" src="images/editer.jpg" border="0"></a></td>
 | 
			
		||||
		        	<td><img alt="supprimer" src="images/supprimer.jpg" border="0"></td>';
 | 
			
		||||
		        	}
 | 
			
		||||
					if ($ajoutFraisPossible['modifComptable']=="oui") 
 | 
			
		||||
					{if (substr($unFraisHorsForfait['lhLibelle'],0,6)<>'REFUSE') 
 | 
			
		||||
						{echo '<td><input type="checkbox" name="justificatifs[]" value="'.$unFraisHorsForfait['lhId'].'" checked onClick=""></td>';}
 | 
			
		||||
					else
 | 
			
		||||
						{echo '<td> </td>';}						
 | 
			
		||||
		        	}
 | 
			
		||||
		        	$totalFraisHorsForfait=$totalFraisHorsForfait + $unFraisHorsForfait['lhMontant']; echo '
 | 
			
		||||
	         	</tr>';
 | 
			
		||||
		       }
 | 
			
		||||
	         echo '
 | 
			
		||||
	         <tr>
 | 
			
		||||
	         	<td> </td>
 | 
			
		||||
	        	<td align="right"><b>Total</b></td>
 | 
			
		||||
	        	<td align="right"><b>'.number_format($totalFraisHorsForfait,2,',','.').'</b></td>';
 | 
			
		||||
			 	if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") {echo '
 | 
			
		||||
			 	<td> </td>
 | 
			
		||||
				<td> </td>';} 
 | 
			
		||||
				if ($ajoutFraisPossible['modifComptable']=="oui") {echo '
 | 
			
		||||
				<td> </td>';} echo '
 | 
			
		||||
	         </tr>
 | 
			
		||||
			</tbody>
 | 
			
		||||
	    </table>
 | 
			
		||||
	</div>    
 | 
			
		||||
	<h3 align="center"><b>Total de la demande de remboursement de frais : '.number_format($totalFraisForfait + $totalFraisHorsForfait,2,',','.').' €</b></h3>
 | 
			
		||||
    </form>
 | 
			
		||||
 | 
			
		||||
  </div>'; ?>
 | 
			
		||||
							
								
								
									
										92
									
								
								vues/v_gestionFiches.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,92 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
    <meta charset="UTF-8">
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
			
		||||
    <title>Page accueil</title>
 | 
			
		||||
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
 | 
			
		||||
        integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
 | 
			
		||||
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
 | 
			
		||||
        integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
 | 
			
		||||
        crossorigin="anonymous"></script>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
    <div class="container-fluid">
 | 
			
		||||
        <div class="row flex-nowrap">
 | 
			
		||||
            <?php include('../include/menu.php') ?>
 | 
			
		||||
 | 
			
		||||
            <div class="col py-3">
 | 
			
		||||
                <center>
 | 
			
		||||
                    <div class="col-3 mb-4">
 | 
			
		||||
                        <h3>Gerer mes fiches de frais</h3>
 | 
			
		||||
                        <br>
 | 
			
		||||
                        <select class="form-select" name="selVisiteur" id="">
 | 
			
		||||
                            <option value="visiteur1">Visiteur 1</option>
 | 
			
		||||
                        </select>
 | 
			
		||||
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                </center>
 | 
			
		||||
 | 
			
		||||
                <div class="col-11 d-flex mx-auto">
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    <table class="table table-striped">
 | 
			
		||||
                        <thead>
 | 
			
		||||
                            <tr>
 | 
			
		||||
                                <th scope="col">Mois</th>
 | 
			
		||||
                                <th scope="col">Total</th>
 | 
			
		||||
                                <th scope="col">Statut</th>
 | 
			
		||||
                                <th scope="col">Détails</th>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                        </thead>
 | 
			
		||||
                        <tbody>
 | 
			
		||||
                            <tr>
 | 
			
		||||
                                <th scope="row">Novembre</th>
 | 
			
		||||
                                <td>351 €</td>
 | 
			
		||||
                                <td>en cours...</td>
 | 
			
		||||
                                <td><a href="#">voir</a></td>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                            <tr>
 | 
			
		||||
                                <th scope="row">Octobre</th>
 | 
			
		||||
                                <td>1458 €</td>
 | 
			
		||||
                                <td>en cours...</td>
 | 
			
		||||
                                <td><a href="#">voir</a></td>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                            <tr>
 | 
			
		||||
                                <th scope="row">Septembre</th>
 | 
			
		||||
                                <td>1112 €</td>
 | 
			
		||||
                                <td>classé</td>
 | 
			
		||||
                                <td><a href="#">voir</a></td>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                        </tbody>
 | 
			
		||||
                    </table>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="col-4 d-flex mx-auto">
 | 
			
		||||
                    <nav aria-label="...">
 | 
			
		||||
                        <ul class="pagination">
 | 
			
		||||
                            <li class="page-item disabled">
 | 
			
		||||
                                <a class="page-link">Previous</a>
 | 
			
		||||
                            </li>
 | 
			
		||||
                            <li class="page-item"><a class="page-link" href="#">1</a></li>
 | 
			
		||||
                            <li class="page-item active" aria-current="page">
 | 
			
		||||
                                <a class="page-link" href="#">2</a>
 | 
			
		||||
                            </li>
 | 
			
		||||
                            <li class="page-item"><a class="page-link" href="#">3</a></li>
 | 
			
		||||
                            <li class="page-item">
 | 
			
		||||
                                <a class="page-link" href="#">Next</a>
 | 
			
		||||
                            </li>
 | 
			
		||||
                        </ul>
 | 
			
		||||
                    </nav>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										7
									
								
								vues/v_pied.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,7 @@
 | 
			
		||||
 | 
			
		||||
<!-- Division pour le pied de page -->
 | 
			
		||||
<div>
 | 
			
		||||
   <hr /><p style="text-align:center;"><img src="images/castel.png" style="vertical-align: middle;"><?php echo "Lycée Le Castel à Dijon - BTS SIO - <img src='images/copyleft.png' style='text-align: center; vertical-align: middle;'> 03/05/2023 Blain Pascal";?></p> 
 | 
			
		||||
</div>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										60
									
								
								vues/v_unFraisForfaitaire.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,60 @@
 | 
			
		||||
<!-- Derniere modification le 03/05/2023 à 11H01 à 15H11 -->
 | 
			
		||||
<div id="contenu">
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
 	if ($_REQUEST['action']=="supprimer") 
 | 
			
		||||
		{echo '<h2>SUPPRESSION D\'UN FRAIS FORFAITAIRE</h2>';
 | 
			
		||||
		echo '<form name="unFraisForfaitaire" action="index.php?uc=gererFraisForfaitaire&action=validerSupprimer&forfait='.$unForfait['lfForfait'].'" method="POST">';} 
 | 
			
		||||
	else 
 | 
			
		||||
		{echo '<h2>EDITION D\'UN FRAIS FORFAITAIRE</h2>';
 | 
			
		||||
		echo '<form name="unFraisForfaitaire" action="index.php?uc=gererFraisForfaitaire&action=validerModifier&forfait='.$unForfait['lfForfait'].'" method="POST">';}
 | 
			
		||||
?>	
 | 
			
		||||
		<table class="listeLegere">
 | 
			
		||||
			<thead>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<th class="date">Quantité</th>
 | 
			
		||||
					<th class="eltForfait">Nature de la dépense</th>
 | 
			
		||||
					<th class="montant">Prix</th>
 | 
			
		||||
					<th class="montant">Montant</th>
 | 
			
		||||
				</tr>
 | 
			
		||||
			</thead>
 | 
			
		||||
			<tbody>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<td><input type="text" name="zQte" onkeyup="calculer()" style="text-align:right;border: 0;" value="<?php echo $unForfait['lfQuantite'].'"';if ($_REQUEST['action']=="supprimer") {echo ' disabled';}?>>
 | 
			
		||||
					<input type="hidden" name="zMois" value="<?php echo $leMois; ?>"></td>
 | 
			
		||||
					<td><input type="text" name="zForfait" value="<?php echo $unForfait['fLibelle']; ?>" style="text-align:left;border: 0;" disabled></td>
 | 
			
		||||
					<td><input type="text" name="zPrix" value="<?php echo number_format($unForfait['lfMontant'],2,',','.'); ?>" style="text-align:right;border: 0;" disabled></td>
 | 
			
		||||
					<td><input type="text" name="zMontant"  value="<?php echo number_format($unForfait['lfQuantite']*$unForfait['lfMontant'],2,',','.'); ?>" style="text-align:right;border: 0;" disabled></td>
 | 
			
		||||
				</tr>
 | 
			
		||||
			</tbody>
 | 
			
		||||
		</table>
 | 
			
		||||
		<p align="right"><input type="image" id="zValider" alt="Oui" src="images/valider.jpg" onclick="valider()"><input type="image" name="zAnnuler" alt="Non" src="images/annuler.jpg" onclick="annuler()"></p>
 | 
			
		||||
				
 | 
			
		||||
	</form>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
	
 | 
			
		||||
	<script src="include/proceduresJava.js" type="text/javascript"></script>
 | 
			
		||||
	
 | 
			
		||||
	<script type="text/javascript">
 | 
			
		||||
		function calculer()
 | 
			
		||||
		{
 | 
			
		||||
			if (!isNaN(document.unFraisForfaitaire.zQte.value)) {document.unFraisForfaitaire.zMontant.value=(parseFloat(document.unFraisForfaitaire.zPrix.value)*parseInt(document.unFraisForfaitaire.zQte.value))};
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		function valider()
 | 
			
		||||
		{	
 | 
			
		||||
			document.unFraisForfaitaire.zQte.disabled=false;
 | 
			
		||||
			document.unFraisForfaitaire.submit();
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		function annuler()
 | 
			
		||||
		{
 | 
			
		||||
			document.unFraisForfaitaire.zQte.disabled=false;
 | 
			
		||||
			document.unFraisForfaitaire.zQte.value=0;
 | 
			
		||||
			document.unFraisForfaitaire.submit();
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		window.onload = function() { calculer(); };		
 | 
			
		||||
		
 | 
			
		||||
	</script>
 | 
			
		||||
							
								
								
									
										55
									
								
								vues/v_unFraisHorsForfait.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,55 @@
 | 
			
		||||
<!-- Derniere modification le 03/05/2023 à 11H01 -->
 | 
			
		||||
<div id="contenu">
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
 	if ($_REQUEST['action']=="supprimer") 
 | 
			
		||||
		{echo '<h2>SUPPRESSION D\'UN FRAIS HORS FORFAIT</h2>';
 | 
			
		||||
		echo '
 | 
			
		||||
	<form name="unFraisHorsForfait" action="index.php?uc=gererFraisHorsForfait&action=validerSupprimer&idFrais='.$unFrais['lhId'].'" method="POST">';} 
 | 
			
		||||
	else 
 | 
			
		||||
		{echo '<h2>EDITION D\'UN FRAIS HORS FORFAIT</h2>';
 | 
			
		||||
		echo '
 | 
			
		||||
	<form name="unFraisHorsForfait" action="index.php?uc=gererFraisHorsForfait&action=validerModifier&idFrais='.$unFrais['lhId'].'" method="POST">';}
 | 
			
		||||
?>	
 | 
			
		||||
		<table class="listeLegere">
 | 
			
		||||
			<thead>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<th class="date">Date</th>
 | 
			
		||||
					<th class="eltForfait">Nature de la dépense</th>
 | 
			
		||||
					<th class="montant">Montant</th>
 | 
			
		||||
				</tr>
 | 
			
		||||
			</thead>
 | 
			
		||||
			<tbody>
 | 
			
		||||
				<tr>
 | 
			
		||||
					<!-- insérer ici votre code -->
 | 
			
		||||
				</tr>
 | 
			
		||||
			</tbody>
 | 
			
		||||
		</table>
 | 
			
		||||
		<p align="right">
 | 
			
		||||
<?php  	if ($_REQUEST['action']=="supprimer" and $_SESSION['statut']!="1")  {echo '
 | 
			
		||||
 			Si vous confirmez votre choix, la dépense invalidée sera marquée "REFUSEE")';} ?>
 | 
			
		||||
			<input type="image" id="zValider" alt="Oui" src="images/valider.jpg" onclick="valider()">
 | 
			
		||||
			<input type="image" name="zAnnuler" alt="Non" src="images/annuler.jpg" onclick="annuler()">
 | 
			
		||||
		</p>
 | 
			
		||||
				
 | 
			
		||||
	</form>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
	
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
		function valider()
 | 
			
		||||
			{
 | 
			
		||||
			document.unFraisHorsForfait.zMontant.disabled=false;
 | 
			
		||||
			document.unFraisHorsForfait.zLibelle.disabled=false;
 | 
			
		||||
			document.unFraisHorsForfait.submit();
 | 
			
		||||
			}
 | 
			
		||||
		
 | 
			
		||||
		function annuler()
 | 
			
		||||
			{
 | 
			
		||||
			document.unFraisHorsForfait.zMontant.disabled=false;
 | 
			
		||||
			document.unFraisHorsForfait.zMontant.value=0;
 | 
			
		||||
			document.unFraisHorsForfait.submit();
 | 
			
		||||
			}
 | 
			
		||||
		
 | 
			
		||||
</script>
 | 
			
		||||
<!-- fin -->
 | 
			
		||||