<?php
include "library/DB_fct.inc.php";
include "library/_gesTechDesign.inc.php";
// ========================================================================================
// FONCTIONS LOCALES
// ========================================================================================
// -------------------------------------------------------------------
function _menuRight(){
echo "<h2>GesProd</h2>";
echo "<h2>Gamme</h2>";
echo "<p>La gamme est la liste des opérations à réaliser pour fabriquer un produit : <i>la recette</i></p>";
echo "<h2>Nomenclature</h2>";
echo "<p>La nomenclature est la liste des articles nécessaires pour fabriquer un produit : <i>les ingrédients</i></p>";
}
// -------------------------------------------------------------------
function _isInTab($tab, $testValue){
	// attention, petit pbm si l'indice = 0
	$indice=-1;
	if(is_array($tab))
	foreach($tab as $key => $val)
		if ($val==$testValue){
			$indice=$key;
			break;
		}
	return $indice;
}
// ========================================================================================
// MAIN()
// ========================================================================================
$userId="";
$pageName="beArtLst.php";
$tableName="Article";
$headTitle="Liste des Articles";
$contentTitle="Gestion des données (BackEnd)";

$dspPage="beArtDsp.php";
$updPage="beArtUpd.php";
$delPage="beArtDel.php";
$addPage="beArtAdd.php";

// Récup des paramètres
// tableaux pour ne pas montrer le vrai nom des champs dans les paramètres transmis
$t_sortFieldNames=array("1", "2", "3", "4"); // nom des champs dans les paramètres html
$t_sortFieldDbTabNames=array("", "", "", "article.");  // mettre ici le nom de la table de la requête (avec le point !!!)
$t_sortFieldDbNames=array("artCode", "artDesc", "artPrixHT", "artTypeCode"); // nom des champs dans la BDD
$t_sortFieldDesc=array("Référence", "Description", "Prix HT", "Type"); // description des champs à afficher
$t_sortFieldDsp=array(true, true, true, true, true); // tri autorisé ou non
$t_sortFieldDir=array("", "", "", "", "", ""); // ordre de tri (temporairement défini)
$defaultSortClause=" ORDER BY article.artCode desc";


//=======================================================================
// Construction de la requête à afficher, connexion et ouverture.
//=======================================================================
//======================================================================
// gestion du tri et du filtre
//======================================================================
//	Tris
// -------------------------------------------------------------------
// si le tri est nommé (desc ou asc) alors le tri demandé est changé, sinon il reste comme il est
$sortDir="";
$sortField="";

// recup paramètres si existent
(isset($_REQUEST['sortDir']))?$sortDir=$_REQUEST['sortDir']:$sortDir="desc"; // 
(isset($_REQUEST['sortField']))?$sortField=$_REQUEST['sortField']:$sortField="artCode"; // 

// si le tri est orienté, changer le tri : "">"asc">"desc">""
if ($sortDir=="asc")
	$sortDirNew="desc";
elseif ($sortDir=="desc")
	$sortDirNew="";
else 
	$sortDirNew="asc";

// construction de l'ordre de tri ; !!!! Actuellement, un tri annule les autres
$sortClause="";
foreach($t_sortFieldNames as $key => $val){
	if ($sortField == $val)
		$t_sortFieldDir[$key]=$sortDirNew;
	if ($t_sortFieldDir[$key]!=""){
		if (empty($sortClause))
			$sortClause=" ORDER BY ";
		else 
			$sortClause.=", ";
		$sortClause.=$t_sortFieldDbTabNames[$key].$t_sortFieldDbNames[$key]." ".$t_sortFieldDir[$key];
	}
}
// -------------------------------------------------------------------
// Gestion du filtre des produits
$mode=0;
if (isset($_REQUEST['mode'])){
	$mode=$_REQUEST['mode'];
}
// -------------------------------------------------------------------
	$requete_sql="SELECT artCode, artDesc, artPrixHT, article.artTypeCode FROM Article, artType ";
	$requete_sql.=" WHERE article.artTypeCode=artType.artTypeCode ";
	if ($mode==0) // PF seulement
		$requete_sql.=" and  article.artTypeCode in ('F')";
	if ($mode==2) // PF seulement
		$requete_sql.=" and  article.artTypeCode in ('F')";
	if ($mode==4) // tous articles fabriqués (finis et semi finis)
		$requete_sql.=" and  article.artTypeCode in ('F', 'S')";
	(!empty($sortClause))?$requete_sql.=$sortClause:$requete_sql.=$defaultSortClause;
