casdastre: initial import.
183
DAajoute.php
Normal file
|
@ -0,0 +1,183 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Initialisation des chemins d'acces aux librairies
|
||||
* de fonctions
|
||||
*/
|
||||
|
||||
include("includes.inc.php");
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->logCheck();
|
||||
|
||||
$page->startScript();
|
||||
include("includes/scriptJS_DA.inc.php");
|
||||
$page->endScript();
|
||||
|
||||
$page->startHeader();
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="/styles/contenuDA.css" />
|
||||
|
||||
<?php
|
||||
$page->endHeader();
|
||||
|
||||
$familles = donne_familles();
|
||||
$unite="* unité";
|
||||
|
||||
switch($_POST["action"]) {
|
||||
case "Ajouter": {
|
||||
$famProd=$_POST["famille"];
|
||||
$prodSelect=$_POST["produit"];
|
||||
$quantiteDem=$_POST["quantite"];
|
||||
$prodUnit=$_POST["unite"];
|
||||
|
||||
if (!isset($_SESSION["demandeAchat"])){
|
||||
$_SESSION["demandeAchat"]=new DemandeAchat(
|
||||
$_SESSION["userInfo"]->getID()
|
||||
);
|
||||
}
|
||||
$_SESSION["demandeAchat"]->ajouteLDA($famProd,$prodSelect,$quantiteDem);
|
||||
};
|
||||
break;
|
||||
case "Supprimer": {
|
||||
if (isset($_SESSION["demandeAchat"])){
|
||||
$_SESSION["demandeAchat"]->supprimeLDA($_POST["Case_suppr"]);
|
||||
}
|
||||
// TODO: faire en sorte de supprimer le bug
|
||||
// qui permet d'avoir des produits n'appartenant pas
|
||||
// à la bonne famille
|
||||
} ;
|
||||
break;
|
||||
case "Annuler": {
|
||||
// TODO: faire en sorte de supprimer le bug
|
||||
// qui permet d'avoir des produits n'appartenant pas
|
||||
// à la bonne famille
|
||||
}; break;
|
||||
// TODO: lorsque l'on fait un Annuler faire en sorte que
|
||||
// les produits correspondent bien à la famille
|
||||
case "Valider": {
|
||||
if (isset($_SESSION["demandeAchat"])){
|
||||
$_SESSION["demandeAchat"]->insereBD();
|
||||
unset($_SESSION["demandeAchat"]);
|
||||
header("Location: DAliste.php");
|
||||
}
|
||||
}; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
$page->startContent();
|
||||
|
||||
?>
|
||||
|
||||
<div id="contenuDA">
|
||||
|
||||
<h1>Demande d'Achat</h1>
|
||||
|
||||
<h2>Livraison</h2>
|
||||
<fieldset>
|
||||
<legend><b>Date et horaires</b></legend>
|
||||
<p> Date :
|
||||
<input type="text" name="jour" value="<?php print date("d")+1; ?>" class="livraison" size="2" maxlength="2" />
|
||||
/
|
||||
<input type="text" name="mois" value="<?php print date("m"); ?>" class="livraison" size="2" maxlength="2" max="12" />
|
||||
/
|
||||
<input type="text" name="annee" value="<?php print date("Y"); ?>" class="livraison" size="4" maxlength="4" min="2004" />
|
||||
</p>
|
||||
<p>
|
||||
Horaire :
|
||||
<ul>
|
||||
<li>
|
||||
A partir de
|
||||
<input type="text"
|
||||
name="heures_min"
|
||||
value="08"
|
||||
size="2"
|
||||
class="livraison"
|
||||
maxlength="2" /> h
|
||||
<input type="text"
|
||||
name="mins_min"
|
||||
value="00"
|
||||
size="2"
|
||||
class="livraison"
|
||||
maxlength="2" />
|
||||
</li>
|
||||
<li>
|
||||
Jusqu'à
|
||||
<input type="text"
|
||||
name="heures_max"
|
||||
size="2"
|
||||
value="19"
|
||||
class="livraison"
|
||||
maxlength="2" /> h
|
||||
<input type="text"
|
||||
name="mins_max"
|
||||
size="2"
|
||||
value="30"
|
||||
class="livraison"
|
||||
maxlength="2" />
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
</fieldset>
|
||||
|
||||
<h2>Ajout d'un nouveau produit</h2>
|
||||
<form name="form"
|
||||
method="post"
|
||||
action="DAajoute.php"
|
||||
enctype="application/x-www-form-urlencoded">
|
||||
|
||||
<noscript>
|
||||
<p style="border: 1px solid #f00; padding:5px;">
|
||||
Pour passer votre commande vous devez pouvoir utiliser JavaScript.
|
||||
Veuillez contacter votre administrateur pour plus de deétails.
|
||||
</p>
|
||||
</noscript>
|
||||
<p>
|
||||
<select name="famille"
|
||||
onChange="changeFam_Prod(this.form.famille,this.form.produit);" >
|
||||
|
||||
<?php
|
||||
for($i=0;$i<count($familles);$i++) {
|
||||
menu_deroulant_familleProd($familles[$i]);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<select name="produit">
|
||||
<?php
|
||||
$prod = trouve_produits(1);
|
||||
for($i=0;$i<sizeof($prod);$i=$i+2) {
|
||||
menu_deroulant_Produits($prod[$i], $prod[$i+1]);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
Quantité :
|
||||
<input type="text" name="quantite"><?php print $unite ?>
|
||||
</p>
|
||||
<p>
|
||||
<input type="hidden" name="unite" value"<?php print $unite;?>" />
|
||||
<input type="reset" name="action" value="Annuler" />
|
||||
<input type="submit" name="action" value="Ajouter" />
|
||||
</p>
|
||||
|
||||
<?php
|
||||
if (isset($_SESSION["demandeAchat"])){
|
||||
if ($_SESSION["demandeAchat"]->_ligneIdx>0){
|
||||
print "<fieldset>\n";
|
||||
print "<legend><b>Lignes de demandes d'achat</b></legend>\n";
|
||||
print $_SESSION["demandeAchat"]->toHTML(1);
|
||||
|
||||
|
||||
print "</fieldset>\n";
|
||||
print "<input type=\"submit\" "
|
||||
."name=\"action\" class='valider' "
|
||||
."value=\"Valider\" />"; }
|
||||
}
|
||||
?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
$page->endContent();
|
||||
print $page->toHTML();
|
||||
?>
|
72
DAliste.php
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Initialisation des chemins d'acces aux librairies
|
||||
* de fonctions
|
||||
*/
|
||||
include("includes.inc.php");
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->logCheck();
|
||||
|
||||
$page->startHeader();
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="/styles/contenuDA.css" />
|
||||
|
||||
<?php
|
||||
$page->endHeader();
|
||||
|
||||
$listeDA_cree=new ListeDA("CREE",$_SESSION["userInfo"]->getID());
|
||||
$listeDA_cree->loadListe();
|
||||
|
||||
switch($_POST["action"]) {
|
||||
case "Supprimer": {
|
||||
// TODO: supprimer demande d'achat de la table
|
||||
// ainsi que les lda correspondant etc.
|
||||
$listeDA_cree->supprimeDA($_POST["demande_achat"]);
|
||||
};
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
$page->startContent();
|
||||
?>
|
||||
|
||||
<div id="contenuDA">
|
||||
|
||||
<h1>Demandes d'achats en cours</h1>
|
||||
|
||||
<h2>Demandes d'achats non traitées</h2>
|
||||
<?php
|
||||
|
||||
print "<form name=\"form\" "
|
||||
."method=\"post\" "
|
||||
."action=\"DAliste.php\" "
|
||||
."enctype=\"application/x-www-form-urlencoded\" "
|
||||
.">";
|
||||
|
||||
print $listeDA_cree->toHTML();
|
||||
if (count($listeDA_cree->_liste)>0){
|
||||
print "<input type=\"submit\" name=\"action\" value=\"Supprimer\" />";
|
||||
}
|
||||
print "</form>";
|
||||
|
||||
?>
|
||||
|
||||
<h2>Demandes d'achat en cours de traitement</h2>
|
||||
|
||||
<?php
|
||||
$listeDA_envoye=new ListeDA("COMM",$_SESSION["userInfo"]->getID());
|
||||
$listeDA_envoye->loadListe();
|
||||
print $listeDA_envoye->toHTML(0);
|
||||
?>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
// on affiche les lignes de demande d'achat
|
||||
$page->endContent();
|
||||
print $page->toHTML();
|
||||
|
||||
?>
|
121
DAstock.php
Normal file
|
@ -0,0 +1,121 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Initialisation des chemins d'acces aux librairies
|
||||
* de fonctions
|
||||
*/
|
||||
include("includes.inc.php");
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->logCheck();
|
||||
|
||||
$page->startScript();
|
||||
include("includes/scriptJS_DA.inc.php");
|
||||
$page->endScript();
|
||||
|
||||
$page->startHeader();
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="/styles/contenuDA.css" />
|
||||
|
||||
<?php
|
||||
$page->endHeader();
|
||||
$page->startContent();
|
||||
|
||||
|
||||
switch($_POST["action"]) {
|
||||
case "Accepter": {
|
||||
if($_SESSION["produit"]) {
|
||||
if($_SESSION["produit"]->exists()) {
|
||||
$_SESSION["produit"]->_stock=$_POST["stock"];
|
||||
$_SESSION["produit"]->_seuil_min=$_POST["seuil_min"];
|
||||
$_SESSION["produit"]->_seuil_max=$_POST["seuil_max"];
|
||||
$_SESSION["produit"]->modifSeuils();
|
||||
unset($_SESSION["produit"]);
|
||||
}
|
||||
else {
|
||||
$_SESSION["produit"]->_stock=$_POST["stock"];
|
||||
$_SESSION["produit"]->_seuil_min=$_POST["seuil_min"];
|
||||
$_SESSION["produit"]->_seuil_max=$_POST["seuil_max"];
|
||||
$_SESSION["produit"]->insereInfos();
|
||||
unset($_SESSION["produit"]);
|
||||
}
|
||||
}
|
||||
};break;
|
||||
|
||||
case "Modifier": {
|
||||
$_SESSION["produit"]=new ProduitInterne($_POST["produit"], $_SESSION["userInfo"]->getSite());
|
||||
$_SESSION["produit"]->rempliVals();
|
||||
};break;
|
||||
|
||||
case "Supprimer": {
|
||||
if($_SESSION["produit"]) {
|
||||
if($_SESSION["produit"]->exists()) {
|
||||
$_SESSION["produit"]->supprProStck();
|
||||
}
|
||||
unset($_SESSION["produit"]);
|
||||
}
|
||||
};break;
|
||||
|
||||
|
||||
default: break;
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="contenuDA">
|
||||
|
||||
<h1>Gestion des stocks</h1>
|
||||
|
||||
<form name="form"
|
||||
method="post"
|
||||
action="DAstock.php"
|
||||
enctype="application/x-www-form-urlencoded">
|
||||
|
||||
<noscript>
|
||||
<p style="border: 1px solid #f00; padding:5px;">
|
||||
Pour passer votre commande vous devez pouvoir utiliser JavaScript.
|
||||
Veuillez contacter votre administrateur pour plus de deétails.
|
||||
</p>
|
||||
</noscript>
|
||||
|
||||
<p>
|
||||
<select name="famille"
|
||||
onchange="changeFam_Prod(this.form.famille,this.form.produit)">
|
||||
<?php
|
||||
for($i=0;$i<count($familles);$i++) {
|
||||
menu_deroulant_familleProd($familles[$i]);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<select name="produit">
|
||||
<?php
|
||||
$prod = trouve_produits(1);
|
||||
for($i=0;$i<sizeof($prod);$i=$i+2) {
|
||||
menu_deroulant_Produits($prod[$i], $prod[$i+1]);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<br />
|
||||
|
||||
|
||||
<p>
|
||||
<input type="reset" name="action" value="Annuler" />
|
||||
<input type="submit" name="action" value="Modifier" />
|
||||
</p>
|
||||
|
||||
<?php
|
||||
if($_SESSION["produit"]) {
|
||||
print $_SESSION["produit"]->toHTML();
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$page->endContent();
|
||||
print $page->toHTML();
|
||||
?>
|
||||
|
||||
|
0
HEADER
Normal file
34
Makefile
Normal file
|
@ -0,0 +1,34 @@
|
|||
PRJNAME=CasDAstre
|
||||
GDATE:= $(shell date +"%Y-%m-%d_r%H%M")
|
||||
GFILENAME:= $(PRJNAME)-$(GDATE).tar.bz2
|
||||
PATH_GFILENAME:= ../$(GFILENAME)
|
||||
LOCALDIR=$(shell pwd)
|
||||
|
||||
|
||||
all: nothing
|
||||
|
||||
nothing:
|
||||
# do nothing
|
||||
|
||||
|
||||
update: clean
|
||||
./tools/cda-update
|
||||
|
||||
myupdate: clean
|
||||
./tools/mycda-update
|
||||
|
||||
clean:
|
||||
rm -f *.php~
|
||||
$(MAKE) -C doc clean
|
||||
|
||||
package: clean createpackage sendtoarchives
|
||||
|
||||
createpackage:
|
||||
#mv lib ../lib$(GDATE)
|
||||
tar -cjvf $(PATH_GFILENAME) -C ../ $(PRJNAME)
|
||||
#mv ../lib$(GDATE) lib
|
||||
|
||||
sendtoarchives:
|
||||
mkdir -p ../Archives
|
||||
mv $(PATH_GFILENAME) ../Archives
|
||||
|
0
README
Normal file
2
VERSION
Normal file
|
@ -0,0 +1,2 @@
|
|||
hoplui eh
|
||||
0.0
|
0
cache/README
vendored
Normal file
15
classContFourn.php
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
class ContFourn {
|
||||
|
||||
//variable contenant les droits de l'objet
|
||||
//créé (lecture uniquement (01 base 2), lecture/écriture... (11 base 2))
|
||||
var $_droits;
|
||||
|
||||
function ContFourn($config)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
130
commandes.php
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?php
|
||||
|
||||
include("includes.inc.php");
|
||||
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->logCheck();
|
||||
|
||||
$page->startScript();
|
||||
?>
|
||||
// prod_ref.options[makeselector.selectedIndex].text; */
|
||||
|
||||
function showDA(prod_ref){
|
||||
var refSelected=document.forms["cmd_gen"].reference.value;
|
||||
|
||||
var lgth = document.forms["cmd_gen"].reference.options.length;
|
||||
|
||||
for (i=0;i<lgth;i++){
|
||||
refHide=document.forms["cmd_gen"].reference.options[i].value;
|
||||
objHide=document.getElementById(refHide);
|
||||
objHide.style.display="none";
|
||||
objHide.style.visibility="hidden";
|
||||
}
|
||||
objVisible=document.getElementById(refSelected);
|
||||
|
||||
objVisible.style.display="block";
|
||||
objVisible.style.visibility="visible";
|
||||
}
|
||||
|
||||
<?php
|
||||
$page->endScript();
|
||||
$page->startContent();
|
||||
|
||||
|
||||
switch($_POST["action"]){
|
||||
case "Ajouter": {
|
||||
$refprod=$_POST["reference"];
|
||||
$fournisseur=$_POST["fourn_$refprod"];
|
||||
$LDAtab=&$_POST["da_$refprod"];
|
||||
if (!isset($_SESSION["commande"])){
|
||||
$_SESSION["commande"]=new Commande(
|
||||
$_SESSION["userInfo"]->getID()
|
||||
);
|
||||
}
|
||||
$_SESSION["commande"]->ajouteLC($refprod,$LDAtab,$fournisseur);
|
||||
|
||||
|
||||
}; break;
|
||||
case "Supprimer": {
|
||||
if (isset($_SESSION["commande"])){
|
||||
$_SESSION["commande"]->supprimeLC($_POST["ligneCom"]);
|
||||
}
|
||||
}; break;
|
||||
case "Valider": {
|
||||
$_SESSION["commande"]->valideLC();
|
||||
unset($_SESSION["commande"]);
|
||||
print "<span class='error'>Commandes effectuées</span>";
|
||||
//header("Location: listecommandes.php");
|
||||
}; break;
|
||||
default: break;
|
||||
}
|
||||
$cmdTool=new CmdTool(getFamilleFromAcheteur($_SESSION["userInfo"]->getID()));
|
||||
$cmdTool->chargeRef();
|
||||
?>
|
||||
|
||||
<div id="contenu">
|
||||
<h1>Générer des commandes</h1>
|
||||
<form name="cmd_gen"
|
||||
method="post"
|
||||
action="commandes.php"
|
||||
enctype="application/x-www-form-urlencoded">
|
||||
<fieldset>
|
||||
<legend>Lignes d'Achat en attente</legend>
|
||||
|
||||
<p>Références des produits :
|
||||
<select name="reference"
|
||||
onClick="showDA(); false;" >
|
||||
<?php print $cmdTool->ReftoHTML(); ?>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
|
||||
for ($i=0;$i<count($cmdTool->_ref_in);$i++){
|
||||
$ref=$cmdTool->_ref_in[$i];
|
||||
print "<p id=\"$ref\" name=\"$ref\" "
|
||||
."style=\"display: none; visibility:hidden;\" >";
|
||||
print "<span style='display:block'>";
|
||||
print "Demande d'achats correspondant à <b>$ref</b>";
|
||||
print "</span>";
|
||||
print "<span style='display:block'>";
|
||||
print $cmdTool->LDAtoHTML($ref);
|
||||
print "</span>";
|
||||
print "<span style='display:block'>";
|
||||
print "Fournisseur disponibles pour <b>$ref</b> ";
|
||||
print "</span>";
|
||||
print "<span style='display:block'>";
|
||||
print $cmdTool->FournToHTML($ref);
|
||||
print "</span>";
|
||||
print "</p>";
|
||||
}
|
||||
?>
|
||||
|
||||
<input type="submit" id="action" name="action" value="Ajouter" />
|
||||
</fieldset>
|
||||
<br />
|
||||
<?php
|
||||
if (isset($_SESSION["commande"])){
|
||||
print "<fieldset>";
|
||||
print "<legend>Commandes en cours</legend>";
|
||||
print $_SESSION["commande"]->toHTML();
|
||||
}
|
||||
?>
|
||||
</fieldset>
|
||||
<?php
|
||||
if (isset($_SESSION["commande"])){
|
||||
print "<input type=\"submit\" name=\"action\" id=\"action\" value=\"Valider\" />";
|
||||
}
|
||||
?>
|
||||
</form>
|
||||
|
||||
</div> <!-- contenu !-->
|
||||
|
||||
<?php
|
||||
|
||||
$page->endContent();
|
||||
print $page->toHTML();
|
||||
|
||||
?>
|
0
config/README
Normal file
21
config/db.conf.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
if (!defined(DB_CONF)){
|
||||
define(DB_CONF,1);
|
||||
//-----------------------------------------------
|
||||
// informations de connexion à la base de données
|
||||
//-----------------------------------------------
|
||||
|
||||
// nom du serveur (ex: shamox.ath.cx ou localhost) | server name
|
||||
define(SQL_SERVER,"localhost");
|
||||
|
||||
// nom de l'utilisateur de la base de données | database user name
|
||||
define(SQL_USER,"CasDAstre");
|
||||
|
||||
// mot de passe de l'utilisateur de la base de données | password
|
||||
define(SQL_PASSWD,"CasDAstreSQLpass");
|
||||
|
||||
// nom de la base de données | database name
|
||||
define(SQL_BASE,"casdastre");
|
||||
|
||||
}
|
||||
?>
|
5
data/bodyend.inc.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
</div> <!-- columnContent !-->
|
||||
</body>
|
||||
</html>
|
||||
|
12
data/bodystart.inc.php
Normal file
|
@ -0,0 +1,12 @@
|
|||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<h1>
|
||||
<img src="/icones/dastrenet.png" alt="Logo" />
|
||||
D'Astre.Net
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<?php include("menugauche.inc.php"); ?>
|
||||
|
||||
<div id="columnContent">
|
21
data/footer.inc.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
|
||||
<div id="footer">
|
||||
<span class="validator" > <!-- validateurs !-->
|
||||
<a href="http://validator.w3.org/check/referer" >
|
||||
Valid XHTML 1.0
|
||||
</a>
|
||||
|
||||
<a href="http://jigsaw.w3.org/css-validator/" >
|
||||
Valid CSS 2
|
||||
</a>
|
||||
</span> <!-- validator !-->
|
||||
<p>
|
||||
Site réalisé par
|
||||
LAURES Roland,
|
||||
ROLLAND Glenn,
|
||||
SCHAWOHL Sebastian,
|
||||
ZANA Rivka.
|
||||
</p>
|
||||
<p>IUP 2 GMI 2003-2004</p>
|
||||
</div> <!-- end footer !-->
|
||||
|
20
data/header.inc.php
Normal file
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"DTD/xhtml1-transitional.dtd"
|
||||
>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xml:lang="fr"
|
||||
lang="fr">
|
||||
|
||||
<head>
|
||||
|
||||
<title> D'Astre.Net </title>
|
||||
<link rel="stylesheet" href="/styles/main.css" />
|
||||
<link rel="stylesheet" href="/styles/header.css" />
|
||||
<link rel="stylesheet" href="/styles/menuGauche.css" />
|
||||
<link rel="stylesheet" href="/styles/columnContent.css" />
|
||||
<link rel="stylesheet" href="/styles/contenu.css" />
|
||||
<link rel="stylesheet" href="/styles/footer.css" />
|
||||
|
||||
|
||||
|
64
data/menugauche.inc.php
Normal file
|
@ -0,0 +1,64 @@
|
|||
<!-- Menu qui dépend des acces autorisés à l'utilisateur !-->
|
||||
|
||||
<div id="menuGauche">
|
||||
<h1>Informations</h1>
|
||||
<p>
|
||||
<img src="/icones/users.png" alt="Icone" />
|
||||
<?php
|
||||
$userline= "Utilisateur: ";
|
||||
if ($_SESSION["member"]){
|
||||
$userline.= "<b>" . $_SESSION["member"] ."</b>"."<br />".
|
||||
"<a href=\"logout.php\">Déconnexion</a>";
|
||||
} else {
|
||||
$userline.="inconnu.";
|
||||
}
|
||||
print $userline;
|
||||
?>
|
||||
</p>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
$actionMenu=new SecureMenu("Actions",0);
|
||||
$actionMenu->addItem("index","Sommaire","index.php");
|
||||
$actionMenu->setItemLevel("index",3);
|
||||
|
||||
$daMenu=new SecureMenu("Demandes d'Achats",0);
|
||||
$daMenu->addItem("DAajoute","Création","DAajoute.php");
|
||||
$daMenu->setItemLevel("DAajoute",1);
|
||||
|
||||
$daMenu->addItem("DAliste","Gestion Demandes d'achat","DAliste.php");
|
||||
$daMenu->setItemLevel("DAliste",1);
|
||||
|
||||
$daMenu->addItem("DAstock","Gestion des stocks","DAstock.php");
|
||||
$daMenu->setItemLevel("DAstock",1);
|
||||
|
||||
$fournMenu=new SecureMenu("Fournisseurs",0);
|
||||
$fournMenu->addItem("Faddsup","Gestion fournisseurs","fournisseurs.php");
|
||||
$fournMenu->setItemLevel("Faddsup",2);
|
||||
|
||||
$fournMenu->addItem("Paddsup","Gestion produits","produits.php");
|
||||
$fournMenu->setItemLevel("Paddsup",2);
|
||||
|
||||
$commMenu=new SecureMenu("Commandes",0);
|
||||
|
||||
$commMenu->addItem("Ccreate","Création commande","commandes.php");
|
||||
$commMenu->setItemLevel("Ccreate",2);
|
||||
//$commMenu->addItem("Csuiv","Suivi commande","Csuivi.php");
|
||||
//$commMenu->setItemLevel("Csuiv",2);
|
||||
|
||||
|
||||
if ($_SESSION["member"] and $_SESSION["userInfo"]){
|
||||
$actionMenu->setCurrentLevel($_SESSION["userInfo"]->getAccessLevel());
|
||||
$daMenu->setCurrentLevel($_SESSION["userInfo"]->getAccessLevel());
|
||||
$fournMenu->setCurrentLevel($_SESSION["userInfo"]->getAccessLevel());
|
||||
$commMenu->setCurrentLevel($_SESSION["userInfo"]->getAccessLevel());
|
||||
print $actionMenu->toHTML();
|
||||
print $daMenu->toHTML();
|
||||
print $fournMenu->toHTML();
|
||||
print $commMenu->toHTML();
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
</div>
|
58
doc/Makefile
Normal file
|
@ -0,0 +1,58 @@
|
|||
LATEX = latex
|
||||
PDFLATEX = pdflatex
|
||||
PSLATEX = pslatex
|
||||
DVIPDF = dvipdf
|
||||
DVIPS = dvips
|
||||
PS2PDF = ps2pdf
|
||||
GDATE := $(shell date +"-%Y-%m-%d_r%H")
|
||||
GFILENAME := CDC$(GDATE).tar.bz2
|
||||
LOCALDIR = $(shell pwd)
|
||||
MAINFILE = rapport
|
||||
|
||||
|
||||
PNGFILES := $(shell ls *.png 2> /dev/null )
|
||||
EPSFILES := $(patsubst %.png,%.eps,$(PNGFILES))
|
||||
PNG2EPSCC = convert
|
||||
TEXFILES := $(MAINFILE).tex
|
||||
DVIFILES := $(MAINFILE).dvi
|
||||
PDFFILES := $(MAINFILE).pdf
|
||||
PSFILES := $(MAINFILE).ps
|
||||
|
||||
all: png2eps dvi dvi ps pdf pdf
|
||||
|
||||
png2eps: $(EPSFILES)
|
||||
|
||||
%.eps : %.png
|
||||
@$(PNG2EPSCC) $< $@
|
||||
@echo -e "png2eps\t$< $@"
|
||||
|
||||
clean:
|
||||
rm -f rapport.dvi rapport.rtf rapport.pdf rapport.ps
|
||||
rm -f *.out *.log *.toc *.aux
|
||||
rm -f *.eps
|
||||
rm -f *.tex~
|
||||
|
||||
pdf: $(TEXFILES)
|
||||
$(PDFLATEX) $(TEXFILES)
|
||||
|
||||
ps: $(TEXFILES)
|
||||
$(DVIPS) $(DVIFILES)
|
||||
|
||||
dvi: $(PRJFILES)
|
||||
$(LATEX) $(TEXFILES)
|
||||
|
||||
#mail: package sendmail
|
||||
#
|
||||
#pdfmail :
|
||||
# make && make
|
||||
# echo "Et voila le dernier pdf" | mutt lsr-dev -a $(PDFFILES) -s "[CDC] Rev$(GDATE) (en PDF)"
|
||||
#
|
||||
#sendmail:
|
||||
# echo "Et voila" | mutt lsr-dev -a ../Archives/$(GFILENAME) -s "[CDC] Rev$(GDATE) (en TeX)"
|
||||
#
|
||||
|
||||
package: clean storefile
|
||||
|
||||
#storefile:
|
||||
# tar -cjvf ../$(GFILENAME) -C ../ cdc
|
||||
# mv ../$(GFILENAME) ../Archives
|
23
doc/acheteur.tex
Normal file
|
@ -0,0 +1,23 @@
|
|||
\section{L'acheteur}
|
||||
\par L'acheteur a la possibilité de gérer les founisseurs. Les acheteurs sont clasés par famille de produits. A chaque connexion apparait la famille de produit à laquelle appartient l'acheteur. Chaque acheteur a la possibilié de faire des ajouts sur les fournisseurs, mais également de gérer les produits.
|
||||
|
||||
\subsection{Ajout d'un fournisseur}
|
||||
|
||||
\par Afin d'ajouter un fournisseur, l'acheteur doit cliquer sur le lien 'Gestion fournisseur'. Plusieurs informations sur les fournisseurs sont à saisir tel que le nom, adresse, numéro de téléphone, numéro de Siret(...).
|
||||
\par Par ailleurs, la liste des fournisseurs déjà existants est affichée également en bas de page.
|
||||
|
||||
\texima{ajoutfour}{12cm}{9cm}
|
||||
|
||||
\subsection{Gestion des produits}
|
||||
|
||||
\par La gestion des produits consistent à ajouter un produit. Pour cela, l'acheteur saisit les informations concernant le produit, c'est à dire la désignation, le tarif, ainsi que l'unité.
|
||||
|
||||
\par Par ailleurs, il est nécessaire de saisir la reference du fournisseur ainsi que les références internes du produit , qui peut etre soit existant, soit nouveuax. Dans le cas d'une référence déjà connu, un menu déroulant apparait, et il suffit de sélection la référence que l'on souhaite ajouter.
|
||||
|
||||
\par Voici comment apparaît la page .
|
||||
\texima{ajoutproduit}{12cm}{9cm}
|
||||
|
||||
\par Comme pour le magasinier, l'acheteur a la possibilité de revenir au sommaire ou de se deconnecter grâce au menu se trouvant sur la gauche.
|
||||
|
||||
\subsection{Les commandes}
|
||||
|
BIN
doc/ajoutfour.png
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
doc/ajoutproduit.png
Normal file
After Width: | Height: | Size: 156 KiB |
28
doc/bd.tex
Normal file
|
@ -0,0 +1,28 @@
|
|||
\section{Base de données}
|
||||
|
||||
\subsection{L'implémentation}
|
||||
\par Le modèle conceptuel de données (MCD) ainsi que le schéma SQL de la base de donnée ont été généré avec le logiciel Gerwin\footnote{http://es.gnu.org/~jemarch/gerwin/}
|
||||
Le MCD est disponnible au format Gerwin dans l'archive du projet : \verb+sql/MCDTrac.ger+.
|
||||
|
||||
\subsection{Les scripts}
|
||||
|
||||
\par Afin de manipuler plus facilement la base, une série de script \verb+.sql+
|
||||
est présente dans le répertoire \verb+sql/+ de l'archive de D'Astre.Net.
|
||||
Ces scripts permettent la création, le remplissage, ainsi que la destruction de la base.
|
||||
|
||||
Voici la nomenclature des scripts :
|
||||
\begin{itemize}
|
||||
\item {db-create-mcd.sql : génère les tables de la base à partir du MCD.}
|
||||
\item {db-create-xxxx.sql : ajoute des tables spéciales hors-mcd.}
|
||||
\item {db-fill-xxxx.sql : (ou xxxx est le nom de la table), permet de remplir la table avec des données de test.}
|
||||
\item {db-drop.sql : permet de supprimer dans l'ordre les tables.}
|
||||
\end{itemize}
|
||||
|
||||
\par Pour plus de commodité, l'installation et la suppression de la base ont été simplifiés avec les scripts \verb+install.php+ et\verb+drop.php+ qui appellent les scripts \verb+.sql+ précédents dans le bon ordre.
|
||||
|
||||
\subsection{Connexion à la base de données}
|
||||
\par La connexion à la base de donnée aurait pu être gérée au niveau de la page,
|
||||
mais pour plus de commodité au niveau de la conception cela n'a pas été le cas.
|
||||
Cependant, la configuration de la base pour y accéder à partir de PHP a tout de
|
||||
même été centralisée dans le fichier \verb+config/db.conf.php+.
|
||||
|
10
doc/conclusion.tex
Normal file
|
@ -0,0 +1,10 @@
|
|||
\par Finalement,le casdast a permis résoudre un cas concret. Nous avons pu constater l'evolution et les differents étapes d'un projet.
|
||||
|
||||
|
||||
\section{Difficultés rencontrés}
|
||||
|
||||
|
||||
\section {Avenir}
|
||||
|
||||
|
||||
|
16
doc/couv.tex
Normal file
|
@ -0,0 +1,16 @@
|
|||
\title{Rapport du projet de Génie Logiciel : D'Astre.Net\\ \today}
|
||||
\date{}
|
||||
\author{\vspace{1cm} \\ {\sc Cours de Génie Logiciel} \\
|
||||
de Antoine Canet. \\~\\
|
||||
{\sc Université Paris 7 - Denis Diderot.}
|
||||
\\ \vspace{3cm} \\
|
||||
\begin{tabular}{ r l l }
|
||||
par & Roland LAURES & {\em $<$shamox77@mac.com$>$},\\
|
||||
& Glenn ROLLAND & {\em $<$glenux@fr.st$>$}, \\
|
||||
& Sebastian SCHAWOHL & {\em $<$stormrider@nerim.fr$>$}, \\
|
||||
& Rivka ZANA & {\em $<$rivka\_zan@hotmail.com$>$}
|
||||
\end{tabular}
|
||||
}
|
||||
%\date{\today}
|
||||
%\title{Janat}
|
||||
\maketitle
|
BIN
doc/creationDA.png
Normal file
After Width: | Height: | Size: 151 KiB |
31
doc/creationDA.tex
Normal file
|
@ -0,0 +1,31 @@
|
|||
\subsection{Création des demandes d'achat}
|
||||
\par La page de création des demandes d'achat est composé de deux parties :
|
||||
\itemize{begin}
|
||||
\item{Livraison} : permettant de déterminer les horaires de préférences aux
|
||||
quelles vous voulez être livré
|
||||
\item{Ajout d'un nouveau produit} : permettant d'ajouter un produit à la
|
||||
demande d'achat que vous allez créer.
|
||||
\itemize{end}
|
||||
|
||||
\subsubsection{Livraison}
|
||||
\par L'utilisation est assez simple, il vous suffit d'indiquer dans chacun
|
||||
des champs correspondants, la date (au format jour / mois / année (4 chiffres))
|
||||
et l'horaire.
|
||||
|
||||
\subsubsection{Ajout d'un nouveau produit}
|
||||
\par Dans cette partie, au début vous n'avez de présent que 2 menus déroulants et un champ.
|
||||
les deux menus correspondent en partant de la gauche au choix de selection de la famille de
|
||||
produit à laquelle le produit que vous voulez ajouter appartient, puis la référence
|
||||
interne et la description interne du produit que vous désirer demander. Il ne vous
|
||||
plus qu'à remplir le champ quantité et à valider votre ligne d'achat en cliquant
|
||||
sur le bouton Ajouter juste en dessous, et vous aurez créé une ligne de votre demande
|
||||
d'achat. Réitérer la manoeuvre afin de finir votre demande d'achat en y introduisant
|
||||
plusieurs lignes d'achats (une seule reste possible).
|
||||
\par Lorsque vous avez ajouter une ligne d'achat à votre demande d'achat, une sous-partie
|
||||
apparraît où la liste des lignes de demandes d'achat que vous aurez rentré apparaitra.
|
||||
Chaque ligne de cette liste est précédée d'une petite case qui vous permettra de selectionner
|
||||
la ligne d'achat correspondant, et de la supprimer en cliquant (une fois qu'elle est selectionnée)
|
||||
sur le bouton Supprimer se situant en dessous de la liste des lignes de demandes d'achats.
|
||||
\par Une fois que vous avez fini de remplir votre demande d'achat avec vos lignes, cliquer sur le
|
||||
bouton "Valider" se situant en bas au milieu afin de valider votre demande d'achat. Elle sera alors
|
||||
prise en compte par le système.
|
264
doc/demandeAchat.tex
Normal file
|
@ -0,0 +1,264 @@
|
|||
\section{Demande d'achat}
|
||||
|
||||
\par Les demande d'achats sont gérées grâce à l'utilisation
|
||||
des classes {\em LDachat} (\verb+/includes/libLDachat.inc.php+ et {\em ListeDA} \verb+/includes/liblisteDA.inc.php+) que nous détaillerons par la suite .
|
||||
|
||||
Pour ne pas perdre les informations de page en page lors de la création de la
|
||||
Demande d'achat, la variable de session \verb+$_SESSION["demandeAchat]"+ contient l'objet {\em DemandeAchat} correspondant à la demande en cours de création.
|
||||
|
||||
\par Enfin, la classe {\em DemandeAchat} est composée d'une liste de {\em LDachat}, qui correspondent aux lignes de demande d'achat.
|
||||
|
||||
\subsection{Classe LDachat}
|
||||
|
||||
\par Comme dit précedemment, cette classe représente
|
||||
une ligne d'achat. Elle est créée lorsque le magasinier
|
||||
a choisi {\it ``Ajouter"} sur la page de création de demande d'achat.
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
class LDachat {
|
||||
|
||||
function LDachat($fam, $prod, $qte,$da_id=-1);
|
||||
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\par Cette classe se compose uniquement de quelques champs représentant la famille de produits du produit
|
||||
selectionné, la référence interne du produit, la quantité souhaitée et finalement le numéro de demande d'achat
|
||||
rattaché. Tous ces champs sont initialisés grâce au constructeur.
|
||||
|
||||
|
||||
\subsection{Classe DemandeAchat}
|
||||
|
||||
\par Cette classe permet d'avoir un objet qui contient toutes les informations utiles pour pouvoir créer des demandes d'achats. Voici son prototype:
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
class DemandeAchat {
|
||||
function DemandeAchat($id_mag);
|
||||
function load($id_da);
|
||||
function ajouteLDA($famProd,$prodSelect,
|
||||
$quantiteDem,$prodUnit="kg");
|
||||
function supprimeLDA($Cases_supp);
|
||||
function toHTML($editable=0);
|
||||
function insereBD();
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsubsection{Le constructeur}
|
||||
\par Le constructeur doit :
|
||||
\begin{itemize}
|
||||
\item{initialiser le champ correspondant à l'identifiant du magasinier qui passe commande}
|
||||
\item{créer un tableau vide, qui par la suite contiendra des lignes de demande d'achat}
|
||||
\item{initialiser le champ qui correspond aux nombres de lignes d'achat}
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Charger les lignes de demandes d'achat}
|
||||
\par La fonction \verb+function load($id_da)+ permet de
|
||||
remplir l'objet {\em DemandeAchat} en faisant une requête
|
||||
sur la base de données
|
||||
avec le numéro de demande d'achat souhaité.
|
||||
|
||||
\subsubsection{Ajouter ou supprimer des lignes d'achats}
|
||||
\par Les fonctions \verb+ajouteLDA(...)+
|
||||
et \verb+supprimeLDA($Cases_supp)+, permettent respectivement d'ajouter et de supprimer des lignes de la {\em DemandeAchat}.
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
function ajouteLDA($famProd,$prodSelect,
|
||||
$quantiteDem,$prodUnit="kg"){
|
||||
$lda = new LDachat($famProd, $prodSelect,
|
||||
$quantiteDem);
|
||||
$this->_ligneAchat[$this->_ligneIdx]=&$lda;
|
||||
$this->_ligneIdx++;
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
function supprimeLDA($Cases_supp){
|
||||
// on cherche les lignes selectionnees
|
||||
// pour la suppression
|
||||
if (is_array($Cases_supp)){
|
||||
while( list($case,$val) = each($Cases_supp) ){
|
||||
// on supprime les lignes selectionnees
|
||||
$idx=preg_replace("/Check_/","",$val);
|
||||
unset($this->_ligneAchat[$idx]);
|
||||
}
|
||||
[...]
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\par Ces deux fonctions n'ont aucune incidence sur la base de donnée,
|
||||
mais uniquement sur l'affichage et le contenu de l'objet {\em DemandeAchat}
|
||||
courant.
|
||||
En effet, lorsqu'un magasinier ``ajoute" un produit (il fait un clic sur
|
||||
``Ajouter" sur la page \verb+DAajoute.php+), cela lui affiche une nouvelle
|
||||
ligne d'achat dans le contenu de la demande d'achat, mais rien n'est modifié
|
||||
dans la base tant qu'il ne clique pas sur "Valider".
|
||||
Ainsi l'utilisateur peut commettre des erreurs, puis les corriger (suppression des lignes), sans laisser dans la base des lignes d'achat qui auraient malencontreusement prise en compte par des Acheteurs entrain de travailler...
|
||||
|
||||
|
||||
\subsubsection{Affichage à l'écran}
|
||||
\par Pour afficher une demande d'achat on utilise la fonction \verb+toHTML($editable=0)+. Le paramètre sert
|
||||
uniquement pour différencier deux cas :
|
||||
\begin{itemize}
|
||||
\item{\$editable=0} Dans ce cas on affiche les lignes d'achats contenues dans la demande d'achat.
|
||||
\item{\$editable=1} Dans ce cas précis, on affiche les lignes d'acahts avec une ``checkbox" devant, qui
|
||||
servira pour une sélection (dans le cas où on voudrai pouvoir la supprimer)
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Insertion dans la base de données}
|
||||
\par Pour insérer une demande d'achat, il suffit de faire appel à la fonction \verb+insereBD()+. Celle-ci, insère
|
||||
la demande d'achat, avec toutes ses lignes d'achats dans les tables correspondantes (en faisant attention d'avoir
|
||||
les bons identifiants).
|
||||
|
||||
\subsection{Autres fonctions pour les demandes d'achats}
|
||||
\par Dans le fichier \verb+/includes/libLDachat.inc.php+, il n'y pas que les classes {\em LDachat} et
|
||||
{\em DemandeAchat}, mais aussi d'autres fonctions utiles à la bonne mise en place des demandes d'achats.
|
||||
|
||||
\subsubsection{Les menus déroulants}
|
||||
\par Il y a deux fonctions qui créent des menus déroulants :
|
||||
\begin{description}
|
||||
\item{\verb+menu_deroulant_Produits($ref_int,$designation)+} Celle-ci concatène les deux chaînes de caractères
|
||||
(référence interne et désignation du produit) passées en arguments et en crée une ``option" pour un menu déroulant.
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
function menu_deroulant_Produits
|
||||
($ref_int, $designation) {
|
||||
$ref_des = "".$ref_int." : "
|
||||
.$designation;
|
||||
echo "<option value=\"$ref_int\">
|
||||
$ref_des</option>";
|
||||
}
|
||||
\end{lstlisting}
|
||||
\item{\verb+menu_deroulant_familleProd ($famille)+} Celle-ci genère une ``option", contenant le nom d'une famille
|
||||
de produits, pour un menu déroulant.
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
function menu_deroulant_familleProd
|
||||
($famille) {
|
||||
echo "<option value=\"$famille\">
|
||||
$famille</option>";
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Requêtes}
|
||||
\par Deux fonctions interagissent avec la base de données :
|
||||
\begin{description}
|
||||
\item{\verb+donne_familles()+} Cette fonction retourne un tableau contenant tous les noms de familles de produits.
|
||||
\item{\verb+trouve_produits($ref_famille)+} Cette fonction retourne un tableau contenant la référence interne d'un
|
||||
produit, ainsi que sa désignation, appartenant à la famille de produits passée en argument.
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection{Conversion de PHP vers Javascript}
|
||||
\par Le fichier \verb+/includes/scriptJS_DA.inc.php+ contient un script Javascript qui permet de mettre à jour
|
||||
un menu déroulant en fonction du choix fait dans un autre menu déroulant. Or ces menus déroulants, contienent des
|
||||
informations stockées dans la base de données. C'est pourquoi, on appelle les fonctions \verb+donne_familles()+
|
||||
et \verb+trouve_produits(...)+, dont on convertit le résultat en Javascript via la fonction \verb+convertToJS($var)+.
|
||||
\par Voici le script Javascript qui illustre l'utilisation de cette fonction.
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
function changeFam_Prod(famille, listeProduits) {
|
||||
|
||||
[...]
|
||||
|
||||
make=famille.options[famille.selectedIndex].text;
|
||||
|
||||
liste = new Array;
|
||||
i=0;
|
||||
|
||||
<?php
|
||||
$familles = donne_familles();
|
||||
$famillesJS = convertToJS($familles);
|
||||
?>
|
||||
|
||||
familles = new Array<?php echo $famillesJS; ?>;
|
||||
|
||||
<?php
|
||||
for($fam=0;$fam<sizeof($familles);$fam++) {
|
||||
print "if (make == familles[$fam]) { ";
|
||||
|
||||
// cherche les produits de la famille numero f
|
||||
$prods = trouve_produits($fam+1);
|
||||
$js = convertToJS($prods);
|
||||
|
||||
print "produits = new Array".$js.";";
|
||||
print "for(j=0; j<produits.length; j=j+2) { "
|
||||
."ref_design = produits[j] + \" : \"
|
||||
+ produits[j+1]; "
|
||||
."liste[i++]=new Option(ref_design,
|
||||
produits[j]); "
|
||||
|
||||
[...]
|
||||
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsubsection{Exemple d'application des trois points précédents}
|
||||
\par Cet exemple est tiré du fichier \verb+DAajoute.php+ et montre l'utilisation des fonctions décrites précédement.
|
||||
Le code qui suit genère les deux menus déroulants permettant au magasinier de choisir un produit dans une famille de
|
||||
produit. Lorsque le magasinier choisi une famille de produit, le menu déroulant correspondant aux produits se met
|
||||
automatiquement à jour (sans devoir recharger la page) pour montrer les produits appartenant à la nouvelle famille de produits selectionnée.
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
<select name="famille"
|
||||
onChange="changeFam_Prod(this.form.famille,
|
||||
this.form.produit);" >
|
||||
|
||||
<?php
|
||||
for($i=0;$i<count($familles);$i++) {
|
||||
menu_deroulant_familleProd($familles[$i]);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<select name="produit">
|
||||
<?php
|
||||
$prod = trouve_produits(1);
|
||||
for($i=0;$i<sizeof($prod);$i=$i+2) {
|
||||
menu_deroulant_Produits($prod[$i], $prod[$i+1]);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsection{Classe ListeDA}
|
||||
|
||||
\par Les sources de cette classe sont dans le fichier \verb+/includes/liblisteDA.inc.php+. Cette classe sert à
|
||||
avoir une liste de demandes d'achats, utile pour la page \verb+DAliste.php+, car dans cette page on est amené à
|
||||
afficher toutes les demandes d'achats dont les lignes d'achat ont un certain état (\verb+'CREE'+ par exemple).
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
class ListeDA {
|
||||
function ListeDA($libelle,$id_mag);
|
||||
function ajouteDA(\$da);
|
||||
function supprimeDA(\$Cases_supp);
|
||||
function loadListe();
|
||||
function toHTML();
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsubsection{Le constructeur}
|
||||
\par Le constructeur initialise les champs de l'objet : nombre de demande d'achats contenues dans le tableau,
|
||||
création du tableau, l'identifiant du magasinier et le libellé de l'état des lignes d'achats voulues.
|
||||
|
||||
\subsubsection{Ajout et suppression à différentes échelles}
|
||||
\par Pour ce qui est de l'ajout, fonction \verb+ajouteLDA($da)+, on ajoute la demande d'achat passée en paramètre, au
|
||||
tableau qui contient toutes les demandes d'acahts, sans oublier d'incrémenter le nombre de demandes d'achats contenues.
|
||||
\par Quand à la suppression, fonction \verb+supprimeDA(...)+, on regarde les demandes d'achats à supprimer
|
||||
(tableau passé en argument) et ensuite on fait des suppressions succesives dans la base de données. On commence par
|
||||
supprimer dans la table \verb+Etats_LA+, puis \verb+Ligne_d_achat+ et enfin \verb+Demande_d_achat+.
|
||||
|
||||
\subsubsection{Chargement d'une liste de demande d'achats}
|
||||
\par La fonction \verb+loadListe()+, fait une requête pour trouver toutes les demandes d'achats corespondant au
|
||||
champ libellé de l'objet. Pour chaque résultat trouvé, on crée une nouvelle demande d'achat qu'on insère dans la
|
||||
liste des demandes d'achats. Cette fonction sert à ``initialiser" la liste des demandes d'achats de l'objet.
|
||||
|
||||
\subsubsection{Affichage}
|
||||
\par L'affichage d'un objet se fait par sa fonction \verb+toHTML()+.
|
16
doc/gestionDA.tex
Normal file
|
@ -0,0 +1,16 @@
|
|||
\subsection{Gestion Demandes d'achat}
|
||||
|
||||
\par Il y a deux grandes parties sur cette page :
|
||||
\itemize{begin}
|
||||
\item{Demandes d'achats non traitées} : représentant la liste des demandes d'achats qui n'ont pas encore
|
||||
été traitéen tout ou en partie par un acheteur.
|
||||
\item{Demandes d'achat en cours de traitement} : représentant la liste des demandes d'achats qui ont
|
||||
subit au moins un début de traitement (si au moins une des lignes d'achats à fait l'objet d'une commande).
|
||||
\itemize{end}
|
||||
|
||||
\subsubsection{Demandes d'achats non traitées}
|
||||
\par Dans cette parties, vous pouvez voir ou supprimer une demande d'achat que vous avez faites. Pour la
|
||||
supprimer, il vous suffit de cocher la case à gauche du nom et numéros de votre demande d'achat, puis de
|
||||
cliquer sur le bouton Supprimer situer en bas de la partie des demandes d'achats non traitées.
|
||||
|
||||
\subsubsection{Demandes d'achat en cours de traitement}
|
10
doc/gestionDesStocks.tex
Normal file
|
@ -0,0 +1,10 @@
|
|||
\subsection{Gestion des stocks}
|
||||
\par Cette page sert à gérer la quantité de produit présent dans les stocks, les seuils minimum
|
||||
et maximum correspondant à un produit.
|
||||
\par Pour l'utiliser, il suffit de selectionner la famille de produit à laquelle le produit
|
||||
appartient dans le premier menu déroulant (en haut à gauche), de selectionner dans le menu
|
||||
déroulant juste à droite du premier le produit et enfin de cliquer sur le bouton Modifier.
|
||||
\par Il apparaît alors un petit formulaire avec des champs représentant le stock actuel,
|
||||
le seuil minimum et le seuil maximum. Mettez les valeurs que vous vouliez mettre et appuyez
|
||||
sur le bouton Accepter en dessous du formulaire. Si vous voulez annuler cliquer sur le bouton
|
||||
Annuler en haut à coté du bouton Modifier, et cliquez sur Accepter.
|
22
doc/gestionfournisseur.tex
Normal file
|
@ -0,0 +1,22 @@
|
|||
\subsection{Gestion des Fournisseur}
|
||||
|
||||
\par Sur cette page, deux parties sont distingables :
|
||||
\itemize{begin}
|
||||
\item{Ajout de fournisseurs}
|
||||
\item{Liste des fournisseurs existants}
|
||||
\itemize{end}
|
||||
\subsubsection{Ajout de fournisseurs}
|
||||
\par Cette partie est composée des champs necessaires pour l'enregistrement d'un nouveau
|
||||
fournisseur. À gauche de chaque champ, une étiquette permet d'identifier l'information à
|
||||
laquelle il correspond. Une fois tous les champs rempli, validé l'ajout du fournisseur en
|
||||
cliquant sur le bouton "Ajouter" à gauche du bouton Annuler dans cette même partie.
|
||||
|
||||
\subsubsection{Liste des fournisseurs existants}
|
||||
\par Cette petite partie est composée d'une liste de fournisseur, qui est la liste des
|
||||
fournisseurs connus par le système. Une fois ajouter, un fournisseur n'est pas éternellement
|
||||
enregistré et indélogeable du système, et peut être retirer. Pour en retirer un, cliquez
|
||||
simplement sur la case se trouvant sur la même ligne que la petite description du fournisseur
|
||||
que vous souaitez supprimer de votre liste. Vous pouvez en selectionner plusieurs afin d'en
|
||||
supprimer plusieurs dans une même opération. Une fois que vous êtes sûr de votre selection,
|
||||
cliquez sur le bouton Supprimer juste en bas de la liste des fournisseurs. Les fournisseurs
|
||||
des lignes cochés se trouveront supprimés de votre liste.
|
35
doc/gestionproduit.tex
Normal file
|
@ -0,0 +1,35 @@
|
|||
\subsection{Gestion de Produits}
|
||||
|
||||
\par Sur cette page, il y a 2 grosses parties :
|
||||
\itemize{begin}
|
||||
\item{Ajout de produits}
|
||||
\item{Liste des produits}
|
||||
\itemize{end}
|
||||
|
||||
\subsubsection{Ajout de Produits}
|
||||
\par Cette partie est composée de deux sous-parties :
|
||||
\itemize{begin}
|
||||
\item{Informations sur le produit} : Ici, on selectionne d'abord le fournisseur à l'aide du menu
|
||||
déroulant, puis on entre la désignation du produit, puis le prix en fonction de l'unité, selectionnable
|
||||
par l'intermédiare du menu déroulant.
|
||||
\item{Références} : Dans cette sous-partie, on entre les références du produit à ajouter. Le premier
|
||||
champ correspond à la référence utilisée par le fournisseur. Puis il faut choisir la référence interne
|
||||
au Cas D'Astre. Si la référence existe déjà, cliquer sur le bouton à gauche du texte "Existante :" et
|
||||
choisissez dans le menu déroulant, la référence correspondante. Si la référence n'existe pas, cliquez
|
||||
sur le bouton à gauche du mot "Nouvelle", et entrez la référence interne dans le champ désigné comme
|
||||
étant référence (en dessous du texte "Nouvelle") et entrez la description dans le champ "Description"
|
||||
situé en dessous du dernier.
|
||||
\itemize{end}
|
||||
\par Afin d'ajouter correctement un nouveau produit faites bien attention à bien remplir tous les champs
|
||||
nécessaires des deux sous-parties.
|
||||
|
||||
\subsubsection{Listes des Produits}
|
||||
\par Dans cette partie, une liste est visible composer des produits référencés dans le système
|
||||
comme étant aux catalogue des fournisseurs de la catégorie à laquelle vous êtes associé (Aciers
|
||||
et fontes, chimie, ...). Chaque ligne est constituée d'une case à cocher, le numéro interne de
|
||||
produit, la description du produit, l'identifiant du fournisseur proposant ce produit, et la
|
||||
référence du produit au sein de cette société.
|
||||
\par Cette liste sert essentiellement à pouvoir supprimer la référence d'un produit (s'il n'est
|
||||
plus au catalogue du fournisseur par exemple) du système. Pour le faire, il suffit de cocher la
|
||||
case devant la ligne du/des produit(s) que l'on veut supprimer, et d'appuyer quand on en est sûr
|
||||
sur le bouton Supprimer qui se trouve tout en bas de la liste.
|
180
doc/installation.tex
Normal file
|
@ -0,0 +1,180 @@
|
|||
|
||||
\section{Pré-requis}
|
||||
|
||||
\subsection{Machine serveur}
|
||||
D'Astre.Net nécessite, pour fonctionner :
|
||||
\begin{itemize}
|
||||
\item{un serveur web,}
|
||||
\item{un interpréteur PHP 4.2,}
|
||||
\item{un serveur de base de donnée relationnelle compatible SQL,}
|
||||
\item{une connexion réseau permettant au serveur de communiquer avec
|
||||
les machines clientes.}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Machines clientes}
|
||||
\par Au niveau utilisateur, il est nécessaire d'avoir:
|
||||
\begin{itemize}
|
||||
\item{une connexion réseau permettant de contacter le serveur hébergeant
|
||||
D'Astre.Net}
|
||||
\item{un navigateur web supportant pleinement les normes du W3C:
|
||||
XHTML 1.0 et CSS 2, ainsi que le langage JavaScript normalisé ECMA.}
|
||||
\end{itemize}~
|
||||
|
||||
\par Nous conseillons l'utilisation d'un navigateur tel que
|
||||
Mozilla 1.5\footnote{\url{http://www.frenchmozilla.org}},
|
||||
Mozilla-FireFox 0.7\footnote{\url{http://www.frenchmozilla.org}},
|
||||
Opera 6\footnote{\url{http://www.opera.com}},
|
||||
Safari 1.1\footnote{\url{http://www.apple.com/fr/}} ou versions supérieures.
|
||||
\par Microsoft Internet Explorer 6 ne supportant complètement ni CSS 1,
|
||||
ni CSS 2 nous ne pouvons garantir avec ce logiciel une parfaite navigation
|
||||
sur les pages de D'Astre.Net.
|
||||
|
||||
\section{Déploiement du logiciel}
|
||||
|
||||
\subsection{Téléchargement}
|
||||
|
||||
\par Vous pouvez vous procurer D'Astre.Net via
|
||||
%TODO: (compléter)
|
||||
|
||||
ou le télécharger sur le CVS :
|
||||
%TODO: (compléter)
|
||||
|
||||
|
||||
\subsection{Décompression du package}
|
||||
|
||||
\par Une fois l'archive de D'Astre.Net récupérée,
|
||||
il vous faudra
|
||||
choisir un répertoire d'installation (désigné
|
||||
par "\verb+/le/repertoire/d_installation+"
|
||||
ici), faire en sorte qu'il soit accessible en lecture,
|
||||
et y mettre le contenu de l'archive.
|
||||
|
||||
\par Dans votre terminal, tapez :
|
||||
|
||||
\lstset{language=csh}
|
||||
\begin{lstlisting}
|
||||
$ mkdir /le/repertoire/d_installation
|
||||
$ chmod 755 /le/repertoire/d_installation
|
||||
$ tar -xzvf archive.tar.gz
|
||||
$ mv dastrenet/* /le/repertoire/d_installation
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsection{Mise en place de la base de donnée}
|
||||
|
||||
\subsubsection{Création de la base}
|
||||
|
||||
\par Dans une console, connectez vous en tant qu'administrateur
|
||||
sur la base donnée :
|
||||
\lstset{language=csh}
|
||||
\begin{lstlisting}
|
||||
$ cd /le/repertoire/d_installation
|
||||
$ mysql -u root -p
|
||||
Enter password: (password)
|
||||
[...]
|
||||
|
||||
mysql>
|
||||
\end{lstlisting}
|
||||
|
||||
Ajoutez une nouvelle base nommée (nommée ici "\verb+dastre_base+")
|
||||
à votre base de donnée :
|
||||
\lstset{language=SQL,morekeywords={DATABASE}}
|
||||
\begin{lstlisting}
|
||||
mysql> CREATE DATABASE dastre_base;
|
||||
Query OK, 1 row affected (0.07 sec)
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsubsection{Création de l'utilisateur}
|
||||
|
||||
\par Vous devez ensuite choisir un nouveau nom d'utilisateur
|
||||
(et le mot de passe associé) qui serviront à accéder à la base
|
||||
de D'Astre.Net.
|
||||
On choisira pour la suite \verb+dastre_username+ pour représenter
|
||||
l'identifiant de l'utilisateur et \verb+dastre_userpass+ pour son mot
|
||||
de passe.
|
||||
|
||||
\par Dans le shell de votre base de données (ouvert en tant qu'administrateur), tapez :
|
||||
\lstset{language=SQL,%
|
||||
morekeywords={DATABASE,DELETE,FLUSH,GRANT,UPDATE,TO,IDENTIFIED}%
|
||||
}
|
||||
\begin{lstlisting}
|
||||
mysql> GRANT SELECT,INSERT,UPDATE,
|
||||
-> DELETE,CREATE,ALTER,DROP
|
||||
-> ON dastre_base.*
|
||||
-> TO dastre_username@'serveur.domaine'
|
||||
-> IDENTIFIED BY 'userpass';
|
||||
Query OK, 0 rows affected (1.16 sec)
|
||||
|
||||
mysql> FLUSH privileges;
|
||||
Query OK, 0 rows affected (0.36)
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsection{Configuration du serveur web}
|
||||
|
||||
\par Ensuite, il convient de configurer le serveur
|
||||
web afin qu'il permette l'accès au logiciel sur le serveur \verb+serveur.domaine+,
|
||||
via un nom DNS simple, par exemple \verb+dastre_url.serveur.domaine+.
|
||||
Il faut pour cela, ajouter (ou modifier) un \verb+VirtualHost+ dans
|
||||
la configuration du serveur web.
|
||||
|
||||
\par Par exemple, pour un serveur Apache, on ajoutera les lignes
|
||||
suivantes au fichier \verb+/etc/apache/httpd.conf+ (ou \verb+/etc/httpd/httpd.conf+).
|
||||
\lstset{language=HTTPD}
|
||||
\begin{lstlisting}
|
||||
<VirtualHost dastre_url.serveur.domaine>
|
||||
DocumentRoot /le/repertoire/d_installation
|
||||
ServerName dastre_url.serveur.domaine
|
||||
</VirtualHost>
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsection{Configuration du logiciel}
|
||||
|
||||
Dans l'arborescence de D'Astre.Net, éditer le fichier
|
||||
\verb+/config/db.conf.php+ qui fixe la configuration
|
||||
du logiciel, et ajoutez ou remplacer-y les valeurs suivantes :
|
||||
|
||||
\begin{itemize}
|
||||
\item{ le nom du serveur \verb+SQL_SERVER+, }
|
||||
\item{ le nom de la base de données \verb+SQL_BASE+,}
|
||||
\item{ le nom de l'utilisateur \verb+SQL_USER+, }
|
||||
\item{ le mot de passe de l'utilisateur \verb+SQL_PASSWD+. }
|
||||
\end{itemize}
|
||||
\par \lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
define(SQL_SERVER,"serveur.domaine");
|
||||
define(SQL_BASE,"dastre_base");
|
||||
define(SQL_USER,"dastre_username");
|
||||
define(SQL_PASSWD,"dastre_userpass");
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Création des tables de la base}
|
||||
|
||||
\par Une fois le logiciel installé, et les divers serveurs correctement
|
||||
configurés, il convient de créer les tables utiles à D'Astre.Net dans
|
||||
la base \verb+dastre_base+.
|
||||
Pour cela, ouvrez un navigateur web, et connectez-vous sur :
|
||||
\url{http://dastre\_url.serveur.domaine/sql/install.php}.
|
||||
|
||||
\par Si toutes les requêtes sont executées avec succès, il ne reste plus
|
||||
qu'a changer les droits d'accès au répertoire \verb+/sql+ de l'arborescence
|
||||
de D'Astre.Net afin d'éviter qu'un utilisateur réinitialise la base.
|
||||
\lstset{language=csh}
|
||||
\begin{lstlisting}
|
||||
$ cd /le/repertoire/d_installation
|
||||
$ chmod 400 sql
|
||||
\end{lstlisting}
|
||||
|
||||
\par Normalement, à ce stade, D'Astre.Net est prêt à être utilisé.
|
||||
|
||||
\subsection{En cas de problèmes}
|
||||
|
||||
Si jamais il s'est produit une erreur durant de la création
|
||||
des tables, vous pouvez à tout moment effacer ces dernières
|
||||
et recommencer en suivant la démarche suivante : ouvrez un
|
||||
navigateur web, et connectez-vous sur :
|
||||
\url{http://dastre\_url.serveur.domaine/sql/drop.php}.
|
||||
|
||||
|
62
doc/lib_generalite.tex
Normal file
|
@ -0,0 +1,62 @@
|
|||
|
||||
\section{Généralité sur la construction d'une page de D'Astre.Net}
|
||||
\subsection{Plusieurs étapes...}
|
||||
|
||||
\par Toutes les pages de D'Astre.Net sont créées dynamiquement.
|
||||
Leur construction se déroule selon les étapes suivantes :
|
||||
\begin{itemize}
|
||||
\item{initialisation de l'environnement,}
|
||||
\item{chargement des librairies (définitions des classes et fonctions), }
|
||||
\item{creation d'un objet \verb+Page+,}
|
||||
\item{remplissage de l'objet \verb+Page+,}
|
||||
\item{fermeture de l'objet \verb+Page+,}
|
||||
\item{affichage de la page complete.}
|
||||
\end{itemize}
|
||||
|
||||
\newpage
|
||||
\subsection{Plusieurs morceaux...}
|
||||
\par Le développement était axé sur la modularité, cela nous facilitant l'intégration
|
||||
de nouveaux élements à un module, ou en modifier le fonctionnement sans perturber le reste
|
||||
du projet.
|
||||
|
||||
\par Le projet est structuré de la façon suivante :
|
||||
\begin{verbatim}
|
||||
CasDAstre/
|
||||
|-- README // Instructions pour la compilation du projet
|
||||
|-- Makefile // Règles de compilation
|
||||
|-- images/ // Images et thèmes utilisés par le programme
|
||||
| `-- *.tex // Rapport en LaTeX
|
||||
|-- includes/
|
||||
| `-- *.inc.php // Classe utilisées par le programme
|
||||
|-- config/
|
||||
| `-- *.conf.php // Configuration de Janat
|
||||
|-- doc/
|
||||
| |-- *.tex // Rapport en LaTeX
|
||||
| `-- Makefile // Regles de compilation
|
||||
|-- styles/
|
||||
| `-- *.css // Feuilles de styles
|
||||
|-- sql/ // Scripts SQL
|
||||
| |-- MCDTrac.ger // Modèle Conceptuel de Données
|
||||
| |-- db-install.php // Script qui execute les requêtes SQL
|
||||
| |-- db-fill*.sql // Script qui remplit les tables
|
||||
| `-- db-create*.sql // Script qui créer les tables
|
||||
`-- *.php // Sources du programme
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{La nomenclature pour les fichiers}
|
||||
|
||||
\subsubsection{Les scripts}
|
||||
|
||||
Les scripts appelés directement dans le navigateur se trouvent
|
||||
à la racine du logiciel.
|
||||
|
||||
\subsubsection{Les classes et bibliothèques}
|
||||
|
||||
\par Les classes se trouvent dans le répertoire includes/ du logiciel.
|
||||
Une classe "\verb+maclasse+" donnée se retrouvera dans le fichier
|
||||
\verb+libmaclasse.inc.php"*+".
|
||||
\par Les bibliotheques de fonctions utiles pour un script \verb+monscript.php+,
|
||||
se retrouveront soit dans le fichier de la classe principale associée au script,
|
||||
soit dans un fichier \verb+libmonscript.inc.php+.
|
||||
|
23
doc/libfournisseur.tex
Normal file
|
@ -0,0 +1,23 @@
|
|||
\section{Fournisseur}
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
class Fournisseur{
|
||||
Fournisseur($id,$nom,$adresse,
|
||||
$famille, $tel,
|
||||
$fax, $siret, $siren);
|
||||
|
||||
toHTML();
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Construteur}
|
||||
Le construteur a pour rôle d'initialiser les variables qui sont récuperées en paramêtre.
|
||||
|
||||
\subsection{Affichage de la page}
|
||||
\par La méthode \verb+toHTML()+ affiche tous les renseignements d'un fournisseur.
|
||||
|
||||
|
||||
|
||||
|
||||
|
40
doc/liblistfournisseur.tex
Normal file
|
@ -0,0 +1,40 @@
|
|||
\section{Liste des fournisseurs}
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
class ListeFournisseurs {
|
||||
|
||||
function ListeFournisseurs($acheteurID);
|
||||
function loadList();
|
||||
function setFamilleFromAcheteur($acheteurID);
|
||||
function ajouteFournisseur($id,$nom, $adresse,
|
||||
$famille, $tel,
|
||||
$fax, $siret,
|
||||
$siren);
|
||||
function supprimeFournisseur($ids);
|
||||
function loadList();
|
||||
function toHTML($editable=0);
|
||||
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\par Cette classe contient toutes les fonctions utiles pour la gestion d'une liste de fournisseurs.
|
||||
\subsection{Constructeur}
|
||||
\par Le constructeur s'occupe de paramétrer la classe afin de ne charger que les fournisseurs connus par l'Acheteur \verb+$acheteurID+.
|
||||
|
||||
\par
|
||||
\subsection{Lister tous les fournisseurs}
|
||||
\par Afin de lister les fournisseurs, nous avons utilsé une requête pour récuperer tous les informations sur un fournisseur. Ainsi la fonction \verb+function loadList()+ permet de charger une liste à partir des éléments de la base de données. Cette fonction remplit le tableau de tous les fournisseurs.
|
||||
|
||||
\subsection{Ajout d'un fournisseur}
|
||||
\par Pour ajouter un fournisseur dans la base de données, nous avons utilisé l'instruction \verb+INSERT+. Par ailleurs après chaque ajout la fonction \verb+loadList()+ est nécessaire pour faire une mise à jour sur la liste des fournisseurs
|
||||
|
||||
\subsection{Suppression d'un fournisseur}
|
||||
\par Pour la suppression d'un fournisseur, nous avons utilisé la même procédure que celle de l'ajout, c'est à dire se connecter à la base de données, effectuer une requête et recharger la liste. Cependant pour la suppression d'un fournisseur nous avons utilisé l'instruction \verb+DELETE+.
|
||||
|
||||
\subsection{Affichage de la page}
|
||||
\par L'affichage de la page se fait à l'aide la fonction \verb+toHTML()+.
|
||||
En fonction de la valeur du paramêtre booléen \verb+$editable+, la méthode
|
||||
affiche soit tous les fournisseurs sous la formes d'un tableau
|
||||
(quand \verb+$editable=1+), soit sous la forme d'une liste de sélection (quand \verb+$editable=0+).
|
||||
|
73
doc/libpage.tex
Normal file
|
@ -0,0 +1,73 @@
|
|||
\section{Page}
|
||||
|
||||
Il s'agit de l'objet qui gère tous les composants de la page (en-têtes, scripts, contenu,pied-de-page) et qui gère l'autentification et qui unifie l'apparence des pages.
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
class Page{
|
||||
function logCheck($authorizedLevel=0);
|
||||
function setTitle($title);
|
||||
function startHeader();
|
||||
function endHeader(){;
|
||||
function startScript();
|
||||
function endScript();
|
||||
function startContent();
|
||||
function endContent();
|
||||
function toHTML();
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Le constructeur}
|
||||
\par Le construteur de cette classe à plusieurs rôles:
|
||||
\begin{itemize}
|
||||
\item{ il initialise les variables}
|
||||
\item{ il lance une session. En effet, chaque personne qui se connecte sur le site a une session différente.}
|
||||
\item{ il vérifie si le login est correct. }
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Les vérifications des droits d'accès}
|
||||
\par Il est nécessaire, sur chaque page, de vérifier l'identité de l'utilisateur, et
|
||||
si nécessaire de le forcer a s'identifier correctement.
|
||||
\par Pour ce faire, il faut appeller la méthode \verb+logCheck($authorizedlevel)+, où \verb+$authorizedlevel+ est le masque qui sera appliqué (fonction AND) bit-à-bit aux droits de l'utilisateur pour valider ou non l'accès à la page.
|
||||
|
||||
\par En général, pour utiliser \verb+logCheck+, il faut :
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
$page->logCheck();
|
||||
|
||||
\end{lstlisting}
|
||||
afin que l'utilisateur qui n'était pas loggué revienne automatiquement sur la page courrante après s'être identifié.
|
||||
|
||||
\subsection{L'affichage}
|
||||
\par La fonction permettant l'affichage des pages est \verb+toHTML()+
|
||||
celle-ci assemble le contenu dynamique avec les fichiers suivants, afin de créer
|
||||
une page de D'Astre.Net:
|
||||
\begin{itemize}
|
||||
\item{ \verb+header.inc.php+ :celui le chemin d'acces au
|
||||
fonction ,et insert les bibiotheque nécessaire pour le fontionnement
|
||||
du site }
|
||||
\item{ \verb+bodystart.inc.php+ :ce fichier comprend toutes les balises du début de script html, par exemple : <body><div>...}
|
||||
\item{ \verb+footer.inc.php+ :Le pied de page.}
|
||||
\item{ \verb+bodyend.inc.php+ : celui-ci contient du code PHP et HTML gérant la fermeture de l'objet page, ajoutant un pied de page et affichant la page.}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Les buffers}
|
||||
\par Pour que l'affichage des pages puisse se faire correctement d'un seul coup dans \verb+toHTML+, il est nécessaire de mettre en tampon toutes les données émises vers la sortie standard. Cela permet (entre autres) l'ajout d'en-têtes HTML à la page alors que le contenu de la page a déja été émis...
|
||||
Les buffers sont utilisés a tous les niveaux : en-têtes, scripts JavaScript, contenu principal.
|
||||
|
||||
Le contenu du buffer devra {\em impérativement} se trouver entre l'appel des méthodes \verb+startXXX()+ et \verb+endXXX()+.
|
||||
|
||||
Par exemple, pour le contenu de la page :
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
$page->startContent();
|
||||
?>
|
||||
|
||||
voila le code PHP-HTML qui est mis en tampon
|
||||
pour apparaitre a un endroit precis de la page
|
||||
apres recomposition par toHTML.
|
||||
<?php
|
||||
$page->endContent();
|
||||
\end{lstlisting}
|
99
doc/libsecuremenu.tex
Normal file
|
@ -0,0 +1,99 @@
|
|||
|
||||
\section{SecureMenu }
|
||||
|
||||
|
||||
\par Cette classe permet la création d'un menu dont les
|
||||
élements ({\em items}) ne seront affichés qu'aux utilisateurs
|
||||
ayant les droits d'accès suffisants pour y accéder.
|
||||
|
||||
\subsection{Création d'un menu}
|
||||
|
||||
Pour créer un menu, il suffit de créer un objet en appelant \verb+SecureMenu($level=0)+, où \verb+$level+ est le niveau d'accès nécessaire pour les futurs élements du menus si les droits d'accès ne leurs sont pas explicitement fixés.
|
||||
Si \verb+$level+ n'est pas spécifié, alors les élements seront accessibles à tous par défaut.
|
||||
|
||||
\par Pour créer un menu il suffit donc de :
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
$exempleMenu1=new SecureMenu();
|
||||
$exempleMenu2=new SecureMenu();
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Ajouter des élements}
|
||||
\par Pour l'ajout d'un élements, on fait appel à la fonction
|
||||
\verb+addItem($identifiant,$titre,$page)+, où \verb+$identifiant+
|
||||
est l'identifiant interne de l'élément du menu, \verb+$titre+ est
|
||||
le titre de l'élément, tel qu'il apparaîtra aux utilisateurs du menu,
|
||||
\verb+$page+ est la page cible affichée lors d'un clic sur l'élément
|
||||
du menu.
|
||||
|
||||
\par Par exemple:
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
$exempleMenu1->addItem("id_interne_sommaire",
|
||||
"Sommaire",
|
||||
"index.php");
|
||||
$exempleMenu1->addItem("id_interne2",
|
||||
"Definitions"
|
||||
"lexique.php");
|
||||
\end{lstlisting}
|
||||
aura pour effet d'ajouter {\em "Sommaire"}\/ et {\em "Definitions"}\/ au menu, qui pointent
|
||||
respectivement sur les pages "\verb+index.php+" et "\verb+lexique.php+"
|
||||
|
||||
\subsection{Gestion des droits}
|
||||
\par Par définition, une application utilisable par des utilisateurs n'ayant
|
||||
pas le droit aux mêmes actions, doit explicitement {\em restreindre} certaines
|
||||
zones à certaines personnes.
|
||||
\par Pour ce faire, il est nécessaire d'indiquer quels "les droits d'accès"
|
||||
autorisés aux zones restreintes, et indiquer a ces zones le droit d'accès de
|
||||
l'utilisateur actuel.
|
||||
|
||||
\subsubsection{Fixer les droits sur un élément}
|
||||
|
||||
\par Pour fixer un droit d'accès (qui régira son affichage en fonction de l'utilisateur)
|
||||
à un élement du menu, il suffit d'utiliser la méthode \verb+setItemLevel($identifiant,$level)+. Dans le prototype de cette fonction, \verb+$identifiant+ indique l'identifiant de
|
||||
l'élément du menu (comme vu dans \verb+addItem(...)+) et \verb+$level+ est le "droit
|
||||
d'accès minimum autorisé".
|
||||
|
||||
|
||||
\subsubsection{Indiquer au menu les droits actuels}
|
||||
\par Afin que le menu soit utilisable, il est nécessaire d'indiquer au menu les
|
||||
droits de l'utilisateur courant par la méthode \verb+setCurrentLevel($level)+, où
|
||||
\verb+$level+ est le "droit d'accès" de l'utilisateur courrant.
|
||||
|
||||
Par exemple :
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
$menu=new SecureMenu(0);
|
||||
$menu->addItem("sommaire ",
|
||||
"Sommaire",
|
||||
"index.php");
|
||||
$menu->setItemLevel("sommaire",
|
||||
0);
|
||||
|
||||
$menu->addItem("page_invisible",
|
||||
"Acces Membres"
|
||||
"membres.php");
|
||||
$menu->setItemLevel("page_invisible",
|
||||
1);
|
||||
|
||||
$menu->setCurrentLevel(0);
|
||||
\end{lstlisting}
|
||||
aura pour effet de créer un menu dont seul l'élément {\em "Sommaire"}
|
||||
sera affiché, car le droit d'accès de l'utilisateur indiqué est
|
||||
insuffisant pour afficher l'entrée {\em "Acces Membres"} du menu.
|
||||
|
||||
|
||||
\subsection{Utiliser le menu}
|
||||
|
||||
\par Une fois que les éléments ont été ajoutés et les droits d'accès fixés, le menu
|
||||
est prêt a être utilisé : il suffit d'appeller la méthode \verb+toHTML()+ qui génère
|
||||
et renvoie le code HTML correspondant au menu à l'endroit où la fonction est appelée.
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
$menu=new SecureMenu();
|
||||
[...]
|
||||
print $menu->toHTML();
|
||||
\end{lstlisting}
|
||||
|
||||
|
64
doc/libuserinfo.tex
Normal file
|
@ -0,0 +1,64 @@
|
|||
|
||||
\section{UserInfo}
|
||||
|
||||
\par Cette classe permet de faire une distinction pour les differents utilisateurs.
|
||||
Il est construit dans le fichier \verb+logcheck.php+ afin de permettre aux autres
|
||||
pages de récupérer les informations sur l'utilisateur.
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
|
||||
function UserInfo($login,
|
||||
$accesslevel,
|
||||
$category,
|
||||
$catid);
|
||||
function getFirstName();
|
||||
function getSecondName();
|
||||
function getID();
|
||||
function getAccessLevel();
|
||||
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\par {\'E}tant donné que les informations sur les utilisateurs
|
||||
peuvent provenir de deux tables différentes, il eut été pénible
|
||||
d'écrire systématiquement dans le code la récupération des bonnes
|
||||
données. La classe UserInfo sert aussi à éviter cela, et a pour effet
|
||||
d'alléger le code.
|
||||
|
||||
\lstset{language=PHP}
|
||||
\begin{lstlisting}
|
||||
[...]
|
||||
$switch($ category){
|
||||
case LIBUSERINFO_CAT_ACHETEUR:
|
||||
$query="SELECT * FROM Acheteur "
|
||||
."WHERE ID_ACHETEUR='$catid' "
|
||||
."ORDER BY ID_ACHETEUR DESC LIMIT 0,1";
|
||||
break;
|
||||
|
||||
case LIBUSERINFO_CAT_MAGASINIER:
|
||||
$query="SELECT * FROM Magasinier "
|
||||
."WHERE ID_MAGASINIER='$catid' "
|
||||
."ORDER BY ID_MAGASINIER DESC LIMIT 0,1";
|
||||
break;
|
||||
default: break;
|
||||
|
||||
[...];
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsection{Autres informations}
|
||||
Nous avons eu besoin de pouvoir recuperer les informations sur l'utilisateur de CasDAstres. C'est pourquoi certaines fonctions ont ete creer.
|
||||
\subsubsection{Recupere le nom}
|
||||
\verb+getFirstName+ Renseignement sur le nom de l'utisateur. En effet lors de la connection d'una acheteur ou d'un magazinier, le nom de la personne qui se connecte est récuperer a l'aide de cette fonction.
|
||||
|
||||
|
||||
\subsubsection{Recupere le Prenom}
|
||||
\verb+getSecondName+ Renseignement sur le prenom de l'utisateur.
|
||||
|
||||
\subsubsection{Recupere l'identifiant}
|
||||
\verb+getID+ Renseignement sur l'identifiant de l'utisateur. L'identifiant est une chaine de caractere.
|
||||
|
||||
|
||||
|
38
doc/magasinier.tex
Normal file
|
@ -0,0 +1,38 @@
|
|||
\section{Magasinier}
|
||||
\par Lors de la connexion du magasinier, deux parties apparaissent:
|
||||
\begin{itemize}
|
||||
\item{La page centrale qui explique toutes les actions qu'il peut faire.}
|
||||
\item{Le sommaire lui permettant de passer d'une page à une autre.}
|
||||
\end {itemize}
|
||||
|
||||
\texima{magazinier}{12cm}{9cm}
|
||||
|
||||
|
||||
\par Le magazinier a la possibilité de:
|
||||
\begin{itemize}
|
||||
\item{Créer une demande d'achat}
|
||||
\item{Gerer les demande D'achat}
|
||||
\item{Gerer les stoks}
|
||||
\end{itemize}
|
||||
Il peut a tous moments revenir a la page principale en cliquant sur le lien sommaire ou peut également se déconnecter grace au lien 'Déconnexion'.
|
||||
|
||||
\subsection{Création d'une demande d'achat}
|
||||
\subsubsection{Saisir une demande d'achat}
|
||||
\par Apres avoir cliquer sur le lien Creation, l'utilisateur voit apparaitre cette page.
|
||||
\texima{creationDA}{12cm}{9cm}
|
||||
|
||||
\par Pour la création d'une demande d'achat, il s'uffit de saisir la plage d'horaire de livraison ainsi que la date à laquelle on souhaiterai être livré.
|
||||
\par Evidement l'utilisateur doit sélection le produit en fonction de sa demande. Par ailleurs, pour chaque produit l'utilisateur doit lui affecter une quantité. Apres chaque ajout, une ligne est ajouté dans le tableaux qui suit. Ainsi, il est possible de supprimer un produit déjà ajouter à l'aide du bouton Supprimer.
|
||||
|
||||
\subsubsection{Valider sa demande}
|
||||
Apres avoir appuyer sur la touche 'Valider', apparait alors l'historique des demandes d'achat qui sont soit en cours de traitements soit non traités. Le magazinier peut ainsi supprimer les demandes qui ne sont pas encore traités.
|
||||
\par Mais peut-on visualiser cette page sans effectuer une création d'une demande d'achat.?Oui, en effet, en cliquant sur le lien 'Gestion Demande d'achat'.
|
||||
|
||||
|
||||
\subsection{Gestion d'une demande d'achat}
|
||||
\par La gestion des demandes d'achat corespond a la page après avoir valider une demadne d'achar.Comme expliquer plus haut , il est possible de supprimer les demandes d'achat non traités. cette page affiche tous les produit concernant chaque demande achat.
|
||||
|
||||
|
||||
\subsection{Gestion des stocks}
|
||||
|
||||
|
BIN
doc/magazinier.png
Normal file
After Width: | Height: | Size: 160 KiB |
157
doc/rapport.tex
Normal file
|
@ -0,0 +1,157 @@
|
|||
\documentclass[12pt,a4paper]{report}
|
||||
\usepackage{a4wide}
|
||||
\usepackage{geometry}
|
||||
\usepackage{typehtml}
|
||||
\usepackage[latin1]{inputenc}
|
||||
\usepackage{listings}
|
||||
\usepackage{color}
|
||||
|
||||
%% définition des couleurs
|
||||
\definecolor{hellgelb}{rgb}{1,1,0.8}
|
||||
|
||||
%% définition des langages
|
||||
\lstdefinelanguage{PHP}{
|
||||
morekeywords={and,array,break,case,continue,default,define,do,%
|
||||
echo,else,elseif,exit,extends,for,global,if,include,includeonce,%
|
||||
or,print,require,requireonce,return,static,switch,then,var,while,%
|
||||
xor,foreach,as,class,function,new,extends},
|
||||
sensitive,%
|
||||
morecomment=[l]\#,%
|
||||
morecomment=[l]//,%
|
||||
morecomment=[s]{/}{/},%
|
||||
morestring=[b],%
|
||||
morestring=[b]%
|
||||
}[keywords,comments,strings]
|
||||
|
||||
\lstdefinelanguage{HTTPD}{
|
||||
morekeywords={VirtualHost,DocumentRoot,ServerName},%
|
||||
sensitive%
|
||||
}[keywords,comments,strings]
|
||||
|
||||
|
||||
|
||||
\lstset{basicstyle=\small,%
|
||||
xleftmargin=2cm,%
|
||||
xrightmargin=2cm,%
|
||||
framextopmargin=.2cm,%
|
||||
framexbottommargin=.2cm,%
|
||||
framexleftmargin=.2cm,%
|
||||
framexrightmargin=.2cm,%
|
||||
backgroundcolor=\color{hellgelb},%
|
||||
frame=trbl
|
||||
}
|
||||
|
||||
\lstdefinestyle{numbers}{numbers=left,stepnumber=10,numberstyle=\tiny,numbersep=10pt}
|
||||
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{fancyheadings}
|
||||
\usepackage{color}
|
||||
\usepackage{float}
|
||||
|
||||
\usepackage[cyr]{aeguill} % Police vectorielle TrueType, guillemets français
|
||||
%\DeclareGraphicsExtensions{.jpg,.mps,.pdf,.png} % Formats d'images
|
||||
|
||||
|
||||
\pagestyle{fancy}
|
||||
\lhead[\sc{D'Astre.Net : gestion des achats}]{\sc{D'Astre.Net : gestion des achats}}
|
||||
\rhead[\it{Projet de Génie Logiciel.}]{\it{Projet de Génie Logiciel.}}
|
||||
|
||||
%---------------------------------------------------------------
|
||||
\newif\ifpdf
|
||||
\ifx\pdfoutput\undefined
|
||||
\pdffalse
|
||||
\else
|
||||
\pdfoutput=1
|
||||
\pdftrue
|
||||
\fi
|
||||
|
||||
\ifpdf
|
||||
% ! The next three lines should be one !
|
||||
\usepackage[pdftex,colorlinks=true,urlcolor=blue,pdfstartview=FitH]{hyperref}
|
||||
\pdfcompresslevel=9
|
||||
\hypersetup{
|
||||
pdftitle={RAPPORT DU PROJET DE POO ET BD},
|
||||
pdfauthor={ROLLAND Glenn, GRIN Thomas, ZANA Rivka},
|
||||
pdfsubject={JANAT},
|
||||
pdfkeywords={PROJET}
|
||||
pdfcreator={GleNuX}
|
||||
}
|
||||
\usepackage[pdftex]{thumbpdf} % Vignettes
|
||||
%\usepackage[pdftex, %
|
||||
% bookmarks = true,% % Signets
|
||||
% bookmarksnumbered = true,% % Signets numérotés
|
||||
% pdfpagemode = None,% % Signets/vignettes fermé à l'ouverture
|
||||
% pdfstartview = FitH,% % La page prend toute la largeur
|
||||
% pdfpagelayout = SinglePage,% Vue par page
|
||||
% colorlinks = true,% % Liens en couleur
|
||||
% urlcolor = magenta,% % Couleur des liens externes
|
||||
% pdfborder = {0 0 0}% % Style de bordure : ici, pas de bordure
|
||||
% ]{hyperref} % Utilisation de HyperTeX
|
||||
|
||||
\usepackage[pdftex]{graphicx}
|
||||
% \usepackage[pdftex]{thumbpdf}
|
||||
\else
|
||||
\usepackage[dvips]{epsfig}
|
||||
\usepackage{hyperref}
|
||||
\usepackage[T1]{fontenc}
|
||||
\fi
|
||||
|
||||
|
||||
%---------------------------------------------------------------
|
||||
\begin{document}
|
||||
%---------------------------------------------------------------
|
||||
|
||||
\newcommand{\texima}[3]{
|
||||
\begin{figure}[H]
|
||||
\begin{center}
|
||||
\ifpdf
|
||||
% Dans le cas du PDF
|
||||
% utiliser une image .png, .jpeg ou .jpg
|
||||
\includegraphics[width=#2,height=#3]{#1.png}
|
||||
\else
|
||||
% et dans le cas du DVI / PS
|
||||
% utiliser du .ps ou du .eps
|
||||
\epsfig{figure=#1.eps,width=#2,height=#3}
|
||||
\fi
|
||||
\end{center}
|
||||
\end{figure}
|
||||
}
|
||||
\newcommand{\texillustr}[3]{
|
||||
\ifpdf
|
||||
% Dans le cas du PDF
|
||||
% utiliser une image .png, .jpeg ou .jpg
|
||||
\includegraphics[width=#2,height=#3]{#1.png}
|
||||
\else
|
||||
% et dans le cas du DVI / PS
|
||||
% utiliser du .ps ou du .eps
|
||||
\epsfig{figure=#1.eps,width=#2,height=#3}
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
\input{couv.tex} % Page de garde
|
||||
\tableofcontents % Sommaire
|
||||
\clearpage
|
||||
\chapter{Introduction}
|
||||
\chapter{Installation}
|
||||
\input{installation.tex}
|
||||
%% Documentation du code
|
||||
\chapter{Documentation du code}
|
||||
\input{lib_generalite.tex}
|
||||
\input{bd.tex}
|
||||
\input{libpage.tex}
|
||||
\input{libfournisseur.tex}
|
||||
\input{liblistfournisseur.tex}
|
||||
\input{demandeAchat.tex}
|
||||
%\input{libLDachat.tex}
|
||||
\input{libsecuremenu.tex}
|
||||
\input{libuserinfo.tex}
|
||||
\chapter{Documentation pour l'utilisateur}
|
||||
|
||||
\input{udoc_sommaire.tex}
|
||||
\input{magasinier.tex}
|
||||
\input{acheteur.tex}
|
||||
|
||||
\chapter{Conclusion}
|
||||
\input {conclusion.tex}
|
||||
\end{document}
|
BIN
doc/sommaire.png
Normal file
After Width: | Height: | Size: 120 KiB |
24
doc/udoc_sommaire.tex
Normal file
|
@ -0,0 +1,24 @@
|
|||
\section{Login}
|
||||
|
||||
\par Pour utiliser D'Astre.Net, l'utilisateur doit se connecter sur \url{dastre_url.serveur.domaine}.
|
||||
|
||||
\par La premiere page qui apparaît invite l'utilisateur à s'identifier.
|
||||
L'utilisateur doit saisir son nom ainsi que son mot de passe, puis taper sur
|
||||
la touche "Entrée" ou cliquer sur "\verb+Envoyer+".
|
||||
|
||||
|
||||
\texima{sommaire}{12cm}{9cm}
|
||||
|
||||
\section{Le Menu}
|
||||
|
||||
\par Sur la gauche de l'écran est présent un menu spécifique à l'utilisateur.
|
||||
Ce menu est composé de plusieurs rubriques (Informations, Actions, etc...), le
|
||||
contenu de chaque rubrique étant indiqué sous le nom de la rubrique.\\
|
||||
|
||||
\par La rubrique "Information" indique l'utilisateur dont la session est ouverte,
|
||||
et permet à celui-ci de quitter sa session à la fin de son travail.
|
||||
|
||||
\par La page "Sommaire ramène l'utilisateur à la page d'entrée de D'Astre.Net. \\
|
||||
|
||||
\par Les autres rubriques correspondent à des pages spécifiques de l'application,
|
||||
et leur accès est limité en fonction des droits d'accès de l'utilisateur.
|
118
fournisseurs.php
Normal file
|
@ -0,0 +1,118 @@
|
|||
<?php
|
||||
|
||||
include("includes.inc.php");
|
||||
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->startHeader();
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="/styles/fournisseurs.css" />
|
||||
|
||||
<?php
|
||||
$page->endHeader();
|
||||
|
||||
$page->logCheck();
|
||||
$page->startContent();
|
||||
|
||||
$listeFournisseurs=new ListeFournisseurs($_SESSION["userInfo"]->getID());
|
||||
?>
|
||||
|
||||
<div id="contenu">
|
||||
<h1>Gestion des fournisseurs : <i>
|
||||
<?php print $listeFournisseurs->_familleName; ?></i>
|
||||
</h1>
|
||||
|
||||
<?php
|
||||
|
||||
switch($_POST["action"]) {
|
||||
case "Ajouter":
|
||||
$listeFournisseurs->ajouteFournisseur(
|
||||
$_POST["id_nFour"],
|
||||
$_POST["nom_nFour"],
|
||||
$_POST["adr_nFour"],
|
||||
$listeFournisseurs->_familleId,
|
||||
$_POST["tel_nFour"],
|
||||
$_POST["fax_nFour"],
|
||||
$_POST["siret_nFour"],
|
||||
$_POST["siren_nFour"]
|
||||
);
|
||||
/* do nothing */
|
||||
break;
|
||||
case "Supprimer":
|
||||
$listeFournisseurs->supprimeFournisseur($_POST["box_fourn"]);
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<fieldset>
|
||||
<legend>Ajout de fournisseurs</legend>
|
||||
<form name="form"
|
||||
method="post"
|
||||
action="fournisseurs.php"
|
||||
enctype="application/x-www-form-urlencoded"
|
||||
>
|
||||
<p>
|
||||
Identifiant pour le fournisseur :
|
||||
<input type="text" name="id_nFour" />
|
||||
</p>
|
||||
<p>
|
||||
Nom du fournisseur:
|
||||
<input type="text" name="nom_nFour" />
|
||||
</p>
|
||||
<p>
|
||||
Adresse du fournisseur:
|
||||
<input type="text" name="adr_nFour" />
|
||||
</p>
|
||||
<p>
|
||||
Famille de produits:
|
||||
<?php
|
||||
print $listeFournisseurs->_familleName
|
||||
. "(" . $listeFournisseurs->_familleId . ")";
|
||||
?>
|
||||
</p>
|
||||
Numéro de telephone:
|
||||
<input type="text" name="tel_nFour">
|
||||
</p>
|
||||
<p>
|
||||
Numéro de fax:
|
||||
<input type="text" name="fax_nFour">
|
||||
</p>
|
||||
<p>
|
||||
Numéro de SIRET:
|
||||
<input type="text" name="siret_nFour">
|
||||
</p>
|
||||
<p>
|
||||
Numéro de SIREN:
|
||||
<input type="text" name="siren_nFour">
|
||||
</p>
|
||||
<input type="reset" name="action" value="Annuler" />
|
||||
<input type="submit" name="action" value="Ajouter" />
|
||||
</form>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend align="top">Liste des fournisseurs existants</legend>
|
||||
<form name="form"
|
||||
method="post"
|
||||
action="fournisseurs.php"
|
||||
enctype="application/x-www-form-urlencoded" >
|
||||
|
||||
<?php
|
||||
print $listeFournisseurs->toHTML(1);
|
||||
?>
|
||||
</form>
|
||||
</fieldset>
|
||||
<hr class="spacer" /> <!-- pour avoir toute la largeur !-->
|
||||
</div> <!--end contenu !-->
|
||||
<?php
|
||||
/* $print listeFournisseurs(); */
|
||||
$page->endContent();
|
||||
$_SESSION["pageProvenance"]="fournisseur.php";
|
||||
|
||||
print $page->toHTML();
|
||||
?>
|
0
icones/README
Normal file
BIN
icones/dastrenet.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
icones/users.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
images/background.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
31
includes.inc.php
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/*
|
||||
* Initialisation des chemins d'acces aux librairies
|
||||
* de fonctions
|
||||
*/
|
||||
|
||||
$inc_dir=dirname(__FILE__)."/includes";
|
||||
$conf_dir=dirname(__FILE__)."/config";
|
||||
$data_dir=dirname(__FILE__)."/data";
|
||||
|
||||
$include_path=ini_get('include_path');
|
||||
$include_path.=":$inc_dir:$conf_dir:$data_dir";
|
||||
ini_set('include_path', $include_path);
|
||||
|
||||
/*
|
||||
* Bibliothèques à utiliser.
|
||||
*/
|
||||
|
||||
require("db.conf.php");
|
||||
require("libpage.inc.php");
|
||||
require("libsecuremenu.inc.php");
|
||||
require("libLDachat.inc.php");
|
||||
require("libuserinfo.inc.php");
|
||||
require("libfournisseurs.inc.php");
|
||||
require("liblistefournisseurs.inc.php");
|
||||
require("liblisteDA.inc.php");
|
||||
require("libproduits.inc.php");
|
||||
require("liblisteproduits.inc.php");
|
||||
require("libcommandes.inc.php");
|
||||
|
||||
?>
|
0
includes/README
Normal file
304
includes/libLDachat.inc.php
Normal file
|
@ -0,0 +1,304 @@
|
|||
<?php // TODO: faire les changements apportés avec l'apparition du champ numero de DA
|
||||
if (!defined("LIBLDACHAT_INC")){
|
||||
define(LIBLDACHAT_INC,1);
|
||||
|
||||
/*
|
||||
* classe qui correspond à une ligne d'achat
|
||||
*/
|
||||
class LDachat {
|
||||
var $famille;
|
||||
var $produit;
|
||||
var $quantite;
|
||||
var $_da_id;
|
||||
/*var $date_livr;*/
|
||||
|
||||
function LDachat($fam, $prod, $qte,$da_id=-1) {
|
||||
$this->famille=$fam;
|
||||
$this->produit=$prod;
|
||||
$this->quantite=$qte;
|
||||
$this->_da_id=$da_id;
|
||||
}
|
||||
} // FIN classe LDacaht
|
||||
|
||||
class DemandeAchat {
|
||||
var $_id_mag;
|
||||
var $_ligneAchat;
|
||||
var $_ligneIdx;
|
||||
var $_numero;
|
||||
|
||||
function DemandeAchat($id_mag){
|
||||
/* initialiser les var */
|
||||
$this->_id_mag=$id_mag;
|
||||
$this->_ligneAchat=array();
|
||||
$this->_ligneIdx=0;
|
||||
//$this->_numero=666;
|
||||
}
|
||||
|
||||
function load($id_da){
|
||||
// rempli l'objet DA a partir de la base pour l'id id_da
|
||||
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
$requete1="SELECT * FROM Ligne_d_achat "
|
||||
."WHERE numero_da=".$id_da;
|
||||
$result1=mysql_db_query(SQL_BASE, $requete1, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
|
||||
while($row=mysql_fetch_object($result1)) {
|
||||
$prod_ref_in=$row->reference_interne;
|
||||
$prod_qte=$row->quantite;
|
||||
|
||||
|
||||
$requete2="SELECT nom_fam FROM Produit_Interne, Famille_de_produit "
|
||||
."WHERE Produit_Interne.reference_fam=Famille_de_produit.reference_fam "
|
||||
."AND reference_interne='$prod_ref_in'";
|
||||
$result2=mysql_db_query(SQL_BASE, $requete2, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
|
||||
while($row=mysql_fetch_array($result2)) {
|
||||
$this->ajouteLDA($row[0],
|
||||
$prod_ref_in,
|
||||
$prod_qte);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ajouteLDA($famProd,$prodSelect,$quantiteDem,$prodUnit="kg"){
|
||||
$lda = new LDachat($famProd, $prodSelect, $quantiteDem);
|
||||
$this->_ligneAchat[$this->_ligneIdx]=&$lda;
|
||||
$this->_ligneIdx++;
|
||||
}
|
||||
|
||||
function supprimeLDA($Cases_supp){
|
||||
// on cherche les lignes selectionnees pour la suppression
|
||||
if (is_array($Cases_supp)){
|
||||
while( list($case,$val) = each($Cases_supp) ){
|
||||
// on supprime les lignes selectionnees
|
||||
$idx=preg_replace("/Check_/","",$val);
|
||||
unset($this->_ligneAchat[$idx]);
|
||||
}
|
||||
|
||||
// on reindexe les tableaux
|
||||
$tmp_tab = array_values($this->_ligneAchat);
|
||||
$this->_ligneAchat = $tmp_tab;
|
||||
$this->_ligneIdx=count($this->_ligneAchat);
|
||||
}
|
||||
}
|
||||
|
||||
function toHTML($editable=0){
|
||||
if ($this->_ligneIdx<1){
|
||||
$content="";
|
||||
} else {
|
||||
|
||||
for($i=0;$i<$this->_ligneIdx;$i++) {
|
||||
$content.="<p class=\"ligne".($i % 2)."\">";
|
||||
if ($editable){
|
||||
$content.="<input type=\"checkbox\" "
|
||||
."id=\"Case_suppr[]\" "
|
||||
."name=\"Case_suppr[]\" "
|
||||
."value=\"Check_$i\" /> ";
|
||||
}
|
||||
$content.="<span class=\"DAfamille\">";
|
||||
$content.=$this->_ligneAchat[$i]->famille;
|
||||
$content.="</span> ";
|
||||
$content.="<span class=\"DAproduit\">";
|
||||
$content.=$this->_ligneAchat[$i]->produit;
|
||||
$content.="</span> ";
|
||||
$content.="<span class=\"DAquantite\">";
|
||||
$content.=$this->_ligneAchat[$i]->quantite;
|
||||
$content.="</span> ";
|
||||
$content.="\n";
|
||||
$content.="</p>";
|
||||
}
|
||||
$content.="<br />";
|
||||
if ($editable){
|
||||
$content.="\n<input type=\"submit\" "
|
||||
."name=\"action\" "
|
||||
."value=\"Supprimer\" /> ";
|
||||
}
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui insere la demande d'achat dans la base de donnees
|
||||
*/
|
||||
function insereBD() {
|
||||
/*
|
||||
* connexion a la base de donnees
|
||||
*/
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if (!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
/*
|
||||
* insertion dans la base de donnees
|
||||
*/
|
||||
do{
|
||||
$requete="SELECT max(numero_da) AS newId FROM Demande_d_achat";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion)
|
||||
or die(mysql_error($connexion));
|
||||
$row=mysql_fetch_object($resultat);
|
||||
$id_DA=$row->newId;
|
||||
if ($id_DA!= "NULL"){
|
||||
$id_DA+=1;
|
||||
} else {
|
||||
$id_DA=1;
|
||||
}
|
||||
|
||||
//TODO: remplacer la date bidon par une vraie
|
||||
$date = date("Y")."-".date("m")."-".date("d");
|
||||
$requete="INSERT INTO Demande_d_achat (numero_da, date, id_magasinier) "
|
||||
."VALUES ('', '$date','".$this->_id_mag."')";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
$numeroDA=mysql_insert_id();
|
||||
} while (!$resultat);
|
||||
// insertion des lignes d'achat
|
||||
for($i=0; $i<$this->_ligneIdx; $i++) {
|
||||
$id_LDA=-1;
|
||||
$requete=0;
|
||||
$resultat=0;
|
||||
do{
|
||||
$requete="SELECT max(numero_lda) AS newId from Ligne_d_achat";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion)
|
||||
or die(mysql_error($connexion));
|
||||
$row=mysql_fetch_object($resultat);
|
||||
$id_LDA=$row->newId;
|
||||
if ($id_LDA!= "NULL"){
|
||||
$id_LDA+=1;
|
||||
} else {
|
||||
$id_LDA=1;
|
||||
}
|
||||
|
||||
$requete="INSERT INTO Ligne_d_achat (numero_lda, "
|
||||
."numero_da, "
|
||||
."reference_interne, "
|
||||
."quantite) "
|
||||
."VALUES ('$id_LDA', '$numeroDA', "
|
||||
."'".$this->_ligneAchat[$i]->produit."', "
|
||||
."'".$this->_ligneAchat[$i]->quantite."');";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
} while(!$resultat);
|
||||
//TODO: corriger date
|
||||
$date = date("Y")."-".date("m")."-".date("d");
|
||||
$requete="INSERT INTO Etats_LA "
|
||||
."(date,Libelle,numero_lda,quantite_recue) "
|
||||
."VALUES "
|
||||
."('$date','CREE','$id_LDA','0')";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion)
|
||||
or die(mysql_error($connexion));
|
||||
} // next lda
|
||||
}
|
||||
|
||||
}// END Class DemandeAchat
|
||||
|
||||
|
||||
/*
|
||||
* fonctions pour creer les menus deroulant
|
||||
*/
|
||||
function menu_deroulant_familleProd ($famille) {
|
||||
echo "<option value=\"$famille\">$famille</option>\n";
|
||||
}
|
||||
|
||||
function menu_deroulant_Produits ($ref_int, $designation) {
|
||||
$ref_des = "".$ref_int." : ".$designation;
|
||||
echo "<option value=\"$ref_int\">$ref_des</option>\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui donne les familles de produits
|
||||
*/
|
||||
function donne_familles() {
|
||||
/*
|
||||
* Connexion a la base de donnees
|
||||
*/
|
||||
|
||||
require("db.conf.php");
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
/*
|
||||
* Requete et resultat
|
||||
*/
|
||||
$familles = array();
|
||||
$requete="SELECT nom_fam FROM Famille_de_produit";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion)
|
||||
or die($requete.":".mysql_error($connexion));
|
||||
|
||||
while ($ligneTab= mysql_fetch_array($resultat)) {
|
||||
$familles[] = $ligneTab[0];
|
||||
}
|
||||
|
||||
return $familles;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui cherche les produits en fonctions de la famille selectionnée
|
||||
*/
|
||||
function trouve_produits($ref_famille) {
|
||||
|
||||
require("db.conf.php");
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if (!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
/* on cherche les produits associes */
|
||||
$produits = array();
|
||||
$requetePROD="SELECT reference_interne, ".
|
||||
"designation ".
|
||||
"FROM Produit_Interne ".
|
||||
"WHERE reference_fam=".$ref_famille;
|
||||
$resultatPROD=mysql_db_query(SQL_BASE,$requetePROD,$connexion)
|
||||
or die($requetePROD.":".mysql_error($connexion));
|
||||
|
||||
while ($lignePROD = mysql_fetch_array($resultatPROD)) {
|
||||
$produits[] = $lignePROD[0];
|
||||
$produits[] = $lignePROD[1];
|
||||
}
|
||||
|
||||
return $produits;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* fonction permettant de convertir du php en javascript
|
||||
*/
|
||||
function convertToJS($var) {
|
||||
if (is_array($var)) {
|
||||
$res = "[";
|
||||
$array = array();
|
||||
foreach ($var as $a_var) {
|
||||
$array[] = convertToJS($a_var);
|
||||
}
|
||||
return "(" . join(",", $array) . ")";
|
||||
}
|
||||
elseif (is_bool($var)) {
|
||||
return $var ? "true" : "false";
|
||||
}
|
||||
elseif (is_int($var) || is_integer($var) || is_double($var) || is_float($var)) {
|
||||
return $var;
|
||||
}
|
||||
elseif (is_string($var)) {
|
||||
return "'" . addslashes(stripslashes($var)) . "'";
|
||||
}
|
||||
// autres cas: objets, on ne les gère pas
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
} // defined LIBLDACHAT_INC
|
||||
|
||||
?>
|
340
includes/libcommandes.inc.php
Normal file
|
@ -0,0 +1,340 @@
|
|||
<?php
|
||||
if (!defined("LIBCOMMANDES_INC")){
|
||||
define(LIBCOMMANDES_INC,1);
|
||||
|
||||
class LigneCommande {
|
||||
var $_prod_in;
|
||||
var $_prod_four;
|
||||
var $_LDAtab; //Liste Demande Achat
|
||||
var $_LLDAtab;
|
||||
var $_prix;
|
||||
|
||||
function LigneCommande($refprod,&$LDAtab,$ref_fourn){
|
||||
$this->_prod_in=$refprod;
|
||||
$this->_prod_four=$ref_fourn;
|
||||
$this->_LDAtab=$LDAtab;
|
||||
$this->getLLDA();
|
||||
}
|
||||
|
||||
function getLLDA(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$this->_LLDAtab=array();
|
||||
for ($i=0;$i<count($this->_LDAtab);$i++){
|
||||
$numDA=$this->_LDAtab[$i];
|
||||
$requete="SELECT LDA.numero_lda AS num_lda "
|
||||
."FROM Ligne_d_achat AS LDA, Etats_LA AS ELA "
|
||||
."WHERE LDA.numero_lda=ELA.numero_LDA "
|
||||
."AND Libelle='CREE' "
|
||||
."AND numero_da='$numDA' "
|
||||
."AND reference_interne='".$this->_prod_in."'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion);
|
||||
if ($resultat){
|
||||
$row=mysql_fetch_object($resultat);
|
||||
array_push($this->_LLDAtab,$row->num_lda);
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
} // for
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
}
|
||||
|
||||
function save($uid){
|
||||
$this->getLLDA();
|
||||
//TODO : auto-increment
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="INSERT INTO Ligne_de_commande "
|
||||
."(numero_com,reference_fournisseur,quantite) "
|
||||
."VALUES ('-$uid','".$this->_prod_four."','".$this->getQte()."')";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die(mysql_error($connexion));
|
||||
$numero_ldc=mysql_insert_id();
|
||||
|
||||
// updater l'état des lda
|
||||
|
||||
for ($i=0;$i<count($this->_LLDAtab);$i++){
|
||||
$requete="UPDATE Etats_LA "
|
||||
."SET numero_ldc='$numero_ldc',Libelle='COMM' "
|
||||
."WHERE numero_lda='".$this->_LLDAtab[$i]."'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die(mysql_error($connexion));
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
}
|
||||
|
||||
function getQte(){
|
||||
//TODO:
|
||||
// fait la somme des quantités des LDA
|
||||
}
|
||||
function getPrix(){
|
||||
//TODO:
|
||||
// qua
|
||||
}
|
||||
|
||||
function toHTML(){
|
||||
$content="";
|
||||
$content.=$this->_prod_in;
|
||||
$content.=" - ";
|
||||
$content.=$this->_prod_four;
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
class Commande {
|
||||
var $_lignes;
|
||||
var $_userID;
|
||||
|
||||
function Commande($userId){
|
||||
$this->_userID=$userId;
|
||||
}
|
||||
|
||||
function valideLC(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if (!$connexion){
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
// 1 .faire la liste des fournisseurs chez
|
||||
// qui des commandes sont en attente
|
||||
$requete="SELECT id_fournisseur "
|
||||
."FROM Ligne_de_commande AS LDC, ProduitFour AS PF "
|
||||
."WHERE LDC.reference_fournisseur=PF.reference_fournisseur "
|
||||
."AND numero_com='-".$this->_userID."' "
|
||||
."GROUP BY id_fournisseur";
|
||||
$resultatf=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
// 2 .pour chaque fournisseur :
|
||||
while($fournisseur=mysql_fetch_object($resultatf)){
|
||||
// - créer une nouvelle commande
|
||||
$date = date("Y")."-".date("m")."-".date("d");
|
||||
$requete="INSERT INTO Commande "
|
||||
."(date,id_acheteur,id_fournisseur) "
|
||||
."VALUES ('$date',"
|
||||
."'".$this->_userID."',"
|
||||
."'".$fournisseur->id_fournisseur."')";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
$cmd_id=mysql_insert_id($connexion);
|
||||
print ("<span class='error'>Id commande : $cmd_id</span>");
|
||||
// - associer les lignes de commandes à la commande
|
||||
// ( changer l'etat )
|
||||
$requete="UPDATE Ligne_de_commande "
|
||||
."SET numero_com='$cmd_id' "
|
||||
."WHERE numero_com='-".$this->_userID."'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
}
|
||||
mysql_close($connexion);
|
||||
}
|
||||
|
||||
function supprimeLC($Cases_supp){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if (!$connexion){
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
if (!is_array($Cases_supp)){
|
||||
die ("$Cases_supp must be an array !");
|
||||
}
|
||||
$LDCtab=array();
|
||||
while( list($case,$val) = each($Cases_supp) ){
|
||||
// on supprime les lignes selectionnees
|
||||
$LDCtab[]=$val;
|
||||
}
|
||||
|
||||
for ($i=0;$i<count($LDCtab);$i++){
|
||||
//restaure l'état des lignes demande achat
|
||||
$requete="UPDATE Etats_LA "
|
||||
."SET numero_ldc=NULL,Libelle='CREE' "
|
||||
."WHERE numero_ldc='".$LDCtab[$i]."'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
|
||||
//supprime la ligne de commande
|
||||
$requete="DELETE FROM Ligne_de_commande "
|
||||
."WHERE numero_ldc='".$LDCtab[$i]."'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
}
|
||||
|
||||
mysql_close($connexion);
|
||||
}
|
||||
|
||||
function ajouteLC($refprod,&$LDAtab,$ref_fourn){
|
||||
$ligneCom=new LigneCommande($refprod,$LDAtab,$ref_fourn);
|
||||
$ligneCom->save($this->_userID);
|
||||
}
|
||||
|
||||
|
||||
function toHTML(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if (!$connexion){
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
// on récupere les lignes d'achats en cours
|
||||
$requete="SELECT numero_ldc,reference_fournisseur "
|
||||
."FROM Ligne_de_commande AS LDC "
|
||||
."WHERE LDC.numero_com='-".$this->_userID."'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
$LDCtab=array();
|
||||
$LDCInfoTab=array();
|
||||
while ($row=mysql_fetch_object($resultat)){
|
||||
array_push($LDCtab,$row->numero_ldc);
|
||||
array_push($LDCInfoTab,$row->reference_fournisseur);
|
||||
}
|
||||
|
||||
$content="";
|
||||
for ($i=0;$i<count($LDCtab);$i++){
|
||||
$content.="<dl class=\"ligne".($i%2)."\" >";
|
||||
$content.="<dt><input type=\"checkbox\" "
|
||||
."name=\"ligneCom[]\" id=\"ligneCom[]\" "
|
||||
."value=\"".$LDCtab[$i]."\" />";
|
||||
$content.="LDC°".$LDCtab[$i]." - ";
|
||||
$content.="Ref fournisseur: ".$LDCInfoTab[$i];
|
||||
$content.="</dt>";
|
||||
$requete="SELECT numero_da,LDA.reference_interne,"
|
||||
."PI.designation,PI.unite,quantite "
|
||||
."FROM Etats_LA AS ELA, Ligne_d_achat as LDA, "
|
||||
."Produit_Interne AS PI "
|
||||
."WHERE numero_ldc='".$LDCtab[$i]."' "
|
||||
."AND LDA.reference_interne=PI.reference_interne "
|
||||
."AND ELA.numero_lda=LDA.numero_lda";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete,$connexion) or
|
||||
die ("<span class='error'>".mysql_error($connexion)."</span>");
|
||||
while($row=mysql_fetch_object($resultat)){
|
||||
$content.="<dd>\n";
|
||||
$content.="<span class='id_da'>DA°".$row->numero_da."</span> - \n";
|
||||
$content.="<span class='ref_in'>".$row->reference_interne."</span> : \n";
|
||||
$content.="<span class='designation'>".$row->designation."</span> - \n";
|
||||
$content.="<span class='quantite'>Qté: ".$row->quantite."</span> \n";
|
||||
$content.="<span class='unite'>(".$row->unite.")</span> \n";
|
||||
$content.="</dd>\n";
|
||||
}
|
||||
$content.="</dl>";
|
||||
}
|
||||
$content.="<br />";
|
||||
$content.="<input type=\"submit\" name=\"action\" id=\"action\" "
|
||||
." value=\"Supprimer\" />";
|
||||
mysql_close($connexion);
|
||||
return $content;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
class CmdTool {
|
||||
var $_famille;
|
||||
var $_ref_in;
|
||||
var $_lda;
|
||||
|
||||
function CmdTool($famille){
|
||||
$this->_famille=$famille;
|
||||
}
|
||||
|
||||
function FournToHTML($ref){
|
||||
$content="";
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="SELECT nom,F.id_fournisseur as idf,reference_fournisseur,prix,unite "
|
||||
."FROM ProduitFour AS PF,Fournisseur as F "
|
||||
."WHERE PF.id_fournisseur=F.id_fournisseur "
|
||||
."AND reference_interne='$ref'";
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if ($result){
|
||||
$content.="<select name=\"fourn_$ref\" id=\"fourn_$ref\" "
|
||||
.">\n";
|
||||
while($row=mysql_fetch_object($result)){
|
||||
$content.="<option value=\"".$row->reference_fournisseur."\">\n";
|
||||
$content.=$row->nom." - ";
|
||||
$content.="Ref. ".$row->reference_fournisseur;
|
||||
$content.=" - ".$row->prix." € / ".$row->unite;
|
||||
$content.="</option>\n";
|
||||
}
|
||||
$content.="</select>\n";
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
return $content;
|
||||
|
||||
}
|
||||
|
||||
function LDAtoHTML($ref){
|
||||
$content="";
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="SELECT numero_da, LDA.numero_lda, quantite, Date "
|
||||
."FROM Ligne_d_achat AS LDA , Etats_LA AS ELA "
|
||||
."WHERE LDA.numero_lda=ELA.numero_lda "
|
||||
."AND Libelle='CREE' "
|
||||
."AND reference_interne='$ref'";
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if ($result){
|
||||
$content.="<select name=\"da_".$ref."[]\" id=\"da_".$ref."[]\" "
|
||||
."multiple=\"multiple\" >\n";
|
||||
while($row=mysql_fetch_object($result)){
|
||||
$content.="<option value=\"".$row->numero_da."\">\n";
|
||||
$content.="Le ".$row->Date;
|
||||
$content.=", DA°".$row->numero_da." - ";
|
||||
$content.="Qté : ".$row->quantite;
|
||||
$content.="</option>\n";
|
||||
}
|
||||
$content.="</select>\n";
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
|
||||
function ReftoHTML(){
|
||||
$content="";
|
||||
for ($i=0;$i<count($this->_ref_in);$i++){
|
||||
if ($i==0){
|
||||
$content.="<option value=\"".$this->_ref_in[$i]."\">(Selectionner une reference)</option>\n";
|
||||
}
|
||||
$content.="<option>".$this->_ref_in[$i]."</option>\n";
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
function chargeRef(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="SELECT LDA.reference_interne AS ref_in "
|
||||
."FROM Ligne_d_achat AS LDA, Etats_LA as ELA, Produit_Interne as PI "
|
||||
."WHERE LDA.numero_lda=ELA.numero_lda "
|
||||
."AND LDA.reference_interne=PI.reference_interne "
|
||||
."AND Libelle='CREE' "
|
||||
."AND reference_fam='".$this->_famille."' "
|
||||
."GROUP BY LDA.reference_interne";
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if ($result){
|
||||
$this->_ref_in=array();
|
||||
while($row=mysql_fetch_object($result)){
|
||||
array_push($this->_ref_in,$row->ref_in);
|
||||
}
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
} //function
|
||||
} // class
|
||||
}
|
||||
?>
|
16
includes/liberrormsg.inc.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
if (!define("LIBERRORMSG_INC")){
|
||||
define(LIBERRORMSG_INC,1);
|
||||
|
||||
class ErrorMsg{
|
||||
|
||||
function ErrorMsg(){
|
||||
//constructeur}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
44
includes/libfournisseurs.inc.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
if (!defined("LIBFOURNISSEURS_INC")){
|
||||
define(LIBFOURNISSEURS_INC,1);
|
||||
|
||||
class Fournisseur {
|
||||
var $_id;
|
||||
var $_nom;
|
||||
var $_adresse;
|
||||
var $_famille;
|
||||
var $_tel;
|
||||
var $_fax;
|
||||
var $_siret;
|
||||
var $_siren;
|
||||
|
||||
function Fournisseur($id,$nom, $adresse, $famille, $tel, $fax, $siret, $siren){
|
||||
$this->_nom = $nom;
|
||||
$this->_adresse = $adresse;
|
||||
$this->_famille = $famille;
|
||||
$this->_tel = $tel;
|
||||
$this->_fax = $fax;
|
||||
$this->_siret = $siret;
|
||||
$this->_siren = $siren;
|
||||
$this->_id = $id;
|
||||
}
|
||||
|
||||
function toHTML(){
|
||||
// affichage
|
||||
$content="";
|
||||
$content.="<input type=\"checkbox\" "
|
||||
."id=\"box_fourn[]\" "
|
||||
."name=\"box_fourn[]\" "
|
||||
."value=\"".$this->_id."\" />\n";
|
||||
$content.="<span class=\"id_fourn\">".$this->_id."</span>\n";
|
||||
$content.="<span class=\"nom_fourn\">".$this->_nom."</span>\n";
|
||||
$content.="<span class=\"adresse_fourn\">".$this->_adresse."</span>\n";
|
||||
$content.="<span class=\"tel_fourn\">".$this->_tel."</span>\n";
|
||||
$content.="<span class=\"fax_fourn\">".$this->_fax."</span>\n";
|
||||
$content.="<span class=\"siret_fourn\">".$this->_siret."</span>\n";
|
||||
$content.="<span class=\"siren_fourn\">".$this->_siren."</span>\n";
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
146
includes/liblisteDA.inc.php
Normal file
|
@ -0,0 +1,146 @@
|
|||
<?php
|
||||
if (!defined("LIBLISTEDA_INC")){
|
||||
define(LIBLISTEDA_INC,1);
|
||||
|
||||
/*
|
||||
* classe qui correspond a une liste de DA
|
||||
*/
|
||||
class ListeDA {
|
||||
var $_numDA;
|
||||
var $_liste;
|
||||
var $_id_mag;
|
||||
var $_libelle;
|
||||
|
||||
function ListeDA($libelle,$id_mag) {
|
||||
$this->_numDA=0;
|
||||
$this->_liste=array();
|
||||
// si id_mag < 0 alors on prend tous les id_mag
|
||||
$this->_id_mag=$id_mag;
|
||||
$this->_libelle=$libelle;
|
||||
}
|
||||
|
||||
|
||||
function ajouteDA($da) {
|
||||
//$da = new DemandeAchat(0);
|
||||
$this->_liste[$this->_numDA]=&$da;
|
||||
$this->_numDA++;
|
||||
}
|
||||
|
||||
function supprimeDA($Cases_supp) {
|
||||
// on cherche les lignes selectionnees pour la suppression
|
||||
if (is_array($Cases_supp)){
|
||||
while( list($case,$val) = each($Cases_supp) ){
|
||||
// on supprime les DA selectionnees de la BD
|
||||
|
||||
// tout d'abord de la BD
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
// on supprime également les états des lignes d'achat
|
||||
// associees
|
||||
$requete="SELECT numero_lda FROM Ligne_d_achat "
|
||||
."WHERE numero_da='$val'";
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
|
||||
while($row=mysql_fetch_object($result)) {
|
||||
$requete_ela="DELETE FROM Etats_LA "
|
||||
."WHERE numero_lda='".$row->numero_lda."'";
|
||||
$result_ela=mysql_db_query(SQL_BASE, $requete_ela, $connexion);
|
||||
if (!$result_ela){
|
||||
print "<span class=\"error\">";
|
||||
print mysql_error($connexion);
|
||||
print "</span>";
|
||||
}
|
||||
|
||||
}
|
||||
// ainsi que les LDA elles-même
|
||||
$requete_lda="DELETE FROM Ligne_d_achat "
|
||||
."WHERE numero_da='$val'";
|
||||
$resultat=mysql_db_query(SQL_BASE, $requete_lda, $connexion);
|
||||
if (!$resultat){
|
||||
print "<span class=\"error\">";
|
||||
print mysql_error($connexion);
|
||||
print "</span>";
|
||||
}
|
||||
|
||||
// et enfin la demande
|
||||
$requete="DELETE FROM Demande_d_achat "
|
||||
."WHERE numero_da='$val'";
|
||||
//.$this->_liste[$idx]->_numero."'";
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
|
||||
// ensuite du tableau liste
|
||||
}
|
||||
|
||||
// on reindexe le tableau
|
||||
$this->loadListe();
|
||||
}
|
||||
}
|
||||
|
||||
function loadListe() {
|
||||
// rempli l'objet ListeDA a partir de la base pour l'id id_mag
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
if($libelle!="TOUTES") {
|
||||
$requete="SELECT Ligne_d_achat.numero_da "
|
||||
."FROM Ligne_d_achat, Etats_LA, Demande_d_achat "
|
||||
."WHERE Libelle='".$this->_libelle."' ";
|
||||
if ($this->_id_mag>0){
|
||||
$requete.="AND Demande_d_achat.id_magasinier='".$this->_id_mag."' ";
|
||||
}
|
||||
$requete.="AND Demande_d_achat.numero_da=Ligne_d_achat.numero_da "
|
||||
."AND Ligne_d_achat.numero_lda=Etats_LA.numero_lda "
|
||||
."GROUP BY Ligne_d_achat.numero_da";
|
||||
}
|
||||
else {
|
||||
$requete="SELECT numero_da FROM Demande_d_achat";
|
||||
if ($this->_id_mag>0){
|
||||
$requete.=" WHERE id_magasinier='".$this->_id_mag."'";
|
||||
}
|
||||
}
|
||||
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
|
||||
$this->_numDA=0;
|
||||
$this->_liste=array();
|
||||
while($row=mysql_fetch_array($result)) {
|
||||
$da=new DemandeAchat($this->_id_mag);
|
||||
$da->_numero=$row[0];
|
||||
$da->load($row[0]);
|
||||
$this->ajouteDA($da);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function toHTML($editable=1) {
|
||||
for($i=0; $i<$this->_numDA; $i++) {
|
||||
$content.="<fieldset>";
|
||||
$content.="<legend>\n";
|
||||
if ($editable) {
|
||||
$content.="<input type=\"checkbox\" "
|
||||
."id=\"demande_achat[]\" "
|
||||
."name=\"demande_achat[]\" "
|
||||
."value=\"".$this->_liste[$i]->_numero."\" "
|
||||
.">";
|
||||
}
|
||||
$content.="Demande Achat n°".$this->_liste[$i]->_numero."</legend>\n";
|
||||
$content.=$this->_liste[$i]->toHTML(0);
|
||||
$content.="</fieldset>";
|
||||
$content.="<br />";
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
}// fin classe ListeDA
|
||||
|
||||
}
|
||||
?>
|
168
includes/liblistefournisseurs.inc.php
Normal file
|
@ -0,0 +1,168 @@
|
|||
<?php
|
||||
if (!defined("LIBLISTEFOURNISSEURS_INC")){
|
||||
define(LIBLISTEFOURNISSEURS_INC,1);
|
||||
|
||||
/*
|
||||
* fonction permettant de savoir de quelle famille
|
||||
* de produit est charger l'acheteur actuel
|
||||
*/
|
||||
|
||||
class ListeFournisseurs {
|
||||
var $_fournisseurs;
|
||||
var $_fournisseursIdx;
|
||||
var $_familleId;
|
||||
var $_familleName;
|
||||
|
||||
function ListeFournisseurs($acheteurID){
|
||||
$this->_fournisseurs=array();
|
||||
$this->_fournisseursIdx=0;
|
||||
$this->_familleId=-1;
|
||||
$this->_familleName="Aucune famille de produit trouvée";
|
||||
$this->setFamilleFromAcheteur($acheteurID);
|
||||
$this->loadList();
|
||||
}
|
||||
|
||||
function setFamilleFromAcheteur($acheteurID){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
// preparation de la requete :
|
||||
$requete="SELECT reference_fam,nom_fam "
|
||||
."FROM Famille_de_produit "
|
||||
."WHERE id_acheteur='$acheteurID' "
|
||||
."ORDER BY id_acheteur LIMIT 0,1";
|
||||
// envoie de la requete
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion)
|
||||
or die($requete.":".mysql_error($connexion));
|
||||
$row = mysql_fetch_object($resultat);
|
||||
$this->_familleId=$row->reference_fam;
|
||||
$this->_familleName=$row->nom_fam;
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
mysql_error($connexion);
|
||||
}
|
||||
}
|
||||
|
||||
function ajouteFournisseur($id,$nom, $adresse,$famille,
|
||||
$tel, $fax, $siret, $siren)
|
||||
{
|
||||
//TODO: escaper les valeurs
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="INSERT INTO Fournisseur "
|
||||
."(id_fournisseur,nom,adresse,telephone,fax,SIRET,"
|
||||
."SIREN,reference_fam) "
|
||||
."VALUES ('$id','$nom','$adresse','$tel','$fax','$SIRET',"
|
||||
."'$SIREN','$famille')";
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if (!$result){
|
||||
print "<span class='bad'>\nErreur :";
|
||||
print mysql_error($connexion);
|
||||
print "\n</span>\n";
|
||||
}
|
||||
} else {
|
||||
mysql_error($connexion);
|
||||
}
|
||||
mysql_close($connexion);
|
||||
$this->loadList();
|
||||
}
|
||||
|
||||
function supprimeFournisseur($ids){
|
||||
// on cherche les lignes selectionnees pour la suppression
|
||||
//on supprime aussi les produits du fournisseur...
|
||||
if (count($ids)>0){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
while( list($case,$val) = each($ids) ){
|
||||
// on supprime les lignes selectionnees
|
||||
$requete="DELETE FROM ProduitFour "
|
||||
."WHERE id_fournisseur='$val' ";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if(!$resultat){
|
||||
print mysql_error($connexion);
|
||||
}
|
||||
|
||||
$requete="DELETE FROM Fournisseur "
|
||||
."WHERE id_fournisseur='$val' "
|
||||
."AND reference_fam='".$this->_familleId."'";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if(!$resultat){
|
||||
print mysql_error($connexion);
|
||||
}
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} // connexion
|
||||
} // count
|
||||
$this->loadList();
|
||||
}
|
||||
|
||||
function loadList(){
|
||||
// charge la liste des fournisseurs
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
// preparation de la requete :
|
||||
$requete="SELECT * "
|
||||
."FROM Fournisseur "
|
||||
."WHERE reference_fam='".$this->_familleId."' "
|
||||
."ORDER BY id_fournisseur";
|
||||
// envoie de la requete
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion)
|
||||
or die($requete.":".mysql_error($connexion));
|
||||
$this->_fournisseurs=array();
|
||||
$this->_fournisseursIdx=0;
|
||||
while($row = mysql_fetch_object($resultat)){
|
||||
$four=new Fournisseur(
|
||||
$row->id_fournisseur,
|
||||
$row->nom,
|
||||
$row->adresse,
|
||||
$row->reference_fam,
|
||||
$row->telephone,
|
||||
$row->fax,
|
||||
$row->SIRET,
|
||||
$row->SIREN
|
||||
);
|
||||
$this->_fournisseurs[$this->_fournisseursIdx]=$four;
|
||||
$this->_fournisseursIdx+=1;
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
mysql_error($connexion);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function toHTML($editable=0){
|
||||
$content="";
|
||||
if (!$editable){
|
||||
$content.="<select name=\"fournisseur\">\n";
|
||||
}
|
||||
for ($i=0;$i<$this->_fournisseursIdx;$i++){
|
||||
if ($editable) {
|
||||
$content.="<p class=\"ligne".($i%2)."\" />\n";
|
||||
$content.=$this->_fournisseurs[$i]->toHTML();
|
||||
$content.="\n</p>\n";
|
||||
} else {
|
||||
$content.="<option "
|
||||
."value=\"".$this->_fournisseurs[$i]->_id."\" "
|
||||
.">";
|
||||
$content.=$this->_fournisseurs[$i]->_id." - ";
|
||||
$content.=$this->_fournisseurs[$i]->_nom;
|
||||
$content.="</option>\n";
|
||||
}
|
||||
}
|
||||
if (!$editable){
|
||||
$content.="</select>\n";
|
||||
} else {
|
||||
if (count($this->_fournisseurs)>0){
|
||||
$content.="<input type=\"submit\" "
|
||||
."id=\"action\" "
|
||||
."name=\"action\" "
|
||||
."value=\"Supprimer\" "
|
||||
."/>\n";
|
||||
}
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
168
includes/liblisteproduits.inc.php
Normal file
|
@ -0,0 +1,168 @@
|
|||
<?php
|
||||
if (!defined("LIBLISTEPRODUITS_INC")){
|
||||
define(LIBLISTEPRODUITS_INC,1);
|
||||
|
||||
class ListeProduits{
|
||||
var $_famille;
|
||||
var $_prodIn;
|
||||
var $_prodInInfo;
|
||||
var $_prodFo;
|
||||
var $_prodFoInfo;
|
||||
|
||||
function ListeProduits($famille){
|
||||
$this->_prodIn=array();
|
||||
$this->_prodInInfo=array();
|
||||
$this->_prodFo=array();
|
||||
$this->_prodFoInfo=array();
|
||||
$this->_famille=$famille;
|
||||
$this->chargeListeInterne();
|
||||
$this->chargeListeFournisseur();
|
||||
}
|
||||
|
||||
function supprimeProduitFournisseur($ids){
|
||||
// on cherche les lignes selectionnees pour la suppression
|
||||
if (count($ids)>0){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
while( list($case,$val) = each($ids) ){
|
||||
// on supprime les lignes selectionnees
|
||||
$requete="DELETE FROM ProduitFour "
|
||||
."WHERE reference_fournisseur='$val' ";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if(!$resultat){
|
||||
print mysql_error($connexion);
|
||||
}
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} // connexion
|
||||
} // count
|
||||
$this->chargeListeFournisseur();
|
||||
|
||||
}
|
||||
|
||||
function ajouteProduitInterne($ref_in,$design,$unit){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="INSERT INTO Produit_Interne "
|
||||
."( reference_interne, designation, unite, "
|
||||
."reference_fam )"
|
||||
."VALUES ('$ref_in','$design','$unit','".$this->_famille."')";
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if (!$result){
|
||||
print "<span class='bad'>\nErreur :";
|
||||
print mysql_error($connexion);
|
||||
print "\n</span>\n";
|
||||
}
|
||||
} else {
|
||||
mysql_error($connexion);
|
||||
}
|
||||
mysql_close($connexion);
|
||||
$this->chargeListeInterne();
|
||||
}
|
||||
|
||||
function ajouteProduitFournisseur(
|
||||
$fourn,
|
||||
$design,
|
||||
$prix,
|
||||
$unit,
|
||||
$ref_out,
|
||||
$ref_in){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="INSERT INTO ProduitFour "
|
||||
."( reference_fournisseur, designation, prix, "
|
||||
."unite,id_fournisseur,reference_interne )"
|
||||
."VALUES ('$ref_out','$design','$prix','$unit',"
|
||||
."'$fourn','$ref_in')";
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if (!$result){
|
||||
print "<span class='bad'>\nErreur :";
|
||||
print mysql_error($connexion);
|
||||
print "\n</span>\n";
|
||||
}
|
||||
} else {
|
||||
mysql_error($connexion);
|
||||
}
|
||||
mysql_close($connexion);
|
||||
$this->chargeListeFournisseur();
|
||||
}
|
||||
|
||||
function listeFournisseurToHTML(){
|
||||
$content="";
|
||||
for ($i=0;$i<count($this->_prodFo);$i++){
|
||||
$content.="<p class=\"ligne".($i%2)."\" >";
|
||||
$content.=$this->_prodFo[$i]->toHTML(1);
|
||||
$content.="</p>";
|
||||
}
|
||||
return $content;
|
||||
|
||||
}
|
||||
|
||||
function referencesHTML(){
|
||||
$content="";
|
||||
$content.="<select id=\"prod_refin_old\" name=\"prod_refin_old\">";
|
||||
for ($i=0;$i<count($this->_prodIn);$i++){
|
||||
$content.="<option value='".$this->_prodIn[$i]."'>"
|
||||
.$this->_prodIn[$i]." - ".$this->_prodInInfo[$i]
|
||||
."</option>";
|
||||
}
|
||||
$content.="</select>";
|
||||
return $content;
|
||||
}
|
||||
|
||||
function chargeListeFournisseur(){
|
||||
$connexion=@mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="SELECT reference_fournisseur,designation,"
|
||||
."prix,unite,A.id_fournisseur,reference_interne "
|
||||
."FROM ProduitFour AS A, Fournisseur AS B "
|
||||
."WHERE A.id_fournisseur=B.id_fournisseur "
|
||||
."AND reference_fam='".$this->_famille."'";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if ($resultat){
|
||||
$this->_prodFo=array();
|
||||
$this->_prodFoInfo=array();
|
||||
while($row=mysql_fetch_object($resultat)){
|
||||
//TODO:
|
||||
$produit=new ProduitFournisseur(
|
||||
$row->reference_fournisseur,
|
||||
$row->designation,
|
||||
$row->prix,
|
||||
$row->unite,
|
||||
$row->id_fournisseur,
|
||||
$row->reference_interne
|
||||
);
|
||||
array_push($this->_prodFo,$produit);
|
||||
}
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print mysql_error($connexion);
|
||||
} // connexion
|
||||
|
||||
}
|
||||
|
||||
function chargeListeInterne(){
|
||||
$connexion=@mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if ($connexion){
|
||||
$requete="SELECT reference_interne,designation "
|
||||
."FROM Produit_Interne "
|
||||
."WHERE reference_fam='".$this->_famille."' "
|
||||
."GROUP BY reference_interne";
|
||||
$resultat=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
if ($resultat){
|
||||
$this->_prodIn=array();
|
||||
$this->_prodInInfo=array();
|
||||
while($row=mysql_fetch_object($resultat)){
|
||||
array_push($this->_prodIn,$row->reference_interne);
|
||||
array_push($this->_prodInInfo,$row->designation);
|
||||
}
|
||||
}
|
||||
mysql_close($connexion);
|
||||
} else {
|
||||
print mysql_error($connexion);
|
||||
} // connexion
|
||||
} //function
|
||||
} // class
|
||||
} // define
|
||||
?>
|
128
includes/libpage.inc.php
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
if (!defined("LIBPAGE_INC")){
|
||||
define(LIBPAGE_INC,1);
|
||||
|
||||
class Page{
|
||||
var $_title;
|
||||
var $_script;
|
||||
var $_currentHeader;
|
||||
var $_header;
|
||||
var $_currentScript;
|
||||
var $_content;
|
||||
|
||||
var $_referer;
|
||||
var $_basedir;
|
||||
|
||||
function Page($referer=""){
|
||||
$this->_referer=$referer;
|
||||
$this->_basedir=dirname($referer);
|
||||
$this->_script=array();
|
||||
$this->_header=array();
|
||||
$this->_currentScript=0;
|
||||
$this->_currentHeader=0;
|
||||
// initialiser les variables d'inclusion
|
||||
|
||||
// lancer la session
|
||||
session_start();
|
||||
// vérifier le login
|
||||
}
|
||||
|
||||
function logCheck($authorizedLevel=0){
|
||||
include("logcheck.php");
|
||||
/* TODO: prévoir un niveau de check */
|
||||
}
|
||||
|
||||
function setTitle($title){
|
||||
|
||||
}
|
||||
|
||||
function startHeader(){
|
||||
ob_start();
|
||||
}
|
||||
|
||||
function endHeader(){
|
||||
$this->_header[$this->_currentHeader]=ob_get_contents();
|
||||
$this->_currentHeader=$this->_currentHeader+1;
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
function startScript(){
|
||||
//TODO: faire en sorte de vérifier l'ordre des balises
|
||||
ob_start();
|
||||
print "<!-- Hide script\n"
|
||||
."//<![CDATA[";
|
||||
}
|
||||
|
||||
function endScript(){
|
||||
//TODO: faire en sorte de vérifier l'ordre des balises
|
||||
print "\n//]]> End script hiding -->\n";
|
||||
$this->_script[$this->_currentScript]=ob_get_contents();
|
||||
$this->_currentScript=$this->_currentScript+1;
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
function startContent(){
|
||||
//TODO: faire en sorte de vérifier l'ordre des balises
|
||||
ob_start();
|
||||
}
|
||||
|
||||
function endContent(){
|
||||
//TODO: faire en sorte de vérifier l'ordre des balises
|
||||
$this->_content=ob_get_contents();
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
function toHTML(){
|
||||
$htmlCode="";
|
||||
|
||||
/* Start of page */
|
||||
ob_start();
|
||||
include("header.inc.php");
|
||||
$htmlCode.=ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
/* Headers */
|
||||
|
||||
for($i=0;$i<$this->_currentHeader;$i++) {
|
||||
$htmlCode.=$this->_header[$i];
|
||||
}
|
||||
|
||||
/* Javascript */
|
||||
$htmlCode.="<script language=\"JavaScript\" "
|
||||
."type=\"text/javascript\">\n";
|
||||
|
||||
for($i=0;$i<$this->_currentScript;$i++) {
|
||||
$htmlCode.="//script $i\n";
|
||||
$htmlCode.=$this->_script[$i];
|
||||
}
|
||||
|
||||
$htmlCode.="</script>\n";
|
||||
|
||||
/* Start of page */
|
||||
ob_start();
|
||||
include("bodystart.inc.php");
|
||||
$htmlCode.=ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
/* Content of page */
|
||||
$htmlCode.=$this->_content;
|
||||
|
||||
/* Footer */
|
||||
ob_start();
|
||||
include("footer.inc.php");
|
||||
$htmlCode.=ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
/* End of page */
|
||||
ob_start();
|
||||
include("bodyend.inc.php");
|
||||
$htmlCode.=ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
return $htmlCode;
|
||||
}
|
||||
|
||||
} // end class
|
||||
|
||||
} // end ifdef
|
||||
?>
|
259
includes/libproduits.inc.php
Normal file
|
@ -0,0 +1,259 @@
|
|||
<?php
|
||||
if (!defined("LIBPRODUITS_INC")){
|
||||
define(LIBPRODUITS_INC,1);
|
||||
|
||||
function getFamilleFromAcheteur($id){
|
||||
$famille=-1;
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if($connexion) {
|
||||
$requete="SELECT reference_fam "
|
||||
."FROM Famille_de_produit "
|
||||
."WHERE id_acheteur='$id' "
|
||||
."LIMIT 0,1";
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion);
|
||||
if ($result){
|
||||
$row=mysql_fetch_object($result);
|
||||
$famille=$row->reference_fam;
|
||||
} else {
|
||||
print "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
mysql_close($connexion);
|
||||
}else {
|
||||
echo "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
return $famille;
|
||||
}
|
||||
|
||||
/*
|
||||
* classe qui represente les produits internes
|
||||
* avec le stock courant et les differents seuils
|
||||
*/
|
||||
class ProduitInterne {
|
||||
var $_ref_in;
|
||||
var $_stock;
|
||||
var $_seuil_min;
|
||||
var $_seuil_max;
|
||||
var $_id_site;
|
||||
|
||||
function ProduitInterne($reference, $id_site) {
|
||||
$this->_ref_in=$reference;
|
||||
$this->_stock=0;
|
||||
$this->_seuil_min=0;
|
||||
$this->_seuil_max=0;
|
||||
$this->_id_site=$id_site;
|
||||
}
|
||||
|
||||
/*
|
||||
* fonction qui insere les infos d'un produit
|
||||
* ds la BD lorsque celui-ci n'est pas connu
|
||||
*/
|
||||
function insereInfos(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "<span class='error'>".mysql_error($connexion)."</span>";
|
||||
}
|
||||
|
||||
$requete="INSERT INTO Stocker (id_site, "
|
||||
."reference_interne, "
|
||||
."stock, "
|
||||
."seuil_min, "
|
||||
."seuil_max) "
|
||||
."VALUES ('".$this->_id_site."', "
|
||||
."'".$this->_ref_in."', "
|
||||
."'".$this->_stock."', "
|
||||
."'".$this->_seuil_min."', "
|
||||
."'".$this->_seuil_max."')";
|
||||
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
|
||||
mysql_close($connexion);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui insere les nouvelles valeurs
|
||||
* des seuils et du stock ds la BD
|
||||
*/
|
||||
function modifSeuils(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
$requete="UPDATE Stocker "
|
||||
."SET stock='".$this->_stock."', "
|
||||
."seuil_min='".$this->_seuil_min."', "
|
||||
."seuil_max='".$this->_seuil_max."' "
|
||||
."WHERE id_site='".$this->_id_site."' "
|
||||
."AND reference_interne='".$this->_ref_in."' ";
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
mysql_close($connexion);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui permet l'effacement d'un produit de la table stocker
|
||||
*/
|
||||
function supprProStck(){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
$requete="DELETE FROM Stocker "
|
||||
."WHERE reference_interne='".$this->_ref_in."' "
|
||||
."AND id_site='".$this->_id_site."' ";
|
||||
$result=mysql_db_query(SQL_BASE, $requete, $connexion)
|
||||
or die(mysql_error($connexion));
|
||||
mysql_close($connexion);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui permet de savoir si le produit
|
||||
* est deja insere dans la table Stocker
|
||||
*/
|
||||
function exists() {
|
||||
// TODO: regarder dans la table Stocker si le produit y est
|
||||
// si oui: return TRUE, else FALSE
|
||||
$connexion=@mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
$requete="SELECT reference_interne FROM Stocker "
|
||||
."WHERE reference_interne='".$this->_ref_in."' "
|
||||
."AND id_site='".$this->_id_site."' "
|
||||
."LIMIT 0,1";
|
||||
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
|
||||
$row=mysql_fetch_object($result);
|
||||
|
||||
mysql_close($connexion);
|
||||
|
||||
if($row) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* fonction qui remplie l'objet produit avec les valeurs dans la base
|
||||
* ou dans le cas d'un nouveau produit les initialisent a zero
|
||||
*/
|
||||
function rempliVals() {
|
||||
if($this->exists()) {
|
||||
$connexion=@mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if(!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
}
|
||||
|
||||
$requete="SELECT stock, seuil_min, seuil_max FROM Stocker "
|
||||
."WHERE reference_interne='".$this->_ref_in."' "
|
||||
."AND id_site='".$this->_id_site."' "
|
||||
."LIMIT 0,1";
|
||||
|
||||
$result=mysql_db_query(SQL_BASE,$requete,$connexion);
|
||||
|
||||
$row=mysql_fetch_object($result);
|
||||
|
||||
// on rempli les champs avec les resultats de la requete
|
||||
$this->_stock=$row->stock;
|
||||
$this->_seuil_min=$row->seuil_min;
|
||||
$this->_seuil_max=$row->seuil_max;
|
||||
|
||||
mysql_close($connexion);
|
||||
|
||||
}
|
||||
else {
|
||||
$this->_stock=0;
|
||||
$this->_seuil_min=0;
|
||||
$this->_seuil_max=0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toHTML(){
|
||||
$content.="<fieldset>";
|
||||
$content.="<legend>\n";
|
||||
$content.="Modifier les informations du produit ".$this->_ref_in."</legend>\n";
|
||||
$content.="<p>\n";
|
||||
$content.="Stock ";
|
||||
$content.="<input type=\"text\" name=\"stock\" value=\"".$this->_stock."\" />";
|
||||
$content.="</p>\n";
|
||||
$content.="<p>\n";
|
||||
$content.="Seuil minimum ";
|
||||
$content.="<input type=\"text\" name=\"seuil_min\" value=\"".$this->_seuil_min."\" />";
|
||||
$content.="</p>\n";
|
||||
$content.="<p>\n";
|
||||
$content.="Seuil maximum ";
|
||||
$content.="<input type=\"text\" name=\"seuil_max\" value=\"".$this->_seuil_max."\" />";
|
||||
$content.="</p>\n";
|
||||
$content.="<br />";
|
||||
$content.="</fieldset>";
|
||||
$content.="<br />";
|
||||
$content.="<p>";
|
||||
$content.="<input type=\"submit\" name=\"action\" value=\"Supprimer\" />";
|
||||
$content.="<input type=\"submit\" name=\"action\" value=\"Accepter\" />";
|
||||
$content.="</p>";
|
||||
$content.="<br />";
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
}// FIN classe ProduitInterne
|
||||
|
||||
class ProduitFournisseur {
|
||||
var $_ref_fo;
|
||||
var $_desig;
|
||||
var $_prix;
|
||||
var $_unite;
|
||||
var $_id_fo;
|
||||
var $_ref_in;
|
||||
|
||||
function ProduitFournisseur(
|
||||
$ref_fo,
|
||||
$desig,
|
||||
$prix,
|
||||
$unite,
|
||||
$id_fo,
|
||||
$ref_in){
|
||||
$this->_ref_fo=$ref_fo;
|
||||
$this->_desig=$desig;
|
||||
$this->_prix=$prix;
|
||||
$this->_unite=$unite;
|
||||
$this->_id_fo=$id_fo;
|
||||
$this->_ref_in=$ref_in;
|
||||
}
|
||||
function toHTML($editable=0){
|
||||
$content="";
|
||||
if ($editable){
|
||||
$content.="<input type=\"checkbox\" "
|
||||
."name=\"prod_id[]\" id=\"prod_id[]\" "
|
||||
."value=\"".$this->_ref_fo."\" />\n";
|
||||
}
|
||||
$content.="<span class=\"refFo\" >".$this->_ref_fo."</span> \n";
|
||||
$content.="<span class=\"desig\" >".$this->_desig."</span> \n";
|
||||
$content.="<span class=\"prix\" >".$this->_prix."</span> \n";
|
||||
$content.="<span class=\"unite\" >".$this->_unite."</span> \n";
|
||||
$content.="<span class=\"idFo\" >".$this->_id_fo."</span> \n";
|
||||
$content.="<span class=\"refIn\" >".$this->_ref_in."</span > \n";
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
72
includes/libsecuremenu.inc.php
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
if (!defined("LIBSECUREMENU_INC")){
|
||||
define(LIBSECUREMENU_INC,1);
|
||||
|
||||
/* Definition de la classe pour le menu */
|
||||
|
||||
class SecureMenu {
|
||||
var $_defaultLevel;
|
||||
var $_params;
|
||||
var $_name;
|
||||
var $_url;
|
||||
var $_level;
|
||||
var $_currentLevel;
|
||||
|
||||
/*
|
||||
* Crée un menu vide
|
||||
*/
|
||||
|
||||
function SecureMenu($title,$level=0){
|
||||
$this->_title=$title;
|
||||
$this->_name=array();
|
||||
$this->_url=array();
|
||||
$this->_visible=array();
|
||||
$this->_params=array();
|
||||
$this->_defaultLevel=$level;
|
||||
}
|
||||
|
||||
/*
|
||||
* Ajoute une entrée au menu
|
||||
*/
|
||||
|
||||
function addItem($param,$name="",$url=""){
|
||||
array_push($this->_params,$param);
|
||||
/* Verifie s'il s'agit d'un séparateur */
|
||||
$this->_name[$param]="$name";
|
||||
$this->_url[$param]="$url";
|
||||
$this->_level[$param]=$this->_defaultLevel;
|
||||
}
|
||||
|
||||
/*
|
||||
* Active une entrée du menu
|
||||
*/
|
||||
function setItemLevel($param,$level){
|
||||
$this->_level[$param]=$level;
|
||||
}
|
||||
|
||||
function setCurrentLevel($level){
|
||||
if ($level<0) { $level =0; }
|
||||
$this->_currentLevel=$level;
|
||||
}
|
||||
|
||||
function toHTML(){
|
||||
$answer="<h1>".$this->_title."</h1>";
|
||||
$answer.="<ul\n";
|
||||
foreach ($this->_params as $param){
|
||||
if (($this->_level[$param] ^ $this->_currentLevel)>0){
|
||||
$answer.="<li>"
|
||||
."<a href=\""
|
||||
.$this->_url[$param]
|
||||
."\">"
|
||||
.$this->_name[$param]
|
||||
."</a>"
|
||||
."</li>\n";
|
||||
}
|
||||
}
|
||||
$answer.="</ul>";
|
||||
return $answer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
85
includes/libuserinfo.inc.php
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
if (!defined("LIBUSERINFO_INC")){
|
||||
|
||||
define(LIBUSERINFO_INC,1);
|
||||
|
||||
define(LIBUSERINFO_CAT_ACHETEUR,'ACH');
|
||||
define(LIBUSERINFO_CAT_MAGASINIER,'MAG');
|
||||
define(LIBUSERINFO_CAT_OTHER,'OTH');
|
||||
|
||||
|
||||
class UserInfo {
|
||||
var $_firstName;
|
||||
var $_secondName;
|
||||
var $_address;
|
||||
var $_accessLevel;
|
||||
var $_id;
|
||||
var $_site;
|
||||
|
||||
function UserInfo($login, $accesslevel, $category, $catid){
|
||||
$query="";
|
||||
if ($category==LIBUSERINFO_CAT_OTHER){
|
||||
} else {
|
||||
switch($category){
|
||||
case LIBUSERINFO_CAT_ACHETEUR:
|
||||
$query="SELECT * FROM Acheteur WHERE ID_ACHETEUR='$catid' "
|
||||
."ORDER BY ID_ACHETEUR DESC LIMIT 0,1";
|
||||
break;
|
||||
case LIBUSERINFO_CAT_MAGASINIER:
|
||||
$query="SELECT * FROM Magasinier WHERE ID_MAGASINIER='$catid' "
|
||||
."ORDER BY ID_MAGASINIER DESC LIMIT 0,1";
|
||||
break;
|
||||
default: break; /* TODO: ERREUR */
|
||||
}
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if (!$connexion){
|
||||
die("Erreur serveur mysql $connexion");
|
||||
} else {
|
||||
$result=mysql_db_query(SQL_BASE,$query)
|
||||
or die($query.":".mysql_error($connexion));
|
||||
//,$connexion)
|
||||
if (mysql_num_rows($result)>0){
|
||||
$row=mysql_fetch_object($result);
|
||||
$this->_firstName=$row->nom;
|
||||
$this->_secondName=$row->prenom;
|
||||
$this->_address=$row->adresse;
|
||||
$this->_tel=$row->telephone;
|
||||
$this->_fax=$row->fax;
|
||||
$this->_site=$row->id_site;
|
||||
$this->_accessLevel=$accesslevel;
|
||||
$this->_id=$catid;
|
||||
/* TODO: remplir l'objet avec les valeurs de la BD */
|
||||
} else {
|
||||
mysql_error($connexion);
|
||||
}
|
||||
|
||||
mysql_close($connexion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getFirstName(){
|
||||
return $this->_firstName;
|
||||
}
|
||||
|
||||
function getSecondName(){
|
||||
return $this->_secondName;
|
||||
}
|
||||
|
||||
function getID(){
|
||||
return $this->_id;
|
||||
}
|
||||
|
||||
function getSite(){
|
||||
return $this->_site;
|
||||
}
|
||||
|
||||
function getAccessLevel(){
|
||||
return $this->_accessLevel;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
53
includes/scriptJS_DA.inc.php
Normal file
|
@ -0,0 +1,53 @@
|
|||
<!-- Hide script
|
||||
//<![CDATA[
|
||||
|
||||
function changeFam_Prod(famille, listeProduits) {
|
||||
|
||||
// Cette fonction est appelee lorsque famille est change
|
||||
// par un changement sur le famille
|
||||
|
||||
// Recupere la valeur de OPTION qui vient de changer
|
||||
selected_value=famille.options[famille.selectedIndex].value;
|
||||
|
||||
// Recupere le texte de OPTION qui vient de changer
|
||||
make=famille.options[famille.selectedIndex].text;
|
||||
|
||||
liste = new Array;
|
||||
i=0;
|
||||
|
||||
<?php
|
||||
$familles = donne_familles();
|
||||
$famillesJS = convertToJS($familles);
|
||||
?>
|
||||
|
||||
familles = new Array<?php echo $famillesJS; ?>;
|
||||
|
||||
<?php
|
||||
for($fam=0;$fam<sizeof($familles);$fam++) {
|
||||
print "if (make == familles[$fam]) {\n ";
|
||||
|
||||
// cherche les produits de la famille numero f
|
||||
$prods = trouve_produits($fam+1);
|
||||
$js = convertToJS($prods);
|
||||
|
||||
print "produits = new Array".$js.";\n";
|
||||
print "for(j=0; j<produits.length; j=j+2) { "
|
||||
."ref_design = produits[j] + \" : \" + produits[j+1];\n "
|
||||
."liste[i++]=new Option(ref_design, produits[j]);\n "
|
||||
."}\n "
|
||||
."}\n ";
|
||||
}
|
||||
?>
|
||||
if (i==0) {
|
||||
alert("Erreur: il devrait se passer quelque chose, mais rien ne s'est produit");
|
||||
}
|
||||
else {
|
||||
listeProduits.length=liste.length;
|
||||
for (i=0; i < liste.length; i++) {
|
||||
listeProduits.options[i]=liste[i];
|
||||
}
|
||||
listeProduits.options[0].selected=true;
|
||||
}
|
||||
}
|
||||
|
||||
//]]> End script hiding -->
|
51
index.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
include("includes.inc.php");
|
||||
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->logCheck();
|
||||
|
||||
$page->startContent();
|
||||
|
||||
?>
|
||||
<div id="contenu">
|
||||
<h2>D'Astre.Net</h2>
|
||||
<p>
|
||||
D'Astre.Net est la solution de gestion complète des achats et commandes fournisseurs
|
||||
dans le réseau d'entreprise de D'Astre S.A.
|
||||
</p>
|
||||
|
||||
<h2>Potentiel de l'application</h2>
|
||||
<p>
|
||||
Les actions possibles sont :
|
||||
</p>
|
||||
<ul>
|
||||
<li> pour les acheteurs :
|
||||
<ul>
|
||||
<li>ajouter un fournisseur</li>
|
||||
<li>ajouter un produit pour un fournisseur</li>
|
||||
<li>lister les demandes d'achat en cours</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li> pour les magasiniers:
|
||||
<ul>
|
||||
<li>créer une demande d'achat</li>
|
||||
<li>ajouter un produit à une demande d'achat (ligne de demande d'achat)</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
une plate-forme permettant blablablabla.
|
||||
blabla.
|
||||
</p>
|
||||
|
||||
<hr class="spacer" /> <!-- pour avoir toute la largeur !-->
|
||||
</div> <!-- end contenu !-->
|
||||
|
||||
<?php
|
||||
$page->endContent();
|
||||
|
||||
print $page->toHTML();
|
||||
|
||||
?>
|
51
logcheck.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
/* vérifier si le login est dans la base */
|
||||
/* récupérer les propriétés de l'user s'il est dans la base */
|
||||
|
||||
if (!$_SESSION["member"]){
|
||||
require("db.conf.php");
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
|
||||
if (!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion";
|
||||
} else {
|
||||
|
||||
/* protection des la requete */
|
||||
$login=strip_tags($_POST["login"]);
|
||||
$secureLogin=mysql_escape_string($login);
|
||||
$securePass=md5($_POST["passwd"]);
|
||||
$query="SELECT * FROM Users WHERE ( ".
|
||||
"LOGIN='".$secureLogin."' AND ".
|
||||
"PASS='".$securePass."' ".
|
||||
") ORDER BY login DESC LIMIT 0,1";
|
||||
|
||||
$result=mysql_db_query(SQL_BASE,$query,$connexion)
|
||||
or die($query.":".mysql_error($connexion));
|
||||
|
||||
if (mysql_num_rows($result)>0){
|
||||
$row=mysql_fetch_object($result);
|
||||
$_SESSION["member"]=$row->login;
|
||||
$_SESSION["userInfo"]=new UserInfo(
|
||||
$row->login,
|
||||
$row->accesslevel,
|
||||
$row->category,
|
||||
$row->idcat
|
||||
);
|
||||
|
||||
} else {
|
||||
// stopper la session...
|
||||
//print "$securePass";
|
||||
//session_destroy();
|
||||
}
|
||||
|
||||
//mysql_close($connexion);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!$_SESSION["member"]){
|
||||
header("Location: login.php");
|
||||
}
|
||||
|
||||
?>
|
39
login.php
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
include("includes.inc.php");
|
||||
|
||||
$page=new Page(__FILE__);
|
||||
/* $page->logcheck(); */
|
||||
|
||||
$page->startContent();
|
||||
|
||||
/* include("header.inc.php"); */
|
||||
?>
|
||||
|
||||
<div id="contenu">
|
||||
|
||||
<h1>Page d'identification</h1>
|
||||
|
||||
<p>Veuillez vous identifier afin d'accéder à la page
|
||||
<b><?php print $_SESSION["referer"]; ?></b>.
|
||||
</p>
|
||||
|
||||
<form action="<?php print $_SESSION["referer"]; ?>" method="post">
|
||||
<p>Utilisateur :
|
||||
<input type="text" name="login" id="login" />
|
||||
</p>
|
||||
<p>Mot de passe :
|
||||
<input type="password" name="passwd" id="passwd" />
|
||||
<input type="hidden" name="step" id="step" value="2" />
|
||||
</p>
|
||||
<input type="submit" value="Envoyer" />
|
||||
</form>
|
||||
|
||||
<hr class="spacer" /> <!-- pour avoir toute la largeur !-->
|
||||
</div> <!-- end contenu !-->
|
||||
|
||||
<?php
|
||||
|
||||
$page->endContent();
|
||||
print $page->toHTML();
|
||||
|
||||
?>
|
7
logout.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
session_start();
|
||||
session_destroy();
|
||||
header("Location: index.php");
|
||||
|
||||
?>
|
146
produits.php
Normal file
|
@ -0,0 +1,146 @@
|
|||
<?php
|
||||
//TODO: gérer la suppression de produits
|
||||
|
||||
include("includes.inc.php");
|
||||
|
||||
$page=new Page(__FILE__);
|
||||
$_SESSION["referer"]=basename(__FILE__);
|
||||
|
||||
$page->logCheck();
|
||||
$page->startContent();
|
||||
|
||||
$listeFournisseurs=new ListeFournisseurs($_SESSION["userInfo"]->getID());
|
||||
$listeProduits=new ListeProduits($listeFournisseurs->_familleId);
|
||||
|
||||
switch($_POST["action"]){
|
||||
case "Ajouter": {
|
||||
$ref_in="";
|
||||
switch($_POST["prod_refin_type"]){
|
||||
case "new": { $ref_in=$_POST["prod_refin_new"];
|
||||
$listeProduits->ajouteProduitInterne($ref_in,$_POST["prod_refin_design"],$_POST["prod_unit"]);
|
||||
}; break;
|
||||
case "old": { $ref_in=$_POST["prod_refin_old"];
|
||||
}; break;
|
||||
default :break;
|
||||
}
|
||||
$listeProduits->ajouteProduitFournisseur(
|
||||
$_POST["fournisseur"],
|
||||
$_POST["prod_designation"],
|
||||
$_POST["prod_prix"],
|
||||
$_POST["prod_unit"],
|
||||
$_POST["prod_ref"],
|
||||
$ref_in
|
||||
);
|
||||
};
|
||||
case "Supprimer": {
|
||||
$listeProduits->supprimeProduitFournisseur($_POST["prod_id"]);
|
||||
}; break;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
$listeProduits->chargeListeInterne();
|
||||
$listeProduits->chargeListeFournisseur();
|
||||
?>
|
||||
|
||||
<div id="contenu">
|
||||
<h1>Gestion des produits : <i>
|
||||
<?php print $listeFournisseurs->_familleName; ?></i>
|
||||
</h1>
|
||||
|
||||
<h2>Ajout de produits</h2>
|
||||
<form name="form"
|
||||
method="post"
|
||||
action="produits.php"
|
||||
enctype="application/x-www-form-urlencoded">
|
||||
|
||||
<?php
|
||||
if (count($listeFournisseurs->_fournisseurs)>0){
|
||||
?>
|
||||
<fieldset>
|
||||
<legend>Informations sur le produit</legend>
|
||||
<p>Fournisseurs
|
||||
<?php
|
||||
print $listeFournisseurs->toHTML(0);
|
||||
?>
|
||||
</p>
|
||||
<p>Désignation :
|
||||
<input type="text"
|
||||
name="prod_designation"
|
||||
id="prod_designation"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<p>Prix :
|
||||
<input type="text"
|
||||
name="prod_prix"
|
||||
id="prod_prix"
|
||||
/>
|
||||
€ / Unité :
|
||||
<select id="prod_unit" name="prod_unit">
|
||||
<option value="Piece">Pièce</option>
|
||||
<option value="L">Litres</option>
|
||||
<option value="Kg">Kilogrammes</option>
|
||||
<option value="M">Mètres</option>
|
||||
<option value="M^2">Mètres carrés</option>
|
||||
<option value="M^3">Mètres cubes</option>
|
||||
</select>
|
||||
</p>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Références</legend>
|
||||
<p>Reference fournisseur :
|
||||
<input type="text"
|
||||
name="prod_ref"
|
||||
id="prod_ref" />
|
||||
</p>
|
||||
<dl><dt>Reference interne :</dt>
|
||||
<dd><input type="radio" name="prod_refin_type" value="old" />
|
||||
Existante :
|
||||
<?php
|
||||
|
||||
print $listeProduits->referencesHTML();
|
||||
?>
|
||||
</dd>
|
||||
<dd>
|
||||
<input type="radio" name="prod_refin_type" value="new" />
|
||||
Nouvelle
|
||||
<ul>
|
||||
<li>Référence : <input type="text" id="prod_refin_new" name="prod_refin_new" />
|
||||
</li>
|
||||
<li>
|
||||
Description : <input type="text" id="prod_refin_design" name="prod_refin_design" />
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</p>
|
||||
</fieldset>
|
||||
|
||||
<input type="reset" id="action" name="action" value="Annuler" />
|
||||
<input type="submit" id="action" name="action" value="Ajouter" />
|
||||
|
||||
<h2>Liste des produits</h2>
|
||||
<fieldset>
|
||||
<legend>Produits de la base</legend>
|
||||
<?php
|
||||
print $listeProduits->listeFournisseurToHTML();
|
||||
if (count($listeProduits->_prodFo)>0){
|
||||
print "<input type=\"submit\" id=\"action\" name=\"action\" "
|
||||
."value=\"Supprimer\" />";
|
||||
}
|
||||
?>
|
||||
</fieldset>
|
||||
<?php
|
||||
} else {
|
||||
print "Opération impossible tant qu'aucun founisseur n'est ajouté";
|
||||
}
|
||||
?>
|
||||
</form>
|
||||
<hr class="spacer" /> <!-- pour avoir toute la largeur !-->
|
||||
</div> <!--end contenu !-->
|
||||
|
||||
<?php
|
||||
$page->endContent();
|
||||
|
||||
print $page->toHTML();
|
||||
?>
|
584
sql/MCDTrac.ger
Normal file
|
@ -0,0 +1,584 @@
|
|||
CasDAstre
|
||||
C:/Cygwin/home/SCHAWOHL/CasDAstre/sql/MCDTrac.ger
|
||||
Anonymous GNUdist
|
||||
18
|
||||
41
|
||||
0 0 1924 868
|
||||
16
|
||||
Magasinier
|
||||
155
|
||||
502
|
||||
6
|
||||
id_magasinier int
|
||||
nom varchar(32)
|
||||
prenom varchar(32)
|
||||
adresse varchar(32)
|
||||
telephone varchar(10)
|
||||
fax varchar(10)
|
||||
1
|
||||
id_magasinier
|
||||
2
|
||||
Se_situer
|
||||
Emettre
|
||||
Site
|
||||
25
|
||||
683
|
||||
5
|
||||
id_site int
|
||||
nom varchar(32)
|
||||
adresse varchar(32)
|
||||
telephone int
|
||||
fax int
|
||||
1
|
||||
id_site
|
||||
4
|
||||
Se_situer
|
||||
Appartenir
|
||||
Se_faire_sur
|
||||
Stocker
|
||||
Ligne_d_achat
|
||||
218
|
||||
223
|
||||
1
|
||||
numero_lda int
|
||||
1
|
||||
numero_lda
|
||||
4
|
||||
Comporter
|
||||
Avoir
|
||||
LA_donne_lieu_a_LC
|
||||
LA_avoir_Etat
|
||||
Demande_d_achat
|
||||
285
|
||||
371
|
||||
2
|
||||
date date
|
||||
numero_da int
|
||||
1
|
||||
numero_da
|
||||
3
|
||||
Emettre
|
||||
Concerne
|
||||
Comporter
|
||||
Produit_Interne
|
||||
126
|
||||
0
|
||||
3
|
||||
reference_interne varchar(32)
|
||||
designation varchar(32)
|
||||
unite varchar(8)
|
||||
1
|
||||
reference_interne
|
||||
4
|
||||
Avoir
|
||||
PI_correspondre_PF
|
||||
PI_appartient_FdP
|
||||
Stocker
|
||||
Acheteur
|
||||
693
|
||||
675
|
||||
6
|
||||
id_acheteur int
|
||||
nom varchar(32)
|
||||
prenom varchar(32)
|
||||
adresse varchar(32)
|
||||
telephone varchar(10)
|
||||
fax varchar(10)
|
||||
1
|
||||
id_acheteur
|
||||
3
|
||||
Appartenir
|
||||
Rediger
|
||||
A_s_occupe_FdP
|
||||
Ligne_de_commande
|
||||
686
|
||||
184
|
||||
1
|
||||
numero_ldc int
|
||||
1
|
||||
numero_ldc
|
||||
5
|
||||
Posseder
|
||||
LA_donne_lieu_a_LC
|
||||
Constituer
|
||||
LL_correspondre_LC
|
||||
LC_avoir_Etat
|
||||
Livraison
|
||||
1245
|
||||
776
|
||||
1
|
||||
numero_liv varchar(32)
|
||||
1
|
||||
numero_liv
|
||||
5
|
||||
Generer
|
||||
Contribuer
|
||||
Realiser
|
||||
Contenir
|
||||
Se_faire_sur
|
||||
LigneLivraison
|
||||
1663
|
||||
81
|
||||
1
|
||||
numero_lv varchar(32)
|
||||
1
|
||||
numero_lv
|
||||
4
|
||||
Apparaitre_dans
|
||||
LL_correspondre_LC
|
||||
LL_correspondre_LR
|
||||
Contenir
|
||||
Commande
|
||||
695
|
||||
479
|
||||
5
|
||||
date date
|
||||
date_livraison date
|
||||
heure_livr_min time
|
||||
heure_livr_max time
|
||||
numero_com int
|
||||
1
|
||||
numero_com
|
||||
5
|
||||
Concerne
|
||||
Rediger
|
||||
Generer
|
||||
Posseder
|
||||
Effectuer
|
||||
ProduitFour
|
||||
657
|
||||
59
|
||||
4
|
||||
reference_fournisseur varchar(32)
|
||||
designation varchar(32)
|
||||
prix float
|
||||
unite varchar(8)
|
||||
1
|
||||
reference_fournisseur
|
||||
4
|
||||
PI_correspondre_PF
|
||||
Vendre
|
||||
Constituer
|
||||
Apparaitre_dans
|
||||
Fournisseur
|
||||
1217
|
||||
241
|
||||
7
|
||||
nom varchar(32)
|
||||
adresse varchar(32)
|
||||
telephone int
|
||||
fax int
|
||||
SIRET varchar(32)
|
||||
SIREN varchar(32)
|
||||
id_fournisseur varchar(32)
|
||||
1
|
||||
id_fournisseur
|
||||
4
|
||||
Vendre
|
||||
Effectuer
|
||||
Realiser
|
||||
F_fournit_FdP
|
||||
LigneReception
|
||||
1663
|
||||
800
|
||||
1
|
||||
numero_lr int
|
||||
1
|
||||
numero_lr
|
||||
3
|
||||
LR_correspond_R
|
||||
LL_correspondre_LR
|
||||
LR_avoir_Etat
|
||||
Reception
|
||||
1483
|
||||
634
|
||||
1
|
||||
numero_recept int
|
||||
1
|
||||
numero_recept
|
||||
2
|
||||
Contribuer
|
||||
LR_correspond_R
|
||||
Etats_LA
|
||||
470
|
||||
364
|
||||
3
|
||||
Date date
|
||||
Libelle varchar(32)
|
||||
id_ela int
|
||||
1
|
||||
id_ela
|
||||
3
|
||||
LA_avoir_Etat
|
||||
LC_avoir_Etat
|
||||
LR_avoir_Etat
|
||||
Famille_de_produit
|
||||
910
|
||||
15
|
||||
2
|
||||
nom_fam varchar(32)
|
||||
reference_fam int
|
||||
1
|
||||
reference_fam
|
||||
3
|
||||
A_s_occupe_FdP
|
||||
PI_appartient_FdP
|
||||
F_fournit_FdP
|
||||
29
|
||||
Se_situer
|
||||
0
|
||||
157
|
||||
631
|
||||
0
|
||||
2
|
||||
Site
|
||||
0
|
||||
N
|
||||
Magasinier
|
||||
1
|
||||
1
|
||||
Emettre
|
||||
0
|
||||
157
|
||||
457
|
||||
0
|
||||
2
|
||||
Magasinier
|
||||
0
|
||||
N
|
||||
Demande_d_achat
|
||||
1
|
||||
1
|
||||
Appartenir
|
||||
0
|
||||
317
|
||||
720
|
||||
0
|
||||
2
|
||||
Acheteur
|
||||
1
|
||||
1
|
||||
Site
|
||||
0
|
||||
N
|
||||
Rediger
|
||||
0
|
||||
695
|
||||
598
|
||||
0
|
||||
2
|
||||
Commande
|
||||
1
|
||||
1
|
||||
Acheteur
|
||||
0
|
||||
N
|
||||
Concerne
|
||||
0
|
||||
333
|
||||
516
|
||||
0
|
||||
2
|
||||
Demande_d_achat
|
||||
0
|
||||
N
|
||||
Commande
|
||||
1
|
||||
N
|
||||
Comporter
|
||||
0
|
||||
218
|
||||
302
|
||||
0
|
||||
2
|
||||
Demande_d_achat
|
||||
1
|
||||
N
|
||||
Ligne_d_achat
|
||||
1
|
||||
1
|
||||
Generer
|
||||
0
|
||||
1245
|
||||
555
|
||||
0
|
||||
2
|
||||
Commande
|
||||
0
|
||||
N
|
||||
Livraison
|
||||
1
|
||||
1
|
||||
Posseder
|
||||
0
|
||||
695
|
||||
333
|
||||
0
|
||||
2
|
||||
Commande
|
||||
1
|
||||
N
|
||||
Ligne_de_commande
|
||||
1
|
||||
1
|
||||
Avoir
|
||||
0
|
||||
218
|
||||
158
|
||||
1
|
||||
quantite float
|
||||
2
|
||||
Ligne_d_achat
|
||||
1
|
||||
1
|
||||
Produit_Interne
|
||||
0
|
||||
N
|
||||
Contribuer
|
||||
0
|
||||
1461
|
||||
784
|
||||
0
|
||||
2
|
||||
Livraison
|
||||
0
|
||||
1
|
||||
Reception
|
||||
1
|
||||
N
|
||||
Effectuer
|
||||
0
|
||||
1237
|
||||
499
|
||||
0
|
||||
2
|
||||
Fournisseur
|
||||
0
|
||||
N
|
||||
Commande
|
||||
1
|
||||
1
|
||||
Constituer
|
||||
0
|
||||
470
|
||||
128
|
||||
1
|
||||
quantite float
|
||||
2
|
||||
ProduitFour
|
||||
0
|
||||
N
|
||||
Ligne_de_commande
|
||||
1
|
||||
1
|
||||
Realiser
|
||||
0
|
||||
1428
|
||||
286
|
||||
1
|
||||
date date
|
||||
2
|
||||
Livraison
|
||||
1
|
||||
1
|
||||
Fournisseur
|
||||
0
|
||||
N
|
||||
LA_avoir_Etat
|
||||
0
|
||||
430
|
||||
285
|
||||
0
|
||||
2
|
||||
Ligne_d_achat
|
||||
1
|
||||
N
|
||||
Etats_LA
|
||||
0
|
||||
1
|
||||
LC_avoir_Etat
|
||||
0
|
||||
595
|
||||
286
|
||||
0
|
||||
2
|
||||
Ligne_de_commande
|
||||
1
|
||||
N
|
||||
Etats_LA
|
||||
0
|
||||
1
|
||||
LR_correspond_R
|
||||
0
|
||||
1561
|
||||
715
|
||||
0
|
||||
2
|
||||
Reception
|
||||
1
|
||||
N
|
||||
LigneReception
|
||||
1
|
||||
1
|
||||
LL_correspondre_LC
|
||||
0
|
||||
1419
|
||||
192
|
||||
0
|
||||
2
|
||||
Ligne_de_commande
|
||||
0
|
||||
N
|
||||
LigneLivraison
|
||||
1
|
||||
1
|
||||
Apparaitre_dans
|
||||
0
|
||||
1415
|
||||
82
|
||||
1
|
||||
quantite float
|
||||
2
|
||||
ProduitFour
|
||||
0
|
||||
N
|
||||
LigneLivraison
|
||||
1
|
||||
1
|
||||
Vendre
|
||||
0
|
||||
1139
|
||||
144
|
||||
0
|
||||
2
|
||||
ProduitFour
|
||||
1
|
||||
1
|
||||
Fournisseur
|
||||
1
|
||||
N
|
||||
PI_correspondre_PF
|
||||
0
|
||||
400
|
||||
89
|
||||
0
|
||||
2
|
||||
Produit_Interne
|
||||
0
|
||||
N
|
||||
ProduitFour
|
||||
1
|
||||
1
|
||||
LL_correspondre_LR
|
||||
0
|
||||
1649
|
||||
542
|
||||
0
|
||||
2
|
||||
LigneLivraison
|
||||
0
|
||||
1
|
||||
LigneReception
|
||||
1
|
||||
1
|
||||
Contenir
|
||||
0
|
||||
1563
|
||||
249
|
||||
0
|
||||
2
|
||||
Livraison
|
||||
1
|
||||
N
|
||||
LigneLivraison
|
||||
1
|
||||
1
|
||||
Se_faire_sur
|
||||
0
|
||||
242
|
||||
784
|
||||
0
|
||||
2
|
||||
Livraison
|
||||
1
|
||||
1
|
||||
Site
|
||||
0
|
||||
N
|
||||
LR_avoir_Etat
|
||||
0
|
||||
470
|
||||
801
|
||||
1
|
||||
quantite_recue float
|
||||
2
|
||||
Etats_LA
|
||||
0
|
||||
1
|
||||
LigneReception
|
||||
1
|
||||
N
|
||||
LA_donne_lieu_a_LC
|
||||
0
|
||||
421
|
||||
185
|
||||
1
|
||||
quantite float
|
||||
2
|
||||
Ligne_d_achat
|
||||
0
|
||||
N
|
||||
Ligne_de_commande
|
||||
1
|
||||
N
|
||||
A_s_occupe_FdP
|
||||
0
|
||||
924
|
||||
720
|
||||
0
|
||||
2
|
||||
Acheteur
|
||||
1
|
||||
1
|
||||
Famille_de_produit
|
||||
1
|
||||
1
|
||||
PI_appartient_FdP
|
||||
0
|
||||
489
|
||||
30
|
||||
0
|
||||
2
|
||||
Produit_Interne
|
||||
1
|
||||
1
|
||||
Famille_de_produit
|
||||
1
|
||||
N
|
||||
F_fournit_FdP
|
||||
0
|
||||
1237
|
||||
30
|
||||
0
|
||||
2
|
||||
Famille_de_produit
|
||||
0
|
||||
N
|
||||
Fournisseur
|
||||
1
|
||||
1
|
||||
Stocker
|
||||
0
|
||||
25
|
||||
321
|
||||
3
|
||||
stock float
|
||||
seuil_min float
|
||||
seuil_max float
|
||||
2
|
||||
Site
|
||||
0
|
||||
N
|
||||
Produit_Interne
|
||||
1
|
||||
N
|
8
sql/README
Normal file
|
@ -0,0 +1,8 @@
|
|||
README
|
||||
------
|
||||
|
||||
Ordre d'execution des scripts SQL :
|
||||
- db-create.sql (creation des tables du MCD)
|
||||
- db-userbase-create.sql (ajout d'une table pour les password/acces)
|
||||
- db-alter-inc.sql (auto-increment sur certains ID)
|
||||
- db-users-fill.sql (remplissage des acces utilisateur)
|
22
sql/db-alter-inc.sql
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
ALTER TABLE casdastre.Acheteur CHANGE id_acheteur
|
||||
id_acheteur INT(11) DEFAULT '0' NOT NULL AUTO_INCREMENT;
|
||||
|
||||
ALTER TABLE casdastre.Magasinier CHANGE id_magasinier
|
||||
id_magasinier INT(11) DEFAULT '0' NOT NULL AUTO_INCREMENT;
|
||||
|
||||
ALTER TABLE casdastre.Demande_d_achat CHANGE numero_da
|
||||
numero_da INT(11) DEFAULT '0' NOT NULL AUTO_INCREMENT;
|
||||
|
||||
ALTER TABLE casdastre.Ligne_d_achat CHANGE numero_lda
|
||||
numero_lda INT(11) DEFAULT '0' NOT NULL;
|
||||
|
||||
ALTER TABLE casdastre.Etats_LA CHANGE id_ela
|
||||
id_ela INT(11) DEFAULT '0' NOT NULL AUTO_INCREMENT;
|
||||
|
||||
ALTER TABLE casdastre.Ligne_de_commande CHANGE numero_ldc
|
||||
numero_ldc INT(11) DEFAULT '0' NOT NULL AUTO_INCREMENT;
|
||||
|
||||
ALTER TABLE casdastre.Commande CHANGE numero_com
|
||||
numero_com INT(11) DEFAULT '0' NOT NULL AUTO_INCREMENT;
|
||||
|
322
sql/db-create-mcd.sql
Normal file
|
@ -0,0 +1,322 @@
|
|||
-- Automatically generated by Gerwin
|
||||
--
|
||||
-- Project CasDAstre
|
||||
-- From file: /Users/warbrain/Sites/CasDAstre/sql/MCDTrac.ger
|
||||
-- By: Anonymous GNUdist
|
||||
--
|
||||
-- Using output format: mysql
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Magasinier (
|
||||
id_magasinier int NOT NULL,
|
||||
nom varchar(32),
|
||||
prenom varchar(32),
|
||||
adresse varchar(32),
|
||||
telephone varchar(10),
|
||||
fax varchar(10),
|
||||
id_site int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Magasinier ADD PRIMARY KEY (id_magasinier);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Site (
|
||||
id_site int NOT NULL,
|
||||
nom varchar(32),
|
||||
adresse varchar(32),
|
||||
telephone int,
|
||||
fax int
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Site ADD PRIMARY KEY (id_site);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Ligne_d_achat (
|
||||
numero_lda int NOT NULL,
|
||||
numero_da int NOT NULL,
|
||||
reference_interne varchar(32),
|
||||
quantite float
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Ligne_d_achat ADD PRIMARY KEY (numero_lda);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Demande_d_achat (
|
||||
date date,
|
||||
numero_da int NOT NULL,
|
||||
id_magasinier int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Demande_d_achat ADD PRIMARY KEY (numero_da);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Produit_Interne (
|
||||
reference_interne varchar(32) NOT NULL,
|
||||
designation varchar(32),
|
||||
unite varchar(8),
|
||||
reference_fam int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Produit_Interne ADD PRIMARY KEY (reference_interne);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Acheteur (
|
||||
id_acheteur int NOT NULL,
|
||||
nom varchar(32),
|
||||
prenom varchar(32),
|
||||
adresse varchar(32),
|
||||
telephone varchar(10),
|
||||
fax varchar(10),
|
||||
id_site int
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Acheteur ADD PRIMARY KEY (id_acheteur);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Ligne_de_commande (
|
||||
numero_ldc int NOT NULL,
|
||||
numero_com int NOT NULL,
|
||||
reference_fournisseur varchar(32) NOT NULL,
|
||||
quantite float
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Ligne_de_commande ADD PRIMARY KEY (numero_ldc);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Livraison (
|
||||
numero_liv varchar(32) NOT NULL,
|
||||
numero_com int NOT NULL,
|
||||
numero_recept int NOT NULL,
|
||||
id_fournisseur varchar(32),
|
||||
date date,
|
||||
id_site int
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Livraison ADD PRIMARY KEY (numero_liv);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE LigneLivraison (
|
||||
numero_lv varchar(32) NOT NULL,
|
||||
numero_ldc int NOT NULL,
|
||||
reference_fournisseur varchar(32) NOT NULL,
|
||||
quantite float,
|
||||
numero_lr int NOT NULL,
|
||||
numero_liv varchar(32) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE LigneLivraison ADD PRIMARY KEY (numero_lv);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Commande (
|
||||
date date,
|
||||
date_livraison date,
|
||||
heure_livr_min time,
|
||||
heure_livr_max time,
|
||||
numero_com int NOT NULL,
|
||||
id_acheteur int,
|
||||
id_fournisseur varchar(32) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Commande ADD PRIMARY KEY (numero_com);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE ProduitFour (
|
||||
reference_fournisseur varchar(32) NOT NULL,
|
||||
designation varchar(32),
|
||||
prix float,
|
||||
unite varchar(8),
|
||||
id_fournisseur varchar(32) NOT NULL,
|
||||
reference_interne varchar(32) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE ProduitFour ADD PRIMARY KEY (reference_fournisseur);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Fournisseur (
|
||||
nom varchar(32),
|
||||
adresse varchar(32),
|
||||
telephone int,
|
||||
fax int,
|
||||
SIRET varchar(32),
|
||||
SIREN varchar(32),
|
||||
id_fournisseur varchar(32) NOT NULL,
|
||||
reference_fam int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Fournisseur ADD PRIMARY KEY (id_fournisseur);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE LigneReception (
|
||||
numero_lr int NOT NULL,
|
||||
numero_recept int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE LigneReception ADD PRIMARY KEY (numero_lr);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Reception (
|
||||
numero_recept int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Reception ADD PRIMARY KEY (numero_recept);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Etats_LA (
|
||||
Date date,
|
||||
Libelle varchar(32),
|
||||
id_ela int NOT NULL,
|
||||
numero_lda int,
|
||||
numero_ldc int,
|
||||
numero_lr int NOT NULL,
|
||||
quantite_recue float
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Etats_LA ADD PRIMARY KEY (id_ela);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Famille_de_produit (
|
||||
nom_fam varchar(32),
|
||||
reference_fam int NOT NULL,
|
||||
id_acheteur int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Famille_de_produit ADD PRIMARY KEY (reference_fam);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Concerne (
|
||||
numero_da int NOT NULL,
|
||||
numero_com int NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Concerne ADD PRIMARY KEY (numero_da,numero_com);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE LA_donne_lieu_a_LC (
|
||||
numero_lda int NOT NULL,
|
||||
numero_ldc int NOT NULL,
|
||||
quantite float
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE LA_donne_lieu_a_LC ADD PRIMARY KEY (numero_lda,numero_ldc);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE Stocker (
|
||||
id_site int NOT NULL,
|
||||
reference_interne varchar(32) NOT NULL,
|
||||
stock float,
|
||||
seuil_min float,
|
||||
seuil_max float
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE Stocker ADD PRIMARY KEY (id_site,reference_interne);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE Magasinier ADD FOREIGN KEY (id_site) REFERENCES Site (id_site);
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER TABLE Ligne_d_achat ADD FOREIGN KEY (numero_da) REFERENCES Demande_d_achat (numero_da);
|
||||
ALTER TABLE Ligne_d_achat ADD FOREIGN KEY (reference_interne) REFERENCES Produit_Interne (reference_interne);
|
||||
|
||||
|
||||
ALTER TABLE Demande_d_achat ADD FOREIGN KEY (id_magasinier) REFERENCES Magasinier (id_magasinier);
|
||||
|
||||
|
||||
ALTER TABLE Produit_Interne ADD FOREIGN KEY (reference_fam) REFERENCES Famille_de_produit (reference_fam);
|
||||
|
||||
|
||||
ALTER TABLE Acheteur ADD FOREIGN KEY (id_site) REFERENCES Site (id_site);
|
||||
|
||||
|
||||
ALTER TABLE Ligne_de_commande ADD FOREIGN KEY (numero_com) REFERENCES Commande (numero_com);
|
||||
ALTER TABLE Ligne_de_commande ADD FOREIGN KEY (reference_fournisseur) REFERENCES ProduitFour (reference_fournisseur);
|
||||
|
||||
|
||||
ALTER TABLE Livraison ADD FOREIGN KEY (numero_com) REFERENCES Commande (numero_com);
|
||||
ALTER TABLE Livraison ADD FOREIGN KEY (numero_recept) REFERENCES Reception (numero_recept);
|
||||
ALTER TABLE Livraison ADD FOREIGN KEY (id_fournisseur) REFERENCES Fournisseur (id_fournisseur);
|
||||
ALTER TABLE Livraison ADD FOREIGN KEY (id_site) REFERENCES Site (id_site);
|
||||
|
||||
|
||||
ALTER TABLE LigneLivraison ADD FOREIGN KEY (numero_ldc) REFERENCES Ligne_de_commande (numero_ldc);
|
||||
ALTER TABLE LigneLivraison ADD FOREIGN KEY (reference_fournisseur) REFERENCES ProduitFour (reference_fournisseur);
|
||||
ALTER TABLE LigneLivraison ADD FOREIGN KEY (numero_lr) REFERENCES LigneReception (numero_lr);
|
||||
ALTER TABLE LigneLivraison ADD FOREIGN KEY (numero_liv) REFERENCES Livraison (numero_liv);
|
||||
|
||||
|
||||
ALTER TABLE Commande ADD FOREIGN KEY (id_acheteur) REFERENCES Acheteur (id_acheteur);
|
||||
ALTER TABLE Commande ADD FOREIGN KEY (id_fournisseur) REFERENCES Fournisseur (id_fournisseur);
|
||||
|
||||
|
||||
ALTER TABLE ProduitFour ADD FOREIGN KEY (id_fournisseur) REFERENCES Fournisseur (id_fournisseur);
|
||||
ALTER TABLE ProduitFour ADD FOREIGN KEY (reference_interne) REFERENCES Produit_Interne (reference_interne);
|
||||
|
||||
|
||||
ALTER TABLE Fournisseur ADD FOREIGN KEY (reference_fam) REFERENCES Famille_de_produit (reference_fam);
|
||||
|
||||
|
||||
ALTER TABLE LigneReception ADD FOREIGN KEY (numero_recept) REFERENCES Reception (numero_recept);
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER TABLE Etats_LA ADD FOREIGN KEY (numero_lda) REFERENCES Ligne_d_achat (numero_lda);
|
||||
ALTER TABLE Etats_LA ADD FOREIGN KEY (numero_ldc) REFERENCES Ligne_de_commande (numero_ldc);
|
||||
ALTER TABLE Etats_LA ADD FOREIGN KEY (numero_lr) REFERENCES LigneReception (numero_lr);
|
||||
|
||||
|
||||
ALTER TABLE Famille_de_produit ADD FOREIGN KEY (id_acheteur) REFERENCES Acheteur (id_acheteur);
|
||||
|
||||
|
||||
ALTER TABLE Concerne ADD FOREIGN KEY (numero_da) REFERENCES Demande_d_achat (numero_da);
|
||||
ALTER TABLE Concerne ADD FOREIGN KEY (numero_com) REFERENCES Commande (numero_com);
|
||||
|
||||
|
||||
ALTER TABLE LA_donne_lieu_a_LC ADD FOREIGN KEY (numero_lda) REFERENCES Ligne_d_achat (numero_lda);
|
||||
ALTER TABLE LA_donne_lieu_a_LC ADD FOREIGN KEY (numero_ldc) REFERENCES Ligne_de_commande (numero_ldc);
|
||||
|
||||
|
||||
ALTER TABLE Stocker ADD FOREIGN KEY (id_site) REFERENCES Site (id_site);
|
||||
ALTER TABLE Stocker ADD FOREIGN KEY (reference_interne) REFERENCES Produit_Interne (reference_interne);
|
||||
|
||||
|
22
sql/db-create-table-users.sql
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
-- AccessLevel : --
|
||||
-- 1 : root --
|
||||
-- 2 : acheteur --
|
||||
-- 4 : magazinier --
|
||||
-- 8 : guest (read-only) --
|
||||
|
||||
-- Category : --
|
||||
-- 1 : acheteur --
|
||||
-- 2 : magazinier --
|
||||
-- 4 : none --
|
||||
|
||||
CREATE TABLE Users (
|
||||
login varchar(32) NOT NULL,
|
||||
pass varchar(250) NOT NULL,
|
||||
accesslevel int NOT NULL,
|
||||
category varchar(4) NOT NULL,
|
||||
idcat int
|
||||
);
|
||||
|
||||
ALTER TABLE Users ADD PRIMARY KEY (login);
|
||||
|
21
sql/db-drop.sql
Normal file
|
@ -0,0 +1,21 @@
|
|||
drop table Acheteur;
|
||||
drop table Commande;
|
||||
drop table Fournisseur;
|
||||
drop table Livraison;
|
||||
drop table Magasinier;
|
||||
drop table ProduitFour;
|
||||
drop table Produit_Interne;
|
||||
drop table Reception;
|
||||
drop table Site;
|
||||
drop table Stocker;
|
||||
drop table Users;
|
||||
drop table Famille_de_produit;
|
||||
drop table Etats_LA;
|
||||
drop table LigneLivraison;
|
||||
drop table LigneReception;
|
||||
drop table Ligne_d_achat;
|
||||
drop table Ligne_de_commande;
|
||||
drop table Demande_d_achat;
|
||||
drop table LA_donne_lieu_a_LC;
|
||||
drop table Concerne;
|
||||
|
21
sql/db-fill-commande.sql
Normal file
|
@ -0,0 +1,21 @@
|
|||
INSERT INTO Commande(date, date_livraison, heure_livr_min, heure_livr_max, numero_com, id_acheteur, id_fournisseur)
|
||||
VALUES (16/09/2004,16/09/2004,'15:00','16:00',1,1,1);
|
||||
|
||||
|
||||
INSERT INTO Commande(date, date_livraison, heure_livr_min, heure_livr_max, numero_com, id_acheteur, id_fournisseur)
|
||||
VALUES (16/09/2004,24/10/2004,'10:00','12:00',2,2,1);
|
||||
|
||||
INSERT INTO Commande(date, date_livraison, heure_livr_min, heure_livr_max, numero_com, id_acheteur, id_fournisseur)
|
||||
VALUES (16/09/2004,24/10/2004,'10:00','12:00',3,2,'BMS');
|
||||
|
||||
|
||||
INSERT INTO Commande(date, date_livraison, heure_livr_min, heure_livr_max, numero_com, id_acheteur, id_fournisseur)
|
||||
VALUES (23/08/2004,28/09/2004,'14:00','15:00',4,2,'GNU');
|
||||
|
||||
|
||||
INSERT INTO Commande(date, date_livraison, heure_livr_min, heure_livr_max, numero_com, id_acheteur, id_fournisseur)
|
||||
VALUES (08/07/2003,10/10/2003,'10:00','12:00',5,2,'3');
|
||||
|
||||
INSERT INTO Commande(date, date_livraison, heure_livr_min, heure_livr_max, numero_com, id_acheteur, id_fournisseur)
|
||||
VALUES (07/06/2004,10/06/2004,'13:00','17:00',6,2,'3');
|
||||
|
21
sql/db-fill-demandeDA.sql
Normal file
|
@ -0,0 +1,21 @@
|
|||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (10/12/2003,1,1);
|
||||
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (16/09/2004,2,2);
|
||||
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (23/07/2004,3,3);
|
||||
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (26/08/2004,4,3);
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (27/09/2004,5,4);
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (05/10/2004,6,4);
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (05/10/2003,6,4);
|
||||
INSERT INTO Demande_d_achat(date, numero_da, id_magasinier)
|
||||
VALUES (15/10/2003,7,6);
|
||||
|
||||
|
19
sql/db-fill-famille_produit.sql
Normal file
|
@ -0,0 +1,19 @@
|
|||
|
||||
-- Remplir la table des Famille_de_produit avec les informations sur les Famille_de_produit --
|
||||
-- 1 - Aciers et fontes
|
||||
-- 2 - Métaux non ferreux
|
||||
-- 3 - Produits chimiques
|
||||
-- 4 - Outillage et divers
|
||||
|
||||
INSERT INTO Famille_de_produit (reference_fam, nom_fam, id_acheteur)
|
||||
VALUES ('1','Aciers et fontes','01');
|
||||
|
||||
INSERT INTO Famille_de_produit (reference_fam, nom_fam, id_acheteur)
|
||||
VALUES ('2','Métaux non ferreux','02');
|
||||
|
||||
INSERT INTO Famille_de_produit (reference_fam, nom_fam, id_acheteur)
|
||||
VALUES ('3','Produits chimiques','03');
|
||||
|
||||
INSERT INTO Famille_de_produit (reference_fam, nom_fam, id_acheteur)
|
||||
VALUES ('4','Outillage et divers','04');
|
||||
|
12
sql/db-fill-fournisseur.sql
Normal file
|
@ -0,0 +1,12 @@
|
|||
INSERT INTO Fournisseur (nom, adresse, telephone, fax, SIRET, SIREN,id_fournisseur, reference_fam)
|
||||
VALUES ('Duppont','66 rue Jussieu', 0140002727, 0140002345,'4A474-985A23','I234lpi-45p',1,3);
|
||||
|
||||
|
||||
INSERT INTO Fournisseur (nom, adresse, telephone, fax, SIRET, SIREN,id_fournisseur, reference_fam)
|
||||
VALUES ('Blik','37 rue Blanchette', 009485327, 019432345,'4Anfkd-5A23','I-lpi-45p',2,3);
|
||||
|
||||
INSERT INTO Fournisseur (nom, adresse, telephone, fax, SIRET, SIREN,id_fournisseur, reference_fam)
|
||||
VALUES ('Francoisette','37 rue duchamps', 64509947, 049590345,'hjd-m44d-5A23','456IO-45p',3,3);
|
||||
|
||||
INSERT INTO Fournisseur (nom, adresse, telephone, fax, SIRET, SIREN,id_fournisseur, reference_fam)
|
||||
VALUES ('Carlosse','37 rue elysee', 0154546785, 0156778488,'ZZZ5-34d-5A67','677GF-45YU',4,3);
|
10
sql/db-fill-ligne_d_achat.sql
Normal file
|
@ -0,0 +1,10 @@
|
|||
INSERT INTO Ligne_d_achat(numero_lda, numero_da, reference_interne, quantite)
|
||||
VALUES (3,4,'A72',260);
|
||||
INSERT INTO Ligne_d_achat(numero_lda, numero_da, reference_interne, quantite)
|
||||
VALUES (4,3,'AC45',300);
|
||||
INSERT INTO Ligne_d_achat(numero_lda, numero_da, reference_interne, quantite)
|
||||
VALUES (5,2,'A77',780);
|
||||
INSERT INTO Ligne_d_achat(numero_lda, numero_da, reference_interne, quantite)
|
||||
VALUES (6,6,'A43',978);
|
||||
INSERT INTO Ligne_d_achat(numero_lda, numero_da, reference_interne, quantite)
|
||||
VALUES (7,1,'A33',780);
|
20
sql/db-fill-ligne_de_commande.sql
Normal file
|
@ -0,0 +1,20 @@
|
|||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (1,1,'FOO1',145);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (2,2,'FOO2',770);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (3,2,'FOO3',500);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (4,1,'FOO2',65);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (5,6,'FOO2',90);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (6,5,'FOO1',480);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (7,3,'FOO1',100);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (8,3,'FOO3',800);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (9,3,'FOO4',520);
|
||||
INSERT INTO Ligne_de_commande(numero_ldc, numero_com, reference_fournisseur, quantite)
|
||||
VALUES (10,4,'FOO4',260);
|
22
sql/db-fill-produit_extern.sql
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
|
||||
|
||||
|
||||
INSERT INTO ProduitFour (reference_fournisseur, designation, prix, id_fournisseur,reference_interne)
|
||||
VALUES ('Four1','Vis a tête fraise',23,'1', 'M56');
|
||||
|
||||
INSERT INTO ProduitFour (reference_fournisseur, designation, prix, id_fournisseur,reference_interne)
|
||||
VALUES ('F002','Ecrou de 3 a tete fraisa',6,'2', 'M56');
|
||||
|
||||
INSERT INTO ProduitFour (reference_fournisseur, designation, prix, id_fournisseur,reference_interne)
|
||||
VALUES ('F003','Embou file D18',91,'1', 'M56');
|
||||
|
||||
|
||||
INSERT INTO ProduitFour (reference_fournisseur, designation, prix, id_fournisseur,reference_interne)
|
||||
VALUES ('F004','Racord baisse pression',72,'3','P2');
|
||||
|
||||
INSERT INTO ProduitFour (reference_fournisseur, designation, prix, id_fournisseur,reference_interne)
|
||||
VALUES ('F005','Petit verin',68,'4', 'P2');
|
||||
|
||||
INSERT INTO ProduitFour (reference_fournisseur, designation, prix, id_fournisseur,reference_interne)
|
||||
VALUES ('F006','Pigon',56,'2', 'P2');
|
49
sql/db-fill-produit_interne.sql
Normal file
|
@ -0,0 +1,49 @@
|
|||
|
||||
-- Remplir la table des Produit_Interne avec les informations sur les Produit_Interne --
|
||||
|
||||
-- reference_fam est la reference_fam de la famille de produit
|
||||
-- 1 - Aciers et fontes
|
||||
-- 2 - Métaux non ferreux
|
||||
-- 3 - Produits chimiques
|
||||
-- 4 - Outillage et divers
|
||||
|
||||
-- Aciers et fontes
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('A059','arbre flex','1');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('F109','fer solide','1');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation,reference_fam)
|
||||
VALUES ('T059','titane','1');
|
||||
|
||||
-- Métaux non ferreux
|
||||
INSERT INTO Produit_Interne (reference_interne, designation,reference_fam)
|
||||
VALUES ('A72','Plaque aluminium','2');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('A07','Aluminium AC04','2');
|
||||
|
||||
-- Produits chimiques
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('Ac56','Acide corrosif', '3');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('D01','Disolvant', '3');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('D78','Diluant', '3');
|
||||
|
||||
-- Outillage et divers
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('M56','Marteau', '4');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('P23','Perceuse', '4');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('B001','Burin', '4');
|
||||
|
||||
INSERT INTO Produit_Interne (reference_interne, designation, reference_fam)
|
||||
VALUES ('P2','Ensemble outils de precision', '4');
|
||||
|
12
sql/db-fill-site.sql
Normal file
|
@ -0,0 +1,12 @@
|
|||
INSERT INTO Site(id_site,nom,adresse,telephone,fax)
|
||||
Values(4,'Usine Bouchard','45 rue Saint Honoré 75012','0140051595','0140051056');
|
||||
|
||||
INSERT INTO Site(id_site,nom,adresse,telephone,fax)
|
||||
Values(5,'EquipeForce','36 allée des Genies Motreale','0454665687','0466049687');
|
||||
|
||||
INSERT INTO Site(id_site,nom,adresse,telephone,fax)
|
||||
Values(6,'OutillageTop','125 av de Jean Jaures','0454665687','0466049687');
|
||||
|
||||
INSERT INTO Site(id_site,nom,adresse,telephone,fax)
|
||||
Values(7,'OutilDemon','76 rue des astres','067686687','056749687');
|
||||
|
15
sql/db-fill-sites.sql
Normal file
|
@ -0,0 +1,15 @@
|
|||
|
||||
-- Remplir la table des sites avec les informations sur les sites --
|
||||
-- 1 - Siège
|
||||
-- 2 - Usine Pont-Quéau
|
||||
-- 3 - Usine Boulogne
|
||||
|
||||
INSERT INTO Site (id_site,nom, adresse, telephone, fax)
|
||||
VALUES ('1','Siège','22 rue des petits bois','0142028035','0145360485');
|
||||
|
||||
INSERT INTO Site (id_site,nom, adresse, telephone, fax)
|
||||
VALUES ('2','Usine Pont-Quéau','21 allée de Menfouest, Pont-Quéau 29180 Plogonnec','0242028035','0145360485');
|
||||
|
||||
INSERT INTO Site (id_site,nom, adresse, telephone, fax)
|
||||
VALUES ('3','Usigne Boulogne','230 rue Damocles, 92350 Boulogne','0142070809','0142070809');
|
||||
|
34
sql/db-fill-users.sql
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
--
|
||||
INSERT INTO Users (login, pass, accesslevel, category, idcat)
|
||||
VALUES ('emile.baud', 'd6af45a5d57343e2943460d318d7de4b', '15', 'OTH','3');
|
||||
-- login : emile.baud / kingofziuniverse --
|
||||
|
||||
--
|
||||
INSERT INTO Acheteur (nom, prenom, adresse, telephone, fax, id_site)
|
||||
VALUES ('Pierre', 'D\'Angle', '27 place des Dolmen', '0116336110', '0123456789', '1');
|
||||
INSERT INTO Users (login, pass, accesslevel, category, idcat)
|
||||
VALUES ('pierre.dangle', '9e8e37aeb4449d579e9a58ce02e9f2fd', '1', 'ACH', '1');
|
||||
-- login: pierre.dangle / password : bicycle --
|
||||
|
||||
--
|
||||
INSERT INTO Acheteur (nom, prenom, adresse, telephone, fax, id_site)
|
||||
VALUES ('Charles', 'Roy', '27 rue du Trone', '0216736110', '0143436681', '1');
|
||||
INSERT INTO Users (login, pass, accesslevel, category, idcat)
|
||||
VALUES ('charles.roy', 'b6d46f2791b61b4ad114b4183049b39c', '1', 'ACH', '2');
|
||||
-- login: charles.roy / password : charles.roy --
|
||||
|
||||
--
|
||||
INSERT INTO Magasinier (nom, prenom, adresse, telephone, fax, id_site)
|
||||
VALUES ('Bob', 'Legras', '151 avenue Mayo', '0452361105', '0141239841', '1');
|
||||
INSERT INTO Users (login, pass, accesslevel, category, idcat)
|
||||
VALUES ('monsieur.legras', '183840772d3a679f148b590e35200a7f', '2', 'MAG', '2');
|
||||
-- login: monsieur.legras / password : monsieur.legras --
|
||||
|
||||
--
|
||||
INSERT INTO Magasinier (nom, prenom, adresse, telephone, fax, id_site)
|
||||
VALUES ('Jules', 'Schtöjninczec', '151 avenue du Tripalium', '0452361105', '0141239841', '1');
|
||||
INSERT INTO Users (login, pass, accesslevel, category, idcat)
|
||||
VALUES ('monsieur.jules', '183840772d3a679f148b590e35200a7f', '2', 'MAG', '2');
|
||||
-- login: monsieur.legras / password : monsieur.legras --
|
||||
|
73
sql/drop.php
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Script d'installation de D'Astre.Net
|
||||
* -------------------------------------
|
||||
*
|
||||
* A exécuter pour :
|
||||
* - créer les tables de la base de donnée
|
||||
* - remplir avec des valeurs par défaut (démonstration).
|
||||
*/
|
||||
|
||||
$include_path=ini_get('include_path');
|
||||
$include_path.=":../includes:../config";
|
||||
ini_set('include_path', $include_path);
|
||||
require("db.conf.php");
|
||||
require("libdbmanip.inc.php");
|
||||
|
||||
print "<html>\n";
|
||||
print "<head>\n";
|
||||
print "<title>D'Astre.Net : Script d'installation </title>\n";
|
||||
print "<style type='text/css'>";
|
||||
?>
|
||||
span.good {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.bad{
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: courier, mono;
|
||||
background: #eee;
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
margin-left:20px;
|
||||
margin-right:20px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.msg {
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
margin-left:20px;
|
||||
margin-right:20px;
|
||||
margin-bottom:5px;
|
||||
background: #ddd;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.traitement{
|
||||
max-height: 300px;
|
||||
overflow: auto;
|
||||
}
|
||||
<?php
|
||||
print "</style>";
|
||||
print "</head>";
|
||||
print "<body>";
|
||||
echo "$include_path<br />";
|
||||
echo "<b>SQL_SERVER:</b> ".SQL_SERVER."<br />";
|
||||
echo "<b>SQL_USER:</b> ".SQL_USER."<br />";
|
||||
|
||||
$files=array(
|
||||
"db-drop.sql"
|
||||
);
|
||||
|
||||
executeSQLFiles($files);
|
||||
|
||||
print "</body></html>";
|
||||
|
||||
?>
|
85
sql/install.php
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Script d'installation de D'Astre.Net
|
||||
* -------------------------------------
|
||||
*
|
||||
* A exécuter pour :
|
||||
* - créer les tables de la base de donnée
|
||||
* - remplir avec des valeurs par défaut (démonstration).
|
||||
*/
|
||||
|
||||
$include_path=ini_get('include_path');
|
||||
$include_path.=":../includes:../config";
|
||||
ini_set('include_path', $include_path);
|
||||
require("db.conf.php");
|
||||
require("libdbmanip.inc.php");
|
||||
|
||||
print "<html>\n";
|
||||
print "<head>\n";
|
||||
print "<title>D'Astre.Net : Script d'installation </title>\n";
|
||||
print "<style type='text/css'>";
|
||||
?>
|
||||
span.good {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.bad{
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: courier, mono;
|
||||
background: #eee;
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
margin-left:20px;
|
||||
margin-right:20px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.msg {
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
margin-left:20px;
|
||||
margin-right:20px;
|
||||
margin-bottom:5px;
|
||||
background: #ddd;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.traitement{
|
||||
max-height: 300px;
|
||||
overflow: auto;
|
||||
}
|
||||
<?php
|
||||
print "</style>";
|
||||
print "</head>";
|
||||
print "<body>";
|
||||
echo "$include_path<br />";
|
||||
echo "<b>SQL_SERVER:</b> ".SQL_SERVER."<br />";
|
||||
echo "<b>SQL_USER:</b> ".SQL_USER."<br />";
|
||||
|
||||
$files=array(
|
||||
"db-create-mcd.sql",
|
||||
"db-create-table-users.sql",
|
||||
"db-alter-inc.sql",
|
||||
"db-fill-sites.sql",
|
||||
"db-fill-users.sql",
|
||||
"db-fill-famille_produit.sql",
|
||||
/* "db-fill-fournisseur.sql", */
|
||||
"db-fill-produit_interne.sql",
|
||||
/* "db-fill-produit_extern.sql", */
|
||||
/* "db-fill-magasinier.sql", */
|
||||
/* "db-fill-acheteur.sql", */
|
||||
/* "db-fill-demandeDA.sql", danger rivka */
|
||||
"db-fill-site.sql",
|
||||
);
|
||||
|
||||
executeSQLFiles($files);
|
||||
|
||||
print "</body></html>";
|
||||
|
||||
?>
|
78
sql/libdbmanip.inc.php
Normal file
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
if (!defined("LIBDBMANIP_INC")){
|
||||
define(LIBDBMANIP_INC,1);
|
||||
|
||||
if (!function_exists('file_get_contents'))
|
||||
{
|
||||
function file_get_contents($filename, $use_include_path = 0)
|
||||
{
|
||||
$file = @fopen($filename, 'rb', $use_include_path);
|
||||
if ($file) {
|
||||
if ($fsize = @filesize($filename)) { $data = fread($file, $fsize); }
|
||||
else {
|
||||
while (!feof($file)) {$data .= fread($file, 1024);}
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
} // exist function
|
||||
|
||||
function executeSQLFiles($files){
|
||||
$connexion = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD);
|
||||
if (!$connexion) {
|
||||
echo "Erreur serveur mysql $connexion :";
|
||||
print mysql_error($connexion);
|
||||
} else {
|
||||
|
||||
|
||||
foreach ($files as $file) {
|
||||
print "<h2>Traitement de $file...</h2>\n";
|
||||
print "<div class='traitement'>\n";
|
||||
/*="db-create-mcd.sql"; */
|
||||
if (is_file($file)){
|
||||
$sqlfile=file_get_contents($file);
|
||||
$queries=split("[\n\r]",$sqlfile);
|
||||
foreach ($queries as $query){
|
||||
if (preg_match('/^\s*--/',$query)){
|
||||
/* ne rien faire */
|
||||
$oldq="";
|
||||
} else {
|
||||
if (preg_match('/;\s*$/',$query)){
|
||||
// on récupere les vieux morceaux //
|
||||
$query=$oldq.$query;
|
||||
$oldq="";
|
||||
$query=preg_replace('/\s+/',' ',$query);
|
||||
$query=preg_replace('/;\s*$/','',$query);
|
||||
$query=preg_replace('/;\s*$/','',$query);
|
||||
print "<p class='code'>";
|
||||
print "\n$query\n";
|
||||
print "</p>\n";
|
||||
print "<p class='msg'>\n";
|
||||
$result=mysql_db_query(SQL_BASE,$query,$connexion);
|
||||
if (!$result){
|
||||
echo "<span class='bad'>\nErreur :";
|
||||
print mysql_error($connexion);
|
||||
print "\n</span>\n";
|
||||
} else {
|
||||
echo "<span class='good'>Succès.</span>\n";
|
||||
}
|
||||
print "</p>\n";
|
||||
} else {
|
||||
$oldq=$oldq.$query;
|
||||
//print "$oldq<br/>";
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "<span class='bad'>"
|
||||
. "Erreur : Le fichier $file n'existe pas !</span></p>";
|
||||
}
|
||||
print "</div>\n";
|
||||
}
|
||||
|
||||
mysql_close($connexion);
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
28
styles/columnContent.css
Normal file
|
@ -0,0 +1,28 @@
|
|||
|
||||
#columnContent {
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
left: 210px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
#columnContent h1 {
|
||||
clear:both;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
border: 0px none #000;
|
||||
border-bottom: 2px solid #00f;
|
||||
text-align: left;
|
||||
color:#a00;
|
||||
}
|
||||
|
||||
#columnContent h2 {
|
||||
clear:both;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
border: 0px none #000;
|
||||
border-bottom: 1px solid #00f;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
87
styles/contenu.css
Normal file
|
@ -0,0 +1,87 @@
|
|||
#contenu {
|
||||
float:top;
|
||||
display:block;
|
||||
border: 1px dashed #000;
|
||||
padding: 10px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
#contenu form input {
|
||||
background-color: #eef;
|
||||
border: 1px solid #999; /* solid */
|
||||
|
||||
}
|
||||
|
||||
#contenu legend img {
|
||||
/* float: left; */
|
||||
border: 0px none #000;
|
||||
margin: 0px;
|
||||
margin-left: 5px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#contenu legend a {
|
||||
display:inline;
|
||||
color:blue;
|
||||
font-weight: bold;
|
||||
left: 0px;
|
||||
right;
|
||||
}
|
||||
|
||||
#contenu legend a:hover {
|
||||
background:#fc9;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
#contenu form .info {
|
||||
width: 150px;
|
||||
margin: 1px;
|
||||
height: 2em;
|
||||
background: #ccc;
|
||||
font-weight: bold;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
#contenu form input.good {
|
||||
width: 100px;
|
||||
height: 2em;
|
||||
background: #afa;
|
||||
}
|
||||
|
||||
#contenu form input.bad {
|
||||
width: 100px;
|
||||
height: 2em;
|
||||
background: #faa;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
#contenu input.chkbox {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
background: #aaf;
|
||||
}
|
||||
|
||||
#contenu p img {
|
||||
float: left;
|
||||
border: 0px none #000;
|
||||
margin: 0px;
|
||||
margin-left: 15px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#contenu p a {
|
||||
display:block;
|
||||
color:blue;
|
||||
font-weight: bold;
|
||||
left: 0px;
|
||||
right;
|
||||
}
|
||||
|
||||
#contenu p a:hover {
|
||||
background:#fc9;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
34
styles/contenuDA.css
Normal file
|
@ -0,0 +1,34 @@
|
|||
#contenuDA {
|
||||
float:top;
|
||||
display:block;
|
||||
border: 1px dashed #000;
|
||||
padding: 10px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
#contenuDA form .info {
|
||||
/* width: 150px; */
|
||||
margin: 1px;
|
||||
height: 2em;
|
||||
background: #ccc;
|
||||
font-weight: bold;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
input.livraison {
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
span.DAproduit {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.DAfamille {
|
||||
font-style: italic;
|
||||
}
|
34
styles/footer.css
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
#footer {
|
||||
float: top;
|
||||
display:block;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
font-family: helvetica, arial, sans-serif;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
#footer span.validator {
|
||||
float: left;
|
||||
width: 160px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-right: 10px;
|
||||
border: 0px none #000;
|
||||
border-right: 1px dashed #fff;
|
||||
}
|
||||
|
||||
#footer .validator a {
|
||||
font-size: 90%;
|
||||
display:block;
|
||||
color:white;
|
||||
text-decoration: none;
|
||||
margin: 10px;
|
||||
}
|
||||
#footer .validator a:hover {
|
||||
color: #ddf;
|
||||
text-decoration: underline overline;
|
||||
}
|
23
styles/header.css
Normal file
|
@ -0,0 +1,23 @@
|
|||
|
||||
#header {
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 40px;
|
||||
color: white;
|
||||
margin: 0px;
|
||||
background: black;
|
||||
border:0px;
|
||||
border-bottom: 2px solid #fff;
|
||||
}
|
||||
|
||||
#header h1 {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#header h1 img {
|
||||
margin:0px;
|
||||
margin-left:5px;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
85
styles/main.css
Normal file
|
@ -0,0 +1,85 @@
|
|||
body {
|
||||
background: #444;
|
||||
background-image: url("/images/background.jpg");
|
||||
background-repeat: repeat-both;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
span.error {
|
||||
display:block;
|
||||
color :red;
|
||||
font-weight: bold;
|
||||
}
|
||||
hr.spacer {
|
||||
display:block;
|
||||
visibility:hidden;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
select {
|
||||
background-color: #ddf;
|
||||
border: 1px solid #999; /* solid */
|
||||
margin-left: auto;
|
||||
margin-right: 10px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
form input,fieldset input {
|
||||
background-color: #ddf;
|
||||
border: 1px solid #999; /* solid */
|
||||
margin-left: auto;
|
||||
margin-right: 10px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
input[type=submit],input[type=reset] {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
input[type=checkbox], input[type=radio] {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
-moz-border-radius: 7px;
|
||||
-moz-border-width: 2px;
|
||||
}
|
||||
|
||||
input.valider {
|
||||
display:block;
|
||||
float:center;
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width: 300px;
|
||||
color: #00a;
|
||||
}
|
||||
|
||||
.ligne0 {
|
||||
margin: 0px;
|
||||
padding: 3px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
|
||||
.ligne1 {
|
||||
margin: 0px;
|
||||
padding: 3px;
|
||||
background: #ccffff;
|
||||
}
|
||||
|
||||
span.id_da {
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
span.ref_in {
|
||||
font-weight: bold;
|
||||
}
|
||||
span.designation {
|
||||
font-weight: bold;
|
||||
}
|
72
styles/menuGauche.css
Normal file
|
@ -0,0 +1,72 @@
|
|||
#menuGauche {
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
left: 10px;
|
||||
width: 170px;
|
||||
padding:0px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 5px;
|
||||
|
||||
border: 1px dashed #000; /* inset */
|
||||
background: white;
|
||||
background-image: url(/images/bgmenubar.png);
|
||||
background-repeat: repeat-y;
|
||||
}
|
||||
|
||||
#menuGauche h1 {
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
color: #fdd;
|
||||
padding:0px;
|
||||
margin: 0px;
|
||||
margin-top: 5px;
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
border: 0px none #000;
|
||||
/* border-top: 2px outset #f00;
|
||||
border-right: 2px outset #f00;
|
||||
border-bottom: 2px outset #f00; */
|
||||
background: black;
|
||||
}
|
||||
|
||||
#menuGauche ul {
|
||||
padding: 0px;
|
||||
padding-left:17px;
|
||||
}
|
||||
|
||||
#menuGauche p {
|
||||
clear:both;
|
||||
padding: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#menuGauche p img {
|
||||
float: left;
|
||||
border: 0px none #000;
|
||||
margin: 0px;
|
||||
margin-left: 15px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#menuGauche p a {
|
||||
display:block;
|
||||
color:blue;
|
||||
font-weight: bold;
|
||||
left: 0px;
|
||||
right;
|
||||
}
|
||||
|
||||
#menuGauche p a:hover {
|
||||
background:#fc9;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#menuGauche input.searcher {
|
||||
width: 120px;
|
||||
margin-left: 30px;
|
||||
background: #eef;
|
||||
}
|
24
tools/cda-update
Executable file
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
SSH_USER=$1
|
||||
if [ $SSH_USER="" ]; then
|
||||
SSH_USER=$USER
|
||||
fi
|
||||
LOCAL_CDA_DIR=$(pwd)
|
||||
DIST_CDA_DIR=/home/$SSH_USER/public_html/CDA/
|
||||
DIST_CDA_SERV=ssh.shamox.ath.cx
|
||||
|
||||
echo -e "User : \t$SSH_USER"
|
||||
echo -e "Local Dir : \t$LOCAL_CDA_DIR"
|
||||
echo -e "Remote Dir : \t$DIST_CDA_DIR"
|
||||
echo -e "Server : \t$DIST_CDA_SERV"
|
||||
echo -e -n "Erasing previous version... "
|
||||
ssh -C $DIST_CDA_SERV -- mkdir -p $DIST_CDA_DIR
|
||||
ssh -C $DIST_CDA_SERV -- rm -r $DIST_CDA_DIR
|
||||
echo -e "done"
|
||||
echo -e "Updating current version... "
|
||||
ssh -C $DIST_CDA_SERV -- mkdir -p $DIST_CDA_DIR
|
||||
( cd $LOCAL_CDA_DIR; \
|
||||
scp -C -r $LOCAL_CDA_DIR/* $SSH_USER@$DIST_CDA_SERV:$DIST_CDA_DIR )
|
||||
echo -e "Update done"
|
||||
|
5
tools/md5-gen.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
$md5pass=md5($_GET["pass"]);
|
||||
print "<p style='border:2px solid #f00; padding: 15px;'>$md5pass</p>";
|
||||
?>
|