est ce que ceci peut t'aider ?
Je m'aperçois qu'à l'installation du plug-in, les modifications de code, et surtout la création de variables Thelia ne sont pas répercutées sur le back-office.
Par contre, elles le sont après desactivation/activation du plug-in.
Au jour d'aujourd'hui, voila ce que j'ai fait :
<?php
include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Client.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Commande.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Variable.class.php");
define('RP_VERSION', '1.0.0');
class Referencesperso extends PluginsClassiques
{
function Referencesperso()
{
parent::PluginsClassiques("referencesperso");
}
function init()
{
$this->ajout_desc(
"referencesperso",
"Plugin Références Perso",
"Ce plugin permet de générer vos propres références de client, de commande et de livraisons.",
1);
$this->create_variable('prochain_numero_facture', 1000, 0);
$this->create_variable('prochain_numero_commande', 1000, 0);
}
function destroy()
{
$this->delete_variable('prochain_numero_facture');
$this->delete_variable('prochain_numero_commande');
}
public function aprescommande($commande)
{
$ref = $this->generer_numero_commande($commande);
if ($ref != $commande->ref)
{
$commande->ref = $ref;
$liv = $this->generer_numero_livraison($commande);
$commande->livraison = $liv;
$commande->maj();
}
}
public function apresclient($client)
{
$ref = $this->generer_numero_client($client);
if ($ref != $client->ref)
{
$client->ref = $ref;
$client->maj();
}
}
function statut($commande)
{
$ref = $this->generer_numero_facture($commande);
if ($ref != $commande->facture)
{
$commande->facture = $ref;
$commande->maj();
}
}
// -- Fonctions spécifiques ------------------------------------------------
private function generer_numero_facture($commande)
{
// Récupérer le numéro de facture
$num = intval($this->get_variable('prochain_numero_facture'));
// Incrémenter le numéro de facture
$this->set_variable('prochain_numero_facture', $num + 1);
// Gérer la référence de notre facture
return 'F-' . sprintf('%04d', $num);
}
private function generer_numero_commande($commande)
{
// Récupérer le numéro de commande
$num = intval($this->get_variable('prochain_numero_commande'));
// Incrémenter le numéro de commande
$this->set_variable('prochain_numero_commande', $num + 1);
// Gérer la référence de notre commande
return 'C-' . sprintf('%04d', $num);
}
private function generer_numero_livraison($commande)
{
return $commande->livraison;
}
private function generer_numero_client($client)
{
return $client->ref;
}
// -- Outils ---------------------------------------------------------------
public function get_variable($nom)
{
$var = new Variable();
if ($var->charger($nom))
{
return $var->valeur;
}
return false;
}
protected function set_variable($nom, $valeur)
{
$variable = new Variable();
if ($variable->charger($nom))
{
$variable->valeur = $valeur;
$variable->maj();
}
}
protected function create_variable($nom, $valeur, $cache = 1)
{
$variable = new Variable();
$variable->nom = $nom;
$variable->valeur = $valeur;
$variable->protege = 1;
$variable->cache = $cache;
$variable->add();
}
protected function delete_variable($nom)
{
$variable = new Variable();
if ($variable->charger($nom)) $variable->delete();
}
}
?>
Les 2 variables sont visibles dans le BO, j'y ai entré en valeur "590" pour chacune.
Ca fonctionne très bien pour le numéro de commande !
j'ai en numero : C-590, C-591, C-592 ...
Par contre, pour le numero de facture, toutes les factures sortent sous le numero 1000
La valeur entrée dans le BO n'est pas pris en compte, le "F-" non plus et le "1000" entré dans le fichier PHP n'est pas incrémenté.
Pourtant niveau code dans la class Referencesperso, prochain_numero_facture et prochain_numero_commande semblent devoir fonctionner exactement de la même façon.
une piste ?
Last edited by ChDUP (02-06-2012 14:20:56)