<?php
/* La vente est "parfaite" dès lors que l'on a convenu de la chose et du prix 
 (art 1583 du code civil)
*/
/* transversalité avec le droit
http://www.legifrance.gouv.fr/affichCodeArticle.do
;jsessionid=5EAF5BC7D0DCFFA01EC512B27125CE45.tpdjo07v_1
?idArticle=LEGIARTI000006441308
&cidTexte=LEGITEXT000006070721
&dateTexte=20130313
Article 1583 - Créé par Loi 1804-03-06 promulguée le 16 mars 1804
Elle est parfaite entre les parties, et la propriété est acquise de droit à l'acheteur à 
l'égard du vendeur, dès qu'on est convenu de la chose et du prix, quoique la chose 
n'ait pas encore été livrée ni le prix payé.
*/
session_start();
include "library/DB_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 cart_dspCart($cartId){
global $connexion;
	$requete="SELECT count(*) FROM panier WHERE panierId='$cartId' ;";
	$t_record=DB_chercherEnreg($requete, $connexion);
	echo mysql_error();
	return $t_record;
}
// -------------------------------------------------------------------
// -------------------------------------------------------------------
function _menuRight(){
global $_SESSION;
global $panierId;
	// affichage du Panier
	echo "Panier<br>\n";
	if (isset($_SESSION['num'])) echo "ok";
	$t_panier=cart_dspCart($panierId);
	if($t_panier && $t_panier[0]>0) echo "Le panier contient ".$t_panier[0]." article(s)";
	else echo "Le panier est vide";
	echo "Choisir un article pour l'ajouter au panier.<br>\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']))?$recordKey=$_REQUEST['artCode']:$recordKey=""; // 
// Récup ou création du n° de panier (pour identifier le panier si on fait une commande)
$panierId=0;
(isset($_REQUEST['id'])&&!empty($_REQUEST['id']))?$panierId=$_REQUEST['id']:$panierId=getRandomString(); // 

//------------------------------------------------------------------------
// connexion et ouverture de la requête à afficher
	$connexion=DB_connecter(); 
//------------------------------------------------------------------------
// Rechercher l'item choisi
$requete="Select * from $tableName WHERE artCode='$recordKey' ;";
$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 ($recordKey). 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'utilisatuer, voir comment corriger ça ... variables de session ?
	exit(0);
}
//------------------------------------------------------------------------
$itemKey=$t_record['artCode'];

//------------------------------------------------------------------------
// 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
==== ===== */
// stock initial
$stockInit=$t_record['stockInit'];
$stockDate=$t_record['stockDate'];
// somme des mvts de stock
$selectStkAct="Select sum(mvtQte) from stockmvt 
	where 	mvtArt='$itemKey' 
	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;
$stockMvt=$t_stkAct[0];
 // 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";
	echo " <caption>$tableName</caption>";
		(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>".$itemKey."</td></tr>\n";
		echo "<tr class=td><td>Description</td><td class=tdArtDesc>".$t_record['artDesc']."</td></tr>\n";
		echo "<tr class=td><td>Type</td><td class=tdArtTypeCode>".$t_record['artTypeCode']."</td></tr>\n";
		echo "<tr class=td><td>Type</td><td class=tdArtTypeDesc>$categorie</td></tr>\n";
		echo "<tr class=td><td>Stock</td><td class=tdArtTypeDesc>$stockInit</td></tr>\n";
		echo "<tr class=td><td>Stock</td><td class=tdArtTypeDesc>$stockCourant</td></tr>\n";
	echo "</table><!-- article END -->\n";
	// FIN Afficher le module article
echo "</td><td>";
	// Afficher le module commande (formulaire)
	echo "<form name=commander action=cdeArtCartAdd.php><!-- form BEGIN -->";
		echo "<input type=hidden name=artCode value=$itemKey>\n";
		echo "<input type=hidden name=id value=$panierId>\n";
		echo "<table align=center border=1>\n";
			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-->";
//========================================================================
// fin de page
//========================================================================
_pageFooter(); // pied de page
?>