/**
* Classe de gestion des livraisons clients de la boutique
*
* Permet de créer, modifier, supprimer des livraisons, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_clientLivraison
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID_client;
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID_commande;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $civiliteLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $nomLivraison;
/**
* @var string $titre Prenom de la rubrique
* @access private
*/
var $prenomLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $adresseLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $adresseLivraison2;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $villeLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $codePostalLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $telLivraison;
/**
* @var string $paysLivraison Pays de livraison
* @access private
*/
var $paysLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $ID_pays;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $message;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $messageLivraison;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $cadeau;
/**
* @var string $titre Nom de la rubrique
* @access private
*/
var $cadeauPointsFidelite;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_clientLivraison ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_client_livraison WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Enregistre l'objet en base de donnée
* Si l'ID est renseigné ==> modification
* Sinon ==> insertion
* @access public
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
//si l'ID est renseigné, on modifie, sinon, on insere
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_client_livraison SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_client_livraison SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
}
/**
* Supprime l'objet en base de donnée
* @access public
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_client_livraison WHERE ID='".$this->ID."';";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* Liste les clients
* @access public
*/
function lister()
{
$requete = "SELECT * FROM boutique_obj_client_livraison ORDER BY ID ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_clientLivraison($ligne['ID']);
}
return ($resultats);
}
/**
* Récupérer la livraison de la commande ID_commande pour le client ID_client
* @access public
*/
function getLivraisonClient($ID_client, $ID_commande)
{
$requete = "SELECT * FROM boutique_obj_client_livraison
WHERE ID_client = '".$ID_client."'
AND ID_commande = '".$ID_commande."'
ORDER BY ID DESC";
//echo $requete;
$ligne = T_LAETIS_site::requeter($requete);
$resultats = new Tbq_clientLivraison($ligne[0]['ID']);
return $resultats;
} // FIN function getLivraisonClient($ID_client, $ID_commande)
function setCadeauPointsFidelite()
{
$client = new Tclient($this->ID_client);
$points = new TpointsFidelite();
$this->cadeauPointsFidelite = $points->getCadeau($client->pointsFidelite);
// On ajoute le cadeau fidélité en base
$requete = "UPDATE boutique_obj_client_livraison SET cadeauPointsFidelite = '".$this->cadeauPointsFidelite."'
WHERE ID='".$this->ID."';";
T_LAETIS_site::requeter($requete);
} // FIN function setCadeauPointsFidelite()
function enleverCadeauPointsFidelite()
{
// On enlève le cadeau fidélité en base
$requete = "UPDATE boutique_obj_client_livraison SET cadeauPointsFidelite = ''
WHERE ID='".$this->ID."';";
T_LAETIS_site::requeter($requete);
} // FIN function setCadeauPointsFidelite()
function exporterCSV($detailClientLivraison)
{
$nomFichier = dirname(__FILE__)."/../../admin/commandes/laposte/".$detailClientLivraison->ID_commande.".csv";
$fp = fopen($nomFichier,'w');
// écriture des entetes
//$ligne = '';
//$ligne .= "ID;nomLivraison;adresseLivraison;adresseLivraison2;adresseLivraison3;codePostalLivraison;villeLivraison;telLivraison;messageLivraison;ID_pays";
//$ligne .= "\r\n";
//fwrite($fp,$ligne);
/*
$query="SELECT typ_pays.pays FROM typ_pays
WHERE typ_pays.ID = '".$detailClientLivraison['ID_pays']."'";
$res=$this->query($query);
$row=$res->fetchRow(DB_FETCHMODE_ASSOC);
$res->free(DB_Result);
*/
$ligne = '';
$ligne .= $detailClientLivraison->ID.';'.$detailClientLivraison->civiliteLivraison.' '.$detailClientLivraison->nomLivraison.' '.$detailClientLivraison->prenomLivraison.';'.$detailClientLivraison->adresseLivraison.';'.$detailClientLivraison->adresseLivraison2.';'.';'.$detailClientLivraison->codePostalLivraison.';'.$detailClientLivraison->villeLivraison.';'.$detailClientLivraison->telLivraison.';'.$detailClientLivraison->messageLivraison.';'.$detailClientLivraison->ID_pays.';';
fwrite($fp,$ligne);
fclose($fp);
} // FIN function exporter()
/////////
// Fonctions pour le CARNET D'ADRESSE
////////
/**
* Enregistre l'adresse dans le carnet d'adresse
* Si existe ==> rien
* Sinon ==> insertion
* @access public
*/
function enregistrerCarnetAdresse($valeurs)
{
$requete = "SELECT * FROM boutique_obj_client_carnet_adresse
WHERE ID_client = '".$valeurs['ID_client']."'
AND afficherAdresse = 1
AND nomLivraison='".addslashes($valeurs['nomLivraison'])."'
AND prenomLivraison='".addslashes($valeurs['prenomLivraison'])."'
AND adresseLivraison='".addslashes($valeurs['adresseLivraison'])."'
AND villeLivraison='".addslashes($valeurs['villeLivraison'])."'
AND codePostalLivraison='".addslashes($valeurs['codePostalLivraison'])."'
AND ID_pays='".$valeurs['ID_pays']."'";
$resultats = T_LAETIS_site::requeter($requete);
// Si cette adresse n'est pas déjà présente
if (! ($resultats[0]['ID']>0) )
{
// C'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_client_carnet_adresse
(`ID_client`, `civiliteLivraison`, `nomLivraison`, `prenomLivraison`,
`adresseLivraison`, `adresseLivraison2`,
`villeLivraison`, `codePostalLivraison`, `telLivraison` , `ID_pays`,
`afficherAdresse`)
VALUES ('".$valeurs['ID_client']."',
'".$valeurs['civiliteLivraison']."',
'".addslashes($valeurs['nomLivraison'])."',
'".addslashes($valeurs['prenomLivraison'])."',
'".addslashes($valeurs['adresseLivraison'])."',
'".addslashes($valeurs['adresseLivraison2'])."',
'".addslashes($valeurs['villeLivraison'])."',
'".addslashes($valeurs['codePostalLivraison'])."',
'".addslashes($valeurs['telLivraison'])."',
'".$valeurs['ID_pays']."', '1')";
T_LAETIS_site::requeter($requete);
}
} // FIN function enregistrerCarnetAdresse($valeurs)
/**
* Liste les différentes adresses de livraison présentes dans le carnet d'adresse
* pour un client dont l'ID est passé en paramètre
* On affiche que celles dont afficherAdresse est a 1
* @access public
* @param int $ID_client ID du client
* @return Objets Tbq_clientLivraison correspondants
*/
function listerCarnetAdresseClient($ID_client)
{
$requete = "SELECT * FROM boutique_obj_client_carnet_adresse
WHERE ID_client = '".$ID_client."'
AND afficherAdresse = 1
ORDER BY adresseLivraison, villeLivraison ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
//$resultats[] = new Tbq_clientLivraison($ligne['ID']);
$resultats[] = $ligne;
}
return ($resultats);
} // FIN function listerCarnetAdresseClient($ID_client)
/**
* Liste les différentes adresses de livraison présentes dans la base client_livraison
* pour un client dont l'ID est passé en paramètre
* @access public
* @param int $ID_client ID du client
* @return Objets Tbq_clientLivraison correspondants
*/
function listerAdresseLivraison($ID_client)
{
$requete = "SELECT * FROM boutique_obj_client_livraison
WHERE ID_client = '".$ID_client."'
ORDER BY adresseLivraison, villeLivraison ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_clientLivraison($ligne['ID']);
}
return ($resultats);
} // FIN function listerAdresseLivraison($ID_client)
/**
* Affecte la valeur 0 a afficherAdresse pour ne plus afficher cette adresse
* de livraison
* @access public
*/
function supprimerAdresseCarnet($ID_carnet)
{
$requete = "UPDATE boutique_obj_client_carnet_adresse SET afficherAdresse = '0'
WHERE ID='".$ID_carnet."';";
T_LAETIS_site::requeter($requete);
} // FIN function supprimerAdresseCarnet($ID_carnet)
function traitementAdresse($adresseFacturation)
{
function split_words($string, $max = 35)
{
$words = preg_split('/\s/', $string);
$lines = array();
$line = '';
foreach ($words as $k => $word) {
$length = strlen($line . ' ' . $word);
if ($length <= $max) {
$line .= ' ' . $word;
} else if ($length > $max) {
if (!empty($line)) $lines[] = trim($line);
$line = $word;
} else {
$lines[] = trim($line) . ' ' . $word;
$line = '';
}
}
$lines[] = ($line = trim($line)) ? $line : $word;
return $lines;
} // FIN function split_words($string, $max = 35)
$numligne=1; // nombre de ligne adresse renseignés
for ($i=0;$i<2;$i++) // nom d'adresseFacturation traitées
{
$adresseFacturation2 = split_words($adresseFacturation[$i]);
for($j = 0; $j < sizeof($adresseFacturation2); ++$j)
{
$adresse[$numligne++] = T_LAETIS_site::supprimerAccents($adresseFacturation2[$j]);
}
}
return $adresse;
} // FIN function traitementAdresse($adresseFacturation)
function genererFichierExpeditor($detailClientLivraison)
{
$infoLivraison = $this->getLivraisonClient($detailClientLivraison["ID_client"], $detailClientLivraison["ID_commande"]);
try {
$requete = "UPDATE boutique_obj_commande
SET genererFichierLivraison = 1
WHERE `ID` = '".$detailClientLivraison["ID_commande"]."'";
T_LAETIS_site::requeter($requete);
// Sélection des informations sur le pays
$requete = "SELECT boutique_typ_pays.*
FROM `boutique_typ_pays`
WHERE `ID` = '". $infoLivraison->ID_pays."'
LIMIT 1";
$resultats = T_LAETIS_site::requeter($requete);
$requete = "SELECT
SUM(boutique_obj_article.poidsEmballe * boutique_obj_ligneCommande.quantite)
AS totalPoidsEmballe
FROM
boutique_obj_article, boutique_obj_ligneCommande
WHERE
boutique_obj_article.ID=boutique_obj_ligneCommande.ID_article
AND
boutique_obj_ligneCommande.ID_commande ='". $detailClientLivraison["ID_commande"]."'";
$resultats2 = T_LAETIS_site::requeter($requete);
$poidsColis = $resultats2[0]['totalPoidsEmballe'];
} catch(Exception $e) {
mysql_error_log( $e->getMessage() );
} // Fin de la sélection des informations sur le pays
// Génération du code pour Expeditor
$codeExpeditor = "EXP"; // Type d'enregistrement = Constante : « EXP »
$codeExpeditor .= str_pad("BL".$infoLivraison->ID_commande, 35, " ", STR_PAD_RIGHT); // Référence du colis pour l'expéditeur (35 caractères)
$codeExpeditor .= date("Ymd"); // Date d'edition de l'étiquette AAAAMMJJ (8 caractères)
// Code produit (4 caractères)
// COL Colissimo Expert France / COLI Colissimo Expert International /
// DOS SO Colissimo Domicile avec Signature / DOM SO Colissimo sans Signature
if ($infoLivraison->ID_pays==1):
$codeExpeditor .= "COL ";
else:
$codeExpeditor .= "COLI";
endif;
$codeExpeditor .= str_repeat(" ", 6); // Code Expéditeur (6 caractères)
$codeExpeditor .= str_repeat(" ", 17); // Code Destinataire (17 caractères)
$codeExpeditor .= strtoupper(str_pad(substr(T_LAETIS_site::supprimerAccents($infoLivraison->nomLivraison),0,35), 35, " ", STR_PAD_RIGHT)); // Nom du destinataire (35 caractères)
$traitementAdresse = $this->traitementAdresse(array($infoLivraison->adresseLivraison, $infoLivraison->adresseLivraison2)); // Découpe des deux lignes d'adresses
$codeExpeditor .= strtoupper(str_pad($traitementAdresse[1], 35, " ", STR_PAD_RIGHT)); // Adresse 1 du destinataire (35 caractères)
$codeExpeditor .= strtoupper(str_pad($traitementAdresse[2], 35, " ", STR_PAD_RIGHT)); // Adresse 2 du destinataire (35 caractères)
$codeExpeditor .= strtoupper(str_pad($traitementAdresse[3], 35, " ", STR_PAD_RIGHT)); // Adresse 3 du destinataire (35 caractères)
$codeExpeditor .= strtoupper(str_pad(substr($infoLivraison->codePostalLivraison,0,9), 9, " ", STR_PAD_RIGHT)); // Code Postal du destinataire (9 caractères)
$codeExpeditor .= strtoupper(str_pad(substr(T_LAETIS_site::supprimerAccents($infoLivraison->villeLivraison),0,35), 35, " ", STR_PAD_RIGHT)); // Commune du destinataire (35 caractères)
$codeExpeditor .= strtoupper(str_pad($resultats[0]['iso2'], 3, " ", STR_PAD_RIGHT)); // Code Pays du destinataire (35 caractères)
$codeExpeditor .= strtoupper(str_pad(substr($infoLivraison->messageLivraison,0,70), 70, " ", STR_PAD_RIGHT)); // Instructiopn de livraison du destinataire (70 caractères)
$codeExpeditor .= str_repeat(" ", 12); // Filler non utilisé (12 caractères)
// $detailClientLivraison["Poids"]*1000
$codeExpeditor .= str_pad(intval($poidsColis), 15, "0", STR_PAD_LEFT); // Code Pays du destinataire (35 caractères)
$codeExpeditor .= str_repeat(" ", 15); // Montant CRBT (15 caractères)
$codeExpeditor .= str_repeat(" ", 3); // Filler non utilisé (3 caractères)
$codeExpeditor .= str_repeat(" ", 15); // Montant ADV (15 caractères)
$codeExpeditor .= str_repeat(" ", 3); // Filler non utilisé (3 cractères)
$codeExpeditor .= "N"; // Non Mécanisable (O ou N)
$codeExpeditor .= str_repeat(" ", 17); // Filler non utilisé (17 caractères)
$codeExpeditor .= str_pad(substr($infoLivraison->telLivraison,0,25), 25, " ", STR_PAD_RIGHT); // N° téléphone (25 caractères)
$codeExpeditor .= str_repeat(" ", 4); // Filler non utilisé (4 caractères)
$codeExpeditor .= "0"; // Recommandation (0, 1, 2 ou 3)
$codeExpeditor .= "N"; // Avis de réception (O ou N)
$codeExpeditor .= "N"; // Franc de taxes et de droits (O ou N)
$codeExpeditor .= "2"; // Type de retour (2 économique)
if($detailClientLivraison["emailFacturation"]!=''):
$codeExpeditor .= str_pad(substr($detailClientLivraison["emailFacturation"],0,75), 75, " ", STR_PAD_RIGHT); // Email du destinataire (75 caractères)
else:
$codeExpeditor .= str_pad(substr("contact@jama.fr",0,75), 75, " ", STR_PAD_RIGHT); // Email du destinataire (75 caractères)
endif;
$codeExpeditor .= "4"; // Nature de l'envoi (4 envoi commercial)
$codeExpeditor .= str_repeat(" ", 25); // Numéro de licence (25 cractères)
$codeExpeditor .= str_repeat(" ", 25); // Numéro de certificat (25 cractères)
$codeExpeditor .= str_repeat(" ", 25); // Numéro de facture (25 cractères)
$codeExpeditor .= str_repeat(" ", 4); // Référence en douane (4 cractères)
$codeExpeditor .= strtoupper(str_pad($traitementAdresse[4], 35, " ", STR_PAD_RIGHT)); // Adresse 4 du destinataire (35 caractères)
$codeExpeditor .= str_repeat(" ", 35); // Numéro d'affaire (35 cractères)
$codeExpeditor .= str_pad($detailClientLivraison["ID_commande"], 35, " ", STR_PAD_RIGHT); // str_repeat(" ", 35); // Numéro de commande (35 cractères)
$codeExpeditor .= str_repeat(" ", 35); // Filler non utilisé (35 cractères)
$codeExpeditor .= str_repeat(" ", 11); // BIC (11 cractères)
$codeExpeditor .= str_repeat(" ", 27); // IBAN (27 cractères)
if ($infoLivraison->civiliteLivraison=="M."):
$civiliteLivraison="2";
elseif($infoLivraison->civiliteLivraison=="Mme"):
$civiliteLivraison="3";
elseif($infoLivraison->civiliteLivraison=="Mlle"):
$civiliteLivraison="4";
else:
$civiliteLivraison=" ";
endif;
$codeExpeditor .= substr($civiliteLivraison,0,1); // Civilité du destinataire (1 caractères)
if(empty($infoLivraison->prenomLivraison)):
$infoLivraison->prenomLivraison = ".";
endif;
$codeExpeditor .= str_pad(substr(T_LAETIS_site::supprimerAccents($infoLivraison->prenomLivraison),0,29), 29, " ", STR_PAD_RIGHT); // Prénom du destinataire (29 caractères)
$codeExpeditor .= str_repeat(" ", 38); // Raison Sociale du destinataire (38 cractères)
$codeExpeditor .= str_repeat(" ", 10); // Portable du destinataire (10 caractères) "06".str_repeat("0", 8)
$codeExpeditor .= str_repeat(" ", 8); // Code porte 1 du destinataire (8 cractères)
$codeExpeditor .= str_repeat(" ", 8); // Code porte 2 du destinataire (8 cractères)
$codeExpeditor .= str_repeat(" ", 30); // Interphone du destinataire (30 cractères)
$codeExpeditor .= str_repeat(" ", 6); // Code point de retrait (6 cractères)
$codeExpeditor .= str_repeat(" ", 1); // Filler non utilisé (1 cractères)
$codeExpeditor .= str_pad("JAMA", 38, " ", STR_PAD_RIGHT); // Nom commercial de l'expéditeur (38 caractères)
$codeExpeditor .= str_repeat(" ", 30); // Filler non utilisé (30 cractères)
$codeExpeditor .= str_repeat(" ", 15); // Code Avoir/Promotion (15 caractères)
return $codeExpeditor;
} // FIN function genererFichierExpeditor($detailClientLivraison)
}
?>
/**
* Classe de gestion des commandes
*
* Permet de créer, modifier, supprimer des commandes, en intéraction
* avec la base de données
*
* Statuts d'une commande
* - interrompue avant coordonnees
* - interrompue avant paiement
* - validee cheque / validee fax / validee virement
* - appel cb
* - appel cb alma
* - appel cb 3 fois
* - payee cb
* - payee cb 3 fois
* - en préparation
* - abandonnee
* - expediee
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_commande
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var date $dateCommande Date de la commande
* @access private
*/
var $dateCommande;
/**
* @var date $dateExpedition Date d'expédition de la commande
* @access private
*/
var $dateExpedition;
/**
* @var int $ID_client ID du client qui commande
* @access private
*/
var $ID_client;
/**
* @var string $statut Statut de la commande
* @access private
*/
var $statut;
/**
* @var string $typePaiement Type de Paiement de la commande
* @access public
*/
public $typePaiement;
/**
* @var string $reglement Règlement de la commande
* @access private
*/
var $reglement;
/**
* @var double $montant Montant de la commande
* @access private
*/
var $montant;
/**
* @var double $montantReductionTTC Montant de réduction de la commande
* @access private
*/
var $montantReductionTTC;
/**
* @var double $livraisonTTC Tarif de livraison
* @access public
*/
var $livraisonTTC;
/**
* @var int $montant Tarif de Livraison
* @access private
*/
var $ID_tarifLivraison;
/**
* @var int $typeLivraison Type de Livraison demandée par le client
* @access private
*/
var $typeLivraison;
/**
* @var int $typeLivraison Type de Livraison réellement envoyé par Jama
* @access private
*/
var $typeLivraisonEffective;
/**
* @var string $infoLivraison
* @access private
*/
var $infoLivraison;
/**
* @var string $packagetypeUPS
* @access private
*/
var $packagetypeUPS;
/**
* @var string $ID_dpdPickup
* @access private
*/
var $ID_dpdPickup;
/**
* @var string $ID_colissimo
* @access private
*/
var $ID_colissimo;
/**
* @var string $nbColis Nombre de colis
* @access private
*/
var $nbColis;
/**
* @var int $genererFichierLivraison A-t-on généré le fichier Expeditor de cette commande ?
* @access private
*/
var $genererFichierLivraison;
/**
* @var string $envoyerEmailLivraison Envoi de l'email comme quoi la commande est partie
* @access private
*/
var $envoyerEmailLivraison;
/**
* @var string $promoCode
* @access private
*/
var $promoCode;
/**
* @var int $promoID_typ
* @access private
*/
var $promoID_typ;
/**
* @var string $promoMontant
* @access private
*/
var $promoMontant;
/**
* @var string $promoFamilles
* @access private
*/
var $promoFamilles;
/**
* @var string $promoArticle
* @access private
*/
var $promoArticle;
/**
* @var double $remiseChequeCadeau
* @access private
*/
var $remiseChequeCadeau;
/**
* @var bool $estPaiementDirect
* @access private
*/
var $estPaiementDirect;
/**
* @var int $envoyeeEnCompta Cette commande a-t-elle été envoyée en compta ?
* @access private
*/
var $envoyeeEnCompta;
/**
* @var string $mailGenere
* @access private
*/
var $mailGenere;
var $FRANCO_PORT_FRANCE = 300;
var $ID_LIVRAISON_DPD_PICKUP = 263;
var $ID_LIVRAISON_DPD_PICKUP_GRATUIT = 294;
var $ID_RELAIS_COLISSIMO = 296;
var $LIVRAISON_DPD_PICKUP = 'DPD Pickup';
var $RELAIS_COLISSIMO = 'Colissimo relais';
/**
* @var int $ID_tarifLivraisonChequeCadeau ID du tarif de livraison pour les chèques Cadeaux
* @access private
*/
var $ID_tarifLivraisonChequeCadeau = 283;
/**
* @var int $ID_tarifLivraisonProduitAvecPortGratuit ID du tarif de livraison pour les produits avec port gratuit
* @access private
*/
var $ID_tarifLivraisonProduitAvecPortGratuitFrance = 285;
var $ID_tarifLivraisonProduitAvecPortGratuitEurope = 285;
public static $tabTexteStock =
array('enStock' =>
array('FR' => 'En stock', 'EN' => 'Available', 'ES' => 'Disponible'),
'surCommande' =>
array('FR' => 'Sur commande', 'EN' => 'Order only', 'ES' => 'Solo en orden'),
'enReappro' =>
array('FR' => 'En réapprovisionnement', 'EN' => 'Not available', 'ES' => 'No disponible'),
'delais' =>
array('FR' => 'Délai de livraison', 'EN' => 'Delivery schedule', 'ES' => 'Plazos de envió'),
'dans' =>
array('FR' => 'dans', 'EN' => 'in', 'ES' => 'en'),
'jours' =>
array('FR' => 'jours', 'EN' => 'days', 'ES' => 'dias')
);
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_commande($ID = 0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if ($ID > 0) {
$requete = "SELECT * FROM boutique_obj_commande WHERE ID='" . $this->ID . "'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur) {
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct()
{
}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom => $valeur) {
if (!in_array($nom, $champsNonEnregistres)) {
$valeur = "\"" . addslashes($valeur) . "\"";
$contenuRequete .= " ," . $nom . "=" . $valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete, 2);
if ($this->ID > 0) {
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_commande SET ";
$requete .= $contenuRequete . " WHERE ID=" . $this->ID;
$resSql = T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction enregistrer Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} else {
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_commande SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_commande";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats[] = new Tbq_commande($ligne['ID']);
}
return ($resultats);
}
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function commandesAnneeMois($statut, $annee, $mois)
{
$resultats = array();
$requete = "SELECT COUNT(ID) as nb, SUM(montant) as somme
FROM boutique_obj_commande
WHERE statut = '" . $statut . "'
AND YEAR(dateCommande) = " . $annee . "
AND MONTH(dateCommande) = " . $mois . ";";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats['somme'] = $ligne['somme'];
$resultats['nb'] = $ligne['nb'];
}
return ($resultats);
}
/**
* Recherche des commandes selon le nom du client ou le numéro de commande
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function rechercher($valeurs)
{
$resultats = array();
$requeteR = '1';
if ($valeurs['motCle']) {
if ($valeurs['champRecherche'] == "client") {
$requeteR = "(boutique_obj_client.nomFacturation LIKE '%" . $valeurs['motCle'] . "%'
OR boutique_obj_client_livraison.nomLivraison LIKE '%" . $valeurs['motCle'] . "%') ";
} else if ($valeurs['champRecherche'] == "commande") {
$requeteR = "(boutique_obj_commande.ID LIKE '%" . $valeurs['motCle'] . "%') ";
}
}
$requete = "SELECT
boutique_obj_commande.*
FROM
boutique_obj_commande, boutique_obj_client, boutique_obj_client_livraison
WHERE
" . $requeteR . "
AND boutique_obj_commande.ID_client = boutique_obj_client.ID
AND boutique_obj_commande.ID_client = boutique_obj_client_livraison.ID_client
AND boutique_obj_commande.ID = boutique_obj_client_livraison.ID_commande
GROUP BY boutique_obj_commande.ID
ORDER BY boutique_obj_commande.ID DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats[] = new Tbq_commande($ligne['ID']);
}
return ($resultats);
} // FIN function rechercher($valeurs)
/**
* retourne l'année de la premiere commande
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function anneePremiereCommande()
{
$date = 0;
$requete = "SELECT YEAR(dateCommande) as annee
FROM boutique_obj_commande
ORDER BY dateCommande
LIMIT 0, 1";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$date = $ligne['annee'];
}
return ($date);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_commande WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
$requete = "DELETE FROM boutique_obj_ligneCommande WHERE ID_commande='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* private
* Liste les commandes selon des critères de recherche
* @param
* @return La liste des commandes
*/
function listerSelonCriteres($criteres)
{
// MODIF 2010-12
// PAR DEFAUT, on n'affiche que les commandes non traitées et pas annulee
$requeteStatut = "statut NOT IN ('expediee','annulee')";
//$requeteStatut='1';
$requeteAnnee = '1';
// Selon le/les statuts de la commande
if ($criteres['statut'] == "payee") {
$requeteStatut = "statut IN ('payee cb','payee cb paypal','payee cb 3 fois','payee cb 3 fois alma','payee en salon', 'validee cheque','validee fax','validee virement')";
} else if ($criteres['statut'] == "toutes") {
$requeteStatut = "1";
} else if ($criteres['statut']) {
$requeteStatut = "statut IN ('" . $criteres['statut'] . "')";
}
// Selon l'année de la commande
if (!$criteres['annee']) {
$criteres['annee'] = date("Y");
}
$requeteAnnee = "dateCommande LIKE '" . $criteres['annee'] . "%'";
$requete = "SELECT * FROM boutique_obj_commande
WHERE 1 AND " . $requeteStatut . " AND " . $requeteAnnee . "
AND statut != 'non validee'
ORDER BY ID DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats[] = new Tbq_commande($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Supprime les commandes de la veille pour lesquelles l'adresse n'est pas renseignée
* @param
* @return
*/
function epurer()
{
$requete = "SELECT ID
FROM boutique_obj_commande
WHERE ID_client='0' AND dateCommande<'" . date("Y-m-d") . "';";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
/*$requete="DELETE FROM boutique_obj_commande
WHERE ID='".$ligne['ID']."';";
T_LAETIS_site::requeter($requete);
$requete="DELETE FROM obj_ligneCommande
WHERE ID_commande='".$ligne['ID']."';";
T_LAETIS_site::requeter($requete);*/
}
}
/**
* private
* Pour la présentation d'un chiffre float
* @param
* @return le chiffre bien affiché
*/
function afficherFloat($chiffre)
{
return number_format($chiffre, 2, ',', ' ');
} // FIN function afficherFloat($chiffre)
/**
* private
* Sauver la liste des commandes dans l'espace d'administration
* @param
* @return
*/
function sauverListe($valeurs)
{
// On modifie le statut de la commande
while (list ($ID_commande) = each($valeurs['statut'])) {
$requete = "UPDATE boutique_obj_commande
SET statut='" . $valeurs['statut'][$ID_commande] . "'
WHERE ID='" . $ID_commande . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction sauverListe Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} // FIN while(list ($ID_commande) = each ($valeurs['statut']))
if ($valeurs['supprimer']) {
// On supprime la commande si elle a été cochée
while (list ($ID_commande) = each($valeurs['supprimer'])) {
if ($valeurs['supprimer'][$ID_commande] == '1') {
$commande = new Tbq_commande($ID_commande);
$commande->supprimer();
} // FIN if ($valeurs['supprimer'][$ID_commande]=='1')
} // FIN while(list ($ID_commande) = each ($valeurs['supprimer']))
} //FIN if ($valeurs['supprimer'])
} // FIN function sauverListe($valeurs)
/**
* private
* Préparation d'une commande et décrémenter le stock
* @param
* @return
*/
public function preparerCommande($ID_commande)
{
$requete = "UPDATE
boutique_obj_commande
SET
statut='enPreparation'
WHERE
ID = '" . $ID_commande . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
/*$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction sauverListe Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);*/
} // FIN function preparerCommande($ID_commande)
/**
* private
* Recherche le nombre d'articles dans le panier
* @param
* @return le nombre d'articles
*/
function getNombreArticles()
{
if ($this->ID) {
$requete = "SELECT SUM(quantite) AS nombreArticle
FROM boutique_obj_ligneCommande
WHERE ID_commande ='" . $this->ID . "'";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats[0]['nombreArticle']);
}
return 0;
} // FIN function getNombreArticles()
/**
* private
* Ajout de l'article dans la commande, crée la commande si n'existe pas
* @param $valeurs Les champs POST de l'article qu'on veut ajouter
* @return string $articlesAjoutes La liste des articles ajoutés, séparés par une virgule
*/
function ajouterArticle($valeurs)
{
// Ouverture de la commande si pas déjà ouverte
if (!($this->ID > 0)):
$requete = "INSERT INTO boutique_obj_commande (dateCommande, statut)
VALUES (NOW(), 'non validee')";
T_LAETIS_site::requeter($requete);
$_SESSION['ID_commande'] = T_LAETIS_site::last_insert_id();
$this->ID = T_LAETIS_site::last_insert_id();
// Si la commande a été payée ou on est arrivé au paiement
elseif (($this->reglement == 'retourAutoPaiementAccepte')
|| ($this->statut == 'validee cheque')
|| ($this->statut == 'validee virement')
|| ($this->statut == 'validee fax')
):
$requete = "INSERT INTO boutique_obj_commande (dateCommande, statut) VALUES (NOW(), 'non validee')";
T_LAETIS_site::requeter($requete);
$_SESSION['ID_commande'] = T_LAETIS_site::last_insert_id();
$this->ID = T_LAETIS_site::last_insert_id();
// Si la commande est en appel du paiement
elseif (($this->statut == 'appel cb') || ($this->statut == 'appel cb alma') || ($this->statut == 'appel cb 3 fois')):
$ID_commandeDupliquee = $this->dupliquerCommande($this->ID);
$_SESSION['ID_commande'] = $ID_commandeDupliquee;
$this->ID = $ID_commandeDupliquee;
endif;
$articlesAjoutes = "";
$montant = 0;
while (list($ID_article) = each($valeurs)) {
if ($valeurs[$ID_article]['quantite'] > 0) {
$articlesAjoutes .= $ID_article . ",";
// Si cet article a des variantes
if ($valeurs[$ID_article]['tabVariantes']) {
// Mise du produit dans le panier
$requete = "INSERT INTO boutique_obj_ligneCommande
(ID_commande, ID_article, titre_article, quantite, tarif, tauxTVA)
VALUES ('" . $this->ID . "', '" . $ID_article . "', '" . addslashes($valeurs[$ID_article]['titre']) . "',
'" . $valeurs[$ID_article]['quantite'] . "','" . $valeurs[$ID_article]['tarif'] . "',
'" . $valeurs[$ID_article]['tauxTVA'] . "')";
//echo $requete."
";
T_LAETIS_site::requeter($requete);
$ID_ligneCommande = T_LAETIS_site::last_insert_id();
foreach ($valeurs[$ID_article]['tabVariantes'] as $ID_variante) {
$valeursSql .= "('" . $ID_ligneCommande . "', '" . $ID_variante . "', '" . $valeurUtilisateur . "'), ";
}
$valeursSql = substr($valeursSql, 0, strlen($valeursSql) - 2);
$requeteVariantes = "INSERT INTO boutique_rel_ligneCommande_variante
(ID_ligneCommande, ID_variante, valeurUtilisateur)
VALUES " . $valeursSql . ";";
//echo $requeteVariantes."
";
T_LAETIS_site::requeter($requeteVariantes);
} // FIN if($valeurs[$ID_article]['tabVariantes'])
else {
// Est ce que l'article a déjà été ajouté dans le panier ? si oui on augmente la quantite en commande
$requete = "SELECT ID, quantite, tarif FROM boutique_obj_ligneCommande
WHERE ID_commande = '" . $this->ID . "'
AND ID_article = '" . $ID_article . "'";
$resultats = T_LAETIS_site::requeter($requete);
if (sizeof($resultats) > 0) {
// Mise a jour de la quantité du produit
$requete = "UPDATE boutique_obj_ligneCommande
SET quantite = quantite + " . $valeurs[$ID_article]['quantite'] . "
WHERE ID = '" . $resultats[0]['ID'] . "'";
T_LAETIS_site::requeter($requete);
} // FIN if (sizeof($resultats)>0)
else {
// Mise du produit dans le panier
$requete = "INSERT INTO boutique_obj_ligneCommande
(ID_commande, ID_article, titre_article, quantite, tarif, tauxTVA)
VALUES
('" . $this->ID . "', '" . $ID_article . "', '" . addslashes($valeurs[$ID_article]['titre']) . "',
'" . $valeurs[$ID_article]['quantite'] . "','" . $valeurs[$ID_article]['tarif'] . "',
'" . $valeurs[$ID_article]['tauxTVA'] . "')";
T_LAETIS_site::requeter($requete);
} // FIN else
} // FIN else
} // FIN if ($valeurs[$ID_article]['quantite']>0)
} // FIN while(list($ID_article) = each($valeurs))
$this->sauverMontant();
// On enlève la dernière virgule
$articlesAjoutes = substr($articlesAjoutes, 0, strlen($articlesAjoutes) - 1);
return $articlesAjoutes;
} // FIN function ajouterArticle($valeurs)
/**
* private
* Enregistre le montant total de la commande
* @param
* @return
*/
function sauverMontant()
{
// Calcul du montant de la commande
$requete = "SELECT SUM(quantite*tarif) AS montant
FROM boutique_obj_ligneCommande WHERE ID_commande = '" . $this->ID . "'";
$resultats = T_LAETIS_site::requeter($requete);
$requete = "UPDATE boutique_obj_commande SET montant='" . $resultats[0]['montant'] . "' WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
} // FIN function sauverMontant()
/**
* private
* Enregistre le montant total de la commande avec les frais de port
* @param
* @return
*/
function sauverMontantAvecPort($totalCommandeTTC)
{
$requete = "UPDATE boutique_obj_commande SET montant='" . $totalCommandeTTC . "' WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
} // FIN function sauverMontantAvecPort($totalCommandeTTC)
/**
* private
* Enregistre le tarif de livraison choisi pour la commande
* @param
* @return
*/
function sauverTarifLivraison($valeurs)
{
$requete = "UPDATE boutique_obj_commande
SET
ID_tarifLivraison = '" . $valeurs['ID_tarifLivraison'] . "',
typeLivraison = '" . $valeurs['transport'] . "',
livraisonTTC = '" . $valeurs['tarif'] . "',
ID_dpdPickup = '" . $valeurs['ID_dpdPickup'] . "',
ID_colissimo = '" . $valeurs['ID_colissimo'] . "'
WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction sauverTarifLivraison Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} // FIN function sauverTarifLivraison($valeurs)
/**
* private
* Modifier la quantite de la ligne de commande
* @param $valeurs Champs passés en argument
* @return
*/
function modifierQuantite($valeurs)
{
$requete = "UPDATE boutique_obj_ligneCommande
SET quantite = quantite + " . $valeurs['modifier'] . "
WHERE ID = '" . $valeurs['ID_ligneCommande'] . "'";
T_LAETIS_site::requeter($requete);
// Suppression de la ligne de commande (si on a mis un article a 0)
$requete = "DELETE FROM boutique_obj_ligneCommande WHERE quantite='0'";
T_LAETIS_site::requeter($requete);
$this->sauverMontant();
} // FIN function modifierQuantite($valeurs)
/**
* private
* Lister les lignes de la commande
* @param
* @return la liste des lignes de la commande
*/
function detaillerCommande()
{
$requete = "SELECT boutique_obj_ligneCommande.ID AS ID_ligneCommande, boutique_obj_ligneCommande.*,
boutique_obj_article.*, boutique_obj_article.ID AS ID_article,
IF ((boutique_obj_article.prixPromotion!='0'), prixPromotion, prixTTC) AS prix
FROM boutique_obj_ligneCommande, boutique_obj_commande, boutique_obj_article
WHERE boutique_obj_commande.ID='" . $this->ID . "'
AND boutique_obj_commande.ID=boutique_obj_ligneCommande.ID_commande
AND boutique_obj_ligneCommande.ID_article=boutique_obj_article.ID
ORDER BY boutique_obj_article.titre ASC";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats;
} // FIN function detaillerCommande()
/**
* private
* Affecte le statut passé en argument a la commande
* @param
* ID_tarifLivraison=0
*/
function setStatut($statut)
{
if ($this->statut != 'expediee'):
$requete = "UPDATE boutique_obj_commande SET statut='" . $statut . "' WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
/*$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction setStatut Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);*/
endif;
} // FIN function setStatut($statut)
/**
* private
* Affecte le type de paiement passé en argument a la commande
* @param
* ID_tarifLivraison=0
*/
function setTypePaiement($typePaiement)
{
$requete = "UPDATE boutique_obj_commande
SET typePaiement='" . $typePaiement . "'
WHERE ID='" . $this->ID . "'";
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction setTypePaiement Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
T_LAETIS_site::requeter($requete);
} // FIN function setTypePaiement($typePaiement)
static function convertirTypePaiementPourAffichage($typeAffichage)
{
switch ($typeAffichage) {
case "cartebancaire":
$res = "Carte bancaire";
break;
case "chequebancaire":
$res = "Chèque bancaire";
break;
case "monnaie":
$res = "Monnaie";
break;
case "chequecadeau":
$res = "Chèque cadeau";
break;
default:
$res = "";
break;
}
return ($res);
} // FIN static function convertirTypePaiementPourAffichage($typeAffichage)
/**
* private
* Affecte le statut passé en argument a la commande
* @param
* ID_tarifLivraison=0
*/
function setClient()
{
$requete = "UPDATE boutique_obj_commande
SET ID_client='" . $_SESSION['ID_client'] . "'
WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
} // FIN function setClient()
/**
* private
* Si la commande est un paiement direct
* @param
* ID_tarifLivraison=0
*/
function setPaiementDirect()
{
$requete = "UPDATE boutique_obj_commande
SET estPaiementDirect='1'
WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
} // FIN function setPaiementDirect()
/**
* private
* Affecte le reglement passé en argument a la commande
* @param
* ID_tarifLivraison=0
*/
function setReglement($reglement)
{
$requete = "UPDATE boutique_obj_commande
SET reglement='" . $reglement . "'
WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction setReglement Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} // FIN function setReglement($reglement)
/**
* private
* Verifie si la commande en cours a été payée
* @param
*/
function getPayee($ID_commande)
{
$requete = "SELECT statut FROM boutique_obj_commande
WHERE ID='" . $ID_commande . "'";
$resultats = T_LAETIS_site::requeter($requete);
if (($resultats[0]['statut'] == "validee virement")
|| ($resultats[0]['statut'] == "validee cheque")
|| ($resultats[0]['statut'] == "expediee")
|| ($resultats[0]['statut'] == "payee cb")
|| ($resultats[0]['statut'] == "payee cb 3 fois")
|| ($resultats[0]['statut'] == "payee cb 3 fois alma")
|| ($resultats[0]['statut'] == "payee en salon")
|| ($resultats[0]['statut'] == "validee fax")
|| ($resultats[0]['statut'] == "payee cheque cadeau")
) {
return true;
} else {
return false;
}
} // FIN function getPayee($ID_commande)
function getCle()
{
$requete = "SELECT cle FROM boutique_typ_siteInternet WHERE ID = 1";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['cle'];
} // FIN function getCle()
/**
* private
* Formate la date et l'heure de la commande
* @return string Date et heure de la commande affichées de façon + humaine
*/
function afficherDate($dateCommande)
{
$dateCommande = explode(' ', $dateCommande);
$heureCommande = $dateCommande[1];
$dateCommande = $dateCommande[0];
$dateCommande = explode('-', $dateCommande);
$dateCommande = $dateCommande[2] . "/" . $dateCommande[1] . "/" . $dateCommande[0];
$heureCommande = explode(':', $heureCommande);
$heureCommande = $heureCommande[0] . "h" . $heureCommande[1];
return ($dateCommande . '-' . $heureCommande);
} // FIN function afficherDate()
/**
* private
* Formate la date et l'heure de la commande
* @return string Date et heure de la commande affichées de façon + humaine
*/
function calculerHT($montant)
{
if (date('Ymd') < '20140101') {
return ($montant / 1.196);
} else {
return ($montant / 1.2);
}
}
/**
* private
* Renvoie la TVA pour calcul sur un article
* @return double Taux TVA pour calcul
*/
function getTVA($tauxTVA)
{
return (($tauxTVA / 100) + 1);
} // FIN function getTVA($montant)
/**
* private
* Enregistrer l'état du paiement en ligne
* @param int ID_commande
* @param string reglement Valeur du règlement
* @return
*/
function reglementCB($reglement)
{
$requete = "UPDATE boutique_obj_commande
SET
reglement= '" . $reglement . "'
WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction reglementCB Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
}
/**
* private
* Liste toutes les commandes passées par le client ID_client
* @param int $ID_client ID du client
* @return array La liste des commandes
*/
function listerCommandesClient($ID_client)
{
$requete = "SELECT * FROM boutique_obj_commande
WHERE ID_client = '" . $ID_client . "'
ORDER BY dateCommande DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats[] = new Tbq_commande($ligne['ID']);
}
return ($resultats);
} // FIN function listerCommandesClient($ID_client)
function dupliquerCommande($ID_commande)
{
// La commande
$requete = "SELECT ID_client, statut, montant FROM boutique_obj_commande
WHERE ID = '" . $ID_commande . "'";
$ligne = T_LAETIS_site::requeter($requete);
$requete = "INSERT INTO boutique_obj_commande
(dateCommande, ID_client, statut, montant)
VALUES
(NOW(), '" . $ligne[0]['ID_client'] . "', 'non validee', '" . $ligne[0]['montant'] . "')";
T_LAETIS_site::requeter($requete);
$ID_nouvelleCommande = T_LAETIS_site::last_insert_id();
// Les lignes commandes
$requete = "SELECT *, boutique_obj_ligneCommande.ID AS ID_ligneCommande
FROM boutique_obj_ligneCommande, boutique_obj_article
WHERE boutique_obj_ligneCommande.ID_commande = '" . $ID_commande . "'
AND boutique_obj_article.ID = boutique_obj_ligneCommande.ID_article
AND visible > 0";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne):
$requete = "INSERT INTO boutique_obj_ligneCommande
(ID_article, quantite, ID_commande, tarif, tauxTVA, titre_article)
VALUES
('" . $ligne['ID_article'] . "', '" . $ligne['quantite'] . "', '" . $ID_nouvelleCommande . "',
'" . $ligne['prixTTC'] . "', '" . $ligne['tauxTVA'] . "', '" . addslashes($ligne['titre']) . "')";
T_LAETIS_site::requeter($requete);
$ID_ligneCommandeDupliquee = T_LAETIS_site::last_insert_id();
// Les lignes variantes
$requeteV = "SELECT * FROM boutique_rel_ligneCommande_variante
WHERE boutique_rel_ligneCommande_variante.ID_ligneCommande = '" . $ligne['ID_ligneCommande'] . "'";
$resSqlV = T_LAETIS_site::requeter($requeteV);
foreach ($resSqlV as $ligneV):
$requeteIV = "INSERT INTO boutique_rel_ligneCommande_variante
(ID_ligneCommande, ID_variante, valeurUtilisateur)
VALUES
('" . $ID_ligneCommandeDupliquee . "', '" . $ligneV['ID_variante'] . "', '" . $ligneV['valeurUtilisateur'] . "')";
T_LAETIS_site::requeter($requeteIV);
endforeach;
endforeach;
// On récupère le montant total
$requete = "SELECT SUM(quantite * tarif) AS montantTotal FROM boutique_obj_ligneCommande
WHERE boutique_obj_ligneCommande.ID_commande = '" . $ID_nouvelleCommande . "'";
$resSql = T_LAETIS_site::requeter($requete);
$requete = "UPDATE boutique_obj_commande SET montant = '" . $resSql[0]['montantTotal'] . "'
WHERE ID = '" . $ID_nouvelleCommande . "'";
T_LAETIS_site::requeter($requete);
return $ID_nouvelleCommande;
} // FIN function dupliquerCommande($ID_commande)
function enregistrerLivraison($valeurs)
{
$typeLivraisonEffective = '';
$infoLivraison = '';
if ($valeurs['ID_colissimo']):
$typeLivraisonEffective = 'Colissimo';
$infoLivraison = $valeurs['ID_colissimo'];
elseif ($valeurs['lettreSuivie']):
$typeLivraisonEffective = 'LettreSuivie';
$infoLivraison = $valeurs['ID_lettreSuivie'];
elseif ($valeurs['packagetypeUPS']):
$typeLivraisonEffective = 'UPS';
elseif ($valeurs['DPD']):
$typeLivraisonEffective = 'DPD';
$infoLivraison = $valeurs['ID_dpd'];
elseif ($valeurs['Predict']):
$typeLivraisonEffective = 'Predict';
$infoLivraison = $valeurs['ID_dpd'];
endif;
$requete = "UPDATE boutique_obj_commande
SET
dateExpedition = NOW(),
statut= 'expediee',
typeLivraisonEffective= '" . $typeLivraisonEffective . "',
infoLivraison= '" . $infoLivraison . "',
packagetypeUPS= '" . $valeurs['packagetypeUPS'] . "',
nbColis= '" . $valeurs['nbColis'] . "',
envoyerEmailLivraison= '" . $valeurs['envoyerEmailLivraison'] . "'
WHERE ID='" . $this->ID . "'";
T_LAETIS_site::requeter($requete);
$this->infoLivraison = $infoLivraison;
$this->typeLivraisonEffective = $typeLivraisonEffective;
$this->packagetypeUPS = $valeurs['packagetypeUPS'];
$this->nbColis = $valeurs['nbColis'];
$this->envoyerEmailLivraison = $valeurs['envoyerEmailLivraison'];
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction enregistrerLivraison Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} // FIN function enregistrerLivraison($valeurs)
/**
* private
* Envoi par email login pass
* @param
* @return
*/
function envoyerLivraison()
{
$client = new Tbq_client($this->ID_client);
$motDePasse = $client->getMotDePasse();
// Adresse de livraison
$livraison = new Tbq_livraison($this->ID_tarifLivraison);
if( ($livraison->transport == $this->LIVRAISON_DPD_PICKUP) ) {
$dpd = new Tbq_dpd();
$infosDPD = $dpd->getSelonIDdpdPickup($this->ID, $this->ID_dpdPickup);
$adresseLivraison = "".$infosDPD[0]['nom']."
".$infosDPD[0]['adresse1']."
".$infosDPD[0]['codePostal']." ".$infosDPD[0]['ville']."FRANCE";
}
else if( ($livraison->transport == $this->RELAIS_COLISSIMO) ) {
$dpd = new Tbq_colissimo();
$infosDPD = $dpd->getSelonIDColissimo($this->ID, $this->ID_colissimo);
$adresseLivraison = "".$infosDPD[0]['nom']."
".$infosDPD[0]['adresse1']."
".$infosDPD[0]['codePostal']." ".$infosDPD[0]['ville']."FRANCE";
}
else {
$clientLivraison = new Tbq_clientLivraison();
$detailLivraison = $clientLivraison->getLivraisonClient($this->ID_client, $this->ID);
$adresseLivraison = "".$detailLivraison->civiliteLivraison." ".$detailLivraison->nomLivraison." ".$detailLivraison->prenomLivraison."
".nl2br($detailLivraison->adresseLivraison);
if ($detailLivraison->adresseLivraison2) {
$adresseLivraison .= "
".nl2br($detailLivraison->adresseLivraison2);
}
$adresseLivraison .= "
".$detailLivraison->codePostalLivraison." ".$detailLivraison->villeLivraison;
$adresseLivraison .= "
".$detailLivraison->paysLivraison;
} // FIN else
// Préparation du courrier
if ($this->typeLivraisonEffective == 'UPS') {
$pageSource = "/boutique/fr/emails/envoi-livraison-ups/envoi-livraison-ups.php";
} else if ($this->typeLivraisonEffective == 'DPD') {
$pageSource = "/boutique/fr/emails/envoi-livraison-dpd/envoi-livraison-dpd.php";
} else if ($this->typeLivraisonEffective == 'Predict') {
$pageSource = "/boutique/fr/emails/envoi-livraison-dpd/envoi-livraison-dpd.php";
} else if ($this->typeLivraisonEffective == 'LettreSuivie') {
$pageSource = "/boutique/fr/emails/envoi-livraison-lettresuivie/envoi-livraison-lettresuivie.php";
} else {
$pageSource = "/boutique/fr/emails/envoi-livraison/envoi-livraison.php";
}
$post = "login=" . $client->emailFacturation . "&motDePasse=" . $motDePasse . "&email=" . $client->emailFacturation . "&ID_commande=" . $this->ID . "&infoLivraison=" . $this->infoLivraison . "&adresseLivraison=" . $adresseLivraison;
$header = "POST " . $pageSource . " HTTP/1.0\r\n";
$header .= "Host: " . $_SERVER['HTTP_HOST'] . "\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($post) . "\r\n";
$header .= "\r\n";
$header .= $post . "\r\n";
$header .= "\r\n";
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
));
$hostname = 'ssl://' . $_SERVER['HTTP_HOST'].':443';
$stream = stream_socket_client($hostname, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);
if (!$stream) {
echo "$errstr ($errno)
\n";
exit($_SERVER[HTTP_HOST] . ' erreur socket fsockopen');
} else {
$contenu = "emailFacturation . " Mot De Passe=" . $motDePasse . " Email=" . $client->emailFacturation . " Numero de commande=" . $this->ID . " Livraison=" . $this->infoLivraison;
$dateCommande = explode(' ', $this->dateCommande);
$sujet = "Expedition de votre commande numero " . $this->ID . " du " . T_LAETIS_site::convertirDate($dateCommande[0], '-', '/');
// Envoi du message
include_once (rtrim($_SERVER['DOCUMENT_ROOT'],'/').'/lib/laetis/mailer/htmlMimeMail.php');
$obj_mail = new htmlMimeMail();
$obj_mail->setFrom('contact@jama.fr');
$obj_mail->setSubject($sujet);
$obj_mail->setHtml($contenu, $contenuTexte, '');
// Envoi a l'utilisateur
$obj_mail->send(array($client->emailFacturation), 'smtp');
//$obj_mail->send(array("christophe.raffy@laetis.fr"),'smtp');
} // FIN function envoyerLivraison()
public function getClientsPourRelance()
{
$requete = "
SELECT
boutique_obj_commande.ID AS ID_commande,
boutique_obj_client.ID AS ID_client,
boutique_obj_client.civiliteFacturation,
boutique_obj_client.nomFacturation,
boutique_obj_client.emailFacturation,
boutique_obj_client.ID_paysFacturation
FROM
`boutique_obj_commande`, `boutique_obj_client`
WHERE
boutique_obj_commande.dateCommande <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND boutique_obj_commande.dateCommande > DATE_SUB(CURDATE(), INTERVAL 2 DAY)
AND boutique_obj_client.emailFacturation != ''
AND boutique_obj_commande.statut IN ('interrompue avant paiement', 'appel cb', 'appel cb 3 fois', 'appel cb paypal', 'appel cb alma')
AND boutique_obj_commande.ID_client = boutique_obj_client.ID
GROUP BY boutique_obj_client.emailFacturation
ORDER BY boutique_obj_commande.ID ASC";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
} // FIN function getClientsPourRelance()
public function getProduitsPourRelance($ID_commande)
{
$requete = "
SELECT
boutique_obj_ligneCommande.ID_article
FROM
`boutique_obj_ligneCommande`
WHERE
boutique_obj_ligneCommande.ID_commande = ".$ID_commande."";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
} // FIN function getClientsPourRelance()
/**
* private
* Envoi par email login pass
* @param
* @return
*/
public function envoyerEmailRelance()
{
$resultats = $this->getClientsPourRelance();
// Si il y a des clients à qui envoyer le message
if(count($resultats) > 0) {
foreach ($resultats as $ligne)
{
$produits = $this->getProduitsPourRelance($ligne['ID_commande']);
$listeProduits = "";
if(count($produits) > 0) {
foreach ($produits as $p) {
$listeProduits .= $p["ID_article"].",";
}
$listeProduits = substr($listeProduits , 0, strlen($listeProduits)-1);
}
// Préparation du courrier
// Si France ou Belgique
if( ($ligne['ID_paysFacturation']==1) || ($ligne['ID_paysFacturation']==10)) {
$sujet = 'Votre commande JAMA numéro '.$ligne['ID_commande'].' est "presque" validée';
$pageSource = "/boutique/fr/emails/envoi-relance/envoi-relance.php";
}
// Si Espagne
else if($ligne['ID_paysFacturation']==23) {
$sujet = 'Su pedido JAMA número '.$ligne['ID_commande'].' está "casi" validado';
$pageSource = "/boutique/es/emails/envoi-relance/envoi-relance.php";
}
else {
$sujet = 'Your JAMA order number '.$ligne['ID_commande'].' is "almost" validated';
$pageSource = "/boutique/en/emails/envoi-relance/envoi-relance.php";
}
$post = "ID_commande=" . $ligne['ID_commande'] . "&ID_client=" . $ligne['ID_client']
. "&civiliteFacturation=" . $ligne['civiliteFacturation']
. "&nomFacturation=" . $ligne['nomFacturation']
. "&listeIDProduits=" . $listeProduits;
$header = "POST " . $pageSource . " HTTP/1.0\r\n";
$header.="Host: ".$_SERVER['HTTP_HOST']."\r\n";
$header.= "Content-Type: application/x-www-form-urlencoded\r\n";
$header.= "Content-Length: ".mb_strlen($post)."\r\n";
$header.= "\r\n";
$header.= $post."\r\n";
$header.= "\r\n";
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
));
$hostname = 'ssl://' . $_SERVER['HTTP_HOST'].':443';
$stream = stream_socket_client($hostname, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);
if(!$stream)
{
echo "$errstr ($errno)
\n";
exit($_SERVER[HTTP_HOST].' erreur socket fsockopen');
}
else
{
$contenu="setFrom("contact@jama.fr");
$obj_mail->setSubject($sujet);
$obj_mail->setHtml($contenu, '', './');
// Envoi a l'utilisateur
$obj_mail->send(array($ligne['emailFacturation']),'smtp');
//$obj_mail->send(array("march@jama.fr"),'smtp');
//$obj_mail->send(array("christophe.raffy@laetis.fr"),'smtp');
} // FIN foreach ($resultats as $ligne)
}
} // FIN function envoyerEmailRelance()
/**
* private
* un fonction qui genere le hmtl qui sera envoyé dans l'email
* et le stocke dans les archives
* @param INT IDcommande
* @return
*/
function genererEmailConfirmationCommande($pageSource)
{
// recup de l'ID_client
$requete = "SELECT boutique_obj_commande.ID_client, boutique_obj_client.emailFacturation,
boutique_obj_client.nomFacturation
FROM boutique_obj_commande, boutique_obj_client
WHERE boutique_obj_commande.ID='" . $this->ID . "'
AND boutique_obj_commande.ID_client=boutique_obj_client.ID";
$resultats = T_LAETIS_site::requeter($requete);
if ($resultats) {
$get = "?provenance=fsock&ID_commande=" . $this->ID . "&ID_client=" . $resultats[0]['ID_client'] . "&code=" . Tbq_commande::crypter($resultats[0]['nomFacturation']);
$header = "GET /" . $pageSource . $get . " HTTP/1.0\r\n";
$header .= "Host: " . $_SERVER['HTTP_HOST'] . "\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "\r\n";
$header .= "\r\n";
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
));
$hostname = 'ssl://' . $_SERVER['HTTP_HOST'].':443';
$stream = stream_socket_client($hostname, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);
/*if ($_SERVER['HTTPS'] == 'on'):
$stream = fsockopen('ssl://' . $_SERVER['HTTP_HOST'], 443, $errno, $errstr, 30);
else:
$stream = fsockopen($_SERVER['SERVER_ADDR'], 80, $errno, $errstr, 30);
endif;*/
if (!$stream) {
echo "$errstr ($errno)
\n";
exit($_SERVER['HTTP_HOST'] . ' erreur socket fsockopen');
} else {
$contenu = "ID;
// Envoi du message
include_once (rtrim($_SERVER['DOCUMENT_ROOT'],'/').'/lib/laetis/mailer/htmlMimeMail.php');
$obj_mail = new htmlMimeMail();
$obj_mail->setFrom("contact@jama.fr");
$obj_mail->setSubject($sujet);
$obj_mail->setHtml($contenu, '', './');
// Envoi de la notice en pièce jointe si elle existe
$article = new Tbq_article();
if($resultatsNotice = $article->getNoticeEmail($this->ID)) {
foreach ($resultatsNotice as $ligne) {
$attachment = new fileAttachment(dirname(__FILE__)."/../../../".$article->repNoticesEmail.$ligne['url']."_A_FR.pdf", 'application/pdf');
$obj_mail->addAttachment($attachment);
}
}
// Envoi au client
$obj_mail->send(array($resultats[0]['emailFacturation']), 'smtp');
// Envoi a JAMA
$obj_mail->send(array("contact@jama.fr"), 'smtp');
// Envoi a LAETIS
$destinataire = array('christophe.raffy@laetis.fr');
$obj_mail->send($destinataire, 'smtp');
} // FIN
} // FIN function genererEmailConfirmationCommande($pageSource)
function getTotalPoidsCommande()
{
$requete = "SELECT SUM(boutique_obj_ligneCommande.quantite * boutique_obj_article.poidsNet)
AS totalPoidsCommande
FROM boutique_obj_ligneCommande, boutique_obj_article
WHERE boutique_obj_ligneCommande.ID_commande = '" . $this->ID . "'
AND boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['totalPoidsCommande'];
} // FIN function getTotalPoidsCommande()
function getTypeLivraison($ID_tarifLivraison)
{
$requete = "SELECT transport FROM boutique_obj_tarifLivraison WHERE ID = '" . $ID_tarifLivraison . "'";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['transport'];
} // FIN function getTypeLivraison($ID_tarifLivraison)
function queDesProduitsAvecFraisDePortGratuit($ID_pays)
{
$produitAvecPortOffert = array();
$requete = "SELECT boutique_obj_article.ID
FROM boutique_obj_article
WHERE boutique_obj_article.fraisDePortOffert='1'";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne):
$produitAvecPortOffert[] = $ligne['ID'];
endforeach;
if (!$produitAvecPortOffert):
return false;
endif;
$requete = "SELECT boutique_obj_ligneCommande.ID
FROM boutique_obj_ligneCommande
WHERE boutique_obj_ligneCommande.ID_commande='" . $this->ID . "'
AND boutique_obj_ligneCommande.ID_article NOT IN (" . implode(',', $produitAvecPortOffert) . ")";
$resultats = T_LAETIS_site::requeter($requete);
if ($resultats[0]['ID']):
return false;
// Retourne l'ID tarifLivraison où le frais de port celui des chèques cadeaux soit 0
else:
if ($ID_pays == 1): // France
return $this->ID_tarifLivraisonProduitAvecPortGratuitFrance;
else:
return $this->ID_tarifLivraisonProduitAvecPortGratuitEurope;
endif;
endif;
} // FIN function queDesProduitsAvecFraisDePortGratuit()
/**************************************************/
/** CHEQUE CADEAU
* /**************************************************/
/**
* private
* Applique le chèque cadeau à la commande
* @param
* @return array le numéro d'erreur
*/
function appliquerChequeCadeau($valeurs)
{
$retour = array();
$chequeCadeau = new Tbq_chequeCadeau();
// Si ce code n'a pas déja été utilisé
if ($chequeCadeau->getNonUtilise($valeurs['chequeCadeau'])) {
// S'il est valide
$promoValideCC = $chequeCadeau->getValide($valeurs['chequeCadeau'], '1');
if (!$promoValideCC) {
$retour['numErreur'] = 1;
$retour['message'] = "Votre chèque cadeau est invalide, veuillez le ressaisir.";
} // FIN if ($promoValideCC)
else {
// On affecte ce code a la commande
$chequeCadeau->validerChequeCadeau($valeurs['chequeCadeau']);
$this->affecterRemiseChequeCadeau();
$retour['numErreur'] = 99;
$retour['message'] = "Votre chèque cadeau a bien été pris en compte.";
}
} // FIN if ($chequeCadeau->getNonUtilise($_POST['chequeCadeau']))
else {
$retour['numErreur'] = 0;
$retour['message'] = "Votre chèque cadeau a déjà été utilisé.";
}
return $retour;
} // FIN function appliquerChequeCadeau($valeurs)
function queDesChequesCadeaux()
{
$requete = "SELECT boutique_obj_ligneCommande.ID
FROM boutique_obj_article, boutique_obj_ligneCommande
WHERE boutique_obj_ligneCommande.ID_commande='" . $this->ID . "'
AND boutique_obj_ligneCommande.ID_article=boutique_obj_article.ID
AND boutique_obj_article.reference NOT LIKE 'CHOUETTE%'";
$resultats = T_LAETIS_site::requeter($requete);
if ($resultats[0]['ID']) {
return false;
} // Retourne l'ID tarifLivraison où le frais de port celui des chèques cadeaux soit 0
else {
return $this->ID_tarifLivraisonChequeCadeau;
}
} // FIN function queDesChequesCadeaux()
function affecterRemiseChequeCadeau()
{
$totalCommandeTTC = $this->montant;
$remise = 0;
$requete = "SELECT
SUM(boutique_obj_article.prixTTC) AS totalRemise,
SUM(montantPersonnalise) AS montantPersonnalise
FROM
boutique_obj_chequeCadeau LEFT JOIN boutique_obj_article
ON (boutique_obj_chequeCadeau.ID_article = boutique_obj_article.ID)
WHERE
ID_commande_utilise='" . $_SESSION['ID_commande'] . "'";
$ligne = T_LAETIS_site::requeter($requete);
// Si l'utilisateur a bien entré un chèque cadeau
if ($ligne[0]['totalRemise'] > 0):
$remise = $ligne[0]['totalRemise'];
elseif ($ligne[0]['montantPersonnalise'] > 0):
$remise = $ligne[0]['montantPersonnalise'];
endif;
if ($remise > 0):
$totalCommandeTTC = $totalCommandeTTC - $remise;
if ($totalCommandeTTC < 0):
$totalCommandeTTC = 0;
endif;
$requete = "UPDATE
boutique_obj_commande
SET
remiseChequeCadeau = '" . $remise . "'
WHERE
ID='" . $_SESSION['ID_commande'] . "'";
T_LAETIS_site::requeter($requete);
$this->remiseChequeCadeau = $remise;
endif;
return $totalCommandeTTC;
} // FIN function affecterRemiseChequeCadeau()
/**
* private
* Affiche une phrase bilan sur le récap de la commande
* @param
* @return string
*/
function afficherRecapChequeCadeau()
{
$message = '';
if ($this->remiseChequeCadeau) {
$message = "Paiement par chèques cadeaux : " . number_format($this->remiseChequeCadeau, 2, ',', ' ') . " € ";
} // FIN if ($this->remiseChequeCadeau)
return $message;
} // FIN function afficherRecapChequeCadeau()
/**
* private
* Calcule le montant à payer
* @param
* @return double
*/
function calculerMontantApresChequeCadeau($totalCommandeTTC)
{
$totalCommandeApresReduction = $totalCommandeTTC;
if ($this->remiseChequeCadeau) {
$totalCommandeApresReduction = $totalCommandeTTC - $this->remiseChequeCadeau;
} // FIN if ($this->remiseChequeCadeau)
if ($totalCommandeApresReduction < 0) {
$totalCommandeApresReduction = 0;
}
return $totalCommandeApresReduction;
} // FIN function calculerMontantApresChequeCadeau($totalCommandeTTC)
/**************************************************/
/** FIN CHEQUE CADEAU
* /**************************************************/
/**************************************************/
/** CODE PROMO
* /**************************************************/
/**
* private
* Applique le code promo à la commande
* @param
* @return array le numéro d'erreur
*/
function appliquerCodePromo($valeurs)
{
$retour = array();
// Le code promo est il valide ?
$requete = "SELECT * FROM boutique_obj_offreSpeciale
WHERE boutique_obj_offreSpeciale.dateDebut <='" . date("Y-m-d H:i:s") . "'
AND boutique_obj_offreSpeciale.dateFin >='" . date("Y-m-d H:i:s") . "'
AND boutique_obj_offreSpeciale.code = '" . $valeurs['code'] . "'";
$detailPromo = T_LAETIS_site::requeter($requete);
// code promo n'existe pas ou n'est plus valide
if (!$detailPromo[0]['ID']) {
$retour['numErreur'] = 0;
$retour['message'] = "Ce code promo n'est pas valable.";
return $retour;
} // FIN if (!$detailPromo[0]['ID'])
// Code promo existe.
// Test si un code promo a déjà été attribué à la commande
$ristourne = $this->getDejaUtiliseUnCode();
if ($ristourne) {
// Un code promo a déjà ete appliqué
$retour['numErreur'] = 1;
$retour['message'] = "Une offre est déjà appliquée à votre commande.";
return $retour;
} // FIN if ($ristourne)
// On vérifie que le montant de la commande dépasse la limite du code promo
if ($this->montant < $detailPromo[0]['limite']) {
$retour['numErreur'] = 2;
$retour['message'] = "Le montant minimum pour utiliser ce code promo est de " . $detailPromo[0]['limite'] . " €.
Pour ajouter d'autres produits dans votre panier, cliquez-ici.";
return $retour;
} // FIN if ($this->montant < $detailPromo[0]['limite'])
// Vérifier si sur certains produits
if ($detailPromo[0]['famillesEnPromo']) {
$tabFamillesCommandees = $this->getIDFamillesArticlesEnCommande();
$tabFamillesEnPromo = explode(',', $detailPromo[0]['famillesEnPromo']);
$comprisDansPromo = 0;
foreach ($tabFamillesCommandees as $f) {
if (in_array($f, $tabFamillesEnPromo)) {
$comprisDansPromo = 1;
}
}
if ($comprisDansPromo == 0) {
$retour['numErreur'] = 3;
$retour['message'] = "Cette offre n'est applicable que sur certaines catégories de produits.
";
$retour['message'] .= "Ces catégories sont:
";
foreach ($tabFamillesEnPromo as $f) {
$fam = new Tbq_famille($f);
$retour['message'] .= "- " . $fam->titre . "
";
}
return $retour;
} //FIN if ($comprisDansPromo==0)
} // FIN if ($detailPromo[0]['famillesEnPromo'])
// Vérifier si sur un article
else if ($detailPromo[0]['articleEnPromo']) {
$tabArticlesCommandes = $this->getIDArticlesEnCommande();
$comprisDansPromo = 0;
if (in_array($detailPromo[0]['articleEnPromo'], $tabArticlesCommandes)) {
$comprisDansPromo = 1;
}
if ($comprisDansPromo == 0) {
$articlePromo = new Tbq_article($detailPromo[0]['articleEnPromo']);
$retour['numErreur'] = 3;
$retour['message'] = "Cette offre n'est applicable que sur un produit : ".$articlePromo->titre;
return $retour;
} //FIN if ($comprisDansPromo==0)
} // FIN if ($detailPromo[0]['articleEnPromo'])
// Tout est OK
// le code promo existe et peut etre appliqué
$requete = "UPDATE boutique_obj_commande
SET promoCode = '" . $detailPromo[0]['code'] . "',
promoID_typ = '" . $detailPromo[0]['ID_typPromo'] . "',
promoMontant = '" . $detailPromo[0]['gain'] . "',
promoFamilles = '" . $detailPromo[0]['famillesEnPromo'] . "'
WHERE ID = '" . $_SESSION['ID_commande'] . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction appliquerCodePromo Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
$this->promoCode = $detailPromo[0]['code'];
$this->promoID_typ = $detailPromo[0]['ID_typPromo'];
$this->promoMontant = $detailPromo[0]['gain'];
$this->promoFamilles = $detailPromo[0]['famillesEnPromo'];
$this->promoArticle = $detailPromo[0]['articleEnPromo'];
$retour['numErreur'] = 99;
$retour['message'] = "L'offre a été appliquée à votre commande.";
return $retour;
} // FIN function appliquerCodePromo($valeurs)
/**
* private
* Vérifie si la personne a déjà entré un code promo ou pas
* @param
* @return bool true/false
*/
function getDejaUtiliseUnCode()
{
$requete = "SELECT ID FROM boutique_obj_commande
WHERE ID='" . $_SESSION['ID_commande'] . "'
AND promoMontant != ''
AND promoMontant != 0";
$resultats = T_LAETIS_site::requeter($requete);
// Un code existe
if ($resultats[0]['ID']) {
return true;
} // Pas de code
else {
return false;
}
} // FIN function getDejaUtiliseUnCode()
/**
* private
* Affiche une phrase bilan sur le récap de la commande
* @param
* @return string
*/
function afficherRecapPromotion()
{
$message = '';
switch ($this->promoID_typ) {
case '1':
$message = "Votre code promo vous fait bénéficier d'une réduction de : - " . number_format($this->promoMontant, 2, ',', ' ') . " €";
break;
case '2':
$message = "Votre code promo vous fait bénéficier d'une promotion de : - " . number_format($this->promoMontant, 2, ',', ' ') . " %";
break;
case '3':
$articleCadeau = new Tbq_article($this->promoMontant);
$message = "Votre code promo vous fait bénéficier d'un cadeau:
" . $articleCadeau->titre . " d'un montant de " . $articleCadeau->prixTTC . " €";
break;
default:
} // FIN switch($this->promoID_typ)
return $message;
} // FIN function getDejaUtiliseUnCode()
/**
* private
* Calcule le montant à payer
* @param
* @return double
*/
/*function calculerMontantApresReduction($totalCommandeTTC)
{
$totalCommandeApresReduction=$totalCommandeTTC;
switch($this->promoID_typ)
{
case '1':
$totalCommandeApresReduction = $totalCommandeTTC - $this->promoMontant;
break;
case '2':
// On vérifie si la promo doit se faire sur des produits particuliers.
// Si oui alors on applique la promotion qu'à ces articles
if($this->promoFamilles)
{
$totalPrixArticlesComprisPromotion = $this->getSommeArticlesEnCommandeComprisDansPromotion($this->ID);
$totalReduction = $totalPrixArticlesComprisPromotion * $this->promoMontant/100;
$totalCommandeApresReduction = $totalCommandeTTC-$totalReduction;
}
else
{
$totalCommandeApresReduction = $totalCommandeTTC-($totalCommandeTTC * $this->promoMontant/100);
}
break;
default:
} // FIN switch($this->promoID_typ)
return $totalCommandeApresReduction;
} // FIN function calculerMontantApresReduction($totalCommandeTTC)*/
function calculerMontantApresReduction($totalCommandeTTC, $fraisPortTTC)
{
$totalCommandeApresReduction = $totalCommandeTTC;
switch ($this->promoID_typ) {
case '1':
$totalCommandeApresReduction = $totalCommandeTTC - $this->promoMontant;
$totalReduction = $this->promoMontant;
break;
case '2':
// On vérifie si la promo doit se faire sur des produits particuliers.
// Si oui alors on applique la promotion qu'à ces articles
if ($this->promoFamilles) {
$totalPrixArticlesComprisPromotion = $this->getSommeArticlesEnCommandeComprisDansPromotion($this->ID);
//echo 'totalPrixArticlesComprisPromotion'.$totalPrixArticlesComprisPromotion;
$totalReduction = $totalPrixArticlesComprisPromotion * $this->promoMontant / 100;
$totalCommandeApresReduction = $totalCommandeTTC - $totalReduction;
} else {
// AJOUT CHR 2016-06
// On ne veut pas que les produits déjà en promotion entrent dans la réduction
/*if ($this->promoCode == 'MOISGITZO'):
$requete = "SELECT
SUM(boutique_obj_ligneCommande.tarif * boutique_obj_ligneCommande.quantite)
AS totalCommandeSansProduitsDejaSoldes
FROM
boutique_obj_ligneCommande,
boutique_obj_article,
boutique_obj_commande
WHERE
boutique_obj_ligneCommande.ID_commande = '" . $this->ID . "'
AND boutique_obj_article.prixPromotion = '0'
AND boutique_obj_ligneCommande.ID_commande = boutique_obj_commande.ID
AND boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID
AND boutique_obj_article.ID_fabricant IN (2)";
// - montantReductionTTC
// AND boutique_obj_article.ID_fabricant NOT IN (2)
// OR (boutique_rel_famille_article.ID_famille = 161) ) AND boutique_obj_article.ID = boutique_rel_famille_article.ID_article MARCHE PAS
// echo $requete;
$resultats = T_LAETIS_site::requeter($requete);
$totalCommandeSansProduitsDejaSoldes = $resultats[0]['totalCommandeSansProduitsDejaSoldes'];
$totalReduction = $totalCommandeSansProduitsDejaSoldes * $this->promoMontant / 100;
$totalCommandeApresReduction = $totalCommandeTTC - $totalReduction;
else:*/
// FIN AJOUT CHR 2016-06
$totalPrixArticlesHorsDejaEnPromotion = $this->getSommeArticlesEnCommandeHorsDejaEnPromotion($this->ID);
$totalReduction = $totalPrixArticlesHorsDejaEnPromotion * $this->promoMontant / 100;
$totalCommandeApresReduction = $totalCommandeTTC - $totalReduction;
//$totalCommandeApresReduction = $totalCommandeTTC-($totalCommandeTTC * $this->promoMontant/100);
//$totalReduction = $totalCommandeTTC * $this->promoMontant/100;
//endif;
}
break;
default:
} // FIN switch($this->promoID_typ)
// Tout est OK
// le code promo existe et peut etre appliqué
$requete = "UPDATE boutique_obj_commande
SET
montant = '" . Tbq_commande::convertirFloatPourMysql($totalCommandeApresReduction + $fraisPortTTC) . "',
montantReductionTTC = '" . Tbq_commande::convertirFloatPourMysql($totalReduction) . "'
WHERE ID = '" . $_SESSION['ID_commande'] . "'";
T_LAETIS_site::requeter($requete);
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction calculerMontantApresReduction Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
return $totalCommandeApresReduction;
} // FIN function calculerMontantApresReduction($totalCommandeTTC, $fraisPortTTC)
function calculerMontantApresOffreCdOffert($totalCommandeTTCHorsFP, $fraisPortTTC)
{
$totalCommandeApresReduction = $totalCommandeTTCHorsFP;
$promoMontant = 0;
// On vérifie qu'il y a des CD dans la commande
$requete = "SELECT
SUM(boutique_obj_ligneCommande.tarif * boutique_obj_ligneCommande.quantite)
AS totalCommandeCD
FROM boutique_obj_ligneCommande, boutique_obj_commande,
boutique_obj_article, boutique_rel_famille_article
WHERE boutique_obj_commande.ID = '" . $this->ID . "'
AND boutique_obj_commande.typeLivraison = 'Colissimo'
AND boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande
AND boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID
AND boutique_obj_article.ID = boutique_rel_famille_article.ID_article
AND boutique_rel_famille_article.ID_famille IN (65,66,105,81,82,83,84,85,86,87)";
$resultats = T_LAETIS_site::requeter($requete);
$totalCommandeSansProduitsDejaSoldes = $resultats[0]['totalCommandeCD'];
if ($totalCommandeSansProduitsDejaSoldes > 0):
$totalCommandeApresReduction = $totalCommandeTTCHorsFP;
$totalReduction = $fraisPortTTC;
$promoMontant = $fraisPortTTC;
else:
$totalCommandeApresReduction = $totalCommandeTTCHorsFP + $fraisPortTTC;
$totalReduction = 0;
$promoMontant = 0;
endif;
$montant = Tbq_commande::convertirFloatPourMysql($totalCommandeApresReduction);
$montantReductionTTC = Tbq_commande::convertirFloatPourMysql($totalReduction);
$requete = "UPDATE boutique_obj_commande
SET
montant = '" . $montant . "',
montantReductionTTC = '" . $montantReductionTTC . "',
promoMontant = '" . $promoMontant . "'
WHERE ID = '" . $_SESSION['ID_commande'] . "'";
T_LAETIS_site::requeter($requete);
$this->montant = $montant;
$this->montantReductionTTC = $montantReductionTTC;
$this->promoMontant = $promoMontant;
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction calculerMontantApresOffreCdOffert Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
return $totalCommandeApresReduction;
} // FIN calculerMontantApresOffreCdOffert($totalCommandeTTCHorsFP, $fraisPortTTC)
function afficherRecapOffreCdOffert()
{
$message = '';
if ($this->montantReductionTTC > 0) {
$message = "Jama vous fait bénéficier d'une réduction de : " . number_format($this->montantReductionTTC, 2, ',', ' ') . " € ";
} // FIN if ($this->montantReductionTTC > 0)
return $message;
} // FIN function afficherRecapOffreCdOffert()
function verifierSiTragopan()
{
// On vérifie qu'il y a des Tragopan dans la commande
$requete = "SELECT
SUM(boutique_obj_ligneCommande.tarif * boutique_obj_ligneCommande.quantite)
AS totalCommandeTragopan
FROM
boutique_obj_ligneCommande,
boutique_obj_commande,
boutique_obj_article
WHERE
boutique_obj_commande.ID = '" . $this->ID . "'
AND boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande
AND boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID
AND boutique_obj_article.ID_fabricant = 65";
$resultats = T_LAETIS_site::requeter($requete);
//echo $requete;
return $resultats[0]['totalCommandeTragopan'];
} // FIN verifierSiTragopan()
function calculerMontantApresOffreTragopanOffert($totalCommandeTTCHorsFP, $fraisPortTTC, $totalProduitsTragopan)
{
$totalCommandeApresReduction = $totalCommandeTTCHorsFP;
$promoMontant = 0;
// Si total des produits Tragopan est supérieur à 100 euros on fait la réduc
if ($totalProduitsTragopan > 100):
$totalCommandeApresReduction = $totalCommandeTTCHorsFP;
$totalReduction = $fraisPortTTC;
$promoMontant = $fraisPortTTC;
else:
$totalCommandeApresReduction = $totalCommandeTTCHorsFP + $fraisPortTTC;
$totalReduction = 0;
$promoMontant = 0;
endif;
$montant = Tbq_commande::convertirFloatPourMysql($totalCommandeApresReduction);
$montantReductionTTC = Tbq_commande::convertirFloatPourMysql($totalReduction);
$requete = "UPDATE boutique_obj_commande
SET
montant = '" . $montant . "',
montantReductionTTC = '" . $montantReductionTTC . "',
promoMontant = '" . $promoMontant . "'
WHERE ID = '" . $_SESSION['ID_commande'] . "'";
T_LAETIS_site::requeter($requete);
$this->montant = $montant;
$this->montantReductionTTC = $montantReductionTTC;
$this->promoMontant = $promoMontant;
return $totalCommandeApresReduction;
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction calculerMontantApresOffreTragopanOffert Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} // FIN calculerMontantApresOffreTragopanOffert($totalCommandeTTCHorsFP, $fraisPortTTC, $totalProduitsTragopan)
function afficherRecapOffreTragopanOffert($langue='fr')
{
$message = '';
if ($this->montantReductionTTC > 0) {
switch ($langue):
case 'en':
$message = "Tragopan offer: JAMA offers postage for an amount of : " . number_format($this->montantReductionTTC, 2, ',', ' ') . " € ";
break;
case 'es':
$message = "Oferta tragopan: JAMA ofrece franqueo por un importe de : " . number_format($this->montantReductionTTC, 2, ',', ' ') . " € ";
break;
default:
$message = "Offre Tragopan : JAMA vous offre les frais de port pour un montant de : " . number_format($this->montantReductionTTC, 2, ',', ' ') . " € ";
endswitch;
} // FIN if ($this->montantReductionTTC > 0)
return $message;
} // FIN function afficherRecapOffreCdOffert()
function calculerMontantApresOffreTemporaire($totalCommandeTTCHorsFP, $fraisPortTTC)
{
$totalCommandeApresReduction = $totalCommandeTTCHorsFP;
$promoMontant = 0;
// On ne veut pas que les produits déjà en promotion entrent dans la réduction
$requete = "SELECT
SUM(boutique_obj_ligneCommande.tarif * boutique_obj_ligneCommande.quantite) - montantReductionTTC
AS totalCommandeSansProduitsDejaSoldes
FROM
boutique_obj_ligneCommande,
boutique_obj_article,
boutique_obj_commande
WHERE
boutique_obj_ligneCommande.ID_commande = '" . $this->ID . "'
AND boutique_obj_article.prixPromotion = '0'
AND boutique_obj_ligneCommande.ID_commande = boutique_obj_commande.ID
AND boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID";
// AND boutique_obj_article.ID_fabricant NOT IN (2)
// OR (boutique_rel_famille_article.ID_famille = 161) ) AND boutique_obj_article.ID = boutique_rel_famille_article.ID_article MARCHE PAS
$resultats = T_LAETIS_site::requeter($requete);
$totalCommandeSansProduitsDejaSoldes = $resultats[0]['totalCommandeSansProduitsDejaSoldes'];
// à partir de 850 euros d'achat : -10%
if ($totalCommandeSansProduitsDejaSoldes >= 850):
$totalCommandeApresReduction = $totalCommandeTTCHorsFP - ($totalCommandeSansProduitsDejaSoldes * 10 / 100);
$totalReduction = $totalCommandeSansProduitsDejaSoldes * 10 / 100;
$promoMontant = 10;
// à partir de 500 euros d'achat : -7%
elseif ($totalCommandeSansProduitsDejaSoldes >= 500):
$totalCommandeApresReduction = $totalCommandeTTCHorsFP - ($totalCommandeSansProduitsDejaSoldes * 7 / 100);
$totalReduction = $totalCommandeSansProduitsDejaSoldes * 7 / 100;
$promoMontant = 7;
// à partir de 200 euros d'achat : -7.5%
/*elseif ($totalCommandeSansProduitsDejaSoldes >= 200):
$totalCommandeApresReduction = $totalCommandeTTCHorsFP - ($totalCommandeSansProduitsDejaSoldes * 7.5 / 100);
$totalReduction = $totalCommandeSansProduitsDejaSoldes * 7.5 / 100;
$promoMontant = 7.5;*/
// à partir de 200 euros d'achat : -5%
elseif ($totalCommandeSansProduitsDejaSoldes >= 200):
$totalCommandeApresReduction = $totalCommandeTTCHorsFP - ($totalCommandeSansProduitsDejaSoldes * 5 / 100);
$totalReduction = $totalCommandeSansProduitsDejaSoldes * 5 / 100;
$promoMontant = 5;
endif;
$montant = Tbq_commande::convertirFloatPourMysql($totalCommandeApresReduction + $fraisPortTTC);
$montantReductionTTC = Tbq_commande::convertirFloatPourMysql($totalReduction);
$requete = "UPDATE boutique_obj_commande
SET
montant = '" . $montant . "',
soldesReductionTTC = '" . $montantReductionTTC . "',
soldesMontant = '" . $promoMontant . "'
WHERE ID = '" . $_SESSION['ID_commande'] . "'";
T_LAETIS_site::requeter($requete);
$this->montant = $montant;
$this->soldesReductionTTC = $montantReductionTTC;
$this->soldesMontant = $promoMontant;
return $totalCommandeApresReduction;
/* LOG */
$logfile="log-update-commande.txt";
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/log/".$logfile, "a");
fwrite($fp, date('Y-m-d H:i:s')." : Fonction calculerMontantApresOffreTemporaire Tbq_commande\n");
fwrite($fp, $requete."\n");
fwrite($fp, "-------------------------------------------\n");
fclose($fp);
} // FIN function calculerMontantApresOffreTemporaire($totalCommandeTTCHorsFP, $fraisPortTTC)
function afficherRecapOffreTemporaire()
{
$message = '';
if ($this->soldesReductionTTC > 0) {
$message = "Jama vous fait bénéficier d'une réduction de : " . $this->soldesMontant . "%, soit " . number_format($this->soldesReductionTTC, 2, ',', ' ') . " € ";
} // FIN if ($this->montantReductionTTC > 0)
return $message;
} // FIN function afficherRecapOffreTemporaire()
/**
* private
* Lister les familles de la commande
* @param
* @return la liste des familles de la commande
*/
function getIDFamillesArticlesEnCommande()
{
$requete = "SELECT boutique_rel_famille_article.ID_famille
FROM boutique_obj_ligneCommande, boutique_rel_famille_article
WHERE boutique_obj_ligneCommande.ID_commande='" . $_SESSION['ID_commande'] . "'
AND boutique_obj_ligneCommande.ID_article=boutique_rel_famille_article.ID_article
ORDER BY boutique_rel_famille_article.ID_famille ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats[] = $ligne['ID_famille'];
}
return ($resultats);
} // FIN function getIDFamillesArticlesEnCommande()
/**
* private
* Lister les ID articles de la commande
* @param
* @return la liste des familles de la commande
*/
function getIDArticlesEnCommande()
{
$requete = "SELECT boutique_obj_ligneCommande.ID_article
FROM boutique_obj_ligneCommande
WHERE boutique_obj_ligneCommande.ID_commande='" . $_SESSION['ID_commande'] . "'
ORDER BY boutique_obj_ligneCommande.ID_article ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne) {
$resultats[] = $ligne['ID_article'];
}
return ($resultats);
} // FIN function getIDArticlesEnCommande()
/**
* private
* Fait la somme du prix TTC des articles soumis à la promtion
* @param
* @return le prix TTC
*/
function getSommeArticlesEnCommandeComprisDansPromotion($ID_commande)
{
$requete = "SELECT boutique_obj_ligneCommande.tarif, boutique_obj_ligneCommande.quantite
FROM boutique_obj_ligneCommande
LEFT JOIN boutique_obj_article ON (boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID),
boutique_rel_famille_article
WHERE boutique_obj_ligneCommande.ID_commande='" . $ID_commande . "'
AND boutique_obj_ligneCommande.ID_article=boutique_rel_famille_article.ID_article
AND boutique_rel_famille_article.ID_famille IN (" . $this->promoFamilles . ")
AND boutique_obj_article.`prixPromotion` = 0
AND boutique_obj_article.`occasion` = 0
AND boutique_obj_article.`surDemande` = 0
AND boutique_obj_article.`stock` != 2
GROUP BY boutique_obj_ligneCommande.ID";
//SUM(boutique_obj_ligneCommande.tarif * boutique_obj_ligneCommande.quantite) AS prixTotal
//AND boutique_rel_famille_article.ID_famille NOT IN (212,364,397,425,426,427,428,430,431,390,358,420,405,408,213)
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
$prixTotal = 0;
foreach ($resSql as $ligne) {
$prixTotal += $ligne['tarif']*$ligne['quantite'];
}
return $prixTotal;
//return ($resultats[0]['prixTotal']);
} // FIN function getSommeArticlesEnCommandeComprisDansPromotion($ID_commande)
/**
* private
* Fait la somme du prix TTC des articles soumis à la promotion
* Ne pas prendre les produits de la marque "Swarovski Optik" soit ID_fabricant` != 37
* LEICA (154), KITE OPTICS (147), ZEISS (156)
* @param
* @return le prix TTC
*/
function getSommeArticlesEnCommandeHorsDejaEnPromotion($ID_commande)
{
$requete = "SELECT
boutique_obj_ligneCommande.tarif, boutique_obj_ligneCommande.quantite
FROM
boutique_obj_ligneCommande
LEFT JOIN boutique_obj_article ON (boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID)
LEFT JOIN boutique_rel_famille_article ON (boutique_obj_ligneCommande.ID_article = boutique_rel_famille_article.ID_article)
LEFT JOIN boutique_obj_famille ON (boutique_rel_famille_article.ID_famille = boutique_obj_famille.ID)
WHERE
boutique_obj_ligneCommande.ID_commande='" . $ID_commande . "'
AND
boutique_obj_famille.ID_gamme NOT IN (37,38,52)
AND
boutique_obj_article.`prixPromotion` = 0
AND boutique_obj_article.`occasion` = 0
AND boutique_obj_article.`surDemande` = 0
AND boutique_obj_article.`stock` != 2
AND boutique_obj_article.`ID_fabricant` NOT IN (37, 154, 147, 156)
GROUP BY
boutique_obj_ligneCommande.ID";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
$prixTotal = 0;
foreach ($resSql as $ligne) {
$prixTotal += $ligne['tarif']*$ligne['quantite'];
}
return $prixTotal;
//return ($resultats[0]['prixTotal']);
} // FIN function getSommeArticlesEnCommandeHorsDejaEnPromotion($ID_commande)
/**************************************************/
/** FIN CODE PROMO
* /**************************************************/
/**************************************************/
/** VARIANTES ARTICLES
* /**************************************************/
/**
* private
* Générer la liste des variantes classées par groupe d'un article
* @param
* @return
*/
function genererTexteVariantes($ID_ligneCommande, $ID_article, $langue = "fr")
{
$langue = strtoupper($langue);
$requete = "SELECT
boutique_obj_variante.ID,
boutique_obj_variante.titre" . $langue . " AS titreVariante,
boutique_obj_variante_groupe.titre" . $langue . " AS titreVarianteGroupe,
boutique_obj_variante_groupe.legende" . $langue . " AS legendeVarianteGroupe,
IF(boutique_rel_article_variante.stock=1, '" . self::$tabTexteStock['enStock'][$langue] . "',
IF(boutique_rel_article_variante.stock=-1, '" . self::$tabTexteStock['surCommande'][$langue] . "',
'" . self::$tabTexteStock['enReappro'][$langue] . "')) AS texteStock
FROM
boutique_rel_ligneCommande_variante
LEFT JOIN boutique_obj_variante
ON (boutique_rel_ligneCommande_variante.ID_variante = boutique_obj_variante.ID)
LEFT JOIN boutique_obj_variante_groupe
ON (boutique_obj_variante.ID_varianteGroupe = boutique_obj_variante_groupe.ID),
boutique_rel_article_variante
WHERE
boutique_rel_ligneCommande_variante.ID_ligneCommande = '" . $ID_ligneCommande . "'
AND boutique_rel_article_variante.ID_article = '" . $ID_article . "'
AND boutique_rel_ligneCommande_variante.ID_variante = boutique_rel_article_variante.ID_variante
ORDER BY
boutique_obj_variante.ID_varianteGroupe ASC, boutique_obj_variante.ID ASC";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
$texteVariantes = "";
for ($i = 0; $i < sizeof($resSql); $i++):
$texteVariantes .= "
" . $resSql[$i]['titreVarianteGroupe'] . " " . $resSql[$i]['legendeVarianteGroupe'] . " : " . $resSql[$i]['titreVariante'] . "
" . self::$tabTexteStock['delais'][$langue] . " : " . $resSql[$i]['texteStock'] . "
";
endfor;
return $texteVariantes;
} //FIN function genererTexteVariantes($ID_ligneCommande, $langue = "fr")
function estPayeeOuValidee()
{
if (($this->statut == 'payee cb')
|| ($this->statut == 'payee cb paypal')
|| ($this->statut == 'payee cb 3 fois')
|| ($this->statut == 'payee cb 3 fois alma')
|| ($this->statut == 'payee en salon')
|| ($this->statut == 'payee')
|| ($this->statut == 'validee cheque')
|| ($this->statut == 'validee virement')
):
return true;
endif;
return false;
} // FIN function estPayeeOuValidee()
/**************************************************/
/** PROTECTION DES COMMANDES
* /**************************************************/
function crypter($nomClient)
{
return crypt($nomClient);
} // FIN function crypter($nomClient)
/**
* private
* Pour la présentation d'un chiffre float
* @param
* @return le chiffre bien affiché
*/
function convertirFloatPourMysql($chiffre)
{
return number_format($chiffre, '2', '.', '');
} // FIN function afficherFloat($chiffre)
/**
* private
* Pour la présentation d'un chiffre float
* @param
* @return le chiffre bien affiché
*/
static function afficherEntier($chiffre)
{
return number_format($chiffre, 0, '', ' ');
} // FIN function afficherEntier($chiffre)
}
?>
/**
* Gestion des marques de la boutique Laetis
*
* Permet de créer, modifier, supprimer des gammes, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_marque
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var string $titre Nom de la marque
* @access private
*/
var $titre;
/**
* @var string $titreEN Nom de la marque
* @access private
*/
var $titreEN;
/**
* @var string $titreES Nom de la marque
* @access private
*/
var $titreES;
/**
* @var string $sousTitre Descriptif de la marque
* @access private
*/
var $sousTitre;
/**
* @var string $sousTitreEN Descriptif de la marque
* @access private
*/
var $sousTitreEN;
/**
* @var string $sousTitreES Descriptif de la marque
* @access private
*/
var $sousTitreES;
/**
* @var string $ergonomie Ergonomie de la marque
* @access private
*/
var $ergonomie;
/**
* @var int $ordre Ordre de la marque
* @access private
*/
var $ordre;
/**
* @var int $visible Visibilité de la marque
* @access private
*/
var $visible;
/**
* @var string $url Url réecrite de la famille
* @access private
*/
var $url;
var $urlEN;
var $urlES;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_marque($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_marque WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_marque SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
$this->reecrireUrl($attributs['url']);
$this->reecrireUrl($attributs['urlEN'],'','EN');
$this->reecrireUrl($attributs['urlES'],'','ES');
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_marque SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
$this->reecrireUrl($attributs['url'],$this->ID);
$this->reecrireUrl($attributs['urlEN'],$this->ID,'EN');
$this->reecrireUrl($attributs['urlES'],$this->ID,'ES');
}
$this->lierVisuelsGamme($valeurs);
// Gestion de l'ordre
// L'ordre a changé
if ($this->ordre!=$valeurs['ordreAncien'])
{
$this->traiterOrdreEnregistrer($valeurs);
}
} // FIN function enregistrer()
/**
* private
* Remet les familles dans l'ordre
* @param
* @return
*/
function traiterOrdreEnregistrer($valeurs)
{
// Changements d'ordre
if($valeurs['ordreAncien'])
{
$requete="UPDATE boutique_obj_marque SET ordre=ordre-1
WHERE ordre>'".$valeurs['ordreAncien']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
$requete="UPDATE boutique_obj_marque SET ordre=ordre+1
WHERE ordre >= '".$valeurs['ordre']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
/**
* private
* Remet les gammes dans l'ordre a cause de celui que l'on est en train de supprimer
* @param
* @return
*/
function traiterOrdreSupprimer()
{
$requete="UPDATE boutique_obj_marque SET ordre=ordre-1
WHERE ordre >'".$this->ordre."'";
T_LAETIS_site::requeter($requete);
}
/**
* Liste les objets
* @return array Tableau de Tbq_marque
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_marque
WHERE visible = '1'
ORDER BY ordre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_marque($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_marque
* @author Christophe Raffy
*/
function listerAdmin()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_marque ORDER BY ordre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_marque($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$this->traiterOrdreSupprimer();
$requete = "DELETE FROM boutique_obj_marque WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* Réaffecte l'url de la famille pour le rewriting, selon la chaine $chaine
* @param String $chaine (facultatif), nouvelle url
* @param Int $ID (facultatif), identifiant de la famille
* @author Pierre Carayol
*/
function reecrireUrl($chaine='',$ID='',$lang='')
{
$rewrite = new Tbq_reecritureUrl();
if($chaine=='')//IF chaine non renseignée, réecriture par défaut
{
$chaine = $this->{"titre$lang"};
$ID = $this->ID;
}//FIN IF chaine non renseignée, réecriture par défaut
$this->url = $rewrite->reecrireChaine($chaine,$ID);
$requete = "UPDATE boutique_obj_marque
SET url$lang = '".$this->{"url$lang"}."'
WHERE ID = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
}
?>
/**
* Gestion des gammes de la boutique Laetis
*
* Permet de cr�er, modifier, supprimer des gammes, en int�raction
* avec la base de donn�es
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright La�tis Cr�ations Multim�dias
* @date 2007-11-12
*/
class Tbq_gamme
{
/**
* @var int $ID ID de l'element en base de donn�e
* @access private
*/
var $ID;
/**
* @var string $titre Nom de la gamme
* @access private
*/
var $titre;
/**
* @var string $titre Nom de la gamme
* @access private
*/
var $titreEN;
/**
* @var string $titre Nom de la gamme
* @access private
*/
var $titreES;
/**
* @var string $sousTitre Descriptif de la gamme
* @access private
*/
var $sousTitre;
/**
* @var string $sousTitre Descriptif de la gamme
* @access private
*/
var $sousTitreEN;
/**
* @var string $sousTitre Descriptif de la gamme
* @access private
*/
var $sousTitreES;
/**
* @var string $sousTitre Descriptif de la gamme
* @access private
*/
var $ergonomie;
/**
* @var int $ID_marque ID de la marque auquelle appartient cette gamme
* @access private
*/
var $ID_marque;
/**
* @var int $ordre Ordre de la gamme
* @access private
*/
var $ordre;
/**
* @var int $visible Visibilit� de la gamme
* @access private
*/
var $visible;
/**
* @var string $url Url r�ecrite de la famille
* @access private
*/
var $url;
var $urlEN;
var $urlES;
// Gestion de 6 images pour un article
var $tabReferencesImage = array('','A','B');
var $repPhotos = "/uploads/gamme/";
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function Tbq_gamme($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_gamme WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donn� un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent �tre remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array('tabReferencesImage', 'repPhotos');
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enl�ve l'espace et la virgule du d�but
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe d�j� en BD
$requete = "UPDATE boutique_obj_gamme SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
$this->reecrireUrl($attributs['url']);
$this->reecrireUrl($attributs['urlEN'],'','EN');
$this->reecrireUrl($attributs['urlES'],'','ES');
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_gamme SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
$this->reecrireUrl($attributs['titre'],$this->ID);
$this->reecrireUrl($attributs['titreEN'],$this->ID,'EN');
$this->reecrireUrl($attributs['titreES'],$this->ID,'ES');
}
$this->lierVisuelsGamme($valeurs);
// Gestion de l'ordre
// L'ordre a chang�
if ($this->ordre!=$valeurs['ordreAncien'])
{
$this->traiterOrdreEnregistrer($valeurs);
}
} // FIN function enregistrer()
/**
* private
* Remet les familles dans l'ordre
* @param
* @return
*/
function traiterOrdreEnregistrer($valeurs)
{
// Changements d'ordre
if($valeurs['ordreAncien'])
{
$requete="UPDATE boutique_obj_gamme SET ordre=ordre-1
WHERE ordre>'".$valeurs['ordreAncien']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
$requete="UPDATE boutique_obj_gamme SET ordre=ordre+1
WHERE ordre >= '".$valeurs['ordre']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
/**
* private
* Remet les gammes dans l'ordre a cause de celui que l'on est en train de supprimer
* @param
* @return
*/
function traiterOrdreSupprimer()
{
$requete="UPDATE boutique_obj_gamme SET ordre=ordre-1
WHERE ordre >'".$this->ordre."'";
T_LAETIS_site::requeter($requete);
}
/**
* Liste les objets
* @return array Tableau de Tbq_gamme
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_gamme
WHERE visible = '1'
ORDER BY ordre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_gamme($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_gamme
* @author Christophe Raffy
*/
function listerAdmin()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_gamme ORDER BY ordre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_gamme($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste des gammes selon la marque dont l'ID est pass� en argument
* @param ID_marque ID de la marque
* @return La liste des gammes
*/
function listerParMarque($ID_marque)
{
$requete="SELECT * FROM boutique_obj_gamme
WHERE ID_marque = '".$ID_marque."'
AND visible = 1
ORDER BY ordre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_gamme($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$this->supprimerVisuelsAssocies();
$this->traiterOrdreSupprimer();
$requete = "DELETE FROM boutique_obj_gamme WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* private
* Donn�es sur le visuel de la gamme
* @param
* @return
*/
function lierVisuelsGamme($valeurs)
{
// Traitement du nom du fichier visuel
$nomVisuelBase='../../..'.$this->repPhotos.$this->ID.'_';
// Traitement des visuels
for ($i=1; $itabReferencesImage); $i++)
{
$suppr='supprimerVisuel'.$i;
if ($valeurs[$suppr]=='checked')
{
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
} // FIN if ($valeurs[$suppr]=='checked')
$image='visuel'.$i;
// Traitement du visuel
if (is_uploaded_file($_FILES['gamme']["tmp_name"][$image]))
{
// Enregistrement du fichier visuel
move_uploaded_file($_FILES['gamme']["tmp_name"][$image], $nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
} // FIN for ($i=1; $i<=2; $i++)
} // FIN function lierVisuelsGamme($valeurs)
/**
* private
* Supprimer les visuels
* @param
* @return
*/
function supprimerVisuelsAssocies()
{
$nomVisuelBase = '../../..'.$this->repPhotos.$this->ID.'_';
for ($i=1; $itabReferencesImage); $i++)
{
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
} // FIN for ($i=1; $itabReferencesImage); $i++)
} // FIN function supprimerVisuelsAssocies()
function reecrireUrl($chaine='',$ID='',$lang='')
{
$rewrite = new Tbq_reecritureUrl();
if(!$chaine)//IF chaine non renseign�e, r�ecriture par d�faut
{
$chaine = $this->{"titre$lang"};
$ID = $this->ID;
}//FIN IF chaine non renseign�e, r�ecriture par d�faut
$this->{"url$lang"} = $rewrite->reecrireChaine($chaine,$ID);
$requete = "UPDATE boutique_obj_gamme
SET url$lang = '".$this->{"url$lang"}."'
WHERE ID = '".$this->ID."'";
//echo $requete.'
';
T_LAETIS_site::requeter($requete);
}
}
?>
/**
* Gestion des familles de la boutique Laetis
*
* Permet de créer, modifier, supprimer des familles, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_famille
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var string $titre Nom de la famille
* @access private
*/
var $titre;
/**
* @var string $titre Nom de la famille
* @access private
*/
var $titreEN;
/**
* @var string $titre Nom de la famille
* @access private
*/
var $titreES;
/**
* @var string $sousTitre Descriptif de la famille
* @access private
*/
var $sousTitre;
/**
* @var string $sousTitre Descriptif de la famille
* @access private
*/
var $sousTitreEN;
/**
* @var string $sousTitre Descriptif de la famille
* @access private
*/
var $sousTitreES;
/**
* @var int $ID_gamme ID de la gamme correspondante
* @access private
*/
var $ID_gamme;
/**
* @var int $ordre Ordre de la famille
* @access private
*/
var $ordre;
/**
* @var int $visible Visibilité de la famille
* @access private
*/
var $visible;
/**
* @var string $url Url réecrite de la famille
* @access private
*/
var $url;
var $urlEN;
var $urlES;
// Gestion de 6 images pour un article
var $tabReferencesImage = array('','A','B');
var $repPhotos = "/boutique/uploads/famille/";
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
/*function Tbq_famille ($ID=0)
{
$this->__construct($ID);
}*/
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_famille WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array('tabReferencesImage', 'repPhotos');
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_famille SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
$this->reecrireUrl($attributs['url']);
$this->reecrireUrl($attributs['urlEN'],'','EN');
$this->reecrireUrl($attributs['urlES'],'','ES');
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_famille SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
$this->reecrireUrl($attributs['titre'],$this->ID);
$this->reecrireUrl($attributs['titreEN'],$this->ID,'EN');
$this->reecrireUrl($attributs['titreES'],$this->ID,'ES');
}
$this->lierVisuelsFamille($valeurs);
// Gestion de l'ordre
// La gamme n'a pas changé, mais l'ordre a changé
if ( ($valeurs['gammeAncienne']==$this->ID_gamme) && ($this->ordre!=$valeurs['ordreAncien']) )
{
$this->traiterOrdreEnregistrer($valeurs);
}
else
{
$this->traiterOrdreGamme($valeurs);
}
} // FIN function enregistrer()
/**
* private
* Remet les familles dans l'ordre
* @param
* @return
*/
function traiterOrdreEnregistrer($valeurs)
{
// Changements d'ordre
if($valeurs['ordreAncien'])
{
$requete="UPDATE boutique_obj_famille SET ordre=ordre-1
WHERE ID_gamme='".$this->ID_gamme."' AND ordre>'".$valeurs['ordreAncien']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
$requete="UPDATE boutique_obj_famille SET ordre=ordre+1
WHERE ID_gamme='".$this->ID_gamme."' AND ordre >= '".$valeurs['ordre']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
/**
* private
* Remet les articles dans l'ordre a cause de celui que l'on est en train de supprimer
* @param
* @return
*/
function traiterOrdreGamme($valeurs)
{
// Changement d'odre => remonte d'un cran pour la gamme qui vient de perdre un element
$requete="UPDATE boutique_obj_famille SET ordre=ordre-1
WHERE ID_gamme='".$valeurs['gammeAncienne']."'
AND ordre>'".$valeurs['ordreAncien']."'";
T_LAETIS_site::requeter($requete);
$requete="UPDATE boutique_obj_famille SET ordre=ordre+1
WHERE ID_gamme='".$this->ID_gamme."'
AND ordre >= '".$valeurs['ordre']."' AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
/**
* Liste les objets
* @return array Tableau de Tbq_famille
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_famille ORDER BY ID_gamme ASC, ordre ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_famille($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste des familles selon la gamme dont l'ID est passé en argument
* @param ID_gamme ID de la gamme
* @return Les infos sur la famille
*/
function listerParGamme($ID_gamme)
{
$requete="SELECT * FROM boutique_obj_famille
WHERE ID_gamme='".$ID_gamme."' AND visible = '1'
ORDER BY ordre";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_famille($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste des familles selon la gamme dont l'ID est passé en argument
* @param ID_gamme ID de la gamme
* @return Les infos sur la famille
*/
function listerParGammeAdmin($ID_gamme)
{
$requete="SELECT * FROM boutique_obj_famille
WHERE ID_gamme='".$ID_gamme."'
ORDER BY ordre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_famille($ligne['ID']);
}
return ($resultats);
}
/**
* Retourne la première famille de la gamme $ID_gamme
* @param ID_gamme ID de la gamme
* @return la première famille
**/
function getPremiereFamilleGamme($ID_gamme)
{
$requete="SELECT * FROM boutique_obj_famille
WHERE ID_gamme='".$ID_gamme."' AND visible = '1'
ORDER BY ordre LIMIT 1";
$resSql = T_LAETIS_site::requeter($requete);
$resultats = new Tbq_famille($resSql[0]['ID']);
return ($resultats);
}
/**
* private
* Calcule le nombre d'articles présents dans cette famille
* @param ID_famille l'ID de la famille
* @return Le nombre d'articles présents dans cette famille
*/
function getNbArticles($ID_famille)
{
$requete="SELECT COUNT(ID_article) AS nbArticles
FROM boutique_rel_famille_article
WHERE ID_famille='".$ID_famille."'
GROUP BY ID_famille";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats[0]['nbArticles']);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$this->supprimerVisuelsAssocies();
$requete = "DELETE FROM boutique_obj_famille WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$requete = "DELETE FROM boutique_rel_famille_article WHERE ID_famille = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* private
* Données sur le visuel de la famille
* @param
* @return
*/
function lierVisuelsFamille($valeurs)
{
// Traitement du nom du fichier visuel
$nomVisuelBase='../../..'.$this->repPhotos.$this->ID.'_';
// Traitement des visuels
for ($i=1; $itabReferencesImage); $i++)
{
$suppr='supprimerVisuel'.$i;
if ($valeurs[$suppr]=='checked')
{
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
} // FIN if ($valeurs[$suppr]=='checked')
$image='visuel'.$i;
// Traitement du visuel
if (is_uploaded_file($_FILES['famille']["tmp_name"][$image]))
{
// Enregistrement du fichier visuel
move_uploaded_file($_FILES['famille']["tmp_name"][$image], $nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
} // FIN for ($i=1; $i<=2; $i++)
} // FIN function lierVisuelsFamille($valvaleurs)
/**
* private
* Supprimer les visuels
* @param
* @return
*/
function supprimerVisuelsAssocies()
{
$nomVisuelBase = '../../..'.$this->repPhotos.$this->ID.'_';
for ($i=1; $itabReferencesImage); $i++)
{
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
if(file_exists($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg'))
{
unlink($nomVisuelBase.$this->tabReferencesImage[$i].'.jpg');
}
} // FIN for ($i=1; $itabReferencesImage); $i++)
} // FIN function supprimerVisuelsAssocies()
/**
* Réaffecte l'url de la famille pour le rewriting, selon la chaine $chaine
* @param String $chaine (facultatif), nouvelle url
* @param Int $ID (facultatif), identifiant de la famille
* @author Pierre Carayol
*/
function reecrireUrl($chaine='',$ID='',$lang='')
{
$rewrite = new Tbq_reecritureUrl();
if($chaine=='')//IF chaine non renseignée, réecriture par défaut
{
$chaine = $this->{"titre$lang"};
$ID = $this->ID;
}//FIN IF chaine non renseignée, réecriture par défaut
$this->{"url$lang"} = $rewrite->reecrireChaine($chaine,$ID);
$requete = "UPDATE boutique_obj_famille
SET url$lang = '".$this->{"url$lang"}."'
WHERE ID = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
}
?>
/**
* Gestion des marques de la boutique Laetis
*
* Permet de cr�er, modifier, supprimer des gammes, en int�raction
* avec la base de donn�es
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright La�tis Cr�ations Multim�dias
* @date 2007-11-12
*/
class Tbq_boitier
{
/**
* @var int $ID ID de l'element en base de donn�e
* @access private
*/
var $ID;
/**
* @var string $titre Nom de la marque
* @access private
*/
var $titre;
/**
* @var string $titreEN Nom de la marque
* @access private
*/
var $titreEN;
/**
* @var string $titreES Nom de la marque
* @access private
*/
var $titreES;
/**
* @var int $ordre Ordre de la marque
* @access private
*/
var $ordre;
/**
* @var int $visible Visibilit� de la marque
* @access private
*/
var $visible;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function Tbq_boitier($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_boitier WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donn� un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent �tre remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enl�ve l'espace et la virgule du d�but
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe d�j� en BD
$requete = "UPDATE boutique_obj_boitier SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_boitier SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_boitier
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_boitier
WHERE visible = '1'
ORDER BY ordre, titre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_boitier($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_boitier
* @author Christophe Raffy
*/
function listerAdmin()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_boitier ORDER BY ordre, titre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_boitier($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste les boitiers appartient l'article en cours
* @param $ID_article
* @return La liste des variantes
*/
function listerIDBoitierParArticle($ID_article)
{
$requete = "SELECT
boutique_rel_article_boitier.ID_boitier
FROM
boutique_rel_article_boitier
WHERE
boutique_rel_article_boitier.ID_article = '".$ID_article."'
ORDER BY
boutique_rel_article_boitier.ID_boitier ASC";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = $ligne['ID_boitier'];
}
return ($resultats);
} // FIN function listerIDBoitierParArticle($ID_article)
/**
* private
* Liste les boitiers appartient l'article en cours
* @param $ID_article
* @return La liste des variantes
*/
function listerBoitierParArticle($ID_article)
{
$requete = "SELECT
boutique_rel_article_boitier.ID_boitier,
boutique_obj_boitier.titre,
boutique_obj_boitier.titreEN,
boutique_obj_boitier.titreES
FROM
boutique_rel_article_boitier
LEFT JOIN boutique_obj_boitier ON (boutique_rel_article_boitier.ID_boitier = boutique_obj_boitier.ID)
WHERE
boutique_rel_article_boitier.ID_article = '".$ID_article."'
ORDER BY
boutique_rel_article_boitier.ID_boitier ASC";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = $ligne;
}
return ($resultats);
} // FIN function listerBoitierParArticle($ID_article)
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_boitier WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
}
?>
/**
* private
* Gestion des frais de port
* @param
* @return
*/
class Tbq_livraison
{
/**
* @var int $ID ID de l'element en base de donn�e
* @access private
*/
var $ID;
/**
* @var int $ID_port ID type de port
* @access private
*/
var $ID_port;
/**
* @var int $limiteTotal La limite du total de la commande
* @access private
*/
var $limiteTotal;
/**
* @var string $transport Titre de transport (Colissimo,...)
* @access private
*/
var $transport;
/**
* @var string $tarif Tarif de livraison
* @access private
*/
var $tarif;
/**
* Utilisation de la classe Tbq_article
*
* $livraison = new Tbq_livraison($_POST['ID_article']);
*
* $_POST['livraison']['limite'] = number_format($_POST['livraison']['limite'], '2', '.');
* $_POST['livraison']['tarif'] = number_format($_POST['livraison']['tarif'], '2', '.');
*
* $livraison->modifierAttributs($_POST['livraison']);
* $livraison->enregistrer();
*/
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function Tbq_livraison ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_tarifLivraison WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
$requete = "SELECT boutique_typ_port.port,
boutique_typ_port.detail,
boutique_typ_port.delai
FROM boutique_typ_port, boutique_obj_tarifLivraison
WHERE
boutique_obj_tarifLivraison.ID = '".$this->ID."'
AND boutique_obj_tarifLivraison.ID_port=boutique_typ_port.ID";
$resultats = T_LAETIS_site::requeter($requete);
$this->port = $resultats[0]['port'];
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donn� un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent �tre remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array("port");
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enl�ve l'espace et la virgule du d�but
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe d�j� en BD
$requete = "UPDATE boutique_obj_tarifLivraison SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_tarifLivraison SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
} // FIN function enregistrer()
function getInfosLivraison($ID_tarifLivraison)
{
$requete = "SELECT boutique_obj_tarifLivraison.*,
boutique_obj_tarifLivraison.ID AS ID_tarifLivraison
FROM boutique_obj_tarifLivraison WHERE ID = '".$ID_tarifLivraison."'";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0];
} // FIN function getInfosLivraison($ID_tarifLivraison)
/**
* Liste les objets
* @return array Tableau de Tbq_livraison
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_tarifLivraison";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_livraison($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste des ports de la famille
* @param
* @return La liste des ports de la famille
*/
function listerTarifLivraison($ID_port)
{
$requete="SELECT * FROM boutique_obj_tarifLivraison
WHERE ID_port='".$ID_port."'
ORDER BY limiteTotal ASC, tarif ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_livraison($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_tarifLivraison WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* private
* Liste des pays pour un port
* @param
* @return La liste des familles de port
*/
function listerPaysPort($ID_port)
{
$requete="SELECT boutique_rel_pays_port.*
FROM boutique_rel_pays_port, boutique_typ_pays
WHERE ID_port = '".$ID_port."' AND boutique_typ_pays.ID = ID_pays
ORDER BY paysFR ASC";
$resSql=T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[]=$ligne;
}
return ($resultats);
}
/**
* private
* Lier les pays et les familles de port
* @param
* @return
*/
function lierPaysPort($valeurs)
{
// Initialisation
$requete="DELETE FROM boutique_rel_pays_port WHERE ID_port = '".$valeurs['ID_port']."'";
T_LAETIS_site::requeter($requete);
// Enregistrement
while(list ($ID_pays) = each ($valeurs['pays']))
{
$requete="INSERT INTO boutique_rel_pays_port (ID_pays,ID_port)
VALUES ('".$ID_pays."','".$valeurs['ID_port']."')";
T_LAETIS_site::requeter($requete);
}
} // FIN function lierPaysPort($valeurs)
/**
* private
* Liste des pays
* @param
* @return La liste des pays
*/
function listerPays()
{
$requete="SELECT * FROM boutique_typ_pays ORDER BY ordre ASC, paysFR ASC";
$resultat=T_LAETIS_site::requeter($requete);
return $resultat;
}
/**
* private
* Donn�es sur le client
* @param
* @return le nom du pays
*/
function getPays($ID_pays)
{
$requete="SELECT * FROM boutique_typ_pays WHERE ID='".$ID_pays."'";
$resultat=T_LAETIS_site::requeter($requete);
return $resultat[0];
}
/**
* private
* Donn�es sur le client
* @param
* @return l'ID du pays
*/
function getPaysID($pays)
{
$requete="SELECT ID FROM boutique_typ_pays WHERE paysFR='".$pays."' OR paysES='".$pays."' OR paysEN='".$pays."'" ;
$resultat=T_LAETIS_site::requeter($requete);
$res = $resultat[0]['ID'];
return $res ? $res : null;
}
/**
* private
* Les informations sur la livraison
* @param
* @return Les informations sur la livraison
*/
function getLivraison()
{
$requete=" SELECT boutique_typ_port.*
FROM boutique_obj_tarifLivraison, boutique_typ_port
WHERE boutique_obj_tarifLivraison.ID = '".$this->ID."'
AND boutique_obj_tarifLivraison.ID_port=boutique_typ_port.ID";
$resultat=T_LAETIS_site::requeter($requete);
return $resultat;
} // FIN function getLivraison()
/**
* private
* Liste des ports possibles pour le pays demande et le total de la commande
* @param
* @return Les informations sur la livraison
*/
function listerLivraisonsDisponibles($ID_pays, $totalCommande)
{
$requete="SELECT
boutique_obj_tarifLivraison.ID AS ID_tarifLivraison,
boutique_obj_tarifLivraison.ID_port,
boutique_obj_tarifLivraison.transport
FROM boutique_obj_tarifLivraison, boutique_rel_pays_port, boutique_typ_port
WHERE boutique_rel_pays_port.ID_pays = '".$ID_pays."'
AND boutique_obj_tarifLivraison.limiteTotal >= '".$totalCommande."'
AND boutique_rel_pays_port.ID_port = boutique_obj_tarifLivraison.ID_port
AND boutique_rel_pays_port.ID_port = boutique_typ_port.ID
AND boutique_typ_port.visible = 1
ORDER BY boutique_obj_tarifLivraison.limiteTotal DESC";
$resSql=T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{ $resultats[$ligne['ID_port']]=$ligne['ID_tarifLivraison']; }
while(list($ID_port)=each($resultats))
{
$tabIDport[] = $ID_port;
$tabIDtarifLivraison[] = $resultats[$ID_port];
}
$requete=" SELECT
boutique_obj_tarifLivraison.*,
boutique_obj_tarifLivraison.ID AS ID_tarifLivraison,
boutique_typ_port.*,
IF(boutique_typ_port.facturation = 'HT', tarif, tarif/1.2) AS fraisPortHT,
boutique_obj_tarifLivraison.tarif AS fraisPortTTC
FROM
boutique_obj_tarifLivraison, boutique_typ_port
WHERE
boutique_obj_tarifLivraison.ID IN (".implode(',', $tabIDtarifLivraison).")
AND boutique_obj_tarifLivraison.ID_port IN (".implode(',', $tabIDport).")
AND boutique_obj_tarifLivraison.ID_port = boutique_typ_port.ID
ORDER BY
boutique_obj_tarifLivraison.tarif ASC";
//echo $requete;
$resultat=T_LAETIS_site::requeter($requete);
return $resultat;
} // FIN function listerLivraisonsDisponibles($ID_pays, $totalCommande)
/**
* private
* Cherche le montant des frais de livraison
* @param
* @return le montant des frais de livraison
*/
function getFraisDePort($ID_pays, $totalCommande)
{
$requete="SELECT boutique_obj_tarifLivraison.*,
boutique_obj_tarifLivraison.ID AS ID_tarifLivraison, boutique_typ_port.*
FROM boutique_obj_tarifLivraison, boutique_rel_pays_port, boutique_typ_port
WHERE boutique_rel_pays_port.ID_pays = '".$ID_pays."'
AND boutique_obj_tarifLivraison.limiteTotal >= '".$totalCommande."'
AND boutique_rel_pays_port.ID_port = boutique_obj_tarifLivraison.ID_port
AND boutique_rel_pays_port.ID_port = boutique_typ_port.ID
ORDER BY boutique_obj_tarifLivraison.limiteTotal ASC , boutique_obj_tarifLivraison.tarif ASC";
$resultat=T_LAETIS_site::requeter($requete);
return $resultat[0];
} //FIN function getFraisDePort($ID_pays, $totalCommande)
}
?>
/**
* Gestion des articles de la boutique Laetis
*
* Permet de créer, modifier, supprimer des articles, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_fraisDePort
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var string $port Nom du port
* @access private
*/
var $port;
/**
* @var string $facturation Type de facturation TTC ou HT
* @access private
*/
var $facturation;
/**
* @var int $ordre Ordre du port
* @access private
*/
var $ordre;
/**
* @var int $visible visible
* @access private
*/
var $visible;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_fraisDePort ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_typ_port WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_typ_port SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_typ_port SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
// Gestion de l'ordre
$this->traiterOrdreEnregistrer($valeurs);
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_fraisDePort
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_typ_port WHERE visible = 1 ORDER BY ordre ASC, port ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_fraisDePort($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_fraisDePort
* @author Christophe Raffy
*/
function listerAdmin()
{
$resultats = array();
$requete = "SELECT * FROM boutique_typ_port ORDER BY ordre ASC, port ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_fraisDePort($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$this->traiterOrdreSupprimer();
$requete="DELETE FROM boutique_obj_tarifLivraison WHERE ID_port='".$this->ID."';";
T_LAETIS_site::requeter($requete);
$requete="DELETE FROM boutique_rel_pays_port WHERE ID_port='".$this->ID."';";
T_LAETIS_site::requeter($requete);
$requete = "DELETE FROM boutique_typ_port WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* private
* Remet les familles dans l'ordre
* @param
* @return
*/
function traiterOrdreEnregistrer($valeurs)
{
if ( ($valeurs['ordreAncien']) && ($valeurs['ordreAncien'] != $valeurs['ordre']) )
{
// Changements d'ordre
$requete="UPDATE boutique_typ_port SET ordre=ordre-1
WHERE ordre > '".$valeurs['ordreAncien']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$requete="UPDATE boutique_typ_port SET ordre=ordre+1
WHERE ordre >= '".$valeurs['ordre']."'
AND ID!='".$this->ID."'";
T_LAETIS_site::requeter($requete);
} // FIN if ($valeurs['ordreAncien'] != $valeurs['ordre'])
}
/**
* private
* Remet les gammes dans l'ordre a cause de celui que l'on est en train de supprimer
* @param
* @return
*/
function traiterOrdreSupprimer()
{
$requete="UPDATE boutique_typ_port SET ordre=ordre-1
WHERE ordre >'".$this->ordre."'";
T_LAETIS_site::requeter($requete);
}
}
?>
/**
* Gestion des fabricants de la boutique Laetis
*
* Permet de créer, modifier, supprimer des gammes, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_fabricant
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var string $titre Nom du fabricant
* @access private
*/
var $titre;
/**
* @var string $ID_marque Ce fabricant est présent sur quelle marque ? Jama, Ceba ..
* @access private
*/
var $ID_marque;
/**
* @var string $url Url réecrite de la famille
* @access private
*/
var $url;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_fabricant($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_fabricant WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_fabricant SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
$this->reecrireUrl($attributs['url']);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_fabricant SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
$this->reecrireUrl($attributs['titre'],$this->ID);
}
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_fabricant
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_fabricant ORDER BY titre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_fabricant($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_fabricant
* @author Christophe Raffy
*/
function listerParID()
{
$resultats = array();
$requete = "SELECT ID, titre FROM boutique_obj_fabricant ORDER BY titre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = array('ID'=>$ligne['ID'], 'titre'=>$ligne['titre']);
}
return ($resultats);
}
/**
* Liste les objets selon la marque
* @return array Tableau de Tbq_fabricant
* @author Christophe Raffy
*/
function listerParMarque($ID_marque)
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_fabricant
WHERE ID_marque = '".$ID_marque."' ORDER BY titre";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_fabricant($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Calcule le nombre d'articles présents dans cette famille
* @param ID_famille l'ID de la famille
* @return Le nombre d'articles présents dans cette famille
*/
function getNbArticles($ID_fabricant)
{
$requete="SELECT COUNT(ID) AS nbArticles
FROM boutique_obj_article
WHERE ID_fabricant='".$ID_fabricant."'
GROUP BY ID_fabricant";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats[0]['nbArticles']);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_fabricant WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* Réaffecte l'url de la famille pour le rewriting, selon la chaine $chaine
* @param String $chaine (facultatif), nouvelle url
* @param Int $ID (facultatif), identifiant de la famille
* @author Pierre Carayol
*/
function reecrireUrl($chaine='',$ID='',$lang='')
{
$rewrite = new Tbq_reecritureUrl();
if($chaine=='')//IF chaine non renseignée, réecriture par défaut
{
$chaine = $this->{"titre$lang"};
$ID = $this->ID;
}//FIN IF chaine non renseignée, réecriture par défaut
$this->{"url$lang"} = $rewrite->reecrireChaine($chaine,$ID);
$requete = "UPDATE boutique_obj_fabricant
SET url$lang = '".$this->{"url$lang"}."'
WHERE ID = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
}
}
?>
/**
* Classe de gestion des avis des consommateurs sur un article de la boutique
*
* Permet de créer, modifier, supprimer des avis, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2008-02-16
*/
class Tbq_avisConsommateur
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var int $ID_article ID de l'article sur lequel l'avis porte
* @access private
*/
var $ID_article;
/**
* @var string $civilite Civilite du consommateur
* @access private
*/
var $civilite;
/**
* @var string $nom Nom du consommateur
* @access private
*/
var $nom;
/**
* @var string $prenom Prenom du consommateur
* @access private
*/
var $prenom;
/**
* @var string $ville Ville du consommateur
* @access private
*/
var $ville;
/**
* @var string $pays Pays du consommateur
* @access private
*/
var $pays;
/**
* @var string $email Email du consommateur
* @access private
*/
var $email;
/**
* @var string $titre Titre de l'avis
* @access private
*/
var $titre;
/**
* @var string $note Note sur 10
* @access private
*/
var $note;
/**
* @var string $message Message de l'avis
* @access private
*/
var $message;
/**
* @var date $dateInscription Date d'Inscription de l'avis
* @access private
*/
var $dateInscription;
/**
* @var int $visibleCoordonnees visible des coordonnees du consommateur
* @access private
*/
var $visibleCoordonnees;
/**
* @var int $visible visible de l'avis
* @access private
*/
var $visible;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_avisConsommateur ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_avisConsommateur WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Enregistre l'objet en base de donnée
* Si l'ID est renseigné ==> modification
* Sinon ==> insertion
* @access public
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
//si l'ID est renseigné, on modifie, sinon, on insere
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array( );
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_avisConsommateur SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_avisConsommateur SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
return $this->ID;
} // FIN function enregistrer()
/**
* Supprime l'objet en base de donnée
* @access public
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_avisConsommateur WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* Liste les rubriques
* @access public
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_avisConsommateur ORDER BY dateInscription DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_avisConsommateur($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les rubriques
* @access public
*/
function listerSelonArticle($ID_article)
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_avisConsommateur
WHERE ID_article = '".$ID_article."'
AND visible = '1' ORDER BY dateInscription DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_avisConsommateur($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les rubriques
* @access public
*/
function listerSelonArticleTous($ID_article)
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_avisConsommateur
WHERE ID_article = '".$ID_article."'
ORDER BY dateInscription DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_avisConsommateur($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les articles qui ont au moins un avis
* @access public
*/
function listerArticlesAvecAvis()
{
$resultats = array();
$requete = "SELECT ID_article, titre, message FROM boutique_obj_avisConsommateur
GROUP BY ID_article";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = $ligne;
}
return ($resultats);
}
/**
* Liste les rubriques
* @access public
*/
function noteMoyenne($ID_article)
{
$resultats = array();
$requete = "SELECT AVG(note) AS moyenne FROM boutique_obj_avisConsommateur
WHERE ID_article = '".$ID_article."'
AND visible = '1' ORDER BY dateInscription DESC";
$resultats = T_LAETIS_site::requeter($requete);
return (round($resultats[0]['moyenne']));
}
/**
* Liste un article en fonction de son ID_articleGroupe
* @access public
*/
function listerSelonArticleGroupe($ID_articleGroupe)
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_article
WHERE boutique_obj_article.ID_articleGroupe = '".$ID_articleGroupe."' ";
$resSql = T_LAETIS_site::requeter($requete);
return ($resSql);
}
}
?>
/**
* Classe de gestion des chèques cadeaux
*
* Permet de créer, modifier, supprimer des chèques cadeaux, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_chequeCadeau
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var int $ID_client ID du client a qui appartient ce chèque cadeau
* @access private
*/
var $ID_client;
/**
* @var int $ID_commande ID de la commande dans laquelle le client a acheté le chèque cadeau
* @access private
*/
var $ID_commande;
/**
* @var int $ID_ligneCommande ID ligne de la commande dans laquelle le client a acheté le chèque cadeau
* @access private
*/
var $ID_ligneCommande;
/**
* @var int $ID_article ID de l'article correspondant a ce chèque cadeau
* @access private
*/
var $ID_article;
/**
* @var int $code1 1er code de 5 chiffres correspondant au chèque cadeau
* @access private
*/
var $code1;
/**
* @var int $code2 2ème code de 5 chiffres correspondant au chèque cadeau
* @access private
*/
var $code2;
/**
* @var int $ID_commande_utilise ID de la commande qui a utilisé ce chèque cadeau
* @access private
*/
var $ID_commande_utilise;
/**
* @var boolean $utilise Déjà utilisé ?
* @access private
*/
var $utilise;
/**
* @var boolean $utilise Déjà utilisé ?
* @access private
*/
var $nomFichierImage;
/**
* @var double $montantPersonnalise
* @access private
*/
var $montantPersonnalise;
/**
* @var double $montantPersonnalise
* @access private
*/
var $dateCommandePersonnalise;
var $codeCode1 = "ceba";
var $codeCode2 = "sitelle";
var $codeNomFichierImage = "millau";
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_chequeCadeau ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_chequeCadeau WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array('codeCode1', 'codeCode2', 'codeNomFichierImage');
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_chequeCadeau SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_chequeCadeau SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
$this->lierImagesArticle();
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_chequeCadeau
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_chequeCadeau ORDER BY ID ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_chequeCadeau($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_chequeCadeau WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* Liste les rubriques
* @access public
*/
function listerGamme()
{
$requete = "SELECT * FROM boutique_obj_article
WHERE reference LIKE 'CHOUETTE%' ORDER BY prixTTC ASC";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
} // FIN function listerGamme()
function ajouterEtEnvoyerChequeCadeau($valeurs)
{
$requete = "SELECT
ID
FROM
boutique_obj_chequeCadeau
WHERE
ID_client='".$valeurs['ID_client']."'
AND ID_commande='".$valeurs['ID_commande']."'
AND ID_article='".$valeurs['ID_article']."'
AND ID_ligneCommande='".$valeurs['ID_ligneCommande']."'";
$resultats = T_LAETIS_site::requeter($requete);
// Ce chèque cadeau a déjà été ajouté pour ce client et cette commande
if ($resultats[0]['ID'])
{ return false; }
else
{
//Récupère la quantité de chèques cadeaux
$requete = "SELECT quantite FROM boutique_obj_ligneCommande
WHERE ID_article = '".$valeurs['ID_article']."'
AND ID = '".$valeurs['ID_ligneCommande']."'";
$resQuantite = T_LAETIS_site::requeter($requete);
for($i=0; $i<$resQuantite[0]['quantite']; $i++)//FOREACH pour chaque cheque cadeau commandé
{
//si l'ID est renseigné, on modifie, sinon, on insere
$requete = "INSERT INTO boutique_obj_chequeCadeau
(ID_client, ID_commande, ID_ligneCommande, ID_article, code1, code2)
VALUES ('".$valeurs['ID_client']."', '".$valeurs['ID_commande']."',
'".$valeurs['ID_ligneCommande']."', '".$valeurs['ID_article']."',
AES_ENCRYPT('".rand(10000,99999)."', '".$this->codeCode1."'),
AES_ENCRYPT('".rand(10000,99999)."', '".$this->codeCode2."'))";
T_LAETIS_site::requeter($requete);
$valeurs['ID'] = T_LAETIS_site::last_insert_id();
$this->envoyerChequeCadeau($valeurs);
}//FIN FOREACH
} // FIN else
} // FIN function ajouterEtEnvoyerChequeCadeau($valeurs)
function envoyerChequeCadeau($valeurs)
{
$requete = "SELECT
boutique_obj_chequeCadeau.ID,
AES_DECRYPT(code1,'".$this->codeCode1."') AS code1,
AES_DECRYPT(code2,'".$this->codeCode2."') AS code2,
ROUND(boutique_obj_article.prixTTC) AS prix
FROM
boutique_obj_chequeCadeau,
boutique_obj_article
WHERE
boutique_obj_chequeCadeau.ID_client='".$valeurs['ID_client']."'
AND boutique_obj_chequeCadeau.ID_commande='".$valeurs['ID_commande']."'
AND boutique_obj_chequeCadeau.ID_article='".$valeurs['ID_article']."'
AND boutique_obj_chequeCadeau.ID_ligneCommande='".$valeurs['ID_ligneCommande']."'
AND boutique_obj_article.ID = boutique_obj_chequeCadeau.ID_article
AND boutique_obj_chequeCadeau.ID = '".$valeurs['ID']."'";
$resultats = T_LAETIS_site::requeter($requete);
$src=imagecreatefromjpeg('../../uploads/chequesCadeaux/cheque-vierge-2.jpg');
$img=imagecreatetruecolor(500,369);
imagecopyresized($img,$src,0,0,0,0,500,370,500,370);
$textcolor = imagecolorallocate($img, 255, 142, 1);
imagettftext($img, 16, 0, 100, 302, $textcolor, $_SERVER['DOCUMENT_ROOT'].'/boutique/admin/scripts/arial.ttf', $resultats[0]['code1'].'-'.$resultats[0]['code2']);
imagettftext($img, 30, 0, 260, 230, $textcolor, $_SERVER['DOCUMENT_ROOT'].'/boutique/admin/scripts/arial.ttf', str_replace('.',',',$resultats[0]['prix']).' €');
/*$textcolorB = imagecolorallocate($img, 236, 229, 149);
imagestring($img, 3, 180, 60, strftime("%d-%m-%Y", mktime(0,0,0,date('m'),date('d'),date('Y')+1)), $textcolorB);*/
$nomFichier=rand(10000,99999).'-'.rand(10000,99999);
imagejpeg($img,'../../uploads/chequesCadeaux/'.$nomFichier.'.jpg',100);
/*$f = fopen('text.txt','a+');
fwrite($f,'trace '.$resultats[0]['ID'].' code1 : '.$resultats[0]['code1'].' code2 : '.$resultats[0]['code2'].' nomFichier : '.$nomFichier);
fclose($f);*/
$client=new Tbq_client($valeurs['ID_client']);
$motDePasse = $client->getMotDePasse();
// Préparation du courrier
if ($valeurs['langue']=='EN')
{ $pageSource = "/boutique/en/emails/envoi-chequesCadeaux/envoi-chequesCadeaux.php"; }
else if ($valeurs['langue']=='ES')
{ $pageSource = "/boutique/es/emails/envoi-chequesCadeaux/envoi-chequesCadeaux.php"; }
else
{ $pageSource = "/boutique/fr/emails/envoi-chequesCadeaux/envoi-chequesCadeaux.php"; }
$post="nomFichier=".$nomFichier."&nom=".$client->nomFacturation."&prenom=".$client->prenomFacturation."&login=".$client->emailFacturation."&motDePasse=".$motDePasse;
$header = "POST " . $pageSource . " HTTP/1.0\r\n";
$header .= "Host: " . $_SERVER['HTTP_HOST'] . "\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($post) . "\r\n";
$header .= "\r\n";
$header .= $post . "\r\n";
$header .= "\r\n";
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
));
$hostname = 'ssl://' . $_SERVER['HTTP_HOST'].':443';
$stream = stream_socket_client($hostname, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);
if(!$stream)
{
echo "$errstr ($errno)
\n";
exit($_SERVER[HTTP_HOST].' erreur socket fsockopen');
}
else
{
$contenu="setFrom("contact@jama.fr");
if ($valeurs['langue']=='EN')
{ $obj_mail->setSubject("Your gift vouchers JAMA.COM"); }
else if ($valeurs['langue']=='ES')
{ $obj_mail->setSubject("Billete regalos JAMA.COM"); }
else
{ $obj_mail->setSubject("Votre chèque cadeau JAMA.COM"); }
$obj_mail->setHtml($contenu,$contenuTexte,'../../uploads/chequesCadeaux/');
$cheminFichier = $_SERVER['DOCUMENT_ROOT']."/boutique/uploads/chequesCadeaux/".$nomFichier.'.jpg';
$attachment = new fileAttachment($cheminFichier, "image/jpg");
$obj_mail->addAttachment($attachment);
// Envoi a l'utilisateur
$obj_mail->send(array($client->emailFacturation),'smtp');
// Envoi à l'admin
$obj_mail->send(array("contact@jama.fr"),'smtp');
$obj_mail->send(array("christophe.raffy@laetis.fr"),'smtp');
$requete = "UPDATE boutique_obj_chequeCadeau
SET nomFichierImage = AES_ENCRYPT('".$nomFichier."', '".$this->codeNomFichierImage."')
WHERE ID ='".$resultats[0]['ID']."'";
T_LAETIS_site::requeter($requete);
} // FIN function envoyerChequeCadeau($valeurs)
function ajouterEtEnvoyerChequeCadeauPersonnalise($valeurs)
{
$requete = "INSERT INTO boutique_obj_chequeCadeau
(ID_client, code1, code2, montantPersonnalise, dateCommandePersonnalise)
VALUES ('".$valeurs['ID_client']."',
AES_ENCRYPT('".rand(10000,99999)."', '".$this->codeCode1."'),
AES_ENCRYPT('".rand(10000,99999)."', '".$this->codeCode2."'),
'".$valeurs['montantPersonnalise']."',
'".$valeurs['dateCommandePersonnalise']."')";
T_LAETIS_site::requeter($requete);
$valeurs['ID'] = T_LAETIS_site::last_insert_id();
$this->envoyerChequeCadeauPersonnalise($valeurs);
} // FIN function ajouterEtEnvoyerChequeCadeauPersonnalise($valeurs)
function envoyerChequeCadeauPersonnalise($valeurs)
{
$requete = "SELECT
boutique_obj_chequeCadeau.ID,
AES_DECRYPT(code1,'".$this->codeCode1."') AS code1,
AES_DECRYPT(code2,'".$this->codeCode2."') AS code2,
montantPersonnalise
FROM
boutique_obj_chequeCadeau
WHERE
boutique_obj_chequeCadeau.ID = '".$valeurs['ID']."'";
$resultats = T_LAETIS_site::requeter($requete);
// Définir la variable d'environnement pour GD
putenv('GDFONTPATH=' . realpath('.'));
$src=imagecreatefromjpeg('../../uploads/chequesCadeaux/cheque-vierge-2.jpg');
$img=imagecreatetruecolor(500,370);
imagecopyresized($img,$src,0,0,0,0,500,370,500,370);
$textcolor = imagecolorallocate($img, 255, 142, 1);
imagettftext($img, 16, 0, 100, 302, $textcolor, $_SERVER['DOCUMENT_ROOT'].'/boutique/admin/scripts/arial.ttf', $resultats[0]['code1'].'-'.$resultats[0]['code2']);
imagettftext($img, 30, 0, 260, 230, $textcolor, $_SERVER['DOCUMENT_ROOT'].'/boutique/admin/scripts/arial.ttf', str_replace('.',',',$resultats[0]['montantPersonnalise']).' €');
$nomFichier=rand(10000,99999).'-'.rand(10000,99999);
imagejpeg($img,'../../uploads/chequesCadeaux/'.$nomFichier.'.jpg',100);
$client = new Tbq_client($valeurs['ID_client']);
// Préparation du courrier
if ($valeurs['langue']=='EN')
{ $pageSource = "/boutique/en/emails/envoi-chequesCadeaux-personnalise/envoi-chequesCadeaux-personnalise.php"; }
else if ($valeurs['langue']=='ES')
{ $pageSource = "/boutique/es/emails/envoi-chequesCadeaux-personnalise/envoi-chequesCadeaux-personnalise.php"; }
else
{ $pageSource = "/boutique/fr/emails/envoi-chequesCadeaux-personnalise/envoi-chequesCadeaux-personnalise.php"; }
$post="nomFichier=".$nomFichier."&nom=".$client->nomFacturation."&prenom=".$client->prenomFacturation."&login=".$client->emailFacturation;
$header = "POST " . $pageSource . " HTTP/1.0\r\n";
$header.="Host: ".$_SERVER['HTTP_HOST']."\r\n";
$header.= "Content-Type: application/x-www-form-urlencoded\r\n";
$header.= "Content-Length: ".strlen($post)."\r\n";
$header.= "\r\n";
$header.= $post."\r\n";
$header.= "\r\n";
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
));
$hostname = 'ssl://' . $_SERVER['HTTP_HOST'].':443';
$stream = stream_socket_client($hostname, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);
if(!$stream)
{
echo "$errstr ($errno)
\n";
exit($_SERVER[HTTP_HOST].' erreur socket fsockopen');
}
else
{
$contenu="setFrom("contact@jama.fr");
if ($valeurs['langue']=='EN')
{ $obj_mail->setSubject("Your gift vouchers JAMA.COM"); }
else if ($valeurs['langue']=='ES')
{ $obj_mail->setSubject("Billete regalos JAMA.COM"); }
else
{ $obj_mail->setSubject("Votre chèque cadeau JAMA.COM"); }
$obj_mail->setHtml($contenu,$contenuTexte,'../../uploads/chequesCadeaux/');
$cheminFichier = $_SERVER['DOCUMENT_ROOT']."/boutique/uploads/chequesCadeaux/".$nomFichier.'.jpg';
$attachment = new fileAttachment($cheminFichier, "image/jpg");
$obj_mail->addAttachment($attachment);
// Envoi a l'utilisateur
$obj_mail->send(array($client->emailFacturation),'smtp');
// Envoi à l'admin
$obj_mail->send(array("contact@jama.fr"),'smtp');
$obj_mail->send(array("christophe.raffy@laetis.fr"),'smtp');
$requete = "UPDATE boutique_obj_chequeCadeau
SET nomFichierImage = AES_ENCRYPT('".$nomFichier."', '".$this->codeNomFichierImage."')
WHERE ID ='".$resultats[0]['ID']."'";
T_LAETIS_site::requeter($requete);
} // FIN function envoyerChequeCadeauPersonnalise($valeurs)
// Retourne true si le code n'a pas été utilisé et est donc valide
function getNonUtilise($chequeCadeau)
{
$tab=explode('-', $chequeCadeau);
$requete="SELECT utilise FROM boutique_obj_chequeCadeau
WHERE AES_DECRYPT(code1,'".$this->codeCode1."')='".$tab[0]."'
AND AES_DECRYPT(code2,'".$this->codeCode2."')='".$tab[1]."'";
$resultats = T_LAETIS_site::requeter($requete);
if (! $resultats[0]['utilise'])
{ return 1; }
else
{ return 0; }
} // FIN function getNonUtilise($chequeCadeau)
// Retourne true si le code n'a pas été utilisé et est valide
function getValide($chequeCadeau)
{
$tab=explode('-', $chequeCadeau);
$requete="SELECT ID FROM boutique_obj_chequeCadeau
WHERE AES_DECRYPT(code1,'".$this->codeCode1."')='".$tab[0]."'
AND AES_DECRYPT(code2,'".$this->codeCode2."')='".$tab[1]."' AND utilise = 0";
$resultats = T_LAETIS_site::requeter($requete);
if ($resultats[0]['ID'])
{ return true; }
else
{ return false; }
} // FIN function getValide($chequeCadeau)
function validerChequeCadeau($chequeCadeau)
{
$tab=explode('-', $chequeCadeau);
$requete="UPDATE boutique_obj_chequeCadeau
SET ID_commande_utilise='".$_SESSION['ID_commande']."', utilise = '1'
WHERE AES_DECRYPT(code1,'".$this->codeCode1."')='".$tab[0]."'
AND AES_DECRYPT(code2,'".$this->codeCode2."')='".$tab[1]."' ";
T_LAETIS_site::requeter($requete);
} //FIN function validerChequeCadeau($chequeCadeau)
function getCommandeChequesCadeaux($ID_commande)
{
$requete="SELECT
boutique_obj_ligneCommande.ID as ID_ligneCommande,
boutique_obj_ligneCommande.ID_article
FROM
boutique_obj_ligneCommande,
boutique_obj_article
WHERE
boutique_obj_ligneCommande.ID_commande='".$ID_commande."'
AND boutique_obj_article.reference LIKE 'CHOUETTE%'
AND boutique_obj_ligneCommande.ID_article=boutique_obj_article.ID ";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats;
} // FIN function getCommandeChequesCadeaux($ID_commande)
function getCommandeChequesCadeauxNonEnvoye($ID_commande)
{
$articles=$this->getCommandeChequesCadeaux($ID_commande);
if ($articles)
{
$requete="SELECT ID FROM boutique_obj_chequeCadeau
WHERE ID_ligneCommande = '".$articles[0]['ID_ligneCommande']."'";
$resultats = T_LAETIS_site::requeter($requete);
if (! $resultats[0]['ID'])
{ return true; }
}
return false;
} // FIN function getCommandeChequesCadeauxNonEnvoye($ID_commande)
function getMontant()
{
$requete="SELECT prixTTC FROM boutique_obj_article, boutique_obj_chequeCadeau
WHERE boutique_obj_chequeCadeau.ID = '".$this->ID."'
AND boutique_obj_chequeCadeau.ID_article=boutique_obj_article.ID ";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['prixTTC'];
} // FIN function getMontant()
function getDateAchat()
{
$requete="SELECT dateCommande FROM boutique_obj_commande, boutique_obj_chequeCadeau
WHERE boutique_obj_chequeCadeau.ID = '".$this->ID."'
AND boutique_obj_chequeCadeau.ID_commande=boutique_obj_commande.ID ";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['dateCommande'];
} // FIN function getDateAchat()
function getIDClientUtilisateur()
{
$requete="SELECT boutique_obj_commande.ID_client
FROM boutique_obj_commande, boutique_obj_chequeCadeau
WHERE boutique_obj_chequeCadeau.ID = '".$this->ID."'
AND boutique_obj_chequeCadeau.ID_commande_utilise=boutique_obj_commande.ID ";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['ID_client'];
} // FIN function getIDClientUtilisateur()
function getNomFichierImage()
{
$requete="SELECT AES_DECRYPT(nomFichierImage,'".$this->codeNomFichierImage."')
AS nomFichierImage
FROM boutique_obj_chequeCadeau
WHERE boutique_obj_chequeCadeau.ID = '".$this->ID."' ";
$resultats = T_LAETIS_site::requeter($requete);
return $resultats[0]['nomFichierImage'];
} // FIN function getNomFichierImage()
/**
* retourne l'année de la premiere commande
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function anneePremierChequeCadeau()
{
$date = 0;
$requete = "SELECT YEAR(oc.dateCommande) as annee
FROM boutique_obj_chequeCadeau cc, boutique_obj_commande oc
WHERE cc.ID_commande = oc.ID
ORDER BY oc.dateCommande
LIMIT 0, 1";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$date = $ligne['annee'];
}
return ($date);
}
/**
* Liste les objets
* @return array Tableau de Tbq_chequeCadeau
* @author Christophe Raffy
*/
function listerAnnee($annee)
{
$resultats = array();
$requete = "SELECT cc.ID,
AES_DECRYPT(cc.code1,'".$this->codeCode1."') AS code1,
AES_DECRYPT(cc.code2,'".$this->codeCode2."') AS code2
FROM boutique_obj_chequeCadeau cc, boutique_obj_commande oc
WHERE cc.ID_commande = oc.ID
AND YEAR(oc.dateCommande) = '".$annee."'
GROUP BY cc.ID_client, cc.ID_commande
ORDER BY cc.ID DESC";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_chequeCadeau
* @author Christophe Raffy
*/
function listerCommande($utilise, $ID_commande)
{
$resultats = array();
$requete = "SELECT cc.ID FROM boutique_obj_chequeCadeau cc
WHERE cc.utilise = '".$utilise."'
AND cc.ID_commande = '".$ID_commande."'
GROUP BY cc.ID_commande_utilise";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_chequeCadeau($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_chequeCadeau
* @author Christophe Raffy
*/
function listerLigneCommande($utilise, $ID_commande)
{
$resultat = 0;
$requete = "SELECT SUM(lc.tarif) as somme
FROM boutique_obj_chequeCadeau cc, boutique_obj_ligneCommande lc
WHERE cc.utilise = '".$utilise."'
AND cc.ID_commande = '".$ID_commande."'
AND cc.ID_ligneCommande = lc.ID
ORDER BY cc.ID_ligneCommande ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultat = $ligne['somme'];
}
return ($resultat);
}
/**
* Liste les objets
* @return array Tableau de Tbq_chequeCadeau
* @author Christophe Raffy
*/
function listerPersonnalise()
{
$resultats = array();
$requete = "SELECT
boutique_obj_chequeCadeau.*,
AES_DECRYPT(boutique_obj_chequeCadeau.code1,'".$this->codeCode1."') AS code1,
AES_DECRYPT(boutique_obj_chequeCadeau.code2,'".$this->codeCode2."') AS code2,
boutique_obj_client.*
FROM
boutique_obj_chequeCadeau
LEFT JOIN boutique_obj_client
ON (boutique_obj_chequeCadeau.ID_client = boutique_obj_client.ID)
WHERE
boutique_obj_chequeCadeau.montantPersonnalise > 0
ORDER BY
boutique_obj_chequeCadeau.ID DESC";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
}
}
?>
/**
* private
* Gestion des codes promos
* @param
* @return
*/
class Tbq_offreSpeciale
{
/**
* @var int $ID ID de l'element en base de donn�e
* @access private
*/
var $ID;
/**
* @var string $ID_typPromo ID de la promo
* @access private
*/
var $ID_typPromo;
/**
* @var string $titre Titre de l'offre sp�ciale
* @access private
*/
var $titre;
/**
* @var int $code Code Promo a mettre pour la r�duction
* @access private
*/
var $code;
/**
* @var string $gain Valeur de r�duction (5 => 5%)
* @access private
*/
var $gain;
/**
* @var double $limite Limite de la r�duction (en euros)
* @access private
*/
var $limite;
/**
* @var date $dateDebut Date de d�but de l'offre sp�ciale
* @access private
*/
var $dateDebut;
/**
* @var date $dateFin Date de fin de l'offre sp�ciale
* @access private
*/
var $dateFin;
/**
* @var string $famillesEnPromo Liste des familles
* @access private
*/
var $famillesEnPromo;
/**
* @var string $articleEnPromo Un article en promo
* @access private
*/
var $articleEnPromo;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function Tbq_offreSpeciale ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par d�faut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_offreSpeciale WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donn� un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent �tre remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enl�ve l'espace et la virgule du d�but
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe d�j� en BD
$requete = "UPDATE boutique_obj_offreSpeciale SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_offreSpeciale SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_offreSpeciale
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_offreSpeciale";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_offreSpeciale($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_offreSpeciale
* @author Christophe Raffy
*/
function listerAdmin()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_offreSpeciale";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_offreSpeciale
* @author Christophe Raffy
*/
function listerAvecStats()
{
$resultats = array();
$requete = "SELECT
boutique_obj_offreSpeciale.*,
COUNT(boutique_obj_commande.ID) AS nbCommandesOffre,
SUM(boutique_obj_commande.montant) AS totalCommandesOffre
FROM
boutique_obj_offreSpeciale
LEFT JOIN boutique_obj_commande
ON (boutique_obj_offreSpeciale.code = boutique_obj_commande.promoCode
AND boutique_obj_offreSpeciale.ID_typPromo = boutique_obj_commande.promoID_typ
AND boutique_obj_commande.statut IN ('payee cb','payee cb paypal','payee cb 3 fois','payee cb 3 fois alma','en préparation','expediee','validee cheque','validee fax','validee virement'))
GROUP BY
boutique_obj_offreSpeciale.ID
ORDER BY
dateDebut DESC, titre ASC";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_offreSpeciale WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* private
* Liste des codes promos
* @param
* @return La liste des codes promos
*/
function getTypePromotion()
{
$requete="SELECT boutique_typ_promo.type
FROM boutique_obj_offreSpeciale, boutique_typ_promo
WHERE boutique_obj_offreSpeciale.ID = '".$this->ID."'
boutique_typ_promo.ID = boutique_obj_offreSpeciale.ID_typPromo";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
} // FIN function getTypePromotion()
/**
* private
* Liste des types de codes promos
* @param
* @return La liste des types de codes promos
*/
function listerTypePromo()
{
$requete="SELECT * FROM boutique_typ_promo";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats);
}
/**
* private
* Existe-t-il une offre sp�ciale pour la date d'aujourd'hui ?
* @param
* @return boolean
*/
function verifierSiOffreSpeciale()
{
$requete="SELECT ID FROM boutique_obj_offreSpeciale
WHERE dateDebut <= NOW() AND dateFin >= NOW();";
$resultat = T_LAETIS_site::requeter($requete);
if ($resultat[0]['ID'])
{
return true;
}
return false;
} // FIN function verifierSiOffreSpeciale()
/**
* private
* Affecte les produits en promotions
* @param
* @return boolean
*/
function setFamillesEnPromo($valeurs)
{
// Pour tous les checkboxes existantes
while(list ($ID_famille, $checked) = each ($valeurs['famillesEnPromo']))
{
$familles[]=$ID_famille;
}
$famillesEnPromo=implode(',',$familles);
$requete="UPDATE boutique_obj_offreSpeciale
SET famillesEnPromo = '".$famillesEnPromo."'
WHERE ID = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
} // FIN function setFamillesEnPromo($valeurs)
/**
* private
* Affecte les produits en promotions
* @param
* @return boolean
*/
function setArticleEnPromo($ID_articleEnPromo)
{
$requete="UPDATE boutique_obj_offreSpeciale
SET articleEnPromo = '".$ID_articleEnPromo."'
WHERE ID = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
} // FIN function setArticleEnPromo($ID_articleEnPromo)
}
?>
/**
* Classe de gestion des cadeaux correspondants aux points fidélité
*
* Permet de créer, modifier, supprimer des cadeaux, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
*/
class Tbq_pointsFidelite extends T_LAETIS_site
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var int $cadeau Nom du cadeau
* @access private
*/
var $cadeau;
/**
* @var int $minNbPoints Nombre de points minimum pour obtenir ce cadeau
* @access private
*/
var $minNbPoints;
/**
* @var string $maxNbPoints Nombre de points maximum pour obtenir ce cadeau
* @access private
*/
var $maxNbPoints;
/**
* @var float $coefficientParrainage Coefficient que l'on affecte a un parrain
* lorsque son filleul a commandé.
* Nombre de points fidélité = 10% x Montant de la commande
* @access private
*/
var $coefficientParrainage = 0.1;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_pointsFidelite ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct ($ID=0)
{
$this->ID = $ID;
$this->initialiser();
}
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir de l'ID
*
* @author Christophe Raffy
*/
function initialiser()
{
if ( $this->ID>0 )
{
// initialisation de l'objet
$requete = "SELECT * FROM boutique_obj_pointsFidelite WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
foreach ($resultats[0] as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
}
} // FIN function initialiser()
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array('coefficientParrainage');
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_pointsFidelite SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_pointsFidelite SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_pointsFidelite
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_pointsFidelite ORDER BY minNbPoints ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_pointsFidelite($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_pointsFidelite WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
/**
* Liste les rubriques
* @access public
*/
function getCadeau($nbPoints)
{
$requete = "SELECT cadeau FROM boutique_obj_pointsFidelite
WHERE minNbPoints < '".$nbPoints."' AND
maxNbPoints >= '".$nbPoints."'";
$resultat = T_LAETIS_site::requeter($requete);
return $resultat[0]['cadeau'];
} // FIN function getCadeau($nbPoints)
/**
* Renvoi le coefficient de Parrainage
* @access public
*/
function getCoefficientParrainage()
{
return $this->coefficientParrainage;
}
}
?>
/**
* Classe de gestion des statistiques
*
* Permet de connaitre les statistiques des clients et des articles
*/
class Tbq_statistiques
{
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_statistiques ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
}
/**
* Initialisation de l'objet
* L'initialisation se fait à partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport à la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* fonction qui retourne les $limite articles les plus commandés
* @param int $limite (facultatif) determine le nombre d'articles à retourner
* @return ID articles, reference articles, titre articles, quantite articles
* @access public
*/
function listerArticlesPlusVendus($limite = 0)
{
$requete = "SELECT
boutique_obj_article.ID,
boutique_obj_article.reference,
boutique_obj_article.titre,
SUM(boutique_obj_ligneCommande.quantite) AS quantite
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande
ON (boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande)
LEFT JOIN boutique_obj_article
ON (boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID)
WHERE
boutique_obj_commande.statut = 'expediee'
AND boutique_obj_article.ID != ''
GROUP BY
boutique_obj_article.ID
ORDER BY
quantite DESC";
if ($limite > 0):
$requete .= " LIMIT 0," . $limite;
endif;
$resSql = T_LAETIS_site::requeter( $requete );
return ($resSql);
}
/**
* fonction qui retourne les $limite articles les plus commandés
* @param int $limite (facultatif) determine le nombre d'articles à retourner
* @return ID articles, reference articles, titre articles, quantite articles
* @access public
*/
function listerArticlesPlusVendusAnneeEnCours($limite = 0)
{
$requete = "SELECT
boutique_obj_article.ID,
boutique_obj_article.reference,
boutique_obj_article.titre,
SUM(boutique_obj_ligneCommande.quantite) AS quantite
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande
ON (boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande)
LEFT JOIN boutique_obj_article
ON (boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID)
WHERE
boutique_obj_commande.statut = 'expediee'
AND boutique_obj_article.ID != ''
AND boutique_obj_commande.dateCommande
BETWEEN CONCAT(YEAR(CURDATE()), '-01-01 00:00:00') AND CONCAT(YEAR(CURDATE()), '-12-31 23:59:59')
GROUP BY
boutique_obj_article.ID
ORDER BY
quantite DESC";
if ($limite > 0):
$requete .= " LIMIT 0," . $limite;
endif;
$resSql = T_LAETIS_site::requeter( $requete );
return ($resSql);
} // FIN listerArticlesPlusVendusAnneeEnCours($limite = 0)
/**
* fonction qui retourne les $limite clients qui ont le plus commandés
* @param int $limite (facultatif) determine le nombre de clients à retourner
* @return ID clients, nom clients, prenom client, civilite clients, somme des montants / clients, nombre de commandes / clients
* @access public
*/
function listerClientsPlusCommande($limite = 0)
{
$requete = "SELECT boutique_obj_client.ID, boutique_obj_client.nomFacturation AS nom,
boutique_obj_client.prenomFacturation AS prenom, boutique_obj_client.civiliteFacturation AS civilite,
SUM(boutique_obj_commande.montant) AS sommeMontant, COUNT(boutique_obj_commande.ID) AS nbCom
FROM boutique_obj_client, boutique_obj_commande
WHERE boutique_obj_client.ID = boutique_obj_commande.ID_client
AND boutique_obj_commande.statut = 'expediee'
GROUP BY boutique_obj_client.ID
ORDER BY sommeMontant DESC";
if ( $limite > 0 )
{
$requete .= " LIMIT 0," . $limite;
}
$resSql = T_LAETIS_site::requeter( $requete );
return ($resSql);
}
/**
* fonction qui retourne le nombre d'article entre 2 dates ($dateDebut et $dateFin)
* @param string $dateDebut, string $dateFin
* @return nbArticles
* @access public
*/
function nombreCommandesTot($dateDebut, $dateFin)
{
$dateDebut = $dateDebut." 00:00:00";
$dateFin = $dateFin." 23:59:59";
$requete = "SELECT SUM(boutique_obj_ligneCommande.quantite) AS nbArticles
FROM boutique_obj_commande, boutique_obj_ligneCommande
WHERE boutique_obj_ligneCommande.ID_commande = boutique_obj_commande.ID
AND boutique_obj_commande.dateCommande >= '$dateDebut'
AND boutique_obj_commande.dateCommande <= '$dateFin'
AND boutique_obj_commande.statut = 'expediee'";
$resSql = T_LAETIS_site::requeter( $requete );
return ($resSql);
}
/**
* fonction qui retourne le chiffre d'affaire, le nombre d'articles pour une tva ($tva) entre 2 dates ($dateDebut et $dateFin)
* @param string $dateDebut, string $dateFin, int $tva
* @return sommeCATVA, nbArticles
* @access public
*/
function recapitulatifVentesCATVA($dateDebut, $dateFin, $tva = 20)
{
$dateDebut = $dateDebut." 00:00:00";
$dateFin = $dateFin." 23:59:59";
$requete = "SELECT SUM(boutique_obj_ligneCommande.tarif*boutique_obj_ligneCommande.quantite) AS sommeCATVA,
SUM(boutique_obj_ligneCommande.quantite) AS nbArticles
FROM boutique_obj_commande, boutique_obj_article, boutique_obj_ligneCommande
WHERE boutique_obj_article.ID = boutique_obj_ligneCommande.ID_article
AND boutique_obj_ligneCommande.ID_commande = boutique_obj_commande.ID
AND boutique_obj_commande.dateCommande >= '$dateDebut'
AND boutique_obj_commande.dateCommande <= '$dateFin'
AND boutique_obj_article.tauxTVA = '$tva'
AND boutique_obj_commande.statut = 'expediee'";
$resSql = T_LAETIS_site::requeter( $requete );
return ($resSql);
}
/**
* fonction qui retourne le nombre de commandes passées, la somme des frais de livraison, le montant total des commandes entre 2 dates ($dateDebut et $dateFin)
* @param string $dateDebut, string $dateFin
* @return nbCommandes, sommeTarifLivraison, montCom
* @access public
*/
function recapitulatifVentesCATTC($dateDebut, $dateFin)
{
$dateDebut = $dateDebut." 00:00:00";
$dateFin = $dateFin." 23:59:59";
$requete = "SELECT COUNT(boutique_obj_commande.ID) AS nbCommandes,
SUM(boutique_obj_tarifLivraison.tarif) AS sommeTarifLivraison, SUM(boutique_obj_commande.montant) AS montCom
FROM boutique_obj_commande, boutique_obj_tarifLivraison
WHERE boutique_obj_commande.dateCommande >= '$dateDebut'
AND boutique_obj_commande.dateCommande <= '$dateFin'
AND boutique_obj_commande.statut = 'expediee'
AND boutique_obj_tarifLivraison.ID = boutique_obj_commande.ID_tarifLivraison";
$resSql = T_LAETIS_site::requeter( $requete );
return ($resSql);
}
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function nbCommandesSelonCriteres($criteres)
{
$resultats = array();
$requeteC = '';
if($criteres['statut'])
{ $requeteC .= " AND statut = '".$criteres['statut']."'"; }
if($criteres['annee'])
{ $requeteC .= " AND YEAR(dateCommande) = '".$criteres['annee']."'"; }
if($criteres['prixMini'] >= 0)
{ $requeteC .= " AND montant >= '".$criteres['prixMini']."'"; }
if($criteres['prixMaxi'])
{ $requeteC .= " AND montant < '".$criteres['prixMaxi']."'"; }
$requete = "SELECT COUNT(ID) as nb, SUM(montant) as somme
FROM boutique_obj_commande
WHERE 1 ".$requeteC;
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats['somme'] = $ligne['somme'];
$resultats['nb'] = $ligne['nb'];
}
return ($resultats);
}
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function nbCommandesSelonMontant($prixMini, $prixMaxi, $annee)
{
$resultats = array();
$requete = "SELECT
COUNT(ID) as nb,
SUM(montant) as somme
FROM
boutique_obj_commande
WHERE
YEAR(dateCommande) = '".$annee."'
AND statut = 'expediee'
AND montant >= '".$prixMini."'
AND montant < '".$prixMaxi."'";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats['somme'] = $ligne['somme'];
$resultats['nb'] = $ligne['nb'];
}
return ($resultats);
}
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function commandesAnneeMoisGamme($statut, $annee, $mois, $ID_gamme)
{
$resultats = array();
$requete = "SELECT
SUM(boutique_obj_ligneCommande.quantite) as nb,
SUM(boutique_obj_ligneCommande.quantite * boutique_obj_ligneCommande.tarif) as somme
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande
ON (boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande)
LEFT JOIN boutique_rel_famille_article
ON (boutique_obj_ligneCommande.ID_article = boutique_rel_famille_article.ID_article)
LEFT JOIN boutique_obj_famille
ON (boutique_rel_famille_article.ID_famille = boutique_obj_famille.ID)
WHERE
boutique_obj_commande.statut = '".$statut."'
AND YEAR(boutique_obj_commande.dateCommande) = ".$annee."
AND MONTH(boutique_obj_commande.dateCommande) = ".$mois."
AND boutique_obj_famille.ID_gamme = '".$ID_gamme."'";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats['somme'] = $ligne['somme'];
$resultats['nb'] = $ligne['nb'];
}
return ($resultats);
}
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function commandesAnneeMoisProduit($statut, $annee, $mois, $ID_article)
{
$resultats = array();
$requete = "SELECT
SUM(boutique_obj_ligneCommande.quantite) as nb,
SUM(boutique_obj_ligneCommande.quantite * boutique_obj_ligneCommande.tarif) as somme
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande
ON (boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande)
WHERE
boutique_obj_commande.statut = '".$statut."'
AND YEAR(boutique_obj_commande.dateCommande) = ".$annee."
AND MONTH(boutique_obj_commande.dateCommande) = ".$mois."
AND boutique_obj_ligneCommande.ID_article = '".$ID_article."'";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats['somme'] = $ligne['somme'];
$resultats['nb'] = $ligne['nb'];
}
return ($resultats);
}
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function rechercheArticle($reference)
{
$resultats = array();
// Si c'est un chiffre alors peut être soit la référence soit l'ID
if(is_numeric($reference)):
$where = "boutique_obj_article.reference = '".$reference."' OR boutique_obj_article.ID = '".$reference."'";
else:
$where = "boutique_obj_article.reference = '".$reference."'";
endif;
$requete = "SELECT
boutique_obj_article.ID
FROM
boutique_obj_article
WHERE
".$where."";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats[0]['ID']);
} // FIN function rechercheArticle($reference)
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function statsSelonMarque()
{
$resultats = array();
$retour = array();
$requete = "
SELECT
YEAR(boutique_obj_commande.dateCommande) AS annee,
boutique_obj_fabricant.ID AS ID_fabricant,
boutique_obj_fabricant.titre,
SUM(boutique_obj_ligneCommande.quantite) AS nbProduitsVendus,
SUM(boutique_obj_ligneCommande.quantite * boutique_obj_ligneCommande.tarif) AS montantProduitsVendus
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande ON ( boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande )
LEFT JOIN boutique_obj_article ON ( boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID )
JOIN boutique_obj_fabricant ON ( boutique_obj_article.ID_fabricant = boutique_obj_fabricant.ID )
WHERE
boutique_obj_commande.statut = 'expediee'
GROUP BY
boutique_obj_fabricant.ID,
YEAR(boutique_obj_commande.dateCommande)";
$resultats = T_LAETIS_site::requeter($requete);
foreach ($resultats as $ligne):
$retour[$ligne['annee']][$ligne['ID_fabricant']]['nbProduitsVendus'] = $ligne['nbProduitsVendus'];
$retour[$ligne['annee']][$ligne['ID_fabricant']]['montantProduitsVendus'] = $ligne['montantProduitsVendus'];
endforeach;
return ($retour);
} // FIN function statsSelonMarque()
/**
* retourne le nombre de commandes et leur montant pour une année et un mois données
* @return array Tableau de Tbq_commande
* @author Christophe Raffy
*/
function statsSelonArticle()
{
$resultats = array();
$retour = array();
$requete = "
SELECT
YEAR(boutique_obj_commande.dateCommande) AS annee,
boutique_obj_fabricant.ID AS ID_fabricant,
boutique_obj_article.ID AS ID_article,
SUM(boutique_obj_ligneCommande.quantite) AS nbProduitsVendus,
SUM(boutique_obj_ligneCommande.quantite * boutique_obj_ligneCommande.tarif) AS montantProduitsVendus
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande ON ( boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande )
LEFT JOIN boutique_obj_article ON ( boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID )
JOIN boutique_obj_fabricant ON ( boutique_obj_article.ID_fabricant = boutique_obj_fabricant.ID )
WHERE
boutique_obj_commande.statut = 'expediee'
GROUP BY
boutique_obj_article.ID,
YEAR(boutique_obj_commande.dateCommande)
ORDER BY
nbProduitsVendus DESC";
$resultats = T_LAETIS_site::requeter($requete);
foreach ($resultats as $ligne):
$retour[$ligne['annee']][$ligne['ID_fabricant']][$ligne['ID_article']] = $ligne;
endforeach;
return ($retour);
} // FIN function statsSelonArticle()
/**
* Liste les objets
* @return array Tableau de Tbq_fabricant
* @author Christophe Raffy
*/
function listerFabricantSelonVente($anneeD, $anneeF)
{
$resultats = array();
$requete = "
SELECT
boutique_obj_fabricant.ID,
boutique_obj_fabricant.titre,
SUM(boutique_obj_ligneCommande.quantite * boutique_obj_ligneCommande.tarif) AS montantProduitsVendus
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande ON ( boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande )
LEFT JOIN boutique_obj_article ON ( boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID )
JOIN boutique_obj_fabricant ON ( boutique_obj_article.ID_fabricant = boutique_obj_fabricant.ID )
WHERE
YEAR(boutique_obj_commande.dateCommande) >= '".$anneeD."'
AND YEAR(boutique_obj_commande.dateCommande) <= '".$anneeF."'
AND boutique_obj_commande.statut = 'expediee'
GROUP BY
boutique_obj_fabricant.ID
ORDER BY
montantProduitsVendus DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach($resSql as $ligne)
{
$resultats[] = $ligne;
}
return ($resultats);
} // FIN listerFabricantSelonVente($anneeD, $anneeF)
/**
* Liste les objets
* @return array Tableau de Tbq_fabricant
* @author Christophe Raffy
*/
function listerArticleSelonVente($anneeD, $anneeF)
{
$resultats = array();
$requete = "
SELECT
boutique_obj_article.ID AS ID_article,
boutique_obj_article.titre,
boutique_obj_fabricant.ID AS ID_fabricant,
SUM(boutique_obj_ligneCommande.quantite * boutique_obj_ligneCommande.tarif) AS montantProduitsVendus
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_ligneCommande ON ( boutique_obj_commande.ID = boutique_obj_ligneCommande.ID_commande )
LEFT JOIN boutique_obj_article ON ( boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID )
JOIN boutique_obj_fabricant ON ( boutique_obj_article.ID_fabricant = boutique_obj_fabricant.ID )
WHERE
YEAR(boutique_obj_commande.dateCommande) >= '".$anneeD."'
AND YEAR(boutique_obj_commande.dateCommande) <= '".$anneeF."'
AND boutique_obj_commande.statut = 'expediee'
AND boutique_obj_article.ID_fabricant > 0
GROUP BY
boutique_obj_article.ID
ORDER BY
montantProduitsVendus DESC";
$resSql = T_LAETIS_site::requeter($requete);
foreach($resSql as $ligne)
{
$resultats[$ligne['ID_fabricant']][] = $ligne;
}
return ($resultats);
} // FIN listerArticleSelonVente($anneeD, $anneeF)
}
?>
/**
* Gestion des gammes de la boutique Laetis
*
* Permet de créer, modifier, supprimer des gammes, en intéraction
* avec la base de données
*
* @author Christophe RAFFY
* Pas de back office développé pour changer les variantes, gestion via phpMyAdmin
* inspiré des gammes, mais sans gestion d'ordre, ni de visuels,
* reprendre les gammes pour ajouter cette fonction
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_varianteGroupe
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var string $titre Nom du groupe de variante
* @access private
*/
var $titreFR;
/**
* @var string $titre Nom du groupe de variante
* @access private
*/
var $titreEN;
/**
* @var string $titre Nom du groupe de variante
* @access private
*/
var $titreES;
/**
* @var string $sousTitre Titre du groupe de variante
* @access private
*/
var $sousTitreFR;
/**
* @var string $sousTitre Titre du groupe de variante
* @access private
*/
var $sousTitreEN;
/**
* @var string $sousTitre Titre du groupe de variante
* @access private
*/
var $sousTitreES;
/**
* @var string $sousTitre Titre du groupe de variante
* @access private
*/
var $legendeFR;
/**
* @var string $legende Titre du groupe de variante
* @access private
*/
var $legendeEN;
/**
* @var string $legende Titre du groupe de variante
* @access private
*/
var $legendeES;
/**
* @var string $alerte Titre du groupe de variante
* @access private
*/
var $alerteFR;
/**
* @var string $alerte Titre du groupe de variante
* @access private
*/
var $alerteEN;
/**
* @var string $alerte Titre du groupe de variante
* @access private
*/
var $alerteES;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_varianteGroupe($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_variante_groupe WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_variante_groupe SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_variante_groupe SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_varianteGroupe
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_variante_groupe ORDER BY ID";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_varianteGroupe($ligne['ID']);
}
return ($resultats);
}
function listerSelonArticle($ID_article)
{
$resultats = array();
$requete = "SELECT
boutique_obj_variante_groupe.*
FROM
boutique_obj_variante_groupe, boutique_rel_article_variante,
boutique_obj_article, boutique_obj_variante
WHERE
boutique_obj_article.ID = '".$ID_article."'
AND boutique_obj_article.ID = boutique_rel_article_variante.ID_article
AND boutique_rel_article_variante.ID_variante = boutique_obj_variante.ID
AND boutique_obj_variante.ID_varianteGroupe = boutique_obj_variante_groupe.ID
GROUP BY
boutique_obj_variante_groupe.ID
ORDER BY
boutique_obj_variante_groupe.ID";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_varianteGroupe($ligne['ID']);
}
return ($resultats);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_variante_groupe WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
}
?>
/**
* Gestion des familles de la boutique Laetis
*
* Permet de créer, modifier, supprimer des familles, en intéraction
* avec la base de données
*
*
* @author Christophe RAFFY
* Pas de back office développé pour changer les variantes, gestion via phpMyAdmin
* inspiré des gammes, mais sans gestion d'ordre, ni de visuels,
* reprendre les gammes pour ajouter cette fonction
*
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_variante
{
/**
* @var int $ID ID de l'element en base de donnée
* @access private
*/
var $ID;
/**
* @var int $ID_varianteGroupe ID de la gpeVariante correspondante
* @access private
*/
var $ID_varianteGroupe;
/**
* @var string $titre Nom de la famille
* @access private
*/
var $titreFR;
/**
* @var string $titre Nom de la famille
* @access private
*/
var $titreEN;
/**
* @var string $titre Nom de la famille
* @access private
*/
var $titreES;
/**
* @var string $sousTitre Nom de la famille
* @access private
*/
var $sousTitreFR;
/**
* @var string $sousTitreEN Nom de la famille
* @access private
*/
var $sousTitreEN;
/**
* @var string $sousTitreES Nom de la famille
* @access private
*/
var $sousTitreES;
/**
* @var string $sousTitre2FR Nom de la famille
* @access private
*/
var $sousTitre2FR;
/**
* @var string $sousTitre2EN Nom de la famille
* @access private
*/
var $sousTitre2EN;
/**
* @var string $sousTitre2ES Nom de la famille
* @access private
*/
var $sousTitre2ES;
/**
* @var string $ordre Ordre d'affichage
* @access private
**/
var $ordre;
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_variante ($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_variante WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array();
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_variante SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_variante SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
}
/**
* Liste les objets
* @return array Tableau de Tbq_variante
* @author Christophe Raffy
*/
function lister()
{
$resultats = array();
$requete = "SELECT * FROM boutique_obj_variante ORDER BY ID_varianteGroupe ASC, ordre ASC, titreFR ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_variante($ligne['ID']);
}
return ($resultats);
}
/**
* Liste les objets
* @return array Tableau de Tbq_gpeVariante
* @author Christophe Raffy
*/
function listerSousTitre($ID_variante, $ID_article)
{
$resultats = array();
$requete = "SELECT
boutique_obj_variante.*
FROM
boutique_obj_variante, boutique_rel_article_variante
WHERE
boutique_rel_article_variante.ID_variante='".$ID_variante."'
AND boutique_rel_article_variante.ID_article = '".$ID_article."'
ORDER BY
boutique_obj_variante.titreFR";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_gpeVariante($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste des familles selon la gpeVariante dont l'ID est passé en argument
* @param ID_varianteGroupe ID de la gpeVariante
* @return Les infos sur la famille
*/
function listerParVariante($ID_variante)
{
$requete="SELECT
boutique_obj_variante.*
FROM
boutique_obj_variante, boutique_rel_article_variante
WHERE
boutique_rel_article_variante.ID_variante='".$ID_variante."'
ORDER BY
boutique_obj_variante.titreFR";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_variante($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste des familles selon la gpeVariante dont l'ID est passé en argument
* @param ID_varianteGroupe ID de la gpeVariante
* @return Les infos sur la famille
*/
function listerParVarianteGroupe($ID_varianteGroupe)
{
$requete="SELECT *
FROM boutique_obj_variante
WHERE ID_varianteGroupe = '".$ID_varianteGroupe."'
ORDER BY ordre ASC, titreFR ASC";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_variante($ligne['ID']);
}
return ($resultats);
}
/**
* private
* Liste les familles variantes appartient l'article en cours
* @param $ID_article
* @param $ID_varianteGroupe, les variantes du groupe $ID_varianteGroupe pour l'article $ID_article
* @return La liste des variantes
*/
function listerIDVarianteParArticle($ID_article)
{
$requete = "SELECT
boutique_rel_article_variante.ID_variante
FROM
boutique_rel_article_variante
WHERE
boutique_rel_article_variante.ID_article = '".$ID_article."'
ORDER BY
boutique_rel_article_variante.ID_variante ASC";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = $ligne['ID_variante'];
}
return ($resultats);
} // FIN function listerArticleVariante($ID_article, $ID_varianteGroupe='')
/**
* private
* Liste les familles variantes appartient l'article en cours
* @param $ID_article
* @param $ID_varianteGroupe, les variantes du groupe $ID_varianteGroupe pour l'article $ID_article
* @return La liste des variantes
*/
function listerArticleVariante($ID_article, $ID_varianteGroupe='')
{
$orderby = "ORDER BY boutique_rel_article_variante.ID_variante ASC";
if($ID_varianteGroupe)
{
$from_gpeVariante = ", boutique_obj_variante";
$and_gpeVariante = "AND boutique_obj_variante.ID_varianteGroupe = '".$ID_varianteGroupe."'
AND boutique_obj_variante.ID = boutique_rel_article_variante.ID_variante";
$orderby = "ORDER BY boutique_obj_variante.ordre ASC, boutique_obj_variante.titreFR ASC";
}
$requete = "SELECT
boutique_rel_article_variante.ID_variante, boutique_rel_article_variante.stock
FROM
boutique_rel_article_variante
".$from_gpeVariante."
WHERE
boutique_rel_article_variante.ID_article = '".$ID_article."'
".$and_gpeVariante."
".$orderby."";
//echo $requete;
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = $ligne;
}
return ($resultats);
} // FIN function listerArticleVariante($ID_article, $ID_varianteGroupe='')
/**
* private
* Calcule le nombre d'articles présents dans cette famille
* @param ID_variante l'ID de la famille
* @return Le nombre d'articles présents dans cette famille
*/
function getNbArticles($ID_variante)
{
$requete="SELECT COUNT(ID_article) AS nbArticles
FROM boutique_rel_article_variante
WHERE ID_variante='".$ID_variante."'
GROUP BY ID_variante";
$resultats = T_LAETIS_site::requeter($requete);
return ($resultats[0]['nbArticles']);
}
/**
* Supprime l'objet de la BD
* @author Christophe Raffy
*/
function supprimer()
{
$requete = "DELETE FROM boutique_obj_variante WHERE ID='".$this->ID."'";
T_LAETIS_site::requeter($requete);
$requete = "DELETE FROM boutique_rel_article_variante WHERE ID_variante = '".$this->ID."'";
T_LAETIS_site::requeter($requete);
$this->ID = 0;
}
function afficherStock($stock, $langue='fr')
{
$retour = "";
switch($langue)
{
case 'fr':
if($stock>0):
$retour = "En stock";
elseif($stock==0):
$retour = "En cours de réapprovisionnement";
else:
$retour = "Sur commande";
endif;
break;
case 'en':
if($stock>0):
$retour = "In stock";
elseif($stock==0):
$retour = "Currently out of stock";
else:
$retour = "On order";
endif;
break;
case 'es':
if($stock>0):
$retour = "In stock";
elseif($stock==0):
$retour = "Currently out of stock";
else:
$retour = "En orden";
endif;
break;
default:
if($stock>0):
$retour = "En stock";
elseif($stock==0):
$retour = "En cours de réapprovisionnement";
else:
$retour = "Sur commande";
endif;
}
return $retour;
} // FIN function afficherStock($stock, $langue='fr')
}
?>
/**
* Gestion de la comptabilité de la boutique Laetis
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
/*
#58 07 * * * wget --delete-after --tries=2 http://admin:vNdJQEevC@www.jama.fr/boutique/admin/cron/export-ebp-client.php
*/
class Tbq_comptabilite
{
public static $civilite = array('M.'=>'Monsieur', 'Mr.'=>'Monsieur', 'Sr.'=>'Monsieur',
'Mme'=>'Madame', 'Ms'=>'Madame', 'Sra.'=>'Madame',
'Société'=>'SARL', 'Company'=>'SARL', 'Empresa'=>'SARL');
/**
* @const string REP_FICHIER_COMPTA_CLIENT Répertoire pour les fichiers compta
* @access public
*/
const REP_FICHIER_COMPTA_CLIENT = '/boutique/admin/save/compta/client/';
/**
* @const string REP_FICHIER_COMPTA_CLIENT Répertoire pour les fichiers compta
* @access public
*/
const REP_FICHIER_COMPTA_FACTURE = '/boutique/admin/save/compta/facture/';
/**
* Constructeur
* Constructeur PHP4
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function Tbq_comptabilite($ID=0)
{
$this->__construct($ID);
}
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
function __construct($ID = 0)
{
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
function __destruct ()
{}
/**
* private
* Générer le fichier TXT de la description d'une commande
* @param
* @return Le fichier
*/
public function genererFichierClient($ID_commande=0)
{
$texteComplet = '';
$sep = ';';
$sepLignes = "\r\n";
$texteComplet = "Code (tiers)".$sep;
$texteComplet .= "Civilité".$sep;
$texteComplet .= "Nom".$sep;
//$texteComplet .= "Code Famille".$sep;
//$texteComplet .= "Libellé".$sep;
//$texteComplet .= "Code sous-famille client".$sep;
//$texteComplet .= "Libellé sous-famille client".$sep;
//$texteComplet .= "Personne physique".$sep;
//$texteComplet .= "Statut".$sep;
$texteComplet .= "Adresse 1 (facturation)".$sep;
$texteComplet .= "Adresse 2 (facturation)".$sep;
//$texteComplet .= "Adresse 3 (facturation)".$sep;
//$texteComplet .= "Adresse 4 (facturation)".$sep;
$texteComplet .= "Code postal (facturation)".$sep;
$texteComplet .= "Ville (facturation)".$sep;
$texteComplet .= "Département (facturation)".$sep;
$texteComplet .= "Code Pays (facturation)".$sep;
//$texteComplet .= "Site Web (facturation)".$sep;
//$texteComplet .= "Civilité (contact) (facturation)".$sep;
$texteComplet .= "Nom (contact) (facturation)".$sep;
//$texteComplet .= "Prénom (facturation)".$sep;
//$texteComplet .= "Fonction (facturation)".$sep;
//$texteComplet .= "Service/Bureau (facturation)".$sep;
$texteComplet .= "Téléphone fixe (facturation)".$sep;
//$texteComplet .= "Téléphone portable (facturation)".$sep;
//$texteComplet .= "Fax (facturation)".$sep;
$texteComplet .= "E-mail (facturation)".$sep;
$texteComplet .= "Civilité (adresse) (livraison)".$sep;
$texteComplet .= "Nom (adresse) (livraison)".$sep;
$texteComplet .= "Adresse 1 (livraison)".$sep;
$texteComplet .= "Adresse 2 (livraison)".$sep;
//$texteComplet .= "Adresse 3 (livraison)".$sep;
//$texteComplet .= "Adresse 4 (livraison)".$sep;
$texteComplet .= "Code postal (livraison)".$sep;
$texteComplet .= "Ville (livraison)".$sep;
$texteComplet .= "Département (livraison)".$sep;
$texteComplet .= "Code Pays (livraison)".$sep;
//$texteComplet .= "Site Web (livraison)".$sep;
//$texteComplet .= "Civilité (contact) (livraison)".$sep;
$texteComplet .= "Nom (contact) (livraison)".$sep;
//$texteComplet .= "Prénom (livraison)".$sep;
//$texteComplet .= "Fonction (livraison)".$sep;
//$texteComplet .= "Service/Bureau (livraison)".$sep;
$texteComplet .= "Téléphone fixe (livraison)".$sep;
//$texteComplet .= "Téléphone portable (livraison)".$sep;
//$texteComplet .= "Fax (livraison)".$sep;
//$texteComplet .= "E-mail (livraison)".$sep;
//$texteComplet .= "Compte comptable".$sep;
//$texteComplet .= "% remise".$sep;
//$texteComplet .= "Encours autorisé".$sep;
//$texteComplet .= "Solde initial".$sep;
//$texteComplet .= "Date de première facture".$sep;
//$texteComplet .= "Code mode de règlement".$sep;
//$texteComplet .= "Date de paiement".$sep;
$texteComplet .= "Code territorialité".$sepLignes;
if($ID_commande>0):
$where = "AND boutique_obj_commande.ID = '".$ID_commande."' ";
endif;
$requete = "SELECT
boutique_obj_commande.*,
boutique_obj_commande.ID AS ID_commandeATraiter,
boutique_obj_client.*,
boutique_obj_client.ID AS ID_clientATraiter,
boutique_obj_client_livraison.*,
boutique_obj_tarifLivraison.transport
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_client
ON (boutique_obj_commande.ID_client = boutique_obj_client.ID)
LEFT JOIN boutique_obj_client_livraison
ON (boutique_obj_client.ID = boutique_obj_client_livraison.ID_client)
LEFT JOIN boutique_obj_tarifLivraison
ON (boutique_obj_commande.ID_tarifLivraison = boutique_obj_tarifLivraison.ID)
WHERE
boutique_obj_commande.envoyeeEnCompta = 0
AND boutique_obj_commande.statut NOT IN ('non validee', 'interrompue avant coordonnees', 'interrompue avant coordonnees', 'appel cb', 'appel cb alma', 'appel cb 3 fois')
AND boutique_obj_commande.ID = boutique_obj_client_livraison.ID_commande
".$where."
GROUP BY boutique_obj_commande.ID";
//AND boutique_obj_commande.statut IN ('payee cb', 'payee cb 3 fois', 'validee cheque', 'validee virement', 'validee fax')
//boutique_obj_commande.dateCommande > '2015-05-11'
//AND boutique_obj_commande.reglement = 'retourAutoPaiementAccepte'
$resSql = T_LAETIS_site::requeter($requete);
foreach($resSql as $ligne):
$requete = "SELECT boutique_typ_pays.countryCode FROM boutique_typ_pays
WHERE ID = '".addslashes($ligne['ID_paysFacturation'])."'";
$resPaysFact = T_LAETIS_site::requeter($requete);
// Si France alors on cherche le nom du département
if($resPaysFact[0]['countryCode']=='FR'):
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($ligne['codePostalFacturation'],0,2)."'";
$resDepFact = T_LAETIS_site::requeter($requete);
$territorialite = 'France';
else:
$resDepFact[0]['nomDepartement']='';
//$territorialite = 'Importation/Exportation';
$territorialite = 'France';
endif;
// Si ce client n'est pas déjà en compta
//if($ligne['codeCompta']==''):
// FACTURATION
// code (tiers) = code postal + chiffre
//$texte .= $ligne['codePostalFacturation'].'ID'.$ligne['ID_clientATraiter'].$sep;
$texteComplet .= $ligne['codeCompta'].$sep;
$texteComplet .= self::$civilite[$ligne['civiliteFacturation']].$sep;
$texteComplet .= $ligne['nomFacturation'].' '.$ligne['prenomFacturation'].$sep;
$texteComplet .= str_replace(';',' ',$ligne['adresseFacturation']).$sep;
$texteComplet .= str_replace(';',' ',$ligne['adresseFacturation2']).$sep;
$texteComplet .= $ligne['codePostalFacturation'].$sep;
$texteComplet .= $ligne['villeFacturation'].$sep;
$texteComplet .= $resDepFact[0]['nomDepartement'].$sep;
$texteComplet .= $resPaysFact[0]['countryCode'].$sep;
$texteComplet .= $ligne['nomFacturation'].' '.$ligne['prenomFacturation'].$sep;
$texteComplet .= $ligne['telFacturation'].$sep;
$texteComplet .= $ligne['emailFacturation'].$sep;
// LIVRAISON
// Si commande en Relais
$commande = new Tbq_commande();
if( ($ligne['transport'] == $commande->LIVRAISON_DPD_PICKUP) ):
$dpd = new Tbq_dpd();
$infosDPD = $dpd->getSelonIDdpdPickup($ligne['ID_commandeATraiter'], $ligne['ID_dpdPickup']);
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($infosDPD[0]['codePostal'],0,2)."'";
$resDepLiv = T_LAETIS_site::requeter($requete);
$texteComplet .= $sep;
$texteComplet .= $infosDPD[0]['nom'].$sep;
$texteComplet .= str_replace(';',' ',$infosDPD[0]['adresse1']).$sep;
$texteComplet .= $sep;
$texteComplet .= $infosDPD[0]['codePostal'].$sep;
$texteComplet .= $infosDPD[0]['ville'].$sep;
$texteComplet .= $resDepLiv[0]['nomDepartement'].$sep;
$texteComplet .= 'FR'.$sep;
$texteComplet .= $infosDPD[0]['nom'].$sep;
$texteComplet .= $sep;
elseif ($ligne['ID_tarifLivraison'] == $commande->ID_RELAIS_COLISSIMO):
$dpd = new Tbq_colissimo();
$infosDPD = $dpd->getSelonIDColissimo($ligne['ID_commandeATraiter'], $ligne['ID_colissimo']);
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($infosDPD[0]['codePostal'],0,2)."'";
$resDepLiv = T_LAETIS_site::requeter($requete);
$texteComplet .= $sep;
$texteComplet .= $infosDPD[0]['nom'].$sep;
$texteComplet .= str_replace(';',' ',$infosDPD[0]['adresse1']).$sep;
$texteComplet .= $sep;
$texteComplet .= $infosDPD[0]['codePostal'].$sep;
$texteComplet .= $infosDPD[0]['ville'].$sep;
$texteComplet .= $resDepLiv[0]['nomDepartement'].$sep;
$texteComplet .= 'FR'.$sep;
$texteComplet .= $infosDPD[0]['nom'].$sep;
$texteComplet .= $sep;
else:
$requete = "SELECT boutique_typ_pays.countryCode FROM boutique_typ_pays
WHERE ID = '".addslashes($ligne['ID_pays'])."'";
$resPaysLiv = T_LAETIS_site::requeter($requete);
// Si France alors on cherche le nom du département
if($resPaysLiv[0]['countryCode']=='FR'):
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($ligne['codePostalLivraison'],0,2)."'";
$resDepLiv = T_LAETIS_site::requeter($requete);
else:
$resDepLiv[0]['nomDepartement']='';
endif;
$texteComplet .= self::$civilite[$ligne['civiliteLivraison']].$sep;
$texteComplet .= $ligne['nomLivraison'].' '.$ligne['prenomLivraison'].$sep;
$texteComplet .= str_replace(';',' ',$ligne['adresseLivraison']).$sep;
$texteComplet .= str_replace(';',' ',$ligne['adresseLivraison2']).$sep;
$texteComplet .= $ligne['codePostalLivraison'].$sep;
$texteComplet .= $ligne['villeLivraison'].$sep;
$texteComplet .= $resDepLiv[0]['nomDepartement'].$sep;
$texteComplet .= $resPaysLiv[0]['countryCode'].$sep;
$texteComplet .= $ligne['nomFacturation'].' '.$ligne['prenomFacturation'].$sep;
$texteComplet .= $ligne['telLivraison'].$sep;
endif;
$texteComplet .= $territorialite;
$texteComplet .= $sepLignes;
//endif;
$requete = "UPDATE boutique_obj_commande SET envoyeeEnCompta = 2 WHERE ID = '".$ligne['ID_commandeATraiter']."'";
T_LAETIS_site::requeter($requete);
endforeach;
if($texteComplet):
// Formatage du nom de fichier
$nomFichier = 'exportEBPClient-'.date('Y-m-d-H-i-s');
// CREATION DU FICHIER TXT
//@unlink($_SERVER['DOCUMENT_ROOT'].self::REP_FICHIER_COMPTA_CLIENT.$nomFichier.".txt");
if ($fp = fopen($_SERVER['DOCUMENT_ROOT'].self::REP_FICHIER_COMPTA_CLIENT.$nomFichier.".txt", "w")):
fputs($fp, $texteComplet);
fclose($fp);
endif;
endif;
return $nomFichier.".txt";
} // FIN function genererFichierClient()
/**
* private
* Générer le fichier TXT de la description d'une commande
* @param
* @return Le fichier
*/
public function genererFichierFacture($ID_commande=0)
{
$facture = new Tbq_facture();
$texteComplet = $texteCommande = $texteLigneCommande = $textePremiereLigneCommande = $texteTroisiemeLigneCommande = $texteQuatriemeLigneCommande = '';
$sep = ';';
$sepLignes = "\r\n";
/* EN TETE */
//$texteComplet = "Document - Utiliser le numéro du document d'origine".$sep;
$texteComplet = "Document - Préfixe du numéro".$sep;
$texteComplet .= "Document - Suffixe du numéro".$sep;
$texteComplet .= "Document - Numéro du document".$sep;
$texteComplet .= "Document - Date".$sep;
$texteComplet .= "Document - Code client".$sep;
$texteComplet .= "Document - Civilité".$sep;
$texteComplet .= "Document - Nom du client".$sep;
$texteComplet .= "Document - Adresse 1 (facturation)".$sep;
$texteComplet .= "Document - Adresse 2 (facturation)".$sep;
$texteComplet .= "Document - Adresse 3 (facturation)".$sep;
$texteComplet .= "Document - Adresse 4 (facturation)".$sep;
$texteComplet .= "Document - Code postal (facturation)".$sep;
$texteComplet .= "Document - Ville (facturation)".$sep;
$texteComplet .= "Document - Département (facturation)".$sep;
$texteComplet .= "Document - Code Pays (facturation)".$sep;
$texteComplet .= "Document - Nom (contact) (facturation)".$sep;
$texteComplet .= "Document - Prénom (facturation)".$sep;
$texteComplet .= "Document - Téléphone fixe (facturation)".$sep;
$texteComplet .= "Document - Téléphone portable (facturation)".$sep;
$texteComplet .= "Document - Fax (facturation)".$sep;
$texteComplet .= "Document - E-mail (facturation)".$sep;
$texteComplet .= "Document - Nom (adresse) (livraison)".$sep;
$texteComplet .= "Document - Civilité (adresse) (livraison)".$sep;
$texteComplet .= "Document - Adresse 1 (livraison)".$sep;
$texteComplet .= "Document - Adresse 2 (livraison)".$sep;
$texteComplet .= "Document - Adresse 3 (livraison)".$sep;
$texteComplet .= "Document - Adresse 4 (livraison)".$sep;
$texteComplet .= "Document - Code postal (livraison)".$sep;
$texteComplet .= "Document - Ville (livraison)".$sep;
$texteComplet .= "Document - Département (livraison)".$sep;
$texteComplet .= "Document - Code Pays (livraison)".$sep;
$texteComplet .= "Document - Nom (contact) (livraison)".$sep;
$texteComplet .= "Document - Prénom (livraison)".$sep;
$texteComplet .= "Document - Téléphone fixe (livraison)".$sep;
$texteComplet .= "Document - Téléphone portable (livraison)".$sep;
$texteComplet .= "Document - Fax (livraison)".$sep;
$texteComplet .= "Document - E-mail (livraison)".$sep;
$texteComplet .= "Document - Territorialité".$sep;
$texteComplet .= "Document - Numéro de TVA intracommunautaire".$sep;
$texteComplet .= "Document - % remise".$sep;
$texteComplet .= "Document - Montant de la remise".$sep;
$texteComplet .= "Document - % escompte".$sep;
$texteComplet .= "Document - Montant de l'escompte".$sep;
$texteComplet .= "Document - Code frais de port".$sep;
$texteComplet .= "Document - Frais de port HT".$sep;
$texteComplet .= "Document - Taux de TVA port".$sep;
$texteComplet .= "Document - Code TVA port".$sep;
$texteComplet .= "Document - Port non soumis à escompte".$sep;
$texteComplet .= "Document - Total Brut HT".$sep;
$texteComplet .= "Document - Total TTC".$sep;
$texteComplet .= "Document - Notes".$sep;
$texteComplet .= "Document - Code commercial/collaborateur".$sep;
$texteComplet .= "Document - Code mode de règlement".$sep;
$texteComplet .= "Ligne - Code ligne de document".$sep;
$texteComplet .= "Ligne - Code article".$sep;
$texteComplet .= "Ligne - Description".$sep;
$texteComplet .= "Ligne - Date de livraison".$sep;
$texteComplet .= "Ligne - Quantité".$sep;
$texteComplet .= "Ligne - Taux de TVA".$sep;
$texteComplet .= "Ligne - Code TVA".$sep;
$texteComplet .= "Ligne - Type de ligne".$sep;
$texteComplet .= "Ligne - Quantité (série/lot)".$sep;
$texteComplet .= "Ligne - PV HT".$sep;
$texteComplet .= "Ligne - PV TTC".$sep;
$texteComplet .= "Ligne - % remise unitaire cumulé".$sep;
$texteComplet .= "Ligne - Montant de remise unitaire HT cumulé".$sep;
$texteComplet .= "Ligne - Montant Net HT".$sep;
$texteComplet .= "Ligne - Montant Net TTC".$sep;
$texteComplet .= "Ligne - Code commercial/collaborateur".$sep;
$texteComplet .= "Ligne - Codes des lignes de commandes".$sep;
$texteComplet .= "Ligne - Codes des commandes".$sep;
$texteComplet .= "Ligne - Quantités à livrer".$sep;
$texteComplet .= $sepLignes;
if($ID_commande>0):
$where = "AND boutique_obj_commande.ID = '".$ID_commande."' ";
endif;
$requete = "SELECT
boutique_obj_commande.*,
boutique_obj_commande.ID AS ID_commandeATraiter,
boutique_obj_client.*,
boutique_obj_client.ID AS ID_clientATraiter,
boutique_obj_client_livraison.*,
boutique_obj_tarifLivraison.transport
FROM
boutique_obj_commande
LEFT JOIN boutique_obj_client
ON (boutique_obj_commande.ID_client = boutique_obj_client.ID)
LEFT JOIN boutique_obj_client_livraison
ON (boutique_obj_client.ID = boutique_obj_client_livraison.ID_client)
LEFT JOIN boutique_obj_tarifLivraison
ON (boutique_obj_commande.ID_tarifLivraison = boutique_obj_tarifLivraison.ID)
WHERE
boutique_obj_commande.envoyeeEnCompta = 2
AND boutique_obj_commande.statut NOT IN ('non validee', 'interrompue avant coordonnees', 'interrompue avant coordonnees', 'appel cb', 'appel cb alma', 'appel cb 3 fois')
AND boutique_obj_commande.ID = boutique_obj_client_livraison.ID_commande
".$where."
GROUP BY boutique_obj_commande.ID";
//AND boutique_obj_commande.statut IN ('payee cb', 'payee cb 3 fois', 'validee cheque', 'validee virement', 'validee fax')
//boutique_obj_commande.dateCommande > '2015-05-11'
//AND boutique_obj_commande.ID = 1123222
//AND boutique_obj_commande.reglement = 'retourAutoPaiementAccepte'
$resSql = T_LAETIS_site::requeter($requete);
$cptDocument = 1;
foreach($resSql as $ligne):
$ID_facture = $facture->facturer($ligne['ID_commandeATraiter']);
$requete = "SELECT boutique_typ_pays.countryCode FROM boutique_typ_pays
WHERE ID = '".addslashes($ligne['ID_paysFacturation'])."'";
$resPaysFact = T_LAETIS_site::requeter($requete);
// Si France alors on cherche le nom du département
if($resPaysFact[0]['countryCode']=='FR'):
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($ligne['codePostalFacturation'],0,2)."'";
$resDepFact = T_LAETIS_site::requeter($requete);
$territorialite = 'France';
else:
$resDepFact[0]['nomDepartement']='';
//$territorialite = 'Importation/Exportation';
$territorialite = 'France';
endif;
// Si ce client n'est pas déjà en compta
//if($ligne['codeCompta']==''):
// FACTURATION
// code (tiers) = code postal + chiffre
//$texteCommande .= $ligne['codePostalFacturation'].'ID'.$ligne['ID_clientATraiter'].$sep;
//$texteCommande = $sep; // Document - Utiliser le numéro du document d'origine
$texteCommande = $sep; // Document - Préfixe du numéro
$texteCommande .= $sep; // Document - Suffixe du numéro
$texteCommande .= $cptDocument.$sep; // Document - Numéro du document
//$texteCommande .= Tbq_comptabilite::traiterDateCommande($ligne['dateCommande']).$sep; // Document - Date jj/mm/yyyy
$texteCommande .= date("d/m/Y").$sep; // Document - Date jj/mm/yyyy
$texteCommande .= $ligne['codeCompta'].$sep; // Document - Code client
$texteCommande .= self::$civilite[$ligne['civiliteFacturation']].$sep; // Document - Civilité
$texteCommande .= strtoupper($ligne['nomFacturation']).' '.$ligne['prenomFacturation'].$sep; // Document - Nom du client
$texteCommande .= str_replace(';',' ',$ligne['adresseFacturation']).$sep; // Document - Adresse 1 (facturation)
$texteCommande .= str_replace(';',' ',$ligne['adresseFacturation2']).$sep; // Document - Adresse 2 (facturation)
$texteCommande .= $sep; // Document - Adresse 3 (facturation)
$texteCommande .= $sep; // Document - Adresse 4 (facturation)
$texteCommande .= $ligne['codePostalFacturation'].$sep; // Document - Code postal (facturation)
$texteCommande .= $ligne['villeFacturation'].$sep; // Document - Ville (facturation)
$texteCommande .= $resDepFact[0]['nomDepartement'].$sep; // Document - Département (facturation)
$texteCommande .= $resPaysFact[0]['countryCode'].$sep; // Document - Code Pays (facturation)
$texteCommande .= strtoupper($ligne['nomFacturation']).' '.$ligne['prenomFacturation'].$sep; // Document - Nom (contact) (facturation)
$texteCommande .= $sep; // Document - Prénom (facturation)
$texteCommande .= $ligne['telFacturation'].$sep; // Document - Téléphone fixe (facturation)
$texteCommande .= $sep; // Document - Téléphone portable (facturation)
$texteCommande .= $sep; // Document - Fax (facturation)
$texteCommande .= $ligne['emailFacturation'].$sep; // Document - E-mail (facturation)
// LIVRAISON
// Si commande en Relais
$commande = new Tbq_commande();
$nomLivraisonRelai = '';
if( ($ligne['transport'] == $commande->LIVRAISON_DPD_PICKUP) ):
$dpd = new Tbq_dpd();
$infosDPD = $dpd->getSelonIDdpdPickup($ligne['ID_commandeATraiter'], $ligne['ID_dpdPickup']);
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($infosDPD[0]['codePostal'],0,2)."'";
$resDepLiv = T_LAETIS_site::requeter($requete);
$civiliteLivraison = '';
$nomLivraison = $nomLivraisonRelai = $infosDPD[0]['nom'];
$adresseLivraison = str_replace(';',' ',$infosDPD[0]['adresse1']);
$adresseLivraison2 = '';
$codePostalLivraison = $infosDPD[0]['codePostal'];
$villeLivraison = $infosDPD[0]['ville'];
$nomDepartement = $resDepLiv[0]['nomDepartement'];
$countryCode = 'FR';
$telLivraison = '';
elseif($ligne['ID_tarifLivraison'] == $commande->ID_RELAIS_COLISSIMO):
$dpd = new Tbq_colissimo();
$infosDPD = $dpd->getSelonIDColissimo($ligne['ID_commandeATraiter'], $ligne['ID_colissimo']);
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($infosDPD[0]['codePostal'],0,2)."'";
$resDepLiv = T_LAETIS_site::requeter($requete);
$civiliteLivraison = '';
$nomLivraison = $nomLivraisonRelai = $infosDPD[0]['nom'];
$adresseLivraison = str_replace(';',' ',$infosDPD[0]['adresse1']);
$adresseLivraison2 = '';
$codePostalLivraison = $infosDPD[0]['codePostal'];
$villeLivraison = $infosDPD[0]['ville'];
$nomDepartement = $resDepLiv[0]['nomDepartement'];
$countryCode = 'FR';
$telLivraison = '';
else:
$requete = "SELECT boutique_typ_pays.countryCode FROM boutique_typ_pays
WHERE ID = '".addslashes($ligne['ID_pays'])."'";
$resPaysLiv = T_LAETIS_site::requeter($requete);
// Si France alors on cherche le nom du département
if($resPaysLiv[0]['countryCode']=='FR'):
$requete = "SELECT UPPER(boutique_typ_departement.nomDepartement) AS nomDepartement
FROM boutique_typ_departement
WHERE codeDepartement = '".substr($ligne['codePostalLivraison'],0,2)."'";
$resDepLiv = T_LAETIS_site::requeter($requete);
else:
$resDepLiv[0]['nomDepartement']='';
endif;
$civiliteLivraison = self::$civilite[$ligne['civiliteLivraison']];
$nomLivraison = $ligne['nomLivraison'].' '.$ligne['prenomLivraison'];
$adresseLivraison = str_replace(';',' ',$ligne['adresseLivraison']);
$adresseLivraison2 = str_replace(';',' ',$ligne['adresseLivraison2']);
$codePostalLivraison = $ligne['codePostalLivraison'];
$villeLivraison = $ligne['villeLivraison'];
$nomDepartement = $resDepLiv[0]['nomDepartement'];
$countryCode = $resPaysLiv[0]['countryCode'];
$telLivraison = $ligne['telLivraison'];
endif;
$texteCommande .= $nomLivraison.$sep; // Document - Nom (adresse) (livraison)
$texteCommande .= $civiliteLivraison.$sep; // Document - Civilité (adresse) (livraison)
$texteCommande .= $adresseLivraison.$sep; // Document - Adresse 1 (livraison)
$texteCommande .= $adresseLivraison2.$sep; // Document - Adresse 2 (livraison)
$texteCommande .= $sep; // Document - Adresse 3 (livraison)
$texteCommande .= $sep; // Document - Adresse 4 (livraison)
$texteCommande .= $codePostalLivraison.$sep; // Document - Code postal (livraison)
$texteCommande .= $villeLivraison.$sep; // Document - Ville (livraison)
$texteCommande .= $nomDepartement.$sep; // Document - Département (livraison)
$texteCommande .= $countryCode.$sep; // Document - Code Pays (livraison)
$texteCommande .= $nomLivraison.$sep; // Document - Nom (contact) (livraison)
$texteCommande .= $sep; // Document - Prénom (livraison)
$texteCommande .= $telLivraison.$sep; // Document - Téléphone fixe (livraison)
$texteCommande .= $sep; // Document - Téléphone portable (livraison)
$texteCommande .= $sep; // Document - Fax (livraison)
$texteCommande .= $sep; // Document - E-mail (livraison)
$texteCommande .= $territorialite.$sep; // Document - Territorialité
$remise = 0;
if($ligne['montantReductionTTC']>0):
$remise = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligne['montantReductionTTC'], 20));
endif;
$tauxTVA = 20;
if($resPaysFact[0]['countryCode']=='CH'):
$tauxTVA = 0;
endif;
/* COMMANDE */
$texteCommande .= $sep; // Document - Numéro de TVA intracommunautaire
$texteCommande .= $sep; // Document - % remise
$texteCommande .= $remise.$sep; // Document - Montant de la remise
$texteCommande .= $sep; // Document - % escompte
$texteCommande .= $sep; // Document - Montant de l'escompte
$texteCommande .= $sep; // Document - Code frais de port
$texteCommande .= Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligne['livraisonTTC'], 20)).$sep; // Document - Frais de port HT
$texteCommande .= $tauxTVA.$sep; // Document - Taux de TVA port
$texteCommande .= $sep; // Document - Code TVA port
$texteCommande .= $sep; // Document - Port non soumis à escompte
$texteCommande .= $sep; // Document - Total Brut HT
$texteCommande .= Tbq_comptabilite::afficherFloat($ligne['montant']).$sep; // Document - Total TTC
$texteCommande .= $sep; // Document - Notes
$texteCommande .= $sep; // Document - Code commercial/collaborateur
if($ligne['typePaiement']=='cb'):
$p = 'CBC';
elseif($ligne['typePaiement']=='cheque'):
$p = 'CH';
elseif($ligne['typePaiement']=='virement'):
$p = 'VIRT';
elseif($ligne['typePaiement']=='fax'):
$p = 'CH';
else:
$p = 'CBC';
endif;
$texteCommande .= $p.$sep; // Document - Code mode de règlement
/* 1ERE LIGNE = NUMERO DE COMMANDE */
$textePremiereLigneCommande = $sep; // Ligne - Code ligne de document
$textePremiereLigneCommande .= $sep; // Ligne - Code article
$textePremiereLigneCommande .= "Commande ".$ligne['ID_commandeATraiter'].$sep; // Ligne - Description
$textePremiereLigneCommande .= $sep; // Ligne - Date de livraison
$textePremiereLigneCommande .= $sep; // Ligne - Quantité
$textePremiereLigneCommande .= $sep; // Ligne - Taux de TVA
$textePremiereLigneCommande .= $sep; // Ligne - Code TVA
$textePremiereLigneCommande .= '4'.$sep; // Ligne - Type de ligne
$textePremiereLigneCommande .= $sep; // Ligne - Quantité (série/lot)
$textePremiereLigneCommande .= $sep; // Ligne - PV HT
$textePremiereLigneCommande .= $sep; // Ligne - PV TTC
$textePremiereLigneCommande .= $sep; // Ligne - % remise unitaire cumulé
$textePremiereLigneCommande .= $sep; // Ligne - Montant de remise unitaire HT cumulé
$textePremiereLigneCommande .= $sep; // Ligne - Montant Net HT
$textePremiereLigneCommande .= $sep; // Ligne - Montant Net TTC
$textePremiereLigneCommande .= $sep; // Ligne - Code commercial/collaborateur
$textePremiereLigneCommande .= $sep; // Ligne - Codes des lignes de commandes
$textePremiereLigneCommande .= $sep; // Ligne - Codes des commandes
$textePremiereLigneCommande .= $sep; // Ligne - Quantités à livrer
// 1ère ligne totale
$texteComplet .= $texteCommande.$textePremiereLigneCommande.$sepLignes;
$requeteLigneCommande = "
SELECT
boutique_obj_ligneCommande.*,
boutique_obj_article.reference,
boutique_obj_article.prixTTC AS prixTTCNormalHorsPromo
FROM
boutique_obj_ligneCommande
LEFT JOIN boutique_obj_article
ON (boutique_obj_ligneCommande.ID_article = boutique_obj_article.ID)
WHERE
boutique_obj_ligneCommande.ID_commande = '".$ligne['ID_commandeATraiter']."'";
$resSqlLigneCommande = T_LAETIS_site::requeter($requeteLigneCommande);
/* LIGNES PRODUITS */
foreach($resSqlLigneCommande as $ligneCommande):
if($resPaysFact[0]['countryCode']=='CH'):
// Si le produit est en promotion, alors on affiche le prix "normal" et la remise
if($ligneCommande['prixTTCNormalHorsPromo'] > $ligneCommande['tarif']):
$montantLigneTTC = $montantLigneHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['prixTTCNormalHorsPromo'], $ligneCommande['tauxTVA']));
$montantRemiseUnitaireHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['prixTTCNormalHorsPromo'] - $ligneCommande['tarif']));
// Calcul : (Montant de la remise*100)/prix initial.
$pourcentageRemiseUnitaire = Tbq_comptabilite::afficherFloat((Tbq_comptabilite::calculerHT($ligneCommande['prixTTCNormalHorsPromo'] - $ligneCommande['tarif']) * 100) / $ligneCommande['prixTTCNormalHorsPromo']);
else:
$montantLigneTTC = $montantLigneHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['tarif'], $ligneCommande['tauxTVA']));
$pourcentageRemiseUnitaire = 0;
$montantRemiseUnitaireHT = 0;
endif;
$montantTotalLigneTTC = $montantTotalLigneHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['tarif'], $ligneCommande['tauxTVA']) * $ligneCommande['quantite']);
$ligneCommande['tauxTVA'] = '0';
else:
// Si le produit est en promotion, alors on affiche le prix "normal" et la remise
if($ligneCommande['prixTTCNormalHorsPromo'] > $ligneCommande['tarif']):
$montantLigneHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['prixTTCNormalHorsPromo'], $ligneCommande['tauxTVA']));
$montantLigneTTC = Tbq_comptabilite::afficherFloat($ligneCommande['prixTTCNormalHorsPromo']);
$montantRemiseUnitaireHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['prixTTCNormalHorsPromo'] - $ligneCommande['tarif']));
// Calcul : (Montant de la remise*100)/prix initial.
$pourcentageRemiseUnitaire = Tbq_comptabilite::afficherFloat((Tbq_comptabilite::calculerHT($ligneCommande['prixTTCNormalHorsPromo'] - $ligneCommande['tarif']) * 100) / $ligneCommande['prixTTCNormalHorsPromo']);
else:
$montantLigneHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['tarif'], $ligneCommande['tauxTVA']));
$montantLigneTTC = Tbq_comptabilite::afficherFloat($ligneCommande['tarif']);
$pourcentageRemiseUnitaire = 0;
$montantRemiseUnitaireHT = 0;
endif;
$montantTotalLigneHT = Tbq_comptabilite::afficherFloat(Tbq_comptabilite::calculerHT($ligneCommande['tarif'], $ligneCommande['tauxTVA']) * $ligneCommande['quantite']);
$montantTotalLigneTTC = Tbq_comptabilite::afficherFloat($ligneCommande['tarif'] * $ligneCommande['quantite']);
endif;
$texteLigneCommande = $sep; // Ligne - Code ligne de document
$texteLigneCommande .= $ligneCommande['reference'].$sep; // Ligne - Code article
$texteLigneCommande .= str_replace(';', '-', $ligneCommande['titre_article']).$sep; // Ligne - Description
$texteLigneCommande .= $sep; // Ligne - Date de livraison
$texteLigneCommande .= $ligneCommande['quantite'].$sep; // Ligne - Quantité
$texteLigneCommande .= Tbq_comptabilite::afficherFloat($ligneCommande['tauxTVA']).$sep; // Ligne - Taux de TVA
$texteLigneCommande .= $sep; // Ligne - Code TVA
$texteLigneCommande .= '2'.$sep; // Ligne - Type de ligne
$texteLigneCommande .= $sep; // Ligne - Quantité (série/lot)
$texteLigneCommande .= $montantLigneHT.$sep; // Ligne - PV HT
$texteLigneCommande .= $montantLigneTTC.$sep; // Ligne - PV TTC
$texteLigneCommande .= $pourcentageRemiseUnitaire.$sep; // Ligne - % remise unitaire cumulé
$texteLigneCommande .= $montantRemiseUnitaireHT.$sep; // Ligne - Montant de remise unitaire HT cumulé
$texteLigneCommande .= $montantTotalLigneHT.$sep; // Ligne - Montant Net HT
$texteLigneCommande .= $montantTotalLigneTTC.$sep; // Ligne - Montant Net TTC
$texteLigneCommande .= $sep; // Ligne - Code commercial/collaborateur
$texteLigneCommande .= $sep; // Ligne - Codes des lignes de commandes
$texteLigneCommande .= $sep; // Ligne - Codes des commandes
$texteLigneCommande .= $sep; // Ligne - Quantités à livrer
// ligne totale
$texteComplet .= $texteCommande.$texteLigneCommande.$sepLignes;
endforeach;
/* 3IEME LIGNE = BLANCHE*/
$texteTroisiemeLigneCommande = $sep; // Ligne - Code ligne de document
$texteTroisiemeLigneCommande .= $sep; // Ligne - Code article
$texteTroisiemeLigneCommande .= $sep; // Ligne - Description
$texteTroisiemeLigneCommande .= $sep; // Ligne - Date de livraison
$texteTroisiemeLigneCommande .= $sep; // Ligne - Quantité
$texteTroisiemeLigneCommande .= $sep; // Ligne - Taux de TVA
$texteTroisiemeLigneCommande .= $sep; // Ligne - Code TVA
$texteTroisiemeLigneCommande .= '0'.$sep; // Ligne - Type de ligne
$texteTroisiemeLigneCommande .= $sep; // Ligne - Quantité (série/lot)
$texteTroisiemeLigneCommande .= $sep; // Ligne - PV HT
$texteTroisiemeLigneCommande .= $sep; // Ligne - PV TTC
$texteTroisiemeLigneCommande .= $sep; // Ligne - % remise unitaire cumulé
$texteTroisiemeLigneCommande .= $sep; // Ligne - Montant de remise unitaire HT cumulé
$texteTroisiemeLigneCommande .= $sep; // Ligne - Montant Net HT
$texteTroisiemeLigneCommande .= $sep; // Ligne - Montant Net TTC
$texteTroisiemeLigneCommande .= $sep; // Ligne - Code commercial/collaborateur
$texteTroisiemeLigneCommande .= $sep; // Ligne - Codes des lignes de commandes
$texteTroisiemeLigneCommande .= $sep; // Ligne - Codes des commandes
$texteTroisiemeLigneCommande .= $sep; // Ligne - Quantités à livrer
// 3ieme ligne totale
$texteComplet .= $texteCommande.$texteTroisiemeLigneCommande.$sepLignes;
/* 4IEME LIGNE = INFO LIVRAISON */
$texteQuatriemeLigneCommande = $sep; // Ligne - Code ligne de document
$texteQuatriemeLigneCommande .= $sep; // Ligne - Code article
$texteQuatriemeLigneCommande .= $ligne['typeLivraison'].' '.$nomLivraisonRelai.$sep; // Ligne - Description
$texteQuatriemeLigneCommande .= $sep; // Ligne - Date de livraison
$texteQuatriemeLigneCommande .= $sep; // Ligne - Quantité
$texteQuatriemeLigneCommande .= $sep; // Ligne - Taux de TVA
$texteQuatriemeLigneCommande .= $sep; // Ligne - Code TVA
$texteQuatriemeLigneCommande .= '4'.$sep; // Ligne - Type de ligne
$texteQuatriemeLigneCommande .= $sep; // Ligne - Quantité (série/lot)
$texteQuatriemeLigneCommande .= $sep; // Ligne - PV HT
$texteQuatriemeLigneCommande .= $sep; // Ligne - PV TTC
$texteQuatriemeLigneCommande .= $sep; // Ligne - % remise unitaire cumulé
$texteQuatriemeLigneCommande .= $sep; // Ligne - Montant de remise unitaire HT cumulé
$texteQuatriemeLigneCommande .= $sep; // Ligne - Montant Net HT
$texteQuatriemeLigneCommande .= $sep; // Ligne - Montant Net TTC
$texteQuatriemeLigneCommande .= $sep; // Ligne - Code commercial/collaborateur
$texteQuatriemeLigneCommande .= $sep; // Ligne - Codes des lignes de commandes
$texteQuatriemeLigneCommande .= $sep; // Ligne - Codes des commandes
$texteQuatriemeLigneCommande .= $sep; // Ligne - Quantités à livrer
// 1ère ligne totale
$texteComplet .= $texteCommande.$texteQuatriemeLigneCommande.$sepLignes;
$requete = "UPDATE boutique_obj_commande SET envoyeeEnCompta = 1 WHERE ID = '".$ligne['ID_commandeATraiter']."'";
T_LAETIS_site::requeter($requete);
$cptDocument++;
endforeach;
if($texteComplet):
// Formatage du nom de fichier
$nomFichier = 'exportEBP-'.date('Y-m-d-H-i-s');
// CREATION DU FICHIER TXT
//@unlink($_SERVER['DOCUMENT_ROOT'].self::REP_FICHIER_COMPTA_CLIENT.$nomFichier.".txt");
if ($fp = fopen($_SERVER['DOCUMENT_ROOT'].self::REP_FICHIER_COMPTA_FACTURE.$nomFichier.".txt", "w")):
fputs($fp, $texteComplet);
fclose($fp);
endif;
endif;
return $nomFichier.".txt";
} // FIN function genererFichierClient()
static function traiterDateCommande($mysqlDateHeure)
{
list($date, $heure) = explode(" ", $mysqlDateHeure);
list($year, $month, $day) = explode("-", $date);
return $day.'/'.$month.'/'.$year;
} // FIN function traiterDateCommande($mysqlDateHeure)
/**
* private
* Formate la date et l'heure de la commande
* @return string Date et heure de la commande affichées de façon + humaine
*/
static function calculerHT($montant, $tauxTVA=20)
{
return($montant/(($tauxTVA/100)+1));
} // FIN static function calculerHT($montant, $tauxTVA=20)
/**
* private
* Pour la présentation d'un chiffre float
* @param
* @return le chiffre bien affiché
*/
static function afficherFloat($chiffre)
{
return number_format($chiffre, 2, ',', ' ');
} // FIN function afficherFloat($chiffre)
}
?>
/**
* Gestion des factures de la boutique Laetis
*
* Permet de créer, modifier, supprimer des factures, en intéraction
* avec la base de données
*
* @author Christophe Raffy
* @version 1.0
* @access public
* @copyright Laëtis Créations Multimédias
* @date 2007-11-12
*/
class Tbq_facture
{
/**
* @var int $ID ID de l'element en base de donnée
* @access public
*/
public $ID;
/**
* @var int $ID_commande ID de la commande
* @access public
*/
public $ID_commande;
/**
* @var int $factureCode Code de la facture "F" pour facture normale, "A" pour avoir
* @access public
*/
public $factureCode;
/**
* @var int $factureNumero Numéro de la facture
* @access public
*/
public $factureNumero;
/**
* @var int $factureAvoirCorrespondant Numéro de la facture à laquelle est liée l'avoir
* @access public
*/
public $factureAvoirCorrespondant;
/**
* @var date $annee Année de la facture
* @access public
*/
public $annee;
/**
* @var datetime $date_facturation Date de la facturation
* @access public
*/
public $date_facturation;
/**
* @var int $envoyeeEnCompta La facture a été envoyée en compta
* @access public
*/
public $envoyeeEnCompta;
public $mois = array("01"=>"janvier", "02"=>"février", "03"=>"mars", "04"=>"avril", "05"=>"mai", "06"=>"juin",
"07"=>"juillet", "08"=>"août", "09"=>"septembre", "10"=>"octobre", "11"=>"novembre", "12"=>"décembre");
/**
* @const string REP_SAVE_FICHIERS_FACTURES Répertoire pour les factures
* @access public
*/
const REP_SAVE_FICHIERS_FACTURES = "/boutique/uploads/facture/";
/**
* @const string REP_SAVE_FICHIERS_BONS_LIVRAISON Répertoire pour les bons de livraison
* @access public
*/
const REP_SAVE_FICHIERS_BONS_LIVRAISON = "/boutique/uploads/bonLivraison/";
/**
* Constructeur
* Constructeur PHP5
*
* @param entier $ID Par défaut 0
* @author Christophe Raffy
*/
public function __construct($ID = 0)
{
$this->ID = $ID;
if($ID>0)
{
$requete = "SELECT * FROM boutique_obj_facture WHERE ID='".$this->ID."'";
$resultats = T_LAETIS_site::requeter($requete);
$this->initialiser($resultats[0]);
}
}
/**
* Initialisation de l'objet
* L'initialisation se fait a partir du tableau des attributs
*
* @author Christophe Raffy
*/
public function initialiser($enregistrement)
{
// Si on a donné un parametre, on instancie par rapport a la base
foreach ($enregistrement as $nomChamp => $valeur)
{
$this->$nomChamp = stripslashes($valeur);
}
return $this;
} // FIN function initialiser($enregistrement)
/**
* Destructeur
* @author Christophe Raffy
*/
public function __destruct ()
{}
/**
* Enregistre l'objet en BD
* Les attributs doivent être remplis
*
* @author Christophe Raffy
*/
public function enregistrer($valeurs)
{
T_LAETIS_site::modifierAttributs($valeurs);
$attributs = get_object_vars($this);
// on donne les champs a mettre a jour (meme syntaxe pour le UPDATE et le INSERT)
$contenuRequete = "";
$champsNonEnregistres = array('mois');
foreach ($attributs as $nom=>$valeur)
{
if ( !in_array( $nom, $champsNonEnregistres ) )
{
$valeur = "\"".addslashes($valeur)."\"";
$contenuRequete .= " ,".$nom."=".$valeur;
}
}
// on enlève l'espace et la virgule du début
$contenuRequete = substr($contenuRequete,2);
if ($this->ID>0)
{
// c'est un objet qui existe déjà en BD
$requete = "UPDATE boutique_obj_facture SET ";
$requete .= $contenuRequete." WHERE ID=".$this->ID;
$resSql = T_LAETIS_site::requeter($requete);
}
else
{
// c'est un objet qui n'existe pas en BD
$requete = "INSERT INTO boutique_obj_facture SET ";
$requete .= $contenuRequete;
T_LAETIS_site::requeter($requete);
$this->ID = T_LAETIS_site::last_insert_id();
}
return $this->ID;
} // FIN function enregistrer()
/**
* Liste les objets
* @return array Tableau de Tbq_facture
* @author Christophe Raffy
*/
public function lister()
{
$requete = "SELECT * FROM boutique_obj_facture ORDER BY ID ASC";
$resSql = T_LAETIS_site::requeter($requete);
foreach ($resSql as $ligne)
{
$resultats[] = new Tbq_gamme($ligne['ID']);
}
return ($resultats);
}
public function facturer($ID_commande, $afficher = 0)
{
$ID_facture = '';
$resultats = T_LAETIS_site::requeter("
SELECT ID
FROM boutique_obj_facture
WHERE ID_commande = ". addslashes( $ID_commande )."");
if(! $resultats[0]['ID']):
$numero = $this->getProchainNumeroFacture(date("Y"));
T_LAETIS_site::requeter("
INSERT INTO boutique_obj_facture
(ID_commande, factureCode, factureNumero, annee, date_facturation)
VALUES
(". addslashes( $ID_commande ).",
'FA',
". addslashes( $numero ).",
YEAR(CURDATE()),
NOW() )");
$ID_facture = T_LAETIS_site::last_insert_id();
endif;
return $ID_facture;
//$this->genererFacture($ID_commande, $afficher);
} // FIN function facturer()
/* Renvoie le numéro de facture libre à insérer */
public function getProchainNumeroFacture($annee)
{
$resultats = T_LAETIS_site::requeter("
SELECT
MAX(factureNumero)+1 AS numFacture
FROM
`boutique_obj_facture`
WHERE
boutique_obj_facture.annee = ". addslashes( $annee ) ."");
// A RETIRER
if(! $resultats[0]['numFacture']):
$resultats[0]['numFacture'] = 1;
endif;
return($resultats[0]['numFacture']);
} // FIN function getProchainNumeroFacture($annee)
public function afficherNumeroFacture($ID_commande)
{
$resultats = T_LAETIS_site::requeter("
SELECT
CONCAT(factureCode, annee, '-', factureNumero) AS numFacture
FROM `boutique_obj_facture`
WHERE
boutique_obj_facture.ID_commande = ". addslashes( $ID_commande ) ."
AND factureNumero != 0
");
return($resultats[0]['numFacture']);
} // FIN function afficherNumeroFacture($ID_commande)
public function getNumeroFactureSelonCommande($ID_commande)
{
$resultats = T_LAETIS_site::requeter("
SELECT factureNumero
FROM boutique_obj_facture
WHERE ID_commande = ". addslashes( $ID_commande )."");
return ($resultats[0]['factureNumero']);
} // FIN function getNumeroFactureSelonCommande($ID_commande)
function importerFactureEBP()
{
$contenu = array();
// ouverture du fichier
if($FILE = fopen($_SERVER['DOCUMENT_ROOT']."/boutique/admin/traitements/factures-ebp-TRAITE.csv", "r")):
$cpt = 0;
// lire ligne par ligne et coupe colonne par colonne
while($ligne = fgetcsv($FILE, 2024, ';')):
$contenu[$cpt]['numeroF'] = $ligne[0];
$contenu[$cpt]['date'] = $ligne[1];
$contenu[$cpt]['codeClient'] = $ligne[2];
$contenu[$cpt]['numeroC'] = $ligne[3];
$cpt++;
endwhile;
fclose($FILE);
else:
echo "ERREUR !! Impossible d'ouvrir ce fichier .CSV !!";
endif;
foreach($contenu as $c):
$c['numeroF'] = str_replace('FA2015', '', $c['numeroF']);
list($day, $month, $year) = explode("/", $c['date']);
$c['date'] = $year.'-'.$month.'-'.$day.' 00:00:00';
$requete = "INSERT INTO `boutique_obj_facture`
(ID_commande, factureCode, factureNumero, annee, date_facturation, envoyeeEnCompta)
VALUES
('".$c['numeroC']."', 'FA', '".$c['numeroF']."', '2015',
'".$c['date']."', '1')";
echo $requete.'
';
//T_LAETIS_site::requeter($requete);
endforeach;
} // FIN function importerCodeClientEBP()
}
?>