<?php
// Version 0.0.0 = création
// V 0.0.0 a = Modif avant validation
// modif de la page de design de Prod en Tech.
include "library/DB_fct.inc.php";
include "library/_gesTechDesign.inc.php";
// ========================================================================================
// FONCTIONS LOCALES
// ========================================================================================
// -------------------------------------------------------------------
function _menuRight(){
global $recordKey;
echo "<a href='beArtUpd.php?artCode=$recordKey'>Retour Modif Article</a>";
}
// -------------------------------------------------------------------
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 updArt(){
}
// -------------------------------------------------------------------
// 	Sert à afficher un contrôle SELECT. 
//	la requête doit contenir deux champs : le premier est la clé, le second la description affichée.
function dsp_select($sql, $fieldName, $selectedValue="", $dspCode=true){
global $connexion;
		$sql_id=DB_ouvrirRequete($sql, $connexion);
		$select = "<select name=$fieldName>\n";
		($selectedValue=='0')?$selected="selected='selected'":$selected="";
		$select.= "<option value='0' $selected >--Choisir une valeur --</option>\n";
		while ($enreg=DB_lireLigne($sql_id)){
			$dspKey=$enreg[0];
			($selectedValue==$enreg[0])?$selected="selected='selected'":$selected="";
			($dspCode)?$dspValue="(".$enreg[0].") ".$enreg[1]:$dspValue=$enreg[1];
			$select.= "<option value='$dspKey' $selected >$dspValue</option>\n";
		}
		$select.= "</select>\n";
	return $select;
}
function dsp_select2($sql, $fieldName, $selectedValue="", $dspCode=true){
global $connexion;
		echo "<select name=$fieldName>\n";
		echo "<option value='' >--Choisir une valeur --</option>\n";
		echo "</select>\n";
	// return $indice;
}
// ========================================================================================
// MAIN()
// ========================================================================================
$userId="";
$pageName="erpDspArt.php";
$headTitle="Liste des Articles";
$contentTitle="Gestion de production";

$dspPage="erpDspArt.php";
$updPage="erpDspArt.php";
$delPage="erpDspArt.php";
$addPage="erpDspArt.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['artCode']))?$recordKey=$_REQUEST['artCode']:$recordKey=""; // 

(isset($_REQUEST['action']))?$action=$_REQUEST['action']:$action="dsp"; // 

$connexion=DB_connecter(); 
//------------------------------------------------------------------------------------------------------------
// PARTIE A : Traitement de l'item choisi
//------------------------------------------------------------------------------------------------------------
//if ($action=="dsp" || $action=="del" || $action=="upd"){ // affichage ou suppression ou mise à jour : on recherche l'existant
	// récup des données courantes	
	$requete="Select article.artCode, artDesc, artPrixHT, stockInit, stockDate, article.artTypeCode, article.artCatCode, artTypeDesc
		FROM article, arttype 
		WHERE article.artTypeCode=arttype.artTypeCode 
		AND artCode='$recordKey' ;";
	//echo mysql_error();
	if (!$t_record=DB_chercherEnreg($requete, $connexion)){
		echo "Erreur de paramètre ($recordKey) ; <a href=\"javascript:history.back()\">Retour page précédente !</a>";
		_bodyRight();
		_footer(); // pied de page
		exit(0);
	}
	$itemKey=$t_record['artCode'];
//}else{
//	$itemKey="";
//}

if ($action=="upd"){
	// traiter la mise à jour ; attention, on n'effectue aucun contrôle ici, les données sont sous la responsabilité de l'utilisateur
	$requete_sql="UPDATE article 
	SET artDesc=$artDesc, artPrixHT=artPrixHT, stockInit=stockInit, stockDate=stockDate, artTypeCode=artTypeCode, artCatCode=artCatCode
		WHERE artCode='$recordKey' ;";
	DB_executerRequete($requete_sql, $connexion);
	echo mysql_error();
}


//------------------------------------------------------------------------------------------------------------
// PARTIE B : Traitement des données techniques de l'article
//------------------------------------------------------------------------------------------------------------
/* on va faire simple pour ces différents modes : 
 -	il n'y a pas de soustraitance (produits F ou S achetés) 
 -	il n'y a pas de produit non fini vendu (kit, sous-ensemble) 
	mais un PF peut figurer dans la Nom d'un autre PF.
*/
// Indus = Données industrielles : Gammes et Nomenclatures
	
