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.

Marca
fonte
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.
Marca
fonte
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;

Rakesh Jesadiya
fonte
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.

Kristof na Fooman
fonte
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

meu nome de exibição
fonte
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 !!

Dexter
fonte
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.

Blizzardengle
fonte
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

Darren Sutherland
fonte
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

Divya
fonte
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

Darren Sutherland
fonte
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

Jameslj
fonte
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.

TheFrakes
fonte