<?php
/* ========================================================================================
	Liste des commandes d'un tier
// note : j'ai modifié le lien de départ pour ne pas venir ici si on affiche un OF
	
	Manque la gestion/affichage du stock disponible pour les articles de la commandes
 ========================================================================================*/
include "library/DB_fct.inc.php";
include "library/PARM_tabs.inc.php"; // tableaux de paramètres communs
include "library/_gesComDesign.inc.php";
// ========================================================================================
// FONCTIONS LOCALES
// ========================================================================================
// -------------------------------------------------------------------
function _menuRight(){
	echo "GESCOM";
	echo "<br>Détails d'une commande.";
	echo "<div class='help'>";
	echo "<ul>
	<li>Afficher une fiche article</li>
	<li>Gérer la commande</li>
</ul>";
	echo "</div>";
}
// -------------------------------------------------------------------
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;
}
// -------------------------------------------------------------------
function _dspCdeHeader($cdeNum, $recType){
global $connexion;
global $PRM_cdeEtatDesc;
$PRM_cdeTypeDesc=array('cc'=> "Client", 'cf'=> "Fournisseur", 'of'=>"Article"); // liste des description de l'origine

	switch ($recType){
	case 'cc':
		$tableName="cdeClient";	$tableDesc="Commande Client";		$subTableName="ligneCdeClientArt";	$id="cliNum";	
		$requete="SELECT cdeNum AS recNum, cdeDate AS recDate, cliNum AS refNum, cdeRemiseGlobale AS recRemise, cdeEtat AS recEtat, '$recType' AS recType, tierRaisonSociale AS refDesc
			FROM cdeClient, tier 
			WHERE cdeClient.$id=tier.tierNum AND cdeNum=$cdeNum ;";
		break;
	case 'cf':
		$tableName="cdeFour";	$tableDesc="Commande Fournisseur";	$subTableName="ligneCdeFourArt";	$id="fourNum";	
		$requete="SELECT cdeNum AS recNum, cdeDate AS recDate, fourNum AS refNum, 0 AS recRemise, cdeEtat AS recEtat, '$recType' AS recType, tierRaisonSociale AS refDesc
			FROM cdeFour, tier 
			WHERE cdeFour.$id=tier.tierNum AND cdeNum=$cdeNum ;";
		break;
	default :
		$tableName="ordFab";	$tableDesc="Ordre de fabrication";	$subTableName="ofNomenclature";		$id="ofNum";	
		$requete="SELECT ofNum AS rcdNum, ofDate AS rcdDate, artCode AS refNum, 0 AS recRemise, ofEtat AS recEtat, '$recType' AS recType, artDesc AS recDesc
			FROM ordFab, article
			WHERE ordFab.artCode=article.artCode AND ofNum=$cdeNum ;";
		break;
	}
		
	$t_record=DB_chercherEnreg($requete, $connexion);
	if (!$t_record=DB_chercherEnreg($requete, $connexion)){
		echo "Erreur de paramètre ($tierNum) ; <a href=\"javascript:history.back()\">Retour page précédente !</a>";
		_pageFooter(); // pied de page
		exit(0);
	}
	
	// b) afficher l'entête des colonnes en vérifiant si on peut faire du tri dessus
	//	tierPayCode Code conditions de paiement	tierDelai
	// 	les champs requis sont : 	recNum, recDate, refNum, recRemise, recEtat, recType, refDesc		
	echo "<div class=itemList>\n";
	echo "<header>$tableDesc n° ".$t_record['recNum']."</header>";
	echo "<ul>";
		echo "<li><label align=right>".$PRM_cdeTypeDesc[$t_record['recType']]."</label><span align=left >(".$t_record['refNum'].") ".$t_record['refDesc']."</span></li>";
		echo "<li><label align=right>Date</label><span align=left >".$t_record['recDate']."</span></li>";
		echo "<li><label align=right>Remise</label><span align=left >".$t_record['recRemise']." %</span></li>";
		echo "<li><label align=right>Etat</label><span align=left >".$PRM_cdeEtatDesc[$t_record['recEtat']]."</span></li>";
	echo "</ul>\n";
	echo "</div>\n";
	return $t_record;
}
// ========================================================================================
// MAIN()
// ========================================================================================
$userId="";
$pageName="gesComDspCde.php";
$tableName="Tier";
$headTitle="Fiche Commande";
$contentTitle="Gestion de production";