// Données techniques théoriques gamme et nomenclature -----------------------------------------------------
	// rga : Gamme (Ressources)
	$selectRessourceGamm="Select * from artGamme where artCode='$itemKey' ;";
	$rga_id=DB_ouvrirRequete($selectRessourceGamm, $connexion);
	$rgaNbRow=mysql_num_rows($rga_id);

	// rno : Ressources issus des nomenclature (ressource, en tant que composé)
	$selectRessourceNom="Select * from artNomenclature
	where artNomenclature.artCode='$itemKey' ;";
	$rno_id=DB_ouvrirRequete($selectRessourceNom, $connexion);
	$rnoNbRow=mysql_num_rows($rno_id);

//========================================================================
// AFFICHAGE
//========================================================================
_pageHeader($userId);	// entête de page et menu
//------------------------------------------------------------------------------------------------------------
// PARTIE A : Affichage de l'item choisi
//------------------------------------------------------------------------------------------------------------
// a) afficher le formulaire de modification de l'article
//	$requete="Select article.artCode, artDesc, artPrixHT, stockInit, stockDate, article.artTypeCode, article.artCatCode, artTypeDesc
// -------------------------------------------------------------------
echo "<item align=center border=1>\n";
echo "<header>Modifier les données techniques de l'article ";
echo "<b>(".$t_record['artCode'].") ".$t_record['artDesc']."</b>";
echo "</header>";
echo "\n";
echo $t_record['artTypeDesc']." ";
if (!empty($t_record['artCatCode']))
	echo ", Catégorie : ".$t_record['artCatCode']."";
echo "</item>\n";

//------------------------------------------------------------------------------------------------------------
// PARTIE B : Affichage des données techniques
//------------------------------------------------------------------------------------------------------------
$action="dsp";
?>
<script type="text/javascript">
function calque(objet, cible) { // On déclare la fonction affiche qui prend en param l'objet qui alppelle et l'id de la cible à modifier		image1a.jpg
	var divReport = document.getElementById('report'); // On récupère le div ciblé grâce à l'id
	var t_tabDiv1 = new Array('besoins', 'ressources', 'indus');
	for (var i=0 ; i< t_tabDiv1.length ; i++){
		var div=document.getElementById(t_tabDiv1[i]);
		if (div.style.display!="none"){
			divReport.innerHTML = 'tit' + t_tabDiv1[i]; // ... on le masque...
			var divTitre = document.getElementById('tit' + t_tabDiv1[i]); // On récupère le div ciblé grâce à l'id
			divTitre.class = "tit_divOn"; // ... on le masque...
			divTitre.style.background = "#449"; // ... on le masque...
			divTitre.style.color = "#fff;"; // ... on le masque...
		}
		div.style.display="none";
	
	}
	
	//var obj = document.getElementById(objet); // On récupère le div objet grâce à l'id
	var div = document.getElementById(cible); // On récupère le div ciblé grâce à l'id
	// var hiddenFieldCalque=document.getElementById('calque'); // je voulais conserver le type de calque à chaque changement de calque demandé
	//if(div.style.display=="none") { // Si le div est masqué...
	if(div.class = "divOn"){ // ... on l'affiche...
		objet.class = "tit_divDsp"; // ... on l'affiche...
		objet.style.background = "#ffe"; // ... on le masque...
		objet.style.color = "#449;"; // ... on le masque...
		div.class = "divDsp"; // ... on l'affiche...
		div.style.display = "block"; // ... on l'affiche...
		//objet.style.background = "url(../segami/menuAticleBg1.gif) repeat bottom center"; // ... on l'affiche...
		//objet.innerHTML = "-"; // ... et on change le contenu du bouton.
		//hiddenFieldCalque.value=cible;
		//alert("mise à On ; "+objet.class);
	} else { // S'il est visible...
		objet.class = "tit_divOn"; // ... on le masque...
		objet.style.background = "#449"; // ... on le masque...
		objet.style.color = "#fff;"; // ... on le masque...
		div.class = "divOn"; // ... on le masque...
		div.style.display = "none"; // ... on le masque...
		//objet.innerHTML = "+"; // ... et on change le contenu du bouton.
		//alert("mise à Off ; "+objet.class);
	}
}

