Fork me on GitHub

Rapport de message :*
 

Hack Oledrion pour un meilleur suivi des commandes

Titre du sujet : Hack Oledrion pour un meilleur suivi des commandes
par jeankrikri sur 21/05/2010 14:19:50

Bonjour,

nous avons réalisé une petite modification dans Oledrion afin de mieux suivre les commandes payées par chèque (c'est à dire non réglées en ligne).
En effet, d'une part, le module ne gardait pas de trace en base de données de l'information sur les paiements. D'autre part, il n'y avait pas la trace de la date de validation de la commande.

Les modifs suivantes ont donc été réalisées (sur une version 2.31 d'Oledrion)

Ajout de deux champs dans les tables d'Oledrion

- un pour garder en mémoire le type de paiement utilisé (en ligne ou par chèque). En effet, cette information recueillie lors de la commande
n'est pas enregistré alors qu'il pourrait être utile de l'avoir pour les statistiques pour la suite ou pour savoir si une commande en attente été payée par chèque
- un pour stocker la date de validation de la commande. Toujours dans le cas où le payement n’est pas effectué directement en ligne.

Ces deux nouvelles informations sont visibles lorsque l'on liste les commandes dans la partie administration du module.


1 - Ajout des champs dans la requête de construction

Dans sql\mysql.sql, ajout de deux champs dans la table oledrion_commands

ligne 137
'cmd_date_validation' date NOT NULL,
'cmd_paiement_mode' tinyint(1) unsigned NOT NULL,

2 - Ajout des champs dans la classe commande

Dans class\oledrion_commands.php
Lignes 66-67
$this->initVar('cmd_date_validation',XOBJ_DTYPE_TXTBOX,null,false);
$this->initVar('cmd_paiement_mode',XOBJ_DTYPE_INT,null,false);

On renseigne le champs cmd_date_validation lors de la validation

Ligne 248
function validateOrder(oledrion_commands $order, $comment = '')
{
$retval = false;
$order->setVar('cmd_state', OLEDRION_STATE_VALIDATED);
$order->setVar('cmd_comment', $comment);



$order->setVar('cmd_date_validation', date("Y-m-d"));

$retval = $this->insert($order, true);
if($retval) {
$this->updateStocks($order);
$this->notifyOrderValidated($order, $comment);
}
return $retval;
}


3 - Sauvegarde des informations de ces deux champs

checkout.php - ligne 163
if (intval($_POST['offline_payment']) == 0) {
$commande->setVar('cmd_paiement_mode', '1');}



4 - Modification de l'administration

Dans admin\actions\orders.php
On rappatrie les deux champs supplémentaires de la base de données pour pouvoir les afficher
Ligne 90
$date_validation = formatTimestamp(strtotime($item->getVar('cmd_date_validation')), 's');
if ($date_validation=='01/01/1970'){$date_validation="-";}
$paiement_mode = $item->getVar('cmd_paiement_mode');
if ($paiement_mode == 0){$paiement_mode="En ligne";} else {$paiement_mode="Chèque";}



On modifie l'affichage du tableau

Ligne 82 - les entêtes
echo "<tr><th align='center'>"._AM_OLEDRION_ID."</th><th align='center'>"._AM_OLEDRION_DATE."</th><th
align='center'>"._AM_OLEDRION_DATE_VALIDATION."</th><th align='center'>"._AM_OLEDRION_PAIEMENT_MODE."</th><th
align='center'>"._AM_OLEDRION_CLIENT."</th><th align='center'>"._AM_OLEDRION_TOTAL_SHIPP."</th><th
align='center'>"._AM_OLEDRION_ACTION."</th></tr>";

Ligne 96 - les données

echo "<td align='right'>".$id."</td><td align='center'>".$date."</td><td align='center'>".$date_validation."</td><td
align='center'>".$paiement_mode."</td><td align='center'>".$item->getVar('cmd_lastname').' '.$item->getVar('cmd_firstname')."</td><td
align='center'>".$oledrion_Currency->amountForDisplay($item->getVar('cmd_total', 'n')).' /
'.$oledrion_Currency->amountForDisplay($item->getVar('cmd_shipping'))."</td><td align='center'>".implode(' ', $actions)."</td>\n";


5 - On met à jour le fichier langage admin.php

define('_AM_OLEDRION_PAIEMENT_MODE', "Paiement");
define('_AM_OLEDRION_DATE_VALIDATION', "Date validation");
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

82 Personne(s) en ligne (50 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 82 | Plus ...