Magento 2 - Quelle est la bonne façon de changer l'ID de commande par défaut?

29

Magento 2. Après une nouvelle installation, le nouvel ID de commande sera 100000001, 100000002 et ainsi de suite.

Quelle est la bonne façon de changer cet identifiant d'incrémentation pour qu'il soit plus élevé? Par exemple, 155555552, 155555553 et ainsi de suite. Une fois changé, il sera beaucoup mieux.

Dans Magento 1.9 Pour modifier l'ID par défaut des commandes, des factures ou des expéditions, nous avons simplement dû modifier les valeurs de la base de données dans "eav_entity_store".

Magento 2 a l'air si différent ...

Je sais qu'il existe des plugins qui proposent de le faire, mais je veux savoir comment le faire manuellement.

marque
la source
Veuillez consulter ma question ici: magento.stackexchange.com/questions/279454/… ShipWorks (et d'autres) peut ne pas utiliser increment_idcomme il est censé le faire.
Chris K

Réponses:

31
  1. Ouvrez votre base de données PHP Admin (j'ai testé sur php 7)
  2. Recherchez et cliquez sur la table appelée: sequence_order_1 (elle se trouve dans la base de données elle-même et non dans le schéma d'information)
  3. Cliquez sur l'onglet "Opérations" et sous "AUTO_INCREMENT" modifiez le numéro de commande souhaité.
marque
la source
J'ai mis le numéro 100500400 dans le champ AUTO_INCREMENT, cliquez sur "Continuer". J'ai ensuite fait un test d'achat mais les identifiants de commande sont toujours 000000013, 00000014 ...
Luis Garcia
1
j'ai trouvé sequence_order_1 et dans l'onglet opération il y a Auto_increment la valeur est 5, alors quelle est la valeur correcte?
Ahmad Darwish
1) sauvegardez votre base de données avant d'apporter des modifications. 2) au lieu de 5, vous définissez la valeur souhaitée pour votre identifiant de commande, par exemple 1035327500. Votre prochaine commande doit être 1035327501
Mark
de quelle version de magento parlons-nous?
Felix
@Felix C'est pour Magento 2
Kishan Patadia
25

Accédez à votre base de données depuis phpmyadmin,

Ici, _1 est utilisé pour l'ID de magasin après le nom de la table.

Default Frontend store id is 1.si vous avez plusieurs magasins, vous devez définir une requête pour chaque magasin avec un nom de table comme sequence_order_2 jusqu'à sequence_order _. *

Entrez la requête ci-dessous pour la table sequence_order_1 utilisée pour le magasin par défaut. Si vous avez plusieurs magasins, vous devez définir le nom de la table selon l'ID du magasin dans la requête ci-dessous.

Ceci n'est utilisé que pour les commandes passées depuis le frontend.

sequence_order_1 est utilisé pour la gestion des identifiants de commande dans magento 2.

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

Le prochain identifiant de commande commence à 155555551.

La requête ci-dessous est définie pour FACTURE , si vous souhaitez modifier l'ID de facture

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

Pour expédition ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;

Rakesh Jesadiya
la source
Cela ne fonctionne pas pour moi. Après avoir fait quelques achats tests, les identifiants de commande sont toujours 000000013, 00000014 ...
Luis Garcia
excellente réponse!
huzefam
pourriez-vous indiquer la version de magento pour laquelle cela est correct?
Felix
comment changer le premier chiffre du nouvel identifiant de commande
Tirth Patel
16

Ce qui était auparavant dans eav_entity_storeest maintenant couvert dans sales_sequence_profileet sales_sequence_meta. Le tableau sequence_order_1est rempli lorsque les commandes sont passées.

Kristof chez Fooman
la source
Pourriez-vous indiquer approximativement les numéros de version de magento pour lesquels cela est vrai et fonctionne?
Felix
Je n'ai rencontré aucun changement de comportement à ce sujet, je pense que cela s'applique de la version 2.0.0 à la version actuelle 2.2.1
Kristof at Fooman
Toujours le même sur 2.2.4, je viens de le tester.
Frank Groot
7

Le format du nouvel identifiant de commande est défini par défaut par une constante dans

Magento \ SalesSequence \ Model \ Sequence:

const DEFAULT_PATTERN = "% s% '. 09d% s";

C'est le modèle de la fonction sprintf () qui crée un nouvel identifiant. Pour supprimer les zéros non significatifs, vous devez passer votre modèle au constructeur comme ceci:

<type name="Magento\SalesSequence\Model\Sequence">
    <arguments>
        <argument name="pattern" xsi:type="string">%s%s%s</argument>
    </arguments>
</type>

ou étendez la classe Sequence et modifiez-la selon vos besoins

mon nom d'affichage
la source
6

Bien que toutes les réponses ci-dessus soient correctes entièrement / partiellement, j'ai pensé à écrire la réponse car cela serait utile pour les futurs lecteurs. Cette réponse répondra à deux questions:

1) Comment changer le numéro de séquence de la commande?

2) Comment ajouter un préfixe ou un suffixe à un numéro de commande?

