Magento 2 - Qual é a maneira correta de alterar o ID do pedido padrão?


29

Magento 2. Após a instalação nova, o novo ID do pedido será 100000001, 100000002 e assim por diante.

Qual é a maneira correta de alterar esse ID de incremento para que ele seja um número maior? Por exemplo 155555552, 155555553 e assim por diante. Quando alterado, ficará muito melhor.

No Magento 1.9 Para editar o ID padrão para pedidos, fatura ou remessa, basta alterar os valores no banco de dados em "eav_entity_store".

Magento 2 parece tão diferente ...

Eu sei que existem alguns plugins que oferecem isso, mas quero saber como fazê-lo manualmente.


Por favor, veja minha pergunta aqui: magento.stackexchange.com/questions/279454/… O ShipWorks (e outros) podem não estar usando increment_idcomo deveriam.
Chris K

Respostas:


31
  1. Abra seu banco de dados PHP Admin (eu testei no php 7)
  2. Localize e clique na tabela chamada: sequence_order_1 (está localizada no próprio banco de dados e não no information_schema)
  3. Clique na guia "Operações" e, em "AUTO_INCREMENT", edite para o número do pedido desejado.

Coloquei o número 100500400 no campo AUTO_INCREMENT, clique em "Continuar". Então eu fiz compras de teste, mas as de ID do pedido ainda estão 000000013, 00000014 ...
Luis Garcia

11
Encontrei sequence_order_1 e, na guia Operation, há Auto_increment o valor é 5, então qual é o valor correto?
Ahmad Darwish 12/03

1) faça backup do seu banco de dados antes de fazer alterações. 2) em vez de 5 de definir o valor que você deseja para o seu ID do pedido, por exemplo 1035327500. O seu próximo pedido é deve ser 1035327501
Mark

de qual versão magento estamos falando?
Felix

@Felix It is for Magento 2
Kishan Patadia

25

Vá para o seu banco de dados a partir de phpmyadmin,

Aqui _1 é usado para o ID da loja após o nome da tabela.

Default Frontend store id is 1.se você possui várias lojas, é necessário definir a consulta para cada loja com o nome da tabela como sequence_order_2 até sequence_order _. *

Digite abaixo a consulta para a tabela sequence_order_1 é usada para o armazenamento padrão. Se você possui várias lojas, é necessário definir o nome da tabela conforme o ID da loja abaixo da consulta.

Isso é usado apenas para pedidos feitos pelo front-end.

sequence_order_1 é usado para gerenciamento de identificação de pedidos no magento 2.

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

O ID do próximo pedido começa em 155555551.

A Consulta abaixo é definida para INVOICE , se você deseja alterar o ID da fatura

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

Para Remessa ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;


Isso não funciona de mim. Depois de fazer algumas compras de teste, do id ordem ainda estão 000000013, 00000014 ...
Luis Garcia

excelente resposta!
huzefam


você poderia indicar a versão magento para a qual isso está correto?
Felix

como alterar o primeiro dígito do novo ID do pedido
Tirth Patel 15/06

16

O que estava anteriormente eav_entity_storeagora está coberto sales_sequence_profilee sales_sequence_meta. A tabela sequence_order_1é preenchida quando os pedidos são feitos.


Você poderia indicar aproximadamente os números de versão do magento para os quais isso é verdade e funciona?
Felix

Não encontrei nenhuma mudança de comportamento sobre isso. Acho que isso se aplica da versão 2.0.0 à versão 2.2.1 atual.
Kristof at Fooman

Ainda o mesmo em 2.2.4, apenas testei.
Frank Groot

7

O formato para o novo ID do pedido é definido por padrão por constante em

Magento \ SalesSequence \ Model \ Sequence:

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

É o padrão da função sprintf () que cria um novo ID. Para remover zeros à esquerda, você deve passar seu padrão para um construtor como este:

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

ou estenda a classe Sequence e altere conforme necessário


6

Embora todas as respostas acima estejam corretas total / parcialmente, pensei em anotar a resposta, pois isso seria útil para futuros leitores. Esta resposta abordará duas perguntas:

1) Como alterar o número de sequência da ordem?

2) Como adicionar prefixo ou sufixo a um número de pedido?

Antes de fazer alterações cegas no banco de dados, você deve entender qual tabela de sequência está associada a quê. Você pode verificar isso na tabelasales_sequence_meta

Execute a consulta em que select * from sales_sequence_meta;cada loja terá uma tabela de sequência associada a essa loja. Anote o nome da tabela a seguir: pedido, fatura, crédito ou remessa.

Feito isso, vá para a tabela, por exemplo, se desejar editar o número do pedido na tabela sequence_order_1e alterar o AUTO_INCREMENTvalor

alter table sequence_order_1 AUTO_INCREMENT=617;

Isso é tudo o que é necessário para pular a sequência da ordem.

Agora, movendo-se mais se você cavar mais e tiver um requisito no qual deseja adicionar Prefixo / Sufixo para ordenar, siga as etapas abaixo:

Ir para a tabela sales_sequence_profilee verificar os dados

select * from sales_sequence_profile;

Você observará a coluna prefixe o 'sufixo'. Inicialmente seria NULL. Você pode adicionar o valor de prefixo e sufixo relevante para o meta_idqual você pode mapear da tabelasales_sequence_meta

Isso mudará o prefixo / sufixo do pedido para todos os pedidos.

Espero que isso ajude a todos !! Felicidades !!


4