function change_image(objet, img) { // On déclare la fonction affiche qui prend en param l'objet qui alppelle et l'id de la cible à modifier		image1a.jpg
var	image = objet.src; // On récupère le div ciblé grâce à l'id
	objet.src='segami/'+img;
}
</script>
<?php
//------------------------------------------------------------------------------------------------------------
// Espace de visualisation
//------------------------------------------------------------------------------------------------------------
echo "<div id=espaceVisu >";
//------ DONNEES INDUSTRIELLES  :
// DEBUT Script de contrôle de champs du formulaire
echo "
<script type=\"text/javascript\"><!--
function chkArt_and_go(){
	// vérifier la cohérence des données saisies
var formulaire=document.getElementById('formArticle')
	if(formulaire.artCode.value == '' ) {
		alert('artcle inconnu, impossible de valider le formaulaire.');   
		return false; //bloque l'envoi du formulaire   
	}
	if(formulaire.artDesc.value == '' ) {
		alert('Merci de saisir la description de l\'article');   
		formulaire.artDesc.focus(); //met le curseur dans le champ demandé   
		return false; //bloque l'envoi du formulaire
	}
	if(formulaire.artTypeCode.value == 0 ) {
		alert('Merci de choisir un type de produit');   
		formulaire.invPays.focus(); //met le curseur dans le champ demandé   
		return false; //bloque l'envoi du formulaire   
	}
	
	// si tout va bien, on passe à la suite.
	formulaire.submit()
}
--></script>
";
// FIN Script de contrôle de champs du formulaire

	//echo "Données Industrielles : info indus \t: rno=".$rnoNbRow." ; rga=".$rgaNbRow." ; bno=".$bnoNbRow;
	// ici, on présente deux tableaux : le premier est la gamme et la nomenclature de fabrication (en tableau //)
	// le second contiendra la liste des articles qui ont besoin de celui-ci.
	
	// On affiche séparément la gamme et la nomenclature, en commençant par la nomenclature ... qui sera à modifier !!! (pour ajouter le n° d'opération de gamme)
	// RNo et RGa : ressources nomenclature et gamme

echo "<div id=nomenclatutre class='divNom' >";
echo "<form id=formNomenclature name=formNomenclature method=get action=zz_test.php>\n";
echo "<input type=hidden name=artCode value='".$t_record['artCode']."' />\n";
echo "<input type=hidden name=action value='updNom' />\n";
		echo "<table border=1 align=center>";
		echo "<caption>Nomenclature</caption>";
		echo "<th>Del";
		echo "<th>Composant";
		echo "<th>Description";
		echo "<th>Quantité";
		echo "<th>Opération";
	if ($rnoNbRow>0){ // il existe une nomenclature
		$selectGamme="Select opNum from artGamme
			Where artCode='$itemKey' 
			order by opNum
			;";
		$gamm_id=DB_ouvrirRequete($selectGamme, $connexion);
		$t_gamm="";
		while ($enreg=DB_lireLigne($gamm_id)) $t_gamm[]=$enreg['opNum'];

		$selectNomen="Select opNum, comp_artCode, compQte, artDesc as compDesc from artNomenclature, article
			Where comp_artCode=article.artCode
			and artNomenclature.artCode='$itemKey' 
			order by opNum, comp_artCode
			;";
		$nomen_id=DB_ouvrirRequete($selectNomen, $connexion);
		
		$color=1;
		while ($t_nomen=DB_lireLigne($nomen_id)){ // traiter la table dont le n° est le + petit
			// définition de la classe de style en fonction du type et du n° de ligne :
			($color)?$color=0:$color=1;
			$classe="td".$color;
			echo "<tr>";
				echo "<td>";
				echo "<a href='zz_test.php?artCode=$itemKey&delArtNom=delArtNom&delComp_artCode=".$t_nomen['comp_artCode']."'>del</a>";
				echo "</td>";
				echo "<td>";
					echo $t_nomen['comp_artCode'];
					echo "<input type=hidden name=comp_artCode[] value='".$t_nomen['comp_artCode']."' />";
				echo "</td>";
				echo "<td>";
					echo $t_nomen['compDesc']."</td>";
				echo "<td>";
					echo "<input type=text name=new_compQte[] value=".$t_nomen['compQte']." size=10 maxlength=10 />";
					echo "<input type=hidden name=old_compQte[] value='".$t_nomen['compQte']."' />";
				echo "</td>";
				echo "<td>";
					$sql="Select opNum, opDesc from artGamme Where artCode='$itemKey' order by opNum ;";
					echo dsp_select($sql, "new_opNum[]", $t_nomen['opNum']);
					echo "<input type=hidden name=old_opNum[] value='".$t_nomen['opNum']."' />";
				echo "</td>";
				//echo "<td>".$t_nomen['opDesc']."</td>";
			echo "</tr>"; // fin de l'opération courante
		}
	} 	// fin affichage de la nomenclature existante
	// ligne supplémentaire d'ajout d'article
			$sql1="Select artCode, artDesc 	FROM article 							ORDER BY artDesc ;"; // faut-il enlever de cette liste les articles déjà dans la nomenclature ?
			$sql2="Select opNum, opDesc 	FROM artGamme WHERE artCode='$itemKey' 	ORDER BY opNum ;";

			echo "<tr>";
				echo "<td colspan=3>"."Nouvel article ".dsp_select($sql1, "newComp_artCode")."</td>";
				echo "<td>"."<input type=text name=newCompQte placeholder='Quantité' size=10 maxlength=10 >"."</td>";
				echo "<td>".(dsp_select($sql, "newOpNum"))."</td>";
				//echo "<td>".$t_nomen['opDesc']."</td>";
			echo "</tr>"; // fin de l'opération courante
		echo "</table>";
