<?php
session_start();
// ========================================================================================
// Afficher un article pour le commander
// ========================================================================================
include "library/DB_fct.inc.php";
include "library/CART_fct.inc.php";
include "library/_baseDesign.inc.php";
// ========================================================================================
// Fonctions locales
// ========================================================================================
function getRandomString($long=40) { // retourne une chaîne  de caractères aléatoires, longueur 40 /dft.
	$result = ""; $chaineCle = "rSaHbNAZAVByvIGcXTGeEKiRMQtjPRTqufYEgLhUYUDWwJd0ICkpxOmPOZsn";
	srand((double)microtime()*time());
	for($i=0; $i<$long; $i++) $result .= $chaineCle[rand()%strlen($chaineCle)];
	return $result;
}
// -------------------------------------------------------------------
function _getSumMvtStockArticle($artCode, $stockDate=0){
global $connexion;
// Faire le calcul du stock courant

/* ===== Explications sur le calcul du stock courant =====
// le stock est celui de l'article + ou moins le total des mouvements depuis le dernier invantaire.
la table utilisée est :  stockmvt "mouvements de stock"
nomChamp 	type 		dft autre	
mvtNum 		int(11) 	Non n° identifiant du mouvement (auto_increment)
mvtCode 	varchar(8) 	Non VTE=vente, OFC=OFconso, -P=prod, -R=refus, RCV=réception
mvtDate 	date 		Non date du mouvement
mvtArt 		varchar(8) 	Non Code Article concerné
mvtQte 		float(9,2) 	Non Quntité (>0=Entrée en stock, <0=sortie de stock)
mvtRefNum 	varchar(15) Non N° de référence (OF, BL, ...)
mvtMotif 	varchar(30) Non Description du motif du mouvement (vente, production, ...)

ecplication VTE=vente et OFC=OFconso sont des sorties de stock, 
			OFP=prod et RCV=réception sont des entrées en stock
			OFR=refus est un mouvement de déclaration de perte qui génère une consommation pas pas de production (pas pris en compte)

on va donc calculer la somme des mouvements de stock : 
	- pour l'article concerné,
	- depuis la date du dernier inventaire de l'article,
	- on ne ne prend que les codes mvt VTE, OFP, OFC et RCV qui modifient le stock marchand

la requete sera donc : 
	select somme(qté) de stockmvt pour l'article concerné, dont la date est > date dernier invantaire et codemvt conforme
==== ===== */

// somme des mvts de stock
	$selectStkAct="Select sum(mvtQte) from stockmvt 
		where 	mvtArt='$artCode' 
		and 	mvtDate>'$stockDate' 
		and 	mvtCode in ('VTE', 'OFC', 'OFP', 'RCV')
		;";
	$t_stkAct=DB_chercherEnreg($selectStkAct, $connexion);
	if(empty($t_stkAct[0])) $t_stkAct[0]=0;
	return $t_stkAct[0];
}
// -------------------------------------------------------------------
function _menuRight(){
global $_SESSION;
global $connexion;
global $panierId;
global $artCode;
	if (isset($_SESSION['num'])) echo "ok";
	// affichage du Panier
	CART_previewCart($panierId, "cdeArtDsp.php?id=$panierId&artCode=$artCode");
	echo "<div class=help>Modifez éventuellement la quantité et valider pour ajouter l'article au panier.</div>\n";
}
// ========================================================================================
// MAIN()
// ========================================================================================
$userId="";
$pageName="lstArt.php";
$tableName="Article";
$headTitle="Liste des Articles";
$contentTitle="Choix d'un article";

// Récup de l'enregistrement, vérif s'il n'y a pas d'erreur de code.
(isset($_REQUEST['artCode']))?$artCode=$_REQUEST['artCode']:$artCode=""; // 
// Récup ou création du n° de panier (pour identifier le panier si on fait une commande)
(isset($_REQUEST['id'])&&!empty($_REQUEST['id']))?$panierId=$_REQUEST['id']:$panierId=0; // 

//------------------------------------------------------------------------
// connexion et ouverture de la requête à afficher
	$connexion=DB_connecter(); 
