Magento 2 - Qual è il modo corretto per modificare l'ID ordine predefinito?


29

Magento 2. Dopo la nuova installazione, il nuovo ID ordine sarà 100000001, 100000002 e così via.

Qual è il modo corretto di modificare quell'ID di incremento in modo che sia un numero più alto? Ad esempio 155555552, 155555553 e così via. Quando viene modificato, sembrerà molto meglio.

In Magento 1.9 Per modificare l'id predefinito per ordini, fattura o spedizione abbiamo semplicemente dovuto modificare i valori nel database in "eav_entity_store".

Magento 2 sembra così diverso ...

So che ci sono alcuni plugin che offrono di fare questo, ma voglio sapere come farlo manualmente.


Si prega di consultare la mia domanda qui: magento.stackexchange.com/questions/279454/… ShipWorks (e altri) potrebbero non utilizzare increment_idcome dovrebbero.
Chris K,

Risposte:


31
  1. Apri il tuo database di amministrazione PHP (ho testato su php 7)
  2. Trova e fai clic sulla tabella denominata: sequence_order_1 (si trova nel database stesso, non nello information_schema)
  3. Fai clic sulla scheda "Operazioni" e sotto "AUTO_INCREMENT" modifica il numero d'ordine desiderato.

Ho inserito il numero 100500400 nel campo AUTO_INCREMENT, fare clic su "Continua". Poi ho fatto un acquisto di prova ma gli ID dell'ordine sono ancora 000000013, 00000014 ...
Luis Garcia

1
ho trovato sequence_order_1 e nella scheda operativa c'è Auto_increment il valore è 5, quindi qual è il valore corretto?
Ahmad Darwish,

1) eseguire il backup del database prima di apportare eventuali modifiche. 2) invece di 5 imposti il ​​valore desiderato per il tuo ID ordine, ad esempio 1035327500. Il tuo prossimo ordine dovrebbe essere 1035327501
Segna il

di quale versione di Magento stiamo parlando?
Felix,

@Felix È per Magento 2
Kishan Patadia il

25

Vai al tuo database da phpmyadmin,

Qui _1 viene utilizzato per l'ID negozio dopo tablename.

Default Frontend store id is 1.se si dispone di più negozi, è necessario impostare la query per ciascun negozio con il nome della tabella come sequenza_ordine_2 fino a sequenza_ordine _. *

Immettere la query seguente per la tabella sequence_order_1 viene utilizzata per l'archivio predefinito. Se hai più negozi, devi impostare tablename come per ID negozio nella query seguente.

Questo è usato solo per ordini effettuati da frontend.

sequence_order_1 viene utilizzato per la gestione dell'ID ordine in magento 2.

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

L'ID dell'ordine successivo inizia da 155555551.

Sotto Query è definita per FATTURA , se si desidera modificare l'ID fattura

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

Per la spedizione ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;


Questo non funziona da me. Dopo aver effettuato alcuni acquisti di prova, gli ID dell'ordine sono ancora 000000013, 00000014 ...
Luis Garcia

ottima risposta!
Huzefam,


potresti dichiarare la versione di magento per cui è corretta?
Felix,

come modificare la prima cifra del nuovo ID ordine
Tirth Patel,

16

Ciò che era in precedenza eav_entity_storeora è coperto in sales_sequence_profilee sales_sequence_meta. La tabella sequence_order_1viene popolata al momento dell'ordine.


Potresti indicare approssimativamente i numeri di versione di Magento per i quali questo è vero e funziona?
Felix,

Non ho riscontrato alcun cambiamento nel comportamento su questo penso che questo si applica dalla 2.0.0 alla versione attuale 2.2.1
Kristof a Fooman il

Sempre lo stesso su 2.2.4, appena testato.
Frank Groot,

7

Il formato per il nuovo ID ordine è definito per impostazione predefinita da costante in

Magento \ SalesSequence \ Model \ Sequence:

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

