l3.cas-d-astre/includes/libLDachat.inc.php
2009-05-01 08:39:36 +00:00

304 lines
7.6 KiB
PHP

<?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
?>