Prestashop : survivre sans prestataire

NOTE: Je ne développe plus ce module.

Cette semaine, j’ai eu peu de temps libre, j’avais commencé un générateur Cockcroft-Walton pour faire un ioniseur d’air et (tenter d’) enlever des mauvaises odeurs, mais mon fer a souder a lâché dans la foulée. La résistance chauffante s’est dessoudée, et évidemment je ne pourrai pas la ressouder à l’étain… je suis bêtement immobilisé! J’ai donc basculé en mode “soft”.

Prestashop, c’est le WordPress de l’e-commerce, LA référence des softs de boutiques en ligne. C’est LE logiciel à utiliser quand on veut une boutique professionnelle, belle, efficace… C’est bien entendu le soft que j’ai choisi pour mettre en place la boutique en ligne du site de musiques de mon épouse, en me disant que sa notoriété serait un avantage pour le support utilisateur.

Sauf que ce n’a pas été aussi simple…

WordPress, en tant que moteur open source de blogs, s’adresse à des organisations et à des personnes sans but lucratif. Pour se financer, WordPress.com fait payer des tarifs raisonnables en échange de services d’hébergement de blogs.

En revanche, Prestashop, c’est pour des sites commerciaux, qui sont donc censés gagner de l’argent… cela signifie deux choses très différentes: On suppose à priori que les utilisateurs de Prestashop

  • sont prêts à dépenser de l’argent pour acheter des modules;
  • vont faire appel à des prestataires techniques pour résoudre leurs problèmes. Le nom n’a pas été choisi par hasard…

Cela a deux conséquences:

  • On n’hésite pas à vous faire payer (et pas qu’un peu) pour des fonctionnalités triviales qui auraient pu être implémentées de base dans le code, mais ne l’ont délibérément pas été. Non, je ne peux pas croire que la vérification de l’email des clients soit une fonction optionnelle, et pourtant, vous devrez vous délester de plusieurs dizaines d’euros HT juste pour ça. En effet, dans une install par défaut, n’importe quel spambot a la possibilité s’inscrire et passer des commandes, même avec une adresse mail du genre trululu@zobi.pwet );
  • Le code a une structure tellement complexe qu’il faut plusieurs heures de plongée dans le code et dans la doc pour en sortir le moindre truc. Par rapport à WordPress en tout cas, la structure des fichiers est bien plus complexe.

Je refuse cet état de choses. J’ai donc décidé de passer le temps nécessaire à comprendre le code, et de proposer gratuitement les modules que j’aurai développé.

Je commence donc par un module permettant l’enregistrement d’une société, et ce de manière optionnelle, sans avoir à dépenser 49 euros hors taxes pour 20 lignes de code.

En effet, le dernier Prestashop 1.5.3 propose un mode B2B, mais cela ne me convient pas : tous nos clients ne seront pas des sociétés, la majorité seront des particuliers, sauf certains. Je ne veux donc pas voir des champs société,SIRET,APE,etc. s’afficher pour tout le monde.

La fonctionnalité a été présentée par Biniou Myers sur son blog, mais il fait ça ‘en dur’ dans son code, ce qui a plusieurs inconvénients, dont celui de se faire écraser à la prochaine mise à jour. Et puis il faut modifier les classes internes de Prestashop, c’est “sale”! mais ça a le mérite d’exister, et de faire ce que je veux! Je le remercie énormément d’avoir partagé l’info. Je suis donc reparti des exemples de codes postés là bas, pour en faire un module. J’y suis arrivé! Voici les fonctions obtenues:

  • Modifications empaquetées dans un module
  • Affichage optionnel de la demande de siret/nom de société
  • Choix d’un groupe “pro” dans l’admin
  • Affectation automatique des utilisateurs qui définissent les infos à ce groupe

Il ne restait qu’une seule chose à faire: afficher les infos saisies dans la zone d’admin. Alors on en revient au mode B2B, qui affiche ces informations, mais qui affiche aussi son formulaire à la noix.

je m’en suis sorti avecu un override du contrôleur AdminCustomersController.php, en définissant la variable qui va bien juste avant l’appel de la fonction qui affiche le formulaire, et en la rétablissant juste après:

Fichier /override/controllers/admin/AdminCustomersController.php:

<?php
class AdminCustomersController extends AdminCustomersControllerCore
{
    public function renderForm()
    {
        $save = Configuration::get('PS_B2B_ENABLE');
        Configuration::set('PS_B2B_ENABLE',true);
        $ret = parent::renderForm();
        Configuration::set('PS_B2B_ENABLE',$save);
        return $ret;
    }
}

Simple et efficace. Mais je n’en suis pas encore satisfait, il faudrait faire ça plus proprement pour que ça marche juste dans le module.

Un des derniers trucs à faire serait de permettre à l’utilisateur le changement des infos “sociétés”. Mais on verra plus tard.

Si vous voulez que je vous envoie le code, laissez moi un commentaire. Je vous l’enverrai immédiatement par email.

 

La prochaine fois, comment économiser 129 euros en faisant un plugin de vérification d’utilisateur par email…

UPDATE 24 oct 2013: en fait non, l’économie est à chiffrer en heures: je n’utiliserai plus prestashop.

Et voici SANS GARANTIE NI SUPPORT le code du module “groupe d’utilisateurs B2B” http://www.f4grx.net/wp-content/uploads/2013/10/progroup.zip