$dspPage="gesComDspCde.php";
$updPage="gesComDspCde.php";
$delPage="gesComDspCde.php";
$addPage="gesComDspCde.php";

// Récup des paramètres
// Récup de l'enregistrement, vérif s'il n'y a pas d'erreur de code.
(isset($_REQUEST['id']))?$cdeNum=$_REQUEST['id']:$cdeNum=""; // 
(isset($_REQUEST['type']))?$cdeType=$_REQUEST['type']:$cdeType=""; // 


// tableaux pour ne pas montrer le vrai nom des champs dans les paramètres transmis
//	$requete="SELECT cdeNum AS recNum, cdeDate AS recDate, $id AS refNum, cdeRemiseGlobale AS recRemise, 
//	cdeEtat AS recEtat, '$cdeType' AS recType, tierRaisonSociale AS recDesc";
$t_sortFieldNames=array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"); // nom des champs dans les paramètres html
$t_sortFieldDbTabNames=array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");  // mettre ici le nom de la table de la requête (avec le point !!!)
$t_sortFieldDbNames=array("refNum", "refDesc", "tierAdresse", "recRemise", "recType", "recNum", "recDate", 
	"cdeRemiseGlobale", "artCode", "artDesc", "artPrixHT", "ligneRemiseArticle", "qte", "montantHT", "ligneEtat", "besEtat"); // nom des champs dans la BDD
$t_sortFieldDesc=array("Ref. origine", "Origine", "Adresse", "Taux de remise", "Type", "N°", "Date", 
	"Remise globale", "Article", "Description", "Prix HT", "Remise", "Qté", "Montant", "Etat", "Etat"); // description des champs à afficher
$t_sortFieldDsp=array(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); // tri autorisé ou non
$t_sortFieldDir=array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""); // ordre de tri (temporairement défini)


$defaultSortClause=" ORDER BY cdeDate desc";

//=======================================================================
// connexion et ouverture de la requête à afficher
//=======================================================================
	$connexion=DB_connecter(); 
// --------------------------------
// Vérif de la validité du type
	if ($cdeType=='cc'){
		$tableName="cdeClient";
		$tableDesc="Commande Client";
		$subTableName="ligneCdeClientArt";
		$id="cliNum";
	}elseif ($cdeType=='cf'){
		$tableName="cdeFour";
		$tableDesc="Commande Fournisseur";
		$subTableName="ligneCdeFourArt";
		$id="fourNum";
	}else{
		// voir si le même écran peut afficher les OF
		$tableDesc="Ordre de fabrication";
	}

//========================================================================
// AFFICHAGE
//========================================================================
_pageHeader($userId);	// entête de page et menu
//------------------------------------------------------------------------------------------------------------
// Afficher le tableau de présentation de l'item choisi
	$t_record=_dspCdeHeader($cdeNum, $cdeType);
//------------------------------------------------------------------------------------------------------------
// Affichage la liste des commandes client/fournisseur et le CA de chaque commande
//----------------------------------------------------------------------
	// 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="cdeDate"; // 

		// 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_sortFieldDbNames[$key]." ".$t_sortFieldDir[$key];
			}
		}
	// Filtre 
	//	mode=0 : toutes Cdes
	//	mode=1 : cdes échues
	//	mode=2 : Cdes a venir
	(isset($_REQUEST['mode']))?$mode=$_REQUEST['mode']:$mode=0;

