<?php
/* ========================================================================================
	Liste des commandes d'un tier
	
	Manque un indicateur sur 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'un tiers.";
	echo "<div class='help'>";
	echo "<ul>
	<li>Afficher le détail d'une commande,</li>
	<li>Gérer une 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 _getPays($payCode){
	return $paysCode;
}
// -------------------------------------------------------------------
function _getTier($tierNum){
global $connexion;
	$requete="SELECT * FROM tier WHERE tierNum=$tierNum ;";
	if (!$t_record=DB_chercherEnreg($requete, $connexion)){
		echo "Erreur de paramètre ($tierNum) ; <a href=\"javascript:history.back()\">Retour page précédente !</a>";
		_bodyRight();
		_pageFooter(); // pied de page
		exit(0);
	}
	return $t_record;
}
// -------------------------------------------------------------------
function _dspTier($tierNum){
global $connexion;
	$t_record=_getTier($tierNum);
	// a) construire la liste des champs 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
	//	tierPayCode Code conditions de paiement	tierDelai
	echo "<div class=itemList>\n";
	echo "<header>Tier</header>";
	echo "<ul>";
		echo "<li><label align=right>Numéro</label><span align=left >".$t_record['tierNum']."</span></li>";
		echo "<li><label align=right>Raison Sociale</label><span align=left >".$t_record['tierRaisonSociale']."</span></li>";
		echo "<li><label align=right>Adresse</label><span align=left >".$t_record['tierAdresse']."</span></li>";
		echo "<li><label align=right>Pays</label><span align=left >".$t_record['paysCode']."</span></li>";
		echo "<li><label align=right>tierRemiseTier</label><span align=left >".$t_record['tierRemiseTier']." %</span></li>";
		//	tierTypeCode c=client, f=fournisseur, b=both (les deux)	tierPayCode Code conditions de paiement	tierDelai
		echo "<li><label align=right>tierTypeCode</label><span align=left >(".$t_record['tierTypeCode'].") "; // ...
		if ($t_record['tierTypeCode']=='c'){
			echo "Client</span></li>";
		}else{
			if ($t_record['tierTypeCode']=='f')
				echo "Fournisseur</span></li>";
			else
				echo "Client & Fournisseur</span></li>";
			echo "<li><label align=right>Code conditions de paiement</label><span align=left >".$t_record['tierPayCode']."</span></li>";
			echo "<li><label align=right>tierDelai</label><span align=left >".$t_record['tierDelai']."&nbsp;(m)</span></li>";
		}
	echo "</ul>\n";
	echo "</div>\n";
	return $t_record;
}
// ========================================================================================
// MAIN()
// ========================================================================================
$userId="";
$pageName="dspTier.php";
$tableName="Tier";
$headTitle="Fiche Tier";
$contentTitle="Gestion de production";

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

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

// tableaux pour ne pas montrer le vrai nom des champs dans les paramètres transmis
$t_sortFieldNames=array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"); // 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("tierNum", "tierRaisonSociale", "tierAdresse", "tierRemiseTier", "cdeType", "refNum", "cdeDate", "ccMtHT", "cfMtHT", "besNbLigne", "besEtat"); // nom des champs dans la BDD
$t_sortFieldDesc=array("n° Tier", "Raison sociale", "Raison sociale", "Taux de remise Tier", "Type", "Référence", "Date", "Mt Vente", "Mt Achat", "Nbre Art.", "Etat"); // description des champs à afficher
$t_sortFieldDsp=array(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(); 
//========================================================================
// AFFICHAGE
//========================================================================
_pageHeader($userId);	// entête de page et menu
//------------------------------------------------------------------------------------------------------------
// Affichage de l'item choisi
$t_record=_dspTier($tierNum);

//------------------------------------------------------------------------------------------------------------
// Affichage la liste des commandes client/fournisseur et le CA de chaque commande
$action="dsp";
//----------------------------------------------------------------------
// 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
	// -------------------------------------------------------------------
	$mode=0;
	if (isset($_REQUEST['mode'])){
		$mode=$_REQUEST['mode'];
	}
//=======================================================================
// ouverture de la requête à afficher
//=======================================================================
// tester les cdes client :
	$testcc="SELECT * FROM cdeClient WHERE cliNum='$tierNum' ;";
	$testcc_id=DB_ouvrirRequete($testcc, $connexion);
	$ccNbRow=mysql_num_rows($testcc_id);
// tester les cdes fournisseur :
	$testcf="SELECT * FROM cdeFour WHERE fourNum='$tierNum' ;";
	$testcf_id=DB_ouvrirRequete($testcf, $connexion);
	$cfNbRow=mysql_num_rows($testcf_id);

// construire la requête
	$selectCde="";
	if ($ccNbRow>0){
	$selectCde.="
		SELECT 'cc' as cdeType, cdeClient.cdeNum as refNum, cdeDate, sum(artPrixHT*qte) as ccMtHT, 0 as cfMtHT, count(*) AS besNbLigne, cdeEtat AS besEtat
			FROM CdeClient, LigneCdeClientArt, article
			WHERE CdeClient.cdeNum=LigneCdeClientArt.cdeNum AND LigneCdeClientArt.artCode=article.artCode
			and cliNum='$tierNum' 
	";
	}
	if ($cfNbRow>0){
		if ($ccNbRow>0)	$selectCde.=" UNION ";
		$selectCde.="
			SELECT 'cf' as cdeType, cdeFour.cdeNum as refNum, cdeDate, 0 as ccMtHT, sum(artPrixHT*qte) as cfMtHT, count(*) AS besNbLigne, cdeEtat AS besEtat
				FROM CdeFour, LigneCdeFourArt, article
				WHERE CdeFour.cdeNum=LigneCdeFourArt.cdeNum
				and LigneCdeFourArt.artCode=article.artCode
				and fourNum='$tierNum' 
			";
	}
	$groupClause = "GROUP BY cdeType, refNum, cdeDate";
/*
*/		
	$selectCde.=$groupClause;
	(!empty($sortClause))?$selectCde.=$sortClause:$selectCde.=$defaultSortClause;

	$requete_id=DB_ouvrirRequete($selectCde, $connexion);