//echo "<input type=button name=updArt value='Modifier' onclick='chkArt_and_go()'/>\n";
echo "<input type=submit name=updNom value='Modifier la nomenclature' />\n";
echo "<input type=reset name=rstNom value='reset de la saisie' />\n";
echo "</form>";

// fin du formulaire de la nomenclature
		
// Debut Formulaire de modif de la gamme (et affichage de la nomenclature associée) 
echo "<form id=formGamme name=formGamme method=get action=zz_test.php>\n";
echo "<input type=hidden name=artCode value='".$t_record['artCode']."' />\n";
echo "<input type=hidden name=action value='upd' />\n";
		echo "<table border=1 align=center>";
		echo "<caption>Gamme (et Nomenclature associée)</caption>";
		echo "<th>Del";
		echo "<th>Opération";
		echo "<th>Designation";
		echo "<th>Duree";
		echo "<th>Composant";
		echo "<th>Description";
		echo "<th>Quantité";
	if ($rgaNbRow>0){ // il existe une gamme
		$selectGamme="Select * from artGamme
			Where artCode='$itemKey' 
			order by opNum
			;";
		$selectNomen="Select opNum, comp_artCode, compQte, artDesc as compDesc from artNomenclature, article
			Where comp_artCode=article.artCode
			and artNomenclature.artCode='$itemKey' 
			order by opNum, comp_artCode
			;";
		$gamme_id=DB_ouvrirRequete($selectGamme, $connexion);
		$t_gamme=DB_lireLigne($gamme_id);
		$nomen_id=DB_ouvrirRequete($selectNomen, $connexion);
		$t_nomen=DB_lireLigne($nomen_id);

		$opNum=0;$opDesc="";$opDuree=0;

		//echo "<br>$selectRessources";
				$continue=true;
				$color=1;
				$compNbr=0;
				$opOpen=false;
				while ($continue){ // traiter la table dont le n° est le + petit
					$delLink="<a href='zz_test.php?artCode=$itemKey&delOpGam=delOpGam&delOpNum=".$t_gamme['opNum']."'>del</a>";

					// définition de la classe de style en fonction du type et du n° de ligne :
					($color)?$color=0:$color=1;
					$classe="td".$color;
					if($continue && $t_gamme['opNum']==$t_nomen['opNum'] ){ // ils vont ensemble
						echo "<tr>";
						$opNum=$t_gamme['opNum'];
						$opDesc=$t_gamme['opDesc'];
						$opDuree=$t_gamme['opDuree'];
						if (!$opOpen){ // opération vide à écrire
							echo "<td>$delLink</td>";
							echo "<td><input type=text name=new_opNum[] value=$opNum size=4 maxlength=4 >";
							echo "<input type=hidden name=old_opNum[] value='$opNum' />";
							echo "<td><input type=text name=new_opDesc[] value='$opDesc' size=50 maxlength=50 />";
							echo "<input type=hidden name=old_opDesc[] value='$opDesc' />";
							echo "<td><input type=text name=new_opDuree[] value='$opDuree' size=5 maxlength=5 />";
							echo "<input type=hidden name=old_opDuree[] value='$opDuree' />";
						}else{
							echo "<td>&nbsp;</td>";
							echo "<td>&nbsp;";
							echo "<td>&nbsp;";
							echo "<td>&nbsp;";
						}
						echo "<td>".$t_nomen['comp_artCode'];
						echo "<td>".$t_nomen['compDesc'];
						echo "<td>".$t_nomen['compQte'];
						echo "</tr>";
						$opOpen=true;
						
						$compNbr++;
						$t_nomen=DB_lireLigne($nomen_id);
					}elseif (!$t_nomen && $t_gamme || $t_gamme['opNum']<$t_nomen['opNum']){ // on a une op nomen d'avance, fermer op courante (après l'avoir ouverte si ce n'est pas le cas)
						$opNum=$t_gamme['opNum'];
						$opDesc=$t_gamme['opDesc'];
						$opDuree=$t_gamme['opDuree'];
						if (!$opOpen){ // opération vide à écrire
							echo "<tr>";
							echo "<td>$delLink</td>";
							echo "<td><input type=text name=new_opNum[] value=$opNum size=4 maxlength=4 >";
							echo "<input type=hidden name=old_opNum[] value='$opNum' />";
							echo "<td><input type=text name=new_opDesc[] value='$opDesc' size=50 maxlength=50 />";
							echo "<input type=hidden name=old_opDesc[] value='$opDesc' />";
							echo "<td><input type=text name=new_opDuree[] value='$opDuree' size=5 maxlength=5 />";
							echo "<input type=hidden name=old_opDuree[] value='$opDuree' />";
							echo "<td>&nbsp;";
							echo "<td>&nbsp;";
							echo "<td>&nbsp;";
							$opOpen=true;
						}
						if ($opOpen)
							echo "</tr>"; // fin de l'opération courante
						$opOpen=false;
						$t_gamme=DB_lireLigne($gamme_id);
					}elseif(!$t_gamme && $t_nomen || $t_gamme['opNum']>$t_nomen['opNum']){ // on a une op gamme d'avance, écrire nomen dans l'op gamme courante
						echo "<tr>";
						echo "<td>&nbsp;</td>";
						echo "<td>-";
						echo "<td>&nbsp;";
						echo "<td>&nbsp;";
						echo "<td>".$t_nomen['comp_artCode'];
						echo "<td>".$t_nomen['compDesc'];
						echo "<td>".$t_nomen['compQte'];
						echo "</tr>"; // fin de l'opération courante
						$t_nomen=DB_lireLigne($nomen_id);
					}
					if(!$t_gamme && !$t_nomen)
						$continue=false;
				}

	}
	// ligne supplémentaire d'ajout d'article
			echo "<tr>";
				echo "<td>NEW</td>";
				echo "<td>"."<input type=text name=newOpNum size=4 maxlength=4 >"."</trd>";
				echo "<td>"."<input type=text name=newOpDesc size=50 maxlength=50 >"."</trd>";
				echo "<td>"."<input type=text name=newOpDuree size=5 maxlength=5 >"."</trd>";
				echo "<td colspan=3 align=center>(<i>Associer un article à l'opération via la modif de la nomenclature</i>)";
				echo "</tr>"; // fin de l'opération courante
		echo "</table>";

	//echo "<input type=button name=updArt value='Modifier' onclick='chkArt_and_go()'/>\n";
	echo "<input type=submit name=updGam value='Modifier la gamme' />\n";
	echo "<input type=reset name=rstGam value='reset de la saisie' />\n";
	echo "</form>";
echo "</div>";
	// fin du formulaire de la gamme

		
// Debut Formulaire de recalcul des n0 d'opérations de la gamme 
echo "<div>Recalculer les numéros des opérations de gamme de l'article.";
echo "<form id=formGammOp name=formGammOp method=get action=zz_test.php>\n";
echo "<input type=hidden name=artCode value='".$t_record['artCode']."' />\n";
echo "<input type=hidden name=action value='updGamOp' />\n";
echo "Choisir un incrément de n° de gamme : ";
echo "<select>
	<option value=10>10</option><option value=100 selected='selected'>100</option><option value=1000>1000</option>
	<option value=15>15</option><option value=20>20</option><option value=50>50</option>
	<option value=150>150</option><option value=200>200</option><option value=500>500</option>
	</select>\n";
echo "<input type=submit name=updNom value='Recalculer les n° des opérations' />\n";
echo "<input type=reset name=rstNom value='reset de la saisie' />\n";
echo "</form>";
echo "</div>";
// fin du formulaire de la Gamme
// FIN de l'affichage des besoins, données techniques et ressources
echo "</div>";// findiv espaceVisu

//========================================================================
// fin de page
//========================================================================
echo "<div id=report>
</div>";
_pageFooter(); // pied de page
?>