Back Office – Numéro de facture dans la liste des commandes
L’intégration du numéro de facture (facture Dans prestashop 8.1) directement dans la liste des commandes du back-office PrestaShop représente une avancée significative en termes de gestion et d’efficacité pour les commerçants en ligne. Cette fonctionnalité, souvent sous-estimée, offre une valeur ajoutée immense, permettant une recherche rapide et précise des commandes spécifiques à travers leur numéro de facture. En effet, dans un contexte où le volume des transactions peut être conséquent, pouvoir identifier une commande spécifique sans avoir à naviguer à travers plusieurs pages ou sans devoir effectuer une recherche avancée dans la base de données est un gain de temps non négligeable.
La mise en œuvre de cette fonctionnalité dans le module AddInvoiceColumn
illustre parfaitement comment une simple amélioration peut transformer l’expérience utilisateur dans le back-office. En fournissant un accès direct et immédiat aux numéros de facture depuis la liste principale des commandes, les gestionnaires de boutique peuvent non seulement accélérer leur workflow mais aussi améliorer l’exactitude de la gestion des commandes. Cela réduit les erreurs potentielles dans le traitement des commandes et améliore la satisfaction client en facilitant les suivis et les vérifications.
L’ajout d’une colonne de numéro de facture dans la liste des commandes du back-office PrestaShop est une petite modification avec un impact majeur. Elle symbolise l’évolution constante des outils de gestion en ligne vers plus d’efficacité et de praticité, répondant ainsi aux besoins croissants des commerçants dans un marché en perpétuelle évolution.
Evolution de PrestaShop vers la version 8.1
Avec l’évolution de PrestaShop vers la version 8.1, l’architecture et l’organisation des fichiers peuvent avoir changé par rapport aux versions précédentes. Si le fichier AdminOrdersController.php
n’est pas présent dans son emplacement habituel, il est possible que PrestaShop ait modifié la manière dont les contrôleurs du back-office sont gérés ou ait introduit une nouvelle logique pour étendre ou modifier les fonctionnalités du back-office via des mécanismes plus modernes, comme les services, les hooks, ou les extensions de Symfony.
Pour ajouter le numéro de facture dans la section des commandes du back-office dans PrestaShop 8.1, voici une approche mise à jour qui tient compte de l’évolution possible de la plateforme :
Utilisation de l’Extension Symfony et des Hooks
PrestaShop 8.1 utilise Symfony pour de nombreuses parties du back-office, ce qui signifie que vous pouvez utiliser les extensions Symfony et les hooks pour étendre ou modifier le comportement du back-office.
- Créer un Module pour Étendre le Back-Office:
- Créez un module PrestaShop qui écoute sur un hook lié à l’affichage des commandes dans le back-office. PrestaShop fournit plusieurs hooks qui peuvent être utilisés pour modifier l’affichage ou les données dans le back-office.
- Utiliser un Hook pour Ajouter une Colonne:
- Utilisez un hook comme
actionAdminControllerSetMedia
pour ajouter du JavaScript ou CSS personnalisé, oudisplayAdminListBefore
pour modifier le contenu affiché, tel que l’ajout d’une colonne au tableau des commandes. - Pour modifier les données affichées, comme ajouter un numéro de facture, vous pouvez rechercher un hook qui s’exécute lors de la préparation des données pour l’affichage des commandes. Le hook
actionOrderGridDefinitionModifier
peut être utilisé pour modifier la définition de la grille des commandes, y compris l’ajout de colonnes.
- Utilisez un hook comme
- Modifier la Définition de la Grille des Commandes:
- À l’intérieur de votre module, écoutez sur le hook approprié et utilisez-le pour ajouter une colonne à la grille des commandes. Vous aurez besoin de manipuler l’objet de définition de la grille pour ajouter votre colonne de numéro de facture.
- Récupérer et Afficher les Numéros de Factures:
- Assurez-vous que la logique pour récupérer les numéros de facture est en place. Cela peut impliquer la modification de la requête de la base de données utilisée pour récupérer les informations des commandes ou l’utilisation d’un service pour obtenir ces données.
- Tester Votre Module:
- Une fois votre module développé, testez-le soigneusement dans un environnement de développement pour vous assurer qu’il fonctionne comme prévu sans affecter les performances ou la sécurité du site.
Cette approche nécessite une compréhension solide du développement de modules pour PrestaShop, ainsi qu’une familiarité avec Symfony et les hooks de PrestaShop. Si vous n’êtes pas à l’aise avec ces technologies, il pourrait être préférable de consulter un développeur spécialisé dans PrestaShop pour vous aider.
En raison de l’évolution constante de PrestaShop et de ses pratiques de développement, je recommande également de consulter la documentation officielle de PrestaShop et les ressources de la communauté pour les guides les plus à jour et les meilleures pratiques pour développer avec PrestaShop 8.1.
Créer un module pour ajouter une colonne de numéro de facture dans la section des commandes du back-office de PrestaShop 8.1 nécessite plusieurs étapes, y compris la création de la structure du module, l’enregistrement du hook, et la modification de la grille des commandes. Voici un guide étape par étape pour créer un module de base qui réalise cette tâche :
Étape 1: Structure du Module
- Créer le Dossier du Module:
- Dans le dossier
modules
de votre installation PrestaShop, créez un nouveau dossier pour votre module, par exempleaddinvoicecolumn
.
- Dans le dossier
- Fichier Principal du Module (
addinvoicecolumn.php
):- Créez un fichier PHP nommé après le nom de votre module, ici
addinvoicecolumn.php
. Ce fichier contiendra la classe principale de votre module.
- Créez un fichier PHP nommé après le nom de votre module, ici
Étape 2: Classe Principale du Module
Dans addinvoicecolumn.php
, vous allez définir la classe de votre module. Voici un exemple de base :
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
use PrestaShop\PrestaShop\Core\Grid\Column\Type\DataColumn;
use PrestaShop\PrestaShop\Core\Grid\Definition\Factory\AbstractGridDefinitionFactory;
use PrestaShop\PrestaShop\Core\Grid\Action\Bulk\Type\SubmitBulkAction;
use PrestaShop\PrestaShop\Core\Grid\Action\Row\Type\LinkRowAction;
use PrestaShop\PrestaShop\Core\Grid\Definition\Factory\GridDefinitionFactoryInterface;
use PrestaShop\PrestaShop\Core\Grid\Filter\Filter;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use PrestaShop\PrestaShop\Core\Grid\Search\SearchCriteriaInterface;
use Doctrine\DBAL\Query\QueryBuilder;
class AddInvoiceColumn extends Module
{
public function __construct()
{
$this->name = 'addinvoicecolumn';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'Cphilippe.com';
$this->need_instance = 0;
$this->ps_versions_compliancy = ['min' => '1.7', 'max' => _PS_VERSION_];
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Ajouter Colonne Numéro de Facture');
$this->description = $this->l('Ajoute une colonne de numéro de facture dans la liste des commandes et permet la recherche par ce numéro.');
$this->confirmUninstall = $this->l('Êtes-vous sûr de vouloir désinstaller?');
}
public function install()
{
return parent::install() &&
$this->registerHook('actionOrderGridDefinitionModifier') &&
$this->registerHook('actionOrderGridQueryBuilderModifier');
}
public function uninstall()
{
return parent::uninstall();
}
public function hookActionOrderGridDefinitionModifier(array $params)
{
/** @var GridDefinitionFactoryInterface $definition */
$definition = $params['definition'];
$definition->getColumns()->addAfter(
'id_order',
(new DataColumn('invoice_number'))
->setName($this->l('Invoice Number'))
->setOptions([
'field' => 'invoice_number',
])
);
$definition->getFilters()->add(
(new Filter('invoice_number', TextType::class))
->setTypeOptions([
'required' => false,
])
->setAssociatedColumn('invoice_number')
);
}
public function hookActionOrderGridQueryBuilderModifier(array $params)
{
/** @var \Doctrine\DBAL\Query\QueryBuilder $searchQueryBuilder */
$searchQueryBuilder = $params['search_query_builder'];
/** @var \PrestaShop\PrestaShop\Core\Search\Filters\OrderFilters $searchCriteria */
$searchCriteria = $params['search_criteria'];
if (!empty($searchCriteria->getFilters()['invoice_number'])) {
$invoiceNumber = $searchCriteria->getFilters()['invoice_number'];
$searchQueryBuilder->andWhere('o.`invoice_number` LIKE :invoice_number');
$searchQueryBuilder->setParameter('invoice_number', '%' . $invoiceNumber . '%');
}
}
}
Étape 3: Installer le Module
- Zippez le Dossier du Module:
- Compressez le dossier
addinvoicecolumn
en un fichier.zip
.
- Compressez le dossier
- Installer via le Back-Office:
- Allez dans le back-office de PrestaShop, naviguez vers « Modules » > « Module Manager », et cliquez sur « Upload a Module ». Sélectionnez le fichier
.zip
de votre module et installez-le.
- Allez dans le back-office de PrestaShop, naviguez vers « Modules » > « Module Manager », et cliquez sur « Upload a Module ». Sélectionnez le fichier
Étape 4: Activer le Module
- Une fois installé, le module devra être activé. Vous pouvez le faire depuis le « Module Manager » en trouvant votre module dans la liste et en cliquant sur « Activer ».
Note Importante
- Ce code est un exemple de base pour démarrer. La récupération et l’affichage des numéros de factures réels nécessiteront des ajustements supplémentaires, notamment pour s’assurer que les données de numéro de facture sont correctement récupérées et disponibles pour être affichées dans la grille des commandes.
- Assurez-vous de tester le module dans un environnement de développement avant de le déployer en production.
Cet exemple ne couvre pas tous les aspects de la création d’un module PrestaShop, comme l’interaction avec la base de données ou la personnalisation avancée de l’interface utilisateur. Pour des fonctionnalités plus complexes, je vous recommande de consulter la documentation officielle de PrestaShop et de vous familiariser avec le développement de modules pour PrestaShop.
Ajoute une colonne de numéro de facture dans la liste des commandes et permet la recherche par ce numéro.