//------------------------------------------------------------------------
// Rechercher l'item choisi
$requete="Select * from article WHERE artCode='$artCode' ;";
$t_record=DB_chercherEnreg($requete, $connexion);

// EN CAS D'ERREUR : Envoi de la page de redirection de base (goToUrl())
if (!$t_record){ 
	$message="Erreur de paramètre ($artCode). Attendre la redirection ou <a href=\"javascript:history.back()\">Retour page précédente !</a>";
	$backUrlCompltete="index.php";
	_goToUrl($message, $backUrlCompltete, '', ''); // pour l'instant, on perd l'utilisateur, voir comment corriger ça ... variables de session ?
	exit(0);
}
//------------------------------------------------------------------------
$artCode=$t_record['artCode'];
//------------------------------------------------------------------------
// calculer le stock courant (voir explications sur le calcul dans la fonction)
// stock initial
	$stockInit=$t_record['stockInit'];
	$stockDate=$t_record['stockDate'];
	$stockMvt=_getSumMvtStockArticle($artCode, $stockDate);
	 // stock courant= stock initial + somme(mvts de stock)
	$stockCourant=$stockInit+$stockMvt;
/* Question	: faut-il aussi prendre en compte les commandes en cours non encore honorées ? */
/* Réponse	: Pas pour l'instant, on verra ça plus tard */

//========================================================================
// AFFICHAGE
//========================================================================
_pageHeader($userId);	// entête de page et menu
//------------------------------------------------------------------------------------------------------------
// Affichage de l'item choisi
//------------------------------------------------------------------------------------------------------------
echo "<table border=1 align=center><tr><td><!--item BEGIN-->\n";
	// Afficher le module article
	echo " <table align=center border=1><!-- article BEGIN -->\n";
		(empty($t_record['artPrixHT']))?$prix="N/A":$prix=$t_record['artPrixHT']." €"; // convertir le prixHT
		($t_record['artTypeCode']=="F")?$categorie="Produit":$categorie="Accessoire"; //convertir la description du type
		echo "<tr class=td><td>Référence</td><td class=tdArtCode>".$artCode."</td></tr>\n";
		echo "<tr class=td><td>Description</td><td class=tdArtDesc>".$t_record['artDesc']."</td></tr>\n";
		echo "<tr class=td><td>Catégorie</td><td class=tdArtTypeDesc>$categorie</td></tr>\n";
		echo "<tr class=td><td>Type</td><td class=tdArtTypeCode>".$t_record['artTypeCode']."</td></tr>\n";
		if ($stockCourant>0)
			echo "<tr class=td><td>En stock</td><td class=tdArtStock>$stockCourant</td></tr>\n";
		else
			echo "<tr class=td><td class=tdArtCdeEnCours colspan=2>En cours de commande/production</td></tr>\n";
	echo "</table><!-- article END -->\n";
	// FIN Afficher le module article
echo "</td><td>";
	// Afficher le module commande (formulaire), MEME si le stock est à zéro (cela signifiera une demande de production)
	echo "<form name=commander action=cdeArtCartAdd.php><!-- form BEGIN -->";
		echo "<input type=hidden name=artCode value=$artCode>\n";
		echo "<input type=hidden name=id value=$panierId>\n";
		echo "<table align=center border=1>\n";
		echo " <caption>Commander l'article</caption>";
			echo "<tr class=td><td>Prix HT : $prix</td></tr>\n";
			echo "<tr class=td><td>Quantité <input type=text name=qteCde value=1></td></tr>\n";
			echo "<tr class=td><td><input type=submit name=cdeGo value='Ajouter au panier' /></td></tr>\n";
		echo "</table>\n";
	echo "</form name=commander><!-- form END -->\n";
// FIN Afficher le module commande (formulaire)
echo "</td></tr></table><!--item END-->";
// --------------------------
$dir="produits";
$image=$artCode.".jpg";
if (is_dir($dir))
	if (is_file("$dir/$image"))
	echo "<center><img src='$dir/$image' height=200px ></center>";
//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page
?>