È il modello per la funzione sprintf () che crea un nuovo ID. Per rimuovere gli zeri iniziali devi passare il tuo modello al costruttore in questo modo:

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

o estendi la classe Sequence e cambia di cui hai bisogno


6

Sebbene tutte le risposte sopra siano corrette in tutto / in parte, ho pensato di scrivere la risposta in quanto ciò sarebbe utile per i futuri lettori. Questa risposta risponderà a due domande:

1) Come modificare il numero di sequenza dell'ordine?

2) Come aggiungere prefisso o suffisso a un numero di ordine?

Prima di apportare modifiche cieche al database, è necessario comprendere quale tabella di sequenza è associata a quale. Puoi verificarlo dalla tabellasales_sequence_meta

Esegui la query a select * from sales_sequence_meta;ciascun negozio sarà associata una tabella di sequenza con tale negozio. Nota il nome della tabella vale a dire: ordine, fattura, credito o spedizione.

Una volta fatto, vai ad esempio alla tabella se vuoi modificare il numero di ordine vai alla tabella sequence_order_1e cambia il AUTO_INCREMENTvalore

alter table sequence_order_1 AUTO_INCREMENT=617;

Questo è tutto ciò che è necessario per saltare la sequenza degli ordini.

Ora, spostandoti ulteriormente se scavi di più e hai un requisito in cui desideri aggiungere Prefisso / Suffisso per ordinare segui i passaggi seguenti:

Vai alla tabella sales_sequence_profilee controlla i dati

select * from sales_sequence_profile;

Osserverai colonna prefixe 'suffisso'. Inizialmente lo sarebbe NULL. È possibile aggiungere il valore in esso di prefisso e suffisso per pertinente meta_idche è possibile mappare dalla tabellasales_sequence_meta

Questo cambierà il prefisso / suffisso per tutti gli ordini.

Spero che questo aiuti tutto !! Saluti !!


4


Nuova installazione: se utilizzi Magento 2.2.0+ e stai eseguendo una nuova installazione con multi-store abilitato (abilitato per impostazione predefinita), puoi semplicemente eseguire le seguenti query prima di effettuare qualsiasi ordine attraverso il sito:

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;

Si noti che 303è solo il numero che ho scelto per il nostro sito perché la nostra vecchia piattaforma si era interrotta al numero d'ordine 300 e volevo un certo tipo di coerenza. Si noti inoltre che non è necessaria nessuna delle query che terminano _1se è stata abilitata la modalità di archiviazione singola.