//echo $selectCde;
//echo "<br>".mysql_error();
//------------------------------------------------------------------------------------------------------------
// Affichage de la liste 
//------------------------------------------------------------------------------------------------------------
//------ Commandes :
echo "<div id=cdeClient style='margin:0; padding:0; ' >";
if ($ccNbRow>0 || $cfNbRow>0){
echo "<table border=1 align=center><!--Debut de liste-->\n";
echo "<caption>Commandes</caption>";
$t_record=DB_lireLigne($requete_id);
unset($t_fileList);
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>Traiter</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."?";
				($mode)?$url.="mode=$mode&":$url=$url;
				$url.="id=$tierNum&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".$t_record['cdeType'].$color;
		
		// affichage de la ligne
		$tierNum=$t_record['refNum'];
		echo "<tr class=$classe>";
		echo "	<td><a href=\"gesComDspCde.php?id=$tierNum&type=".$t_record['cdeType']."\" ><img src=\"segami/btnDetail.png\" border=0 /></a></td>";
		switch($t_record['cdeType']){
		case "cc": 
			echo "	<td><a href=\"gesComUpdCdec.php?id=$tierNum&type=".$t_record['cdeType']."\" ><img src=\"segami/btnModif.png\" border=0 /></a></td>";
			echo "	<td>Vente</td>";
			break;
		case "cf":
			echo "	<td><a href=\"approUpdCdef.php?id=$tierNum&type=".$t_record['cdeType']."\" ><img src=\"segami/btnModif.png\" border=0 /></a></td>";
			echo "	<td>Achat</td>";
			break;
		default:
			echo "	<td><a href=\"gesProdUpdOf.php?id=$tierNum&type=".$t_record['cdeType']."\" ><img src=\"segami/btnModif.png\" border=0 /></a></td>";
			echo "	<td>Ordre de Fabrication</td>";
			break;
		}
		echo "	<td>".$t_record['refNum']."</td>";
		//print "<td>".$t_record['besArtCode']."</td>";
		echo "	<td>".COM_YMDtoDMY($t_record['cdeDate'])."</td>";
		($t_record['ccMtHT']>0)?print "	<td>".$t_record['ccMtHT']."</td>":print "	<td>&nbsp;";
		($t_record['cfMtHT']>0)?print "	<td>".$t_record['cfMtHT']."</td>":print "	<td>&nbsp;";
		echo "	<td>".$t_record['besNbLigne']."</td>";
		echo "	<td>".$PRM_cdeEtatDesc[$t_record['besEtat']]."</td>";
		echo "</tr>\n";
		$t_record=DB_lireLigne($requete_id);
	}
}
echo "</table>";
}else echo "Aucune commande à afficher";
echo "</div>";
//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page

?>