<?php
/* gesProdDspArt.php
	Dans cette page, on peut afficher l'état de la production d'un article.
	On a donc : 
		-	une liste de données article, 
		-	une liste des OF en cours et des OP, liste des OF terminés.
	On peut demander la transformation d'un OP en OF (si l'article est "fabricable").
	on peut demander la suppression d'un OF,
	A VOIR SI on peut demander la saisie d'une fabrication, sans utiliser l'interface dédiée à celle-ci ?
	on peut demander la modification d'un OF
	A VENIR : on peut demander la liste des mouvements de stock de l'article (stokDspArtMvt.php).
*/
	
include "library/DB_fct.inc.php";
include "library/APP_fct.inc.php";
include "library/_approDesign.inc.php";
// ========================================================================================
// FONCTIONS LOCALES
// ========================================================================================
// -------------------------------------------------------------------
function _menuRight(){
echo "<h2>Appros</h2>";
echo "<div>Maintenance des OA et OP :
<br>-&nbsp;Confirmer&nbsp;les &nbsp;OP&nbsp;</li>
<br>-&nbsp;Maintenir&nbsp;les&nbsp;OA</li>
</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 _getArticle($artCode){
global $connexion;
	$requete_sql="SELECT * from article WHERE artCode='$artCode' ";
	if($enreg=DB_chercherEnreg($requete_sql, $connexion)) return $enreg ;
	return 0;
}
// -------------------------------------------------------------------
// Afficher les donnée article (table)
function _dspArticle($artCode){
	$result=true;
	
	echo "<table align=center border=1 width=100%>";
	if($t_article=_getArticle($artCode)){
		switch ($t_article['artAddMode']){ case 0: $addMode='Achat'; break; case 1: $addMode='Fabrication'; break; case 2: $addMode='Sous-traitance'; break; }
		switch ($t_article['artPlanif']){ case "S": $planMode='Sur Stock = point de commande'; break; case "M": $planMode='Selon méthode MRP'; break;  }
		echo "<tr><th colspan=2>Article $artCode</td></tr>";
		echo "<tr><td>Référence :</td><td>".$t_article['artCode']."</td></tr>";
		echo "<tr><td>Description</td><td>".$t_article['artDesc']."</td></tr>";
		echo "<tr><td>Stock minimum</td><td>".$t_article['artStockMini']."</td></tr>";
		echo "<tr><td>Stock courant au ".$t_article['stockDate']."</td><td>".$t_article['stockInit']."</td></tr>";
		echo "<tr><td>Mode d'entrée en stock</td><td>".$t_article['artAddMode']." $addMode</td></tr>";
		echo "<tr><td>Mode de planification</td><td>".$t_article['artPlanif']." $planMode</td></tr>";
		echo "<tr><td>Lot mini</td><td>".$t_article['artLotMini']."</td></tr>";
		echo "<tr><td>Lot multiple</td><td>".$t_article['artMultipleLotMini']."</td></tr>";
		$result=$t_article;
	}else {
		echo "<tr><td>Erreur : Article $artCode inconnu</td></tr>";
		$result=false;
	}
	echo "</table>";
	return $result;
}
// -------------------------------------------------------------------
// Afficher les besoins et prod, face à face, en offrant la possibilité de valider un OP
function _dspListeBesoinsEtAppro($artCode){
global $connexion;
	$t_article=_getArticle($artCode);
	// on va faire une seule liste des besoins, des op et des OF, afin de faire ensuite la séparation dans la colonne 1, 2 ou 3, selon l'origine de la ligne, le tout trié par date.
	// on va d'abord faire une liste que pour les OP et OF.
	// sélection des bp
	// sélection des op
	$selectBP="SELECT besDate as date, besQte as qte, concat('BP ',besRef) as refDesc, 'bp' AS orig FROM mrpBesoins WHERE artCode='$artCode'";
	$selectRP="SELECT *, 'RP' AS refDesc, 'bp' AS orig FROM mrpRessources WHERE artCode='$artCode'";
	// sélection des besoins d'of
	$selectBF1="SELECT ofDateDeb as date, ofQteTheo as qte, concat ('OF ', ordFab.ofNum,', ',ordFab.artCode) AS refDesc, 'bf' AS orig FROM ofNomenclature, ordFab WHERE ofNomenclature.ofNum=ordFab.ofNum AND opNum=0 "; // pour les articles sans op
	$selectBF2="SELECT opDateDeb as date, ofQteTheo as qte, concat ('OF ', ordFab.ofNum,', ',ordFab.artCode,' op ', ofNomenclature.opNum) AS refDesc, 'bf' AS orig FROM ofNomenclature, ofGamme, ordFab WHERE ofNomenclature.ofNum=ordFab.ofNum AND ofNomenclature.ofNum=ofGamme.ofNum AND ofNomenclature.opNum=ofGamme.opNum"; // pour les articles avec op
	// ^--- a voir plus tard ...
	// sélection des cdes en cours (OA)
	$selectRF="SELECT cdeDate as date, qte as qte, concat('Cde ',cdeFour.cdeNum,' Four ',fourNum, ' ', tierRaisonSociale) AS refDesc, 'rf' AS orig FROM ligneCdeFourArt, cdeFour, tier WHERE ligneCdeFourArt.cdeNum=cdeFour.cdeNum AND cdeFour.fourNum=tier.tierNum AND artCode='$artCode' ";
	
	$requete_sql=$selectBP." UNION ".$selectBF1." UNION ".$selectBF2." UNION ".$selectRF;
	
	$orderBy=" ORDER BY date ;";
	$requete_sql.=$orderBy;
	$requete_id=DB_ouvrirRequete($requete_sql, $connexion);	
//	echo mysql_error();
//	echo "<br>".$requete_sql;
	echo "<table align=center border=1 width=100% id=tabListe>";	// début de la liste
	echo "<tr><th rowspan=2>date (échéance)</th><th>BP</th>	<th>OP/OF</th>	<th>OA</th>	 <th>ST</th>	<th rowspan=2>ref</th></tr>";	// 1ère ligne
	echo "<tr><!-- th>date (échéance)</th--> 	<th>qte</th><th>qte</th>	<th>qte</th> <th>qte</th> 	<!--th>ref</th--></tr>";	// 2ème ligne
	echo "<tr><td>Stock Courant (Mini=".$t_article['artStockMini']."</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>".$t_article['stockInit']."</td><td>&nbsp;</td></tr>";	// 3ème ligne
	$stock=$t_article['stockInit'];
	if (DB_getNbEnreg($requete_id)){
		while ($t_record=DB_lireLigne($requete_id)){
			switch ($t_record['orig']){
			case 'bp' : $qteBP=$t_record['qte']; $qteBF=$qteRF=0; break;
			case 'bf' : $qteBF=$t_record['qte']; $qteBP=$qteRF=0; break;
			case 'rf' : $qteRF=$t_record['qte']; $qteBP=$qteBF=0; break;
			}
			$stock=$stock-$qteBP-$qteBF+$qteRF;
			($stock<$t_article['artStockMini'])?$color="orange":$color="#292";
			($stock<0)?$color="red":$color=$color;
			echo "<tr>";
			echo "<td>".$t_record['date']."</td>";
			echo "<td align=right>$qteBP</td>";
			echo "<td align=right>$qteBF</td>";
			echo "<td align=right>$qteRF</td>";
			echo "<td align=right style='color:$color;'>$stock</td>";
			echo "<td>".$t_record['refDesc']."</td>";
			echo "</tr>";	// ligne datée
		}
	}
	echo "</table align=center>"; 	// fin de la liste
	$result=true;
} // end function _dspListeBesoinsEtAppro(artCode)

// ========================================================================================
// MAIN()
// ========================================================================================
$userId="";
$headTitle="Liste des Articles";
$contentTitle="Gestion de production";

(isset($_REQUEST['artCode']))?$artCode=$_REQUEST['artCode']:$artCode="";

// -------------------------------------------------------------------
	$connexion=DB_connecter(); 
//=======================================================================
// Affichage 
//=======================================================================
_pageHeader($userId);	// entête de page et menu


$t_article=_dspArticle($artCode);
?>
<br> 
	<section><header>Gérer l'approvisionnement</header>
		<article>
		<p>
		<ul>
			<li><a href="approOAAdd.php?artCode=<?php echo $artCode; ?>">Lancer un ordre d'achat manuel</a></li>
			<li>Saisir une réception ; Développement en cours</li>
		</ul>
		<br><br>
		</article>
	</section>
	<section><header>Liste des approvisionnements et besoins en cours</header>
		<article>
<?php
	_dspListeBesoinsEtAppro($artCode);
?>
		</article>
	</section>
<?php
//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page
?>