Installazione esistente:
se stai già utilizzando Magento 2.2.0+ (o hai eseguito l'upgrade) e vuoi semplicemente aumentare i numeri, non modificare il riempimento o aggiungere caratteri, controlla semplicemente il valore AUTO_INCREMENT corrente nelle seguenti tabelle (supponendo più siti ):

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

E modificali usando le query di modifica mostrate sopra ma assicurati che il nuovo valore che usi sia maggiore del valore che ottieni dal controllo dell'attuale valore AUTO_INCREMENT.

Se hai intenzione di pasticciare con il riempimento o aggiungere un modello personalizzato, devi vedere le altre risposte qui e rivedere le seguenti tabelle:

  • sales_sequence_meta
  • sales_sequence_profile

Aggiornamento: negozi multipli?
Per coloro che non hanno familiarità con i multi-store, questa è una funzione che consente di eseguire negozi completamente separati dalla stessa installazione di Magento. Un motivo comune per farlo è supportare altre lingue. Nel back-end questo è il motivo per cui puoi scegliere la visualizzazione dello store che stai guardando (se il multi-store è attivato) quando aggiorni la configurazione e fai altre cose, ad esempio.

Per questo motivo Magento aggiungerà un trattino basso e un numero alla fine di alcune tabelle per tenere traccia delle diverse visualizzazioni del negozio. Noterai come le query che ho fornito sembrano tabelle duplicate ma in questo caso terminano con numeri diversi, 0 o 1. Se avessi diversi negozi / visualizzazioni, questi numeri continuerebbero ad aumentare, ad esempio _2 o _3. Ciò ti consente di gestire gli ID di ciascun negozio in modo diverso. La modifica al sistema ID in una vista (archivio) non deve essere la stessa in un'altra.

Non rientra nell'ambito di questo post, ma questo stesso sistema di numerazione si applica ad altre tabelle nel database che consentono di trattare e influenzare in modo diverso ogni vista del negozio. Ad esempio, potresti avere un tema completamente diverso per negozio.


Perché continui a menzionare di più negozi? Cosa sarebbe diverso se fosse abilitata la modalità negozio singolo?
Condor

1
Ho risposto che questo è il post: "... nota che non hai bisogno di nessuna delle query che terminano con _1 se hai abilitato la modalità negozio singolo". Si noti che le query che ho fornito chiamano quelle che sembrano tabelle duplicate tranne la fine ha un numero, 0 o 1 in questo caso. Se disabiliti il ​​multi-store non vedresti solo _0 nulla con _1 o _2 o _3 e così via. Ho aggiunto un aggiornamento per chiarire questo.
Blizzardengle

2

Cambia la sequenza Per cambiare il numero di ordine imbottitura modifica Sequence.php (credo che ci sia un modo migliore tramite un di.xml)

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

Modifica questa riga

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

Cambia "9" nell'imbottitura desiderata

Esempio

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

Cambia il prefisso

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

Per mantenere tutto facile aggiungere Fooman stesso numero di fattura dell'ordine


1
È una cattiva idea modificare il modello di riempimento nei file core, è necessario utilizzare il metodo "nome visualizzato per cambiare il modello di riempimento.
Timon de Groot,

1
Che magento è questo? (admin> Negozi> Vendite> Numero ordine) Uso MAG 2.2.2 ma l'ordine del menu sembra essere cambiato.
Mohammed Joraid,

1

Modifica l'ID incremento ordine

  1. Apri il tuo amministratore PHP
  2. Trova e fai clic sulla tabella denominata: sequence_order_1
  3. Fai clic sulla scheda "Operazioni" e sotto "AUTO_INCREMENT" modifica il numero d'ordine desiderato.

Seguire lo stesso passaggio per un altro negozio

  1. Trova e fai clic sulla tabella denominata: sequence_order_2
  2. Fai clic sulla scheda "Operazioni" e sotto "AUTO_INCREMENT" modifica il numero d'ordine desiderato.

Questo cambierà il numero d'ordine per i negozi multipli


0

Per regolare i numeri di fattura tramite PHPMYADMIN

INSERT INTO sequence_order_1( sequence_value) VALUES ('2000');

2000 sarà il nuovo numero iniziale


0

Con questo suggerimento puoi apportare modifiche al numero di ordine direttamente nel database Magento 2

Prima di tutto, devi aprire il tuo database di amministrazione PHP. Quindi trovare e aprire la tabella "sales_sequence_profile".

Successivamente, puoi apportare modifiche al numero di ordine predefinito nel tuo sito Web Magento 2:

un. Modifica ID incremento ordine

b. Modifica prefisso numero ordine

c. Suffisso numero ordine di modifica

d. Modifica numero ordine Valore iniziale

e. Cambia la lunghezza del pad

Vedo il tutorial completo in questo articolo: guida completa per cambiare il numero d'ordine in Magento 2


Il nome della tabella non è corretto. dovrebbe essere "sales_sequence_profile"
Dennis van Schaik,

0

Per eliminare definitivamente (o modificare) gli zeri extra non è necessario ignorare i file core. Nel tuo app/etc/di.xmlaggiungi quanto segue e modifica il "%s%'.09d%s"valore di conseguenza (in questo esempio due 00 sono imbottiti):

<?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>

Le modifiche al database per i numeri di ordine e fattura sono descritte perfettamente nella risposta di Rakesh Jesadiya.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.