Le numéro de commande de PrestaShop est généré une fois le paiement finalisé. Par conséquent, lorsque Prestashop appelle la plateforme de paiement, le numéro de commande n’existe pas. Seul le numéro de panier est généré et envoyé à la plateforme de paiement.
Dans le Back Office Marchand, le numéro de commande enregistré correspond donc au numéro de panier de Prestashop.
Ainsi, il est normal de ne pas retrouver le numéro de commande dans les e-mails de confirmation de paiement envoyé par Systempay. Seul le numéro de panier apparaît.
Modification du code de Prestashop :
Nous vous proposons une modification du code Prestashop pour afficher le numéro de panier dans le tableau de commande de Prestashop.
Pour les versions antérieures à Prestashop 1.7.7.0
Ouvrez le fichier suivant : AdminOrdersController.php (répertoire controllers /admin)
Après le code suivant (environ à la ligne 82):
$this->fields_list = array ( 'id_order' => array( 'title' => $this->trans('ID', array(), 'Admin.Global'), 'align' => 'text-center', 'class' => 'fixed-width-xs' ),
Ajoutez le code suivant:
'id_cart' => array( 'title' => $this->l('Panier'), 'align' => 'center', 'width' => 25),
L'ajout de ce code permettra de faire afficher une colonne Panier entre les colonnes ID et Référence.
Pour les versions supérieures ou égale à Prestashop 1.7.7.0
Ouvrez le fichier suivant : OrderGridDefinitionFactory.php (répertoire src / Core / Grid / Definition / Factory)
Après le code suivant (environ à la ligne 188):
->add((new IdentifierColumn('id_order')) ->setName($this->trans('ID', [], 'Admin.Global')) ->setOptions([ 'identifier_field' => 'id_order', 'preview' => $previewColumn, 'clickable' => false, ]) )
Ajoutez le code suivant:
->add((new IdentifierColumn('id_cart')) ->setName($this->trans('ID Panier', [], 'Admin.Global')) ->setOptions([ 'identifier_field' => 'id_cart', 'preview' => $previewColumn, 'clickable' => false, ]) )
Après le code suivant (environ à la ligne 321):
->add((new Filter('id_order', TextType::class)) ->setTypeOptions([ 'required' => false, 'attr' => [ 'placeholder' => $this->trans('Search ID', [], 'Admin.Actions'), ], ]) ->setAssociatedColumn('id_order') )
Ajoutez le code suivant:
->add((new Filter('id_cart', TextType::class)) ->setTypeOptions([ 'required' => false, 'attr' => [ 'placeholder' => $this->trans('Recherche ID panier', [], 'Admin.Actions'), ], ]) ->setAssociatedColumn('id_cart') )
Ouvrez le fichier suivant : OrderQueryBuilder.php (répertoire src / Core / Grid / Query)
Remplacez le code suivant (environ à la ligne 92):
->addSelect('o.id_order, o.reference, o.total_paid_tax_incl, os.paid, osl.name AS osname')
Par:
->addSelect('o.id_order, o.id_cart, o.reference, o.total_paid_tax_incl, os.paid, osl.name AS osname')
Après le code suivant (environ à la ligne 165):
'id_order' => 'o.id_order',
Ajoutez le code suivant:
'id_cart' => 'o.id_cart',
Après le code suivant (environ à la ligne 300):
'id_order' => 'o.id_order',
Ajoutez le code suivant:
'id_cart' => 'o.id_cart',
L'ajout de ce code permettra de faire afficher une colonne Panier entre les colonnes ID et Référence. Un champ de recherche et le tri par numéro de panier seront également disponibles.
email courriel