Avant d'apporter des modifications aveugles dans la base de données, vous devez comprendre quelle table de séquence est associée à quoi. Vous pouvez vérifier cela à partir du tableausales_sequence_meta

Exécutez la requête select * from sales_sequence_meta;chaque magasin aura une table de séquence associée à ce magasin. Notez le nom du tableau, à savoir: commande, facture, crédit ou expédition.

Une fois cela fait, allez dans le tableau par exemple si vous souhaitez modifier le numéro de commande goto table sequence_order_1et changer la AUTO_INCREMENTvaleur

alter table sequence_order_1 AUTO_INCREMENT=617;

C'est tout ce qu'il faut pour sauter la séquence des ordres.

Maintenant, en allant plus loin si vous creusez plus et avez une exigence où vous souhaitez ajouter un préfixe / suffixe à l'ordre, suivez les étapes ci-dessous:

Aller au tableau sales_sequence_profileet vérifier les données

select * from sales_sequence_profile;

Vous observerez la colonne prefixet le «suffixe». Au départ, ce serait NULL. Vous pouvez y ajouter la valeur du préfixe et du suffixe pour la pertinence meta_idque vous pouvez mapper à partir du tableausales_sequence_meta

Cela changera le préfixe / suffixe de la commande pour toutes les commandes.

J'espère que cela aide tout le monde !! À votre santé !!

Dexter
la source
4

Nouvelle installation:
si vous utilisez Magento 2.2.0+ et que vous exécutez une nouvelle installation avec le multi-magasin activé (ceci est activé par défaut), vous pouvez simplement exécuter les requêtes suivantes avant de passer des commandes sur le site:

ALTER TABLE `sequence_creditmemo_0` AUTO_INCREMENT=303;
ALTER TABLE `sequence_creditmemo_1` AUTO_INCREMENT=303;
ALTER TABLE `sequence_invoice_0` AUTO_INCREMENT=303;
ALTER TABLE `sequence_invoice_1` AUTO_INCREMENT=303;
ALTER TABLE `sequence_order_0` AUTO_INCREMENT=303;
ALTER TABLE `sequence_order_1` AUTO_INCREMENT=303;
ALTER TABLE `sequence_shipment_0` AUTO_INCREMENT=303;
ALTER TABLE `sequence_shipment_1` AUTO_INCREMENT=303;

Veuillez noter que ce 303n'est que le numéro que je choisis pour notre site car notre ancienne plate-forme s'est arrêtée au numéro de commande 300 et je voulais une sorte de cohérence. Notez également que vous n'avez besoin d'aucune des requêtes se terminant par _1si vous avez activé le mode de stockage unique.

Installation existante:
si vous utilisez déjà Magento 2.2.0+ (ou mis à niveau vers celui-ci) et que vous souhaitez simplement augmenter les chiffres, ne pas modifier le remplissage ou ajouter des caractères, vérifiez simplement la valeur AUTO_INCREMENT actuelle dans les tableaux suivants (en supposant plusieurs sites) ):

  • sequence_creditmemo_0
  • sequence_creditmemo_1
  • sequence_invoice_0
  • sequence_invoice_1
  • sequence_order_0
  • sequence_order_1
  • sequence_shipment_0
  • sequence_shipment_1

Et modifiez-les en utilisant les requêtes alter indiquées ci-dessus mais assurez-vous que la nouvelle valeur que vous utilisez est supérieure à la valeur que vous obtenez en vérifiant la valeur AUTO_INCREMENT actuelle.

Si vous allez jouer avec le rembourrage ou ajouter un modèle personnalisé, vous devez voir les autres réponses ici et consulter les tableaux suivants:

  • sales_sequence_meta
  • sales_sequence_profile

Mise à jour: magasins multiples?
Pour ceux qui ne connaissent pas les magasins multiples, il s'agit d'une fonctionnalité qui vous permet d'exécuter des magasins complètement distincts à partir de la même installation Magento. Une raison courante de le faire est de prendre en charge d'autres langues. Dans le back-end, c'est pourquoi vous pouvez choisir la vue de magasin que vous regardez (si le multi-magasin est activé) lors de la mise à jour de la configuration et en faisant d'autres choses par exemple.

