<?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/TEXT_tabs.inc.php";
include "library/DB_fct.inc.php";
include "library/APP_fct.inc.php";
include "library/_gesProdDesign.inc.php";
// ========================================================================================
// FONCTIONS LOCALES
// ========================================================================================
// -------------------------------------------------------------------
function _menuRight(){
echo "<h2>Appros</h2>";
echo "<div>Maintenance des OA et OP :
<br>-&nbsp;Lancer&nbsp;des &nbsp;OA&nbsp;manuels</li>
<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;
}
// -------------------------------------------------------------------
// A REVOIR et transformer en getFournisseur($artCode)
// retourne le délai ou faux si il peut y avoir plusieurs fournisseurs. attn si le délai est 0, c'est comm si on n'avait pas trouvé le fournisseur
function _getFournisseur($fourNum){
global $connexion;
	$requete_sql="SELECT * from tier WHERE tierNum=$fourNum ";
	if($enreg=DB_chercherEnreg($requete_sql, $connexion)) return $enreg ;
	return 0;
}
// -------------------------------------------------------------------
function _getDureeGamme($artCode){ // question, on récupère la gamme ou juste la durée ?
global $connexion;
	$requete_sql="SELECT * from artGamme WHERE artCode='$artCode' ";
	if($enreg=DB_chercherEnreg($requete_sql, $connexion)) return $enreg ;
	return 0;
}
// -------------------------------------------------------------------
function _addTimeToYMD($ymd, $duree, $unite="m", $sep='/'){
	// le problème ici est de savoir à quelle heure on commence à compter l'ajout.
	// si on ajoute 18h de travail à partir de minuit n'est pas la même chose que de les ajouter à l'équipe de 8h ... mais on va faire comme si.
	$t_ymd=explode($sep,$ymd);
	$t=mktime(0, 0, 0, $t_ymd[1], $t_ymd[2], $t_ymd[0]);
	switch ($unite) {
	case 'Y': $t+=$duree*365.25*24*3600; 	break;
	case 'M': $error=true; 					break; // on ne sait pas ajouter des mois simplement, pour l'instant ... pbm de bissextilité
	case 'd': $t+=$duree*24*3600; 			break;
	case 'h': $t+=duree*3600; 				break;
	case 's': $t+=$duree; 					break;
	default : $t+=$duree*60;
	}
	return date("Y".$sep."m".$sep."d", $t);
}
// -------------------------------------------------------------------
function _getDateWithDelai($dateType, $dateIn, $fourNum){ // Calculer la date de fin/debut
}
// -------------------------------------------------------------------
function _addNewOA($dateType, $dateC, $fourNum, $t_art, $remarque){ // création de l'enregistrement OF et des enregistrements dépendants
global $connexion;
//echo "<div id=DBG style='background:white;'>";
	// RAPPEL : ici on est dans un OA one shot, càd qu'on va créer 1 OA validé en une seule fois. En temps normal, on créé une commande et on la confirme plus tard.
	$errorCode=0;
	$t_four=_getFournisseur($fourNum);
	$delai=$t_four['tierDelai'];
	// Ecrire l'entête de l'OA, on met le statut tout de suite à 1=ordered (commande ferme)
		$requete_sql="INSERT INTO cdeFour (cdeDate,fourNum,cdeEtat) VALUES ('$dateC',$fourNum,1) ;";
		DB_executerRequete($requete_sql, $connexion);
		
		$requete_sql="select max(cdeNum) from cdeFour ;"; // on récupère le n° de la commande qu'on vient de créer
		$rec=DB_chercherEnreg($requete_sql, $connexion);
		$cdeNum=$rec[0];
	// écrire la liste des articles
		foreach ($t_art as $artCode => $t_data){
			$requete_sql="INSERT INTO `ligneCdeFourArt` (`cdeNum`,`artCode`,`qte`,`ligneRemiseArticle`,`ligneEtat`) 
				VALUES	('$cdeNum','$artCode','".$t_data['qte']."','".$t_data['remiseLigne']."',1) ;";
			DB_executerRequete($requete_sql, $connexion);
//			echo "<br>DBG	VALUES	('$cdeNum','$artCode','".$t_data['qte']."','".$t_data['remiseLigne']."',1) ;";
//	echo "<br>DBG ".mysql_error();
//	echo "<br>DBG ".$requete_sql;
		}	
//echo "</div id=DBG style='background:white;'>";
	if ($errorCode==0)
		return $cdeNum;
	else
		return false;
}
// -------------------------------------------------------------------
// Cette fonction contrôle une date. Voir aussi http://php.net/manual/fr/function.checkdate.php
function _checkDate($y, $m, $d){return checkdate($m,$d,$y);}
// -------------------------------------------------------------------
// contrôle d'intervalle de date ; return=true d<=f, false= d>f
function _chkDateInterval($dateD, $dateF){ // contrôle d'un intervalle de temps en dates YMD
		$dd = new DateTime($dateD);
		$df = new DateTime($dateF);
		$interval = date_diff($dd, $df)->format('%a');
		if($interval<0) return false;
		return true;
}
// -------------------------------------------------------------------
// Afficher les données 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>-</td></tr>";
		echo "<tr><td>Lot multiple</td><td>-</td></tr>";
		$result=$t_article['artTypeCode'];
	}else {
		echo "<tr><td>Erreur : Article $artCode inconnu</td></tr>";
		$result=false;
	}
	echo "</table>";
	return $result;
}
// -------------------------------------------------------------------
// Script de recalcul prévisionnel des dates de l'OA
function _dspScriptDates($oaDelai){
echo "<script>
	
	// Principe : ajouter le nbre de jours à la date, convertis en ms et reconvertie en date
		// si aucun jour à ajouter/retrancher, aucun changement, sinon :
		// conversion de la date du jour de départ
		// définition de la nouvelle date
		// conversion de la nouvelle date en DMY affichable
	// fonction d'addition/soustraction de temps en minutes à une date (Note : 2 fonctions car je n'ai pas trouvé comment faire un nbre négatif : problème de cast string -> num donc ....)
	// ATTENTION, ici le délai est en minutes !!!! (pas comme dans la page des OF)
	function addDay(d, i){if(j<=0)return d;dd=DMYToDate(d);nd=new Date(dd.getTime()+60*1000*i);return dateToDMY(nd)}
	function subDay(d, i){if(j<=0)return d;dd=DMYToDate(d);nd=new Date(dd.getTime()-60*1000*i);return dateToDMY(nd)}
	
	// Conversion de dates
	function DMYToDate(dmy){j=dmy.substring(0,2);m=dmy.substring(3,5);a=dmy.substring(6);if(a<=100){if(a<=70){a=+a+2000}else{a=+a+1900}} date=new Date(a,m-1,j);return date}
	function dateToDMY(date){separateur='/';j=date.getDate();if(j<10){j='0'+j} // ne pas oublier les zéros devant ...
		m=date.getMonth()+1;if(m<10){m='0'+m}a=date.getYear();if(a<1970){a+=1900}dmy=j+'/'+m+'/'+a;return dmy;}
		
	// conversion d'une durée en minutes en temps affichable
	function minutesToYDHMS(minutes){var SS=MM=HH=DD=YY=0;MM=Math.floor(minutes);SS=minutes-MM;YDHMS='';
		if(MM>60){
			HH=Math.floor(MM/60);MM=MM-HH*60;
			if(HH>24){
				DD=Math.floor(HH/24);HH=HH-DD*24;
				if(DD>365){YY=Math.floor(DD/365);DD=DD-YY*365;YDHMS=YY+'an(s), '} 
				YDHMS=YDHMS+DD+'j, '
			} 
			YDHMS=YDHMS+HH+'h, '
		} 
		YDHMS=YDHMS+MM+'m et '+SS+'s';
		return YDHMS; } 
	
	// fonction de calcul des données de la gamme et de la nomenclature. calcule aussi la date de fin/début de l'of en fonction de dateType
	function calculDates(){
		// traitement de l'OA
		// la récup d'un bouton radio n'est pas aussi simple que les autres car getElementById ne fonctionne pas directement ...
		for (i=0; i<document.approForm.dateType.length; i++) {if(document.approForm.dateType[i].checked){dateType = document.approForm.dateType[i].value}}
		//var ofDateType=document.getElementById('ofDateType');
		var oaQte=document.getElementById('oaQte');
		var oaDateC=document.getElementById('oaDateC');
		var oaDateR=document.getElementById('oaDateR');
		var oaDelai=document.getElementById('oaDelai');
//alert ('coucou '+dateType);
		
		//ofDuree=ofQte.value*$ ofDureeUnitaire; // obsolète car le délai est indépendant de la quantité (ce qui n'est pas le cas pour les OF !
		delaiAppro=".$oaDelai.";oaDelai.innerHTML=delaiAppro;dspOaDelai.innerHTML=minutesToYDHMS(delaiAppro);
		oaDateC.value=dateToDMY(DMYToDate(oaDateC.value)); // au cas où on a écrit l'année sur 2 char
		oaDateR.value=dateToDMY(DMYToDate(oaDateR.value)); // au cas où on a écrit l'année sur 2 char		
		if (dateType=='C'){ // OA en date de commande
			oaDate=dateToDMY(DMYToDate(oaDateC.value));	oaDateR.value=addDay(oaDate, delaiAppro); // modif Date Commande OA
		}else if(dateType=='R'){ // OA en date de réception
			oaDate=dateToDMY(DMYToDate(oaDateR.value));	oaDateC.value=subDay(oaDate, delaiAppro); // modif Date Réception OA
		}
	}
	window.onload = calculDates();
</script>";
	echo "<div id=testjs></div>";
} // end function _dspScriptDates(artCode)
// -------------------------------------------------------------------
// Choix de l'article
function _dspSelectArticle($artCode="", $artTypeMode="a", $onchangeForm=""){ // $artTypeMode sert à définir quels articles doivent être affichés : a=tous, s=vendus, p=produits, b=achetés
global $connexion;
			$requete_sql="SELECT artCode, artDesc, artPrixHT, article.artTypeCode, artTypeDesc FROM article, artType type
				WHERE article.artTypeCode=type.artTypeCode
				AND  article.artTypeCode in ('C', 'N', 'M')";
	$requete_id=DB_ouvrirRequete($requete_sql, $connexion);	
	if (DB_getNbEnreg($requete_id)){
		echo "<select id=artCode name=artCode onchange='document.$onchangeForm.submit();'>";
			echo "<option value=0>Choisir un article</option>";
		while ($t_record=DB_lireLigne($requete_id)){
			(!$artCode || $artCode==$t_record['artCode'])?$select="selected='selected'":$select="";
			echo "<option value=".$t_record['artCode']." $select>".$t_record['artCode']." ".$t_record['artDesc']."</option>";
		}
		echo "</select name=artCode>";
	}else
		echo "<span class=erreur>Aucun article trouvé</span>";

} // end function _dspSelectArticle($mode="a"){
// -------------------------------------------------------------------
// Afficher les fournisseurs de l'article ? A CONTINUER : finir le script
function _dspSelectFournisseur($artCode, $fourNum=false){
global $connexion;
//echo "<br>DBG select four : $fourNum";
	// construction du contrôle en deux temps : le premier pour les fournisseurs associés à l'article, le second pour les autres (à enlever plus tard ?)
	$requete_sql1="SELECT 0 as tierOrd, tierRaisonSociale, tier.tierNum FROM tier, fourArt  WHERE tier.tierNum=fourArt.tierNum";
	$requete_sql2="SELECT 1 as tierOrd, tierRaisonSociale, tier.tierNum FROM tier  WHERE tier.tierTypeCode='f' or tier.tierTypeCode='b'";
	$requete_sql=$requete_sql1." UNION ".$requete_sql2." ORDER BY tierOrd, tierRaisonSociale";
	($fourNum)?$select="selected='selected'":$select="";
	
	$requete_id=DB_ouvrirRequete($requete_sql, $connexion);
	$nbEnreg=DB_getNbEnreg($requete_id);
	if ($nbEnreg){ // s'il y a des fournisseurs enregistrés
		// fournisseurs référencés
		$requete_id1=DB_ouvrirRequete($requete_sql1." ORDER BY tierOrd, tierRaisonSociale", $connexion);
		// fournisseurs non référencés
		$requete_id2=DB_ouvrirRequete($requete_sql2." AND tierNum NOT IN (SELECT tierNum from fourArt) "." ORDER BY tierOrd, tierRaisonSociale", $connexion);
		$nbEnreg1=DB_getNbEnreg($requete_id1);
		echo "<select id=oaFourNum name=fourNum onchange='testerValeurs();'>\n";
				echo "<option value=0>--Choisir un fournisseur --</option>";
		if($nbEnreg1){ // si on a des fournisseurs référencés
			echo "<optgroup label='fournisseurs référencés'>";
			if($nbEnreg1==1){ // y en a qu'un, on le sélectionne si pas de sélection ou pas si on a reçu un $fourNum et que c'est lui
				$enreg=DB_lireLigne($requete_id1);
				(!$fourNum || $fourNum==$enreg['tierNum'])?($select="selected='selected'")&&($fourNum=$enreg['tierNum']):$select="";
				echo "<option value=".$enreg['tierNum']." $select>".$enreg['tierRaisonSociale']."</option>";$sfRS=$enreg['tierRaisonSociale'];
			}else{
				while ($enreg=DB_lireLigne($requete_id1)){
					($fourNum && $fourNum==$enreg['tierNum'])?$select="selected=\"selected\"":$select="";
					echo "<option value=".$enreg['tierNum']." $select>".$enreg['tierRaisonSociale']."</option>";$sfRS=$enreg['tierRaisonSociale'];
				}
			}
			echo "</optgroup>\n";
		}
		echo "<optgroup label='fournisseurs non référencés'>";
		while ($enreg=DB_lireLigne($requete_id2)){
			($fourNum && $fourNum==$enreg['tierNum'])?$select="selected='selected'":$select="";
			($fourNum && $fourNum==$enreg['tierNum'])?$sfRS=$enreg['tierRaisonSociale']:$null="";
			echo "<option value=".$enreg['tierNum']." $select>".$enreg['tierRaisonSociale']."</option>";
		}
		echo "</optgroup>\n";
		echo "</select>\n";// name=fourNum>";
		(isset($sfRS))?print $sfRS:print " Aucun fournisseur référencé : choix libre";
	}else	echo "<input type=text value=0> (!! aucun fournisseur trouvé)";
} // end function _dspFourList(artCode)
// -------------------------------------------------------------------
// Cette fonction affiche une commande et ses articles
function _dspCde($cdeNum){
global $connexion;
	$requete_sql="SELECT * FROM cdeFour  WHERE cdeNum=$cdeNum ";
	if($enreg=DB_chercherEnreg($requete_sql, $connexion)) {
		$t_four=_getFournisseur($enreg['fourNum']);
		echo "<table align=center border=1 width=100%>";
		echo "<tr><th colspan=2>Fournisseur ".$t_four['tierNum']." ".$t_four['tierRaisonSociale']."</td></tr>";
		echo "<tr><td>Adresse :</td><td>".$t_four['tierAdresse']."</td></tr>";
		echo "<tr><td>Description</td><td>".$t_four['paysCode']."</td></tr>";
		echo "<tr><td>Conditions de paiement</td><td>".$t_four['tierPayCode']."</td></tr>";
		echo "</table>";
		
		$requete_sql="SELECT * FROM lignecdefourart  WHERE cdeNum=$cdeNum ORDER BY artCode";
		$requete_id=DB_ouvrirRequete($requete_sql, $connexion);
		echo mysql_error();
		$nbEnreg=DB_getNbEnreg($requete_id);
		if ($nbEnreg){ // s'il y a des fournisseurs enregistrés
			echo "<table align=center border=1 width=100%>";
			echo "<caption>Liste des articles de la commande</caption>";
			echo "<tr><th>référence</th><th>Description</th><th>Quantité</th><th>Prix Unitaire</th><th>Prix Total HT</th></tr>";
			while ($t_ligne=DB_lireLigne($requete_id)){
				$t_article=_getArticle($t_ligne['artCode']);
				$montantLigne=$t_ligne['qte']*$t_article['artPrixHT'];
				echo "<tr>";
				echo "<td>".$t_ligne['artCode']."</td>";
				echo "<td>".$t_article['artDesc']."</td>";
				echo "<td>".$t_ligne['qte']."</td>";
				echo "<td>".$t_article['artPrixHT']."</td>";
				echo "<td>".$montantLigne."</td>";
				echo "</tr>";
			}
			echo "</table>";
		}
	}
/********* ICI  *************/
	
	return 0;
}
// -------------------------------------------------------------------------------------
// Afficher la barre de progression
function _dspProgessionBar($etape, $cdeNum=0){
switch ($etape){
	case 1: $cell1="stepCurrent";$cell2="stepToDo"; 	$cell3="stepToDo"; 		$cell4="stepToDo";		break;
	case 2: $cell1="stepDone";	$cell2="stepCurrent"; 	$cell3="stepToDo"; 		$cell4="stepToDo";		break;
	case 3: $cell1="stepDone";	$cell2="stepDone"; 		$cell3="stepCurrent";	$cell4="stepToDo";		break;
	case 4: $cell1="stepDone";	$cell2="stepDone"; 		$cell3="stepDone";		$cell4="stepCurrent";	break;
}
// DEBUT Afficher la barre de progression
echo "<!-- BEGIN progression step List --><nav id=progressionBar><ul class=nobloc>";
echo "<li class=$cell1>Articles</a></li>"; // pas de retour, l'article est imposé, il suffit de donner sa quantité
echo "<li class=$cell2>Fournisseur</li>"; // choisir le fournisseur ; c'est l'étape en cours car l'article est imposé
echo "<li class=$cell3>Confirmation</li>"; // confirmer la commande (fin)
echo "<li class=$cell4><a href=approOAPrint.php?cdeNum=$cdeNum>Imprimer</a><span>Imprimer</span></li>"; // confirmer la commande (fin)
echo "</ul></nav><!-- END progression step List -->\n";
// FIN Afficher la barre de progression
}
// ========================================================================================
// MAIN()
// ========================================================================================
echo "<div id=DBG style='background:white;'>";
$userId="";
$headTitle="Liste des Articles";
$contentTitle="Gestion de production";
$dateDeb=$dateFin=COM_DMY();$qte=$fourNum=$cdeNum=0;$remarque="";
$typeDateChk1=$typeDateChk2=$typeDateChk3="";
$dateType='C';
$cdeADD=false;
$etape=2; // etape du workflow de production de la commande : 1= choix des articles, 2=choix du fournisseur, 3=confirmation, 4=impression de la commande (optionnel)
/* il y a 4 étapes dans la production d'une commande :
commande normale
	1=choix des articles et de la quantité.
	2=choix de l'entête = dates et fournisseur
commande directe d'un article
	1= choix de la quantité, du fournisseur et des dates en une seule fois. Pas de choix d'autres articles.
*/
$oaDelai=0; // ce délai sera réactualisé si on donne un fournisseur. il faut donc le chercher ...
// -------------------------------------------------------------------
	$connexion=DB_connecter(); 