Instalação nova:
Se você está no Magento 2.2.0+ e está executando uma instalação nova com várias lojas ativadas (isso é ativado por padrão), basta executar as seguintes consultas antes de fazer pedidos pelo 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;

Observe que esse 303é apenas o número que eu escolhi para o nosso site, porque nossa plataforma antiga parou no pedido número 300 e eu queria algum tipo de consistência. Observe também que você não precisa de nenhuma consulta que termine _1se você tiver ativado o modo de armazenamento único.

Instalação existente:
se você já usa o Magento 2.2.0+ (ou atualizou para ele) e simplesmente deseja aumentar os números, não alterar o preenchimento ou adicionar caracteres, basta verificar o valor atual AUTO_INCREMENT nas tabelas a seguir (assumindo vários 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

E altere-as usando as consultas alteradas mostradas acima, mas verifique se o novo valor que você usa é maior que o valor que você recebe ao verificar o valor atual AUTO_INCREMENT.

Se você quiser mexer no preenchimento ou adicionar um padrão personalizado, precisará ver as outras respostas aqui e revisar as seguintes tabelas:

  • sales_sequence_meta
  • sales_sequence_profile

Atualização: Mult-Stores?
Para aqueles que não estão familiarizados com várias lojas, esse é um recurso que permite executar lojas completamente separadas da mesma instalação do Magento. Um motivo comum para fazer isso é oferecer suporte a outros idiomas. No back-end, é por isso que você pode escolher a visualização da loja que está vendo (se a loja múltipla estiver ativada) ao atualizar a configuração e fazer outras coisas, por exemplo.

Por esse motivo, o Magento adicionará um sublinhado e um número no final de determinadas tabelas para acompanhar as diferentes visualizações da loja. Você notará como as consultas que forneci parecem tabelas duplicadas, mas terminam com números diferentes, 0 ou 1 nesse caso. Se você tivesse várias lojas / visualizações, esses números continuariam aumentando, _2 ou _3, por exemplo. Isso permite que você gerencie os IDs de cada loja de maneira diferente. Sua alteração no sistema de identificação em uma visualização (loja) não precisa ser a mesma em outra.

Está fora do escopo desta publicação, mas esse mesmo sistema de numeração se aplica a outras tabelas no banco de dados, permitindo tratar e afetar verdadeiramente cada exibição de loja de maneira diferente. Você pode ter um tema completamente diferente por loja, por exemplo.


Por que você continua mencionando várias lojas? O que seria diferente se você tivesse o modo de armazenamento único ativado?
Condor

11
Eu respondi que esta é a postagem: "... observe que você não precisa de nenhuma das consultas que terminam com _1 se você ativou o modo de armazenamento único". Observe que as consultas que forneci chamam de tabelas duplicadas, exceto que o final tem um número, 0 ou 1 nesse caso. Se você desativasse o armazenamento múltiplo, não veria _0 nada com _1 ou _2 ou _3 e assim por diante. Eu adicionei uma atualização para esclarecer isso.
Blizzardengle

2

Alterar a sequência Para alterar o preenchimento do número do pedido, edite Sequence.php (acredito que exista uma maneira melhor através de um di.xml)

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

Edite esta linha

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

Mude o "9" para o preenchimento desejado

Exemplo

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

Alterar o prefixo

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

Para manter tudo mais fácil, adicione o mesmo número da fatura do pedido da Fooman


11
É uma má idéia editar o padrão de preenchimento nos arquivos principais; você deve usar o método 'meu nome de exibição para alterar o padrão de preenchimento.
Timon de Groot

11
Que magento é esse? (admin> Lojas> Vendas> Número do pedido) Eu uso o MAG 2.2.2, mas a ordem do menu parece estar alterada.
Mohammed Joraid

1

Alterar o ID de incremento do pedido

  1. Abra seu administrador PHP
  2. Localize e clique na tabela chamada: sequence_order_1
  3. Clique na guia "Operações" e, em "AUTO_INCREMENT", edite para o número do pedido desejado.

Para outra loja na mesma etapa, siga

  1. Localize e clique na tabela chamada: sequence_order_2
  2. Clique na guia "Operações" e, em "AUTO_INCREMENT", edite para o número do pedido desejado.

Isso mudará o número do pedido das várias lojas


0

Para ajustar números de fatura via PHPMYADMIN

INSERIR EM sequence_order_1( sequence_value) VALORES ('2000');

2000 será o novo número inicial


0

Você pode alterar o número do pedido diretamente no banco de dados Magento 2 usando esta dica

Primeiro de tudo, você precisa abrir seu banco de dados PHP Admin. Em seguida, encontre e abra a tabela "sales_sequence_profile".

Depois disso, você pode fazer alterações no número do pedido padrão no site do Magento 2:

uma. ID do incremento da requisição de mudança

b. Prefixo do número da requisição de mudança

c. Sufixo do número da requisição de mudança

d. Valor inicial do número da requisição de mudança

e Alterar comprimento do bloco

Eu vejo o tutorial completo neste artigo: Guia completo do tutorial para alterar o número do pedido no Magento 2


O nome da tabela está incorreto. ele deve ser "sales_sequence_profile"
Dennis van Schaik

0

Para se livrar permanentemente (ou alterar) os zeros extras, você não deve substituir os arquivos principais. No seu exemplo, app/etc/di.xmladicione o seguinte e altere o "%s%'.09d%s"valor de acordo (neste exemplo, dois 00 são preenchidos):

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

As edições do banco de dados para números de pedidos e faturas estão perfeitamente descritas na resposta de Rakesh Jesadiya.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.