Pour cette raison, Magento ajoutera un trait de soulignement et un numéro à la fin de certains tableaux pour garder une trace des différentes vues du magasin. Vous remarquerez que les requêtes que j'ai fournies semblent être des tables en double, mais elles se terminent par des nombres différents, 0 ou 1 dans ce cas. Si vous aviez plusieurs magasins / vues, ces nombres continueraient simplement à augmenter, _2 ou _3 par exemple. Cela vous permet de gérer différemment les identifiants de chaque magasin. Votre modification du système d'identification dans une vue (magasin) ne doit pas nécessairement être la même dans une autre.

Il est hors de portée pour cet article, mais ce même système de numérotation s'applique aux autres tables de la base de données, ce qui vous permet de traiter et d'affecter chaque vue de magasin différemment. Vous pourriez avoir un thème complètement différent par magasin par exemple.

Blizzardengle
la source
Pourquoi continuez-vous de parler des magasins multiples? Qu'est-ce qui serait différent si le mode magasin unique était activé?
Condor
1
J'ai répondu que c'était le message: "... notez que vous n'avez besoin d'aucune des requêtes se terminant par _1 si vous avez activé le mode magasin unique." Notez que les requêtes que j'ai fournies appellent ce qui ressemble à des tables en double sauf que la fin a un nombre, 0 ou 1 dans ce cas. Si vous désactivez le multi-magasin, vous ne voyez que _0 rien avec _1 ou _2 ou _3 et ainsi de suite. J'ai ajouté une mise à jour pour clarifier cela.
Blizzardengle
2

Changer la séquence Pour changer le remplissage du numéro de commande, éditez Sequence.php (je crois qu'il y a une meilleure façon via un di.xml)

vendor/magento/module-sales-sequence/Model/Sequence.php

Modifier cette ligne

const DEFAULT_PATTERN  = "%s%'.09d%s";

Remplacez le "9" par le rembourrage souhaité

Exemple

const DEFAULT_PATTERN  = "%s%'.05d%s";

Changer le préfixe

In admin > Stores > Sales > Order Number > 
Enter Desired prefix

Pour que tout reste facile, ajoutez Fooman au même numéro de facture de commande

Darren Sutherland
la source
1
C'est une mauvaise idée de modifier le motif de remplissage dans les fichiers de base, vous devez utiliser la méthode 'mon nom d'affichage pour modifier le motif de remplissage.
Timon de Groot
1
De quel magento s'agit-il? (admin> Boutiques> Ventes> Numéro de commande) J'utilise MAG 2.2.2 mais l'ordre des menus semble avoir changé.
Mohammed Joraid
1

Modifier l'ID d'incrément de commande

  1. Ouvrez votre administrateur PHP
  2. Recherchez et cliquez sur le tableau intitulé: sequence_order_1
  3. Cliquez sur l'onglet "Opérations" et sous "AUTO_INCREMENT" modifiez le numéro de commande souhaité.

Pour un autre magasin, suivez la même étape

  1. Recherchez et cliquez sur le tableau intitulé: sequence_order_2
  2. Cliquez sur l'onglet "Opérations" et sous "AUTO_INCREMENT" modifiez le numéro de commande souhaité.

Cela changera le numéro de commande pour les plusieurs magasins

Divya
la source
0

Pour ajuster les numéros de facture via PHPMYADMIN

INSÉRER DANS sequence_order_1( sequence_value) VALEURS ('2000');

2000 sera le nouveau numéro de départ

Darren Sutherland
la source
0

Vous pouvez apporter des modifications au numéro de commande directement dans la base de données Magento 2 par cette astuce

Tout d'abord, vous devez ouvrir votre base de données PHP Admin. Recherchez et ouvrez ensuite la table «sales_sequence_profile».

Après cela, vous pouvez modifier le numéro de commande par défaut sur votre site Web Magento 2:

une. ID d'incrément d'ordre de modification

b. Modifier le préfixe du numéro de commande

c. Modifier le suffixe du numéro de commande

ré. Changer la valeur de départ du numéro de commande

e. Changer la longueur du tampon

Je vois le tutoriel complet dans cet article: Guide complet du tutoriel pour changer le numéro de commande dans Magento 2

Jameslj
la source
Le nom de la table est incorrect. ce devrait être "sales_sequence_profile"
Dennis van Schaik
0

Pour supprimer définitivement (ou modifier) ​​les zéros supplémentaires, vous ne devez pas remplacer les fichiers principaux. Dans votre, app/etc/di.xmlajoutez ce qui suit et modifiez la "%s%'.09d%s"valeur en conséquence (dans cet exemple, deux 00 sont remplis):

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Framework\DB\Sequence\SequenceInterface">
        <arguments>
            <argument name="pattern" xsi:type="string">%s%'.02d%s</argument>
        </arguments>
    </type>
</config>

Les modifications de la base de données pour les numéros de commande et de facture sont parfaitement décrites dans la réponse de Rakesh Jesadiya.

TheFrakes
la source