(isset($_REQUEST['artCode']))?$artCode=$_REQUEST['artCode']:$artCode="";
(isset($_REQUEST['tester']))?$tester=true:$tester=false;
(isset($_REQUEST['fourNum']))?$fourNum=$_REQUEST['fourNum']:$fourNum=0; 	// fournisseur absent ou incorrect
if (isset($_REQUEST['commander']) || $tester){
//echo "<br>DBG $tester, $fourNum";
	$error=false;
	$errorCode=0;
	// récup des données puis ...
	if ($fourNum==0) $errorCode=6002; 	// fournisseur absent ou incorrect
	(isset($_REQUEST['dateType']))?$dateType=$_REQUEST['dateType']:$errorCode=6001; // type de date absent
	(isset($_REQUEST['dateDeb']))?$dateDeb=$_REQUEST['dateDeb']:$errorCode=1005;	// date debut absente
	(isset($_REQUEST['dateFin']))?$dateFin=$_REQUEST['dateFin']:$errorCode=1006;	// date fin absente
	(isset($_REQUEST['qte']) && $_REQUEST['qte']>0)?$qte=$_REQUEST['qte']:$errorCode=1007;				// quantité absente
	(isset($_REQUEST['remarque']))?$remarque=$_REQUEST['remarque']:$remarque="";	// 
	
	// ... contrôler les données, ...
		if ($errorCode==0 && !$t_four=_getFournisseur($fourNum)) $errorCode=6002;		// fournisseur absent ou incorrect
		if ($errorCode==0) $dateC=COM_DMYtoYMD($dateDeb);
		if ($errorCode==0) $dateR=COM_DMYtoYMD($dateFin);
		if ($errorCode==0 && !_chkDateInterval($dateC, $dateR)) $errorCode=1004;		// erreur de date
		// Calculer les dates de la commande et de la réception
		if ($errorCode==0){
			$oaDelai=$t_four['tierDelai']; // ce délai sera réactualisé si on donne un fournisseur. il faut donc le chercher ...
			if ($dateType=='C'){ // date de commande : non corrigée
				$oaDate=$dateC;	// initialiser la date de travail à la date de début de la commande
				$dateR=_addTimeToYMD($oaDate, $t_four['tierDelai'], "m");
			}else if($dateType=='R'){ // date de fin : anticipation de la date de commande
				$oaDate=$dateR;	// initialiser la date de travail à la date de fin de la commande
				$dateC=_addTimeToYMD($oaDate, $t_four['tierDelai'], "m");
			}
//echo "<br>DBG tierDelai : ".$t_four['tierDelai'];
			// ... créer la liste des articles (ici, 1 seul !!) et ...
				$t_art[$artCode]['qte']=$qte;
				$t_art[$artCode]['remiseLigne']=0;
			// ... ecrire l'OA.
				if ($errorCode==0 && !$tester) $cdeNum=_addNewOA($dateType, $dateC, $fourNum, $t_art, $remarque); //$errorCode=5110;	// Erreur d'écriture d'OF
			// Si pas d'erreur, revenir à la page de liste des prod en cours pour un article ... celle ci ? pourquoi pas, on fera la même chose avec la liste des prévisions à confirmer ! ou alors ce sera la même page ?.
			if ($errorCode==0 && $fourNum && $qte) $etape=3;
		}
		if ($errorCode==0 && $cdeNum && !$tester) {
			$msg="<p>Commande n°$cdeNum enregistrée</p>";
			$dateDeb=$dateFin=COM_DMY();$qte=$fourNum=0;$remarque="";
			$typeDateChk1=$typeDateChk2=$typeDateChk3="";
			$dateType='C';
			$cdeADD=true;
			$etape=4; // commande terminée, on peut l'imprimer.
		}
//echo "<br>DBG errorCode : $errorCode";
}
//echo "</div id=DBG style='background:white;'>";
//=======================================================================
// Affichage 
//=======================================================================
_pageHeader($userId);	// entête de page et menu
		echo "