// -------------------------------------------------------------------
	$connexion=DB_connecter(); 
	$requete_id=DB_ouvrirRequete($requete_sql, $connexion);
	//echo "<br>".$requete_sql."<";
	//echo "<br>".mysql_error();

//=======================================================================
// Affichage 
//=======================================================================
_pageHeader($userId);	// entête de page et menu
?>
<br> 
	<section><header>Bureau d'étude, industrialisation</header>
		<article>
		<p>
		Définition de l'infrastructure de la production : les articles, les gammes et les nomenclatures<br>
		</article>
	</section>
	<section><header>Données article</header>
		<article>
		<p>Ci-dessous, vous pouvez afficher les données d'un article : les besoins, les ressources, les données techniques.</p>
<?php

// affichage du tableau de filtrage
	echo "<div border=1 align=center><!--Debut de liste-->\n";
	echo "<ul id='filtreList'>";
	echo "<li class='filtreTitre'>Filtres : </li>";
	echo "<li class='filtreItem'><a href=$pageName?mode=0>X</a></li>";
	echo "<li class='filtreItem'><a href=$pageName?mode=2>Produits Fini</a></li>";
	echo "<li class='filtreItem'><a href=$pageName?mode=4><span title='produits finis ou semi-finis'>Produits Fabriqués</span></a></li>";
	echo "</ul>";
	echo "</div><!-- Fin de liste -->";
// début de liste
	echo "<table border=1 width=100%><!--Debut de liste-->\n";
	// Ouvrir et tester la requête. y a-t-il qqch à afficher ?
	$t_record=DB_lireLigne($requete_id);
	if ($t_record){
		// afficher l'entête de la liste :
		// a) construire la liste des champ de la requête
		foreach($t_record as $key=>$val)
			if(!is_numeric ($key))
				$t_fileList[]=$key;
		
		// b) afficher l'entête des colonnes en vérifiant si on peut faire du tri dessus
		echo "<tr>";
		echo "<th>Voir</th>";
		echo "<th>Mod</th>";
		echo "<th>Sup</th>";
		foreach($t_fileList as $key=>$val){
			echo "<th>";
			if(_isInTab($t_sortFieldDbNames, $val)>=0){
				$field=$t_sortFieldNames[$key];
				$desc=$t_sortFieldDesc[$key];
				$dir=$t_sortFieldDir[$key];
				if ($t_sortFieldDsp[$key]==true){
					$url=$pageName."?";
					($mode)?$url.="mode=$mode&":$url=$url;
					$url.="sortDir=$dir&sortField=$field";
					echo "<a href=\"".$url."\">";
					echo "<img src=\"segami/s_$dir.png\" border=0 /> $desc ";
					echo "</a>";
				}else
					echo "$desc";
			}else
				echo "$val";
			echo "</th>";
		}
		echo "</tr>\n";
		
		// c) afficher la liste des enregistrements
		$color=1;
		while ($t_record){
			$recordKey=$t_record['artCode'];
			// définition de la classe de style en fonction du type et du n° de ligne :
			($color)?$color=0:$color=1;
			$classe="td".$t_record['artTypeCode'].$color;
			// affichage de la ligne
			echo "	<tr class=$classe>";
			echo "		<td><a href=\"".$dspPage."?artCode=$recordKey\" ><img src=\"segami/btnDetail.png\" border=0 /></a></td>";
			echo "		<td><a href=\"".$updPage."?artCode=$recordKey\" ><img src=\"segami/btnUpd.png\" border=0 /></a></td>";
			echo "		<td><a href=\"".$delPage."?artCode=$recordKey\" ><img src=\"segami/btnDel.png\" border=0 /></a></td>";
			foreach($t_fileList as $key=>$val)
				(empty($t_record[$val]))?print "<td>&nbsp;</td>":print "<td>".$t_record[$val]."</td>";
			echo "	</tr>\n";
			$t_record=DB_lireLigne($requete_id);
		}
		// fin de liste
	}else
		echo "<tr><td colspan=100%>aucun enreg trouvé</td></tr>";
// Fin de liste
	echo "</table><!-- Fin de liste -->\n";
//========================================================================
// fin de l'affichage de la liste
//========================================================================
?>
		</article>
	</section>
<?php
//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page
?>