//=======================================================================
	// ouverture de la requête à afficher
	// construire la requête
	$selectCde="";
	if ($cdeType=='cc'){
	$selectCde.="
		SELECT article.artCode,artDesc,artPrixHT,ligneRemiseArticle,qte,qte*artPrixHT AS montantHT, ligneEtat, 'cc' AS cdeType
			FROM CdeClient, LigneCdeClientArt, article
			WHERE CdeClient.cdeNum=LigneCdeClientArt.cdeNum AND LigneCdeClientArt.artCode=article.artCode
			AND cdeClient.cdeNum=$cdeNum 
	";
	}elseif ($cdeType=='cf'){
	$selectCde.="
		SELECT article.artCode,artDesc,artPrixHT,ligneRemiseArticle,qte,qte*artPrixHT AS montantHT, ligneEtat, 'cf' AS cdeType
			FROM CdeFour, LigneCdeFourArt, article
			WHERE CdeFour.cdeNum=LigneCdeFourArt.cdeNum AND LigneCdeFourArt.artCode=article.artCode
			AND cdeFour.cdeNum=$cdeNum 
		";
	}
	(!empty($sortClause))?$selectCde.=$sortClause:$selectCde.=$defaultSortClause;
	$requete_id=DB_ouvrirRequete($selectCde, $connexion);
	//------------------------------------------------------------------------------------------------------------
	// Affichage du bouton de réédition 
	//------------------------------------------------------------------------------------------------------------
	//
	if ($cdeType=='cc'){
		echo "<a href=cdePrint.php?id=$cdeNum&duplicata=yes target='_blank'>Réimprimer la commande ou le Devis</a>";
	}
	//------------------------------------------------------------------------------------------------------------
	// Affichage de la liste 
	//------------------------------------------------------------------------------------------------------------
	//------ Commandes :
	echo "<div id=cdeClient style='margin:0; padding:0; ' >";
	$t_record=DB_lireLigne($requete_id);
	unset($t_fileList);
	if ($t_record){
		echo "<table border=1 align=center><!--Debut de liste-->\n";
		echo "<caption>Contenu</caption>";
		// 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>";
		foreach($t_fileList as $key=>$val){
			echo "<th>";
			$i=_isInTab($t_sortFieldDbNames, $val);
			if($i>=0){
				$field=$t_sortFieldNames[$i];
				$desc=$t_sortFieldDesc[$i];
				$dir=$t_sortFieldDir[$i];
				if ($t_sortFieldDsp[$i]==true){
					$url=$pageName."?id=$cdeNum&type=$cdeType&";
					($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";
		$color=1;
		echo "<br>".mysql_error();
		while ($t_record){
			// définition de la classe de style en fonction du type et du n° de ligne :
			($color)?$color=0:$color=1;
			$classe="td".$color;
			
			// affichage de la ligne
			$cdeNum=$t_record['artCode'];
			echo "<tr class=$classe>";
			echo "<td><a href=\"erpDspArt.php?artCode=$cdeNum\" ><img src=\"segami/btnDetail.png\" border=0 /></a></td>";
			echo "<td>".$t_record['artCode']."</td>";
			echo "<td>".$t_record['artDesc']."</td>";
			(!empty($t_record['artPrixHT']))?print "<td>".$t_record['artPrixHT']."</td>":print "<td>&nbsp;</td>";
			(!empty($t_record['ligneRemiseArticle']))?print "<td>".$t_record['ligneRemiseArticle']."</td>":print "<td>&nbsp;</td>";
			($t_record['qte']>0)?print "<td>".$t_record['qte']."</td>":print "<td>&nbsp;</td>";
			(!empty($t_record['ligneRemiseArticle']))?$t_record['montantHT']*=$t_record['ligneRemiseArticle']:null;
			($t_record['montantHT']>0)?print "<td>".$t_record['montantHT']."</td>":print "<td>&nbsp;</td>";
			echo "	<td>".$PRM_cdeEtatDesc[$t_record['ligneEtat']]."</td>";
			echo "</tr>\n";
			$t_record=DB_lireLigne($requete_id);
		}
		echo "</table>";
	}else echo "Aucun article à afficher";
	echo "</div>";

//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page
?>