<script>
function testerValeurs(){ // pour soumettre le formulaire avec un statut de non traitement, juste un test pour récupérer les données fournisseur (nom, délai)
	btn=document.getElementById('btnCommander');
	btn.value='tester';
	test=document.getElementById('tester');
	test.innerHTML='<input type=hidden name=tester value=\'tester\'>';
	document.approForm.submit();
	return false;
}
</script>";

$oaUniteTemps="m";		// unité de temps par défaut pour les OF
?>
	<section><header>Lancer un OA manuel</header>
		<article>
<?php 
_dspProgessionBar($etape, $cdeNum); // Afficher la barre de progression
(!empty($artCode))?$artTypeCode=_dspArticle($artCode):$artTypeCode=""; // afficher la fiche article si on le connaît
// affichage du formulaire ou du message d'enregistrement
	if ($cdeADD){ 	// si la commande est ajoutée, afficher le message
		echo $msg;
		_dspCde($cdeNum);
	}else {			// si la commande n'est pas ajoutée, afficher le formulaire de saisie
		if (empty($artCode)){ // formulaire de sélection d'article si le code est vide
			echo "<form id=approForm name=approForm>";
			echo "<label>Choisir l'article</label>";
			_dspSelectArticle('b',$artCode, 'approForm'); // sélectionner un article.
			echo "</form>\n";
		}else{	// formulaire de création d'OA si le code article est connu
			// mise en place du bouton radio dateType qui sera sélectionné par défaut ou lors du réaffichage éventuel
				if ($dateType=='C') $null= (($typeDateChk1="checked='checked'") & ($typeDateChk2=$typeDateChk3=""));
				if ($dateType=='R') $null= (($typeDateChk2="checked='checked'") & ($typeDateChk1=$typeDateChk3=""));
				if ($dateType=='F') $null= (($typeDateChk3="checked='checked'") & ($typeDateChk1=$typeDateChk2=""));
			echo "<form id=approForm name=approForm>";
?>
				<input type=hidden name=artCode value='<?php echo $artCode; ?>' >
				<input type=hidden name=duree id=ofDuree value='0' >
				<div id=tester></div>
				<ul>
					<li><label>Quantité à commander</label><input type=text name=qte value=<?php echo $qte; ?> id=oaQte  onchange="testerValeurs();"></li>
					<li><label>Fournisseur choisi</label><?php _dspSelectFournisseur($artCode, $fourNum); ?></li>
					<li></li>
					<li><label>Référence de dates en date </label>
						de commande 		<input type="radio" name="dateType" value='C' id=oaDateType <?php echo $typeDateChk1; ?> onchange="calculDates();"> 
						ou de réception 	<input type="radio" name="dateType" value="R" id=oaDateType <?php echo $typeDateChk2; ?> onchange="calculDates();"> 
						<!-- ou en dates fixées 	<input type="radio" name="dateType" value="F" id=oaDateType <?php echo $typeDateChk3; ?> onchange="zcalculDates();"> -->
					</li>
					<li><label>Date Commande</label><input type=text name=dateDeb value=<?php echo $dateDeb; ?> id=oaDateC onchange="calculDates();"> (jj/mm/aaaa)</li>
					<li><label>Date Réception souhaitée </label><input type=text name=dateFin value=<?php echo $dateFin; ?> id=oaDateR onchange="calculDates();"> (jj/mm/aaaa)</li>
					<li><label>Délai fournisseur </label><div id=dspOaDelai>0</div> (<div id=oaDelai>0</div><?php echo $oaUniteTemps; ?>)</li>
					<li></li>
	<!-- Remplacer le contrôle suivant par un SELECT -->
					<li><label>Prix unitaire Article</label><div id=dspMontant>0</div></li>
					<li><label>Montant de la commande</label><div id=dspMontant>0</div></li>
					<li></li>
					<li><label>Remarques</label><input type=text name=remarque value="<?php echo $remarque; ?>" placeholder="Remarque diverse, motif (non opérationnel)" size=100px ></li>
					<li><input type=submit id=btnCommander name=commander value='Valider' ></li>
				</ul>
<?php
			echo "</form>\n";
			_dspScriptDates($oaDelai);
		}
	} // FI cdeADD true
?>
		</article>
	</section>
<?php
//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page
?>