Voici un tutoriel rapide sur la procédure pour rajouter un nouvelle colonne d’information dans la grille admin des commandes.
Dans notre hypothèse je pars sur l’hypothèse qu’on souhaite que la colonne soit physiquement présente dans la table sales_order_grid de la base de données.
Et pour l’exemple nous allons rendre disponible le coupon de réduction utilisé sur la commande.
Celui-ci est initialement stocké dans la colonne coupon_code dans la table sales_order
Pour cela on va créer un module Hhennes_OrderAdminGrid (le lien vers le code sur github est disponible en fin d’article)
Ajout de la colonne dans la table sales_order_grid
Pour cela nous pouvons mettre le code suivant dans le fichier etc/db_schema.xml de notre module
Ajout de colonne dans la vue admin
Pour cela nous pouvons mettre le code suivant dans le fichier view/adminhtml/ui_component/sales_order_grid.xml
<?xml version="1.0"?> <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <columns name="sales_order_columns"> <column name="coupon_code"> <settings> <label translate="true">coupon code</label> <filter>text</filter> <sorting>asc</sorting> <visible>true</visible> </settings> </column> </columns> </listing> |
Gestion de la copie de la données vers la table sales_order_grid
Pour cela il est nécessaire dans le fichier di.xml de rajouter un paramètre avec le nom de notre colonne ainsi que sa table source sur la classe virtuelle Magento\Sales\Model\ResourceModel\Order\Grid »
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <!-- Add customer_note column to sales_order_grid --> <virtualType name="Magento\Sales\Model\ResourceModel\Order\Grid" type="Magento\Sales\Model\ResourceModel\Grid"> <arguments> <argument name="columns"> <item name="coupon_code" xsi:type="string">sales_order.coupon_code</item> </argument> </arguments> </virtualType> </config> |

Et voila la logique est relativement simple à mettre en place et la colonne est bien visible et remplie. 🙂
Vous pouvez retrouver le code complet du module sur github ici : https://github.com/nenes25/magento2_samplemodules/tree/master/Hhennes/OrderAdminGrid