Magento 2-更改默认订单ID的正确方法是什么?


29

Magento2。全新安装后,新的订单ID将为100000001、100000002,依此类推。

更改该增量ID以便它是一个更大的数字的正确方法是什么?例如155555552、155555553等。更改后,它将看起来更好。

在Magento 1.9中,要编辑订单,发票或货运的默认ID,我们只需更改“ eav_entity_store”中数据库的值即可。

Magento 2看起来是如此不同...

我知道有一些插件可以执行此操作,但是我想知道如何手动执行此操作。


请在这里查看我的问题:magento.stackexchange.com/questions/279454/…ShipWorks(及其他)可能未按increment_id预期使用。
克里斯·K

Answers:


31
  1. 打开您的PHP Admin数据库(我在php 7上进行了测试)
  2. 查找并单击名为sequence_order_1的表(它位于数据库本身中,而不位于information_schema中)
  3. 单击“操作”选项卡,然后在“ AUTO_INCREMENT”下编辑所需的订单号。

我将数字100500400放在字段AUTO_INCREMENT中,单击“继续”。然后,我进行了一次测试购买,但订单ID仍然是000000013、00000014 ...
Luis Garcia

1
我找到了sequence_order_1,并且在“操作”选项卡中有一个Auto_increment值是5,那么正确的值是多少?
艾哈迈德·达许许

1)进行任何更改之前,请备份您的数据库。2)设置您想要的订单ID值,而不是5,例如1035327500。您的下一个订单应该是1035327501
Mark

我们在谈论哪个magento版本?
Felix

@Felix这是Magento 2的
Kishan Patadia

25

从phpmyadmin转到您的数据库,

此处_1用于表名后的商店ID。

Default Frontend store id is 1.如果您有多个商店,则必须为每个商店设置查询,其表名称应为sequence_order_2sequence_order _。*。

在下面的查询表中输入查询sequence_order_1用于默认存储。如果您有多个商店,则必须在以下查询中根据商店ID设置表名。

这仅用于从前端下的订单。

sequence_order_1用于magento 2中的订单ID管理。

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

下一个订单ID从155555551开始。

如果要更改发票编号,则在下面为INVOICE定义查询。

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

出货 ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;


这对我不起作用。经过一些测试购买后,订单ID仍为000000013、00000014 ...
路易斯·加西亚

很好的答案!
huzefam


您能说出正确的magento版本吗?
Felix

如何更改新订单ID的第一位
Tirth Patel

16

什么是以前在eav_entity_store现在覆盖sales_sequence_profilesales_sequence_meta。下sequence_order_1订单时将填充该表。


您能否大致说明确实适用的magento版本号?
Felix

我没有遇到任何行为上的变化,我认为这适用于从2.0.0到最新版本2.2.1
Kristof,Fooman,

在2.2.4上仍然相同,只是对其进行了测试。
Frank Groot

7

默认情况下,新订单ID的格式由常量定义

Magento \ SalesSequence \ Model \ Sequence:

const DEFAULT_PATTERN =“%s%'。09d%s”;

sprintf()函数的模式可以创建新的id。要删除前导零,您必须将模式传递给构造函数,如下所示:

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

或扩展Sequence类并根据需要进行更改


6

尽管以上所有答案都完全/部分正确,但我还是想写下答案,因为这将对将来的读者有所帮助。该答案将解决两个问题:

1)如何更改订单序号?

2)如何在订单号上添加前缀或后缀?

在数据库中进行任何盲目更改之前,您应该了解哪个序列表与什么相关。您可以从表中检查sales_sequence_meta

运行查询,select * from sales_sequence_meta;每个商店将具有与该商店关联的序列表。注意表名称,即:订单,发票,贷记凭证或装运。

完成后,例如,如果要编辑订单号goto表sequence_order_1并更改AUTO_INCREMENT值,请转到表

alter table sequence_order_1 AUTO_INCREMENT=617;

这就是跳转顺序的全部要求。

现在,如果您进行更多挖掘并且有一个要添加前缀/后缀的要求,请继续执行以下步骤:

转到表sales_sequence_profile并检查数据

select * from sales_sequence_profile;

您将观察列prefix和“后缀”。最初是NULL。您可以在其中添加相关值的前缀和后缀,meta_id可以从表中进行映射sales_sequence_meta

这将更改所有订单的订单前缀/后缀。

希望这对所有人有帮助!干杯!


4

全新安装:
如果您在Magento 2.2.0+上运行并且在启用多商店的情况下运行全新安装(默认情况下已启用),则可以简单地运行以下查询,然后再通过网站下订单:

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;

请注意,这303只是我为我们的网站选择的编号,因为我们的旧平台在300号订单上停了下来,我希望保持某种一致性。另请注意,_1如果启用了单存储模式,则不需要任何结尾的查询。

现有安装:
如果您已经在使用Magento 2.2.0+(或已升级到它),并且只是想增加数字,不更改填充或添加字符,只需检查下表中的当前AUTO_INCREMENT值即可(假设是多站点):

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

并使用上面显示的alter查询更改它们,但请确保您使用的新值大于从检查当前的AUTO_INCREMENT值获得的值。

如果您要弄乱填充或添加自定义模式,则需要在此处查看其他答案并查看下表:

  • sales_sequence_meta
  • sales_sequence_profile

更新:多商店?
对于不熟悉多商店的用户,此功能使您可以从同一Magento安装中运行完全独立的商店。这样做的常见原因是支持其他语言。在后端,这就是为什么在更新配置和执行其他操作时可以选择要查看的商店视图(如果已启用多商店)的原因。

因此,Magento将在某些表的末尾添加一个下划线和一个数字,以跟踪不同的商店视图。您会注意到我提供的查询似乎是重复的表,但是它们以不同的数字结尾(在这种情况下为0或1)。如果您有多个商店/视图,则这些数字将不断增加,例如_2或_3。这使您可以不同地管理每个商店的ID。您在一个视图(存储)中对id系统所做的更改不必在另一个视图(存储)中相同。

它超出了本文的范围,但是此相同的编号系统适用于数据库中的其他表,使您能够真正以不同的方式对待和影响每个商店视图。例如,每个商店的主题可能完全不同。


您为什么经常提及多间商店?如果启用了单商店模式,会有什么不同?
神鹰

1
我回答了这句话:“ ...请注意,如果启用了单存储模式,则不需要以_1结尾的任何查询。” 请注意,我提供的查询将调用看起来像重复表的表,但末尾有一个数字,在这种情况下为0或1。如果您禁用了多商店,则使用_1或_2或_3只会看到_0没什么,依此类推。我添加了一个更新来澄清这一点。
Blizzardengle '18

2

更改顺序要更改填充的订单号,请编辑Sequence.php(我相信通过di.xml会有更好的方法)

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

编辑此行

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

将“ 9”更改为所需的填充

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

更改前缀

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

为了使一切变得容易,请向Fooman添加相同的订单发票编号


1
在核心文件中编辑填充模式是个坏主意,您应该使用“我的显示名称”方法更改填充模式。
Timon de Groot

1
这是什么magento?(管理员>商店>销售>订单号)我使用MAG 2.2.2,但菜单顺序似乎已更改。
Mohammed Joraid '18

1

更改订单增量ID

  1. 打开您的PHP管理员
  2. 查找并单击名为sequence_order_1的表
  3. 单击“操作”选项卡,然后在“ AUTO_INCREMENT”下编辑为所需的订单号。

对于另一个商店,请遵循相同的步骤

  1. 查找并单击名为sequence_order_2的表
  2. 单击“操作”选项卡,然后在“ AUTO_INCREMENT”下编辑为所需的订单号。

这将更改多个商店的订单号


0

通过PHPMYADMIN调整发票编号

插入sequence_order_1sequence_value)值('2000');

2000将是新的开始编号


0

您可以通过此技巧直接在数据库Magento 2中对订单号进行更改

首先,您需要打开您的PHP Admin数据库。然后找到并打开表“ sales_sequence_profile”。

之后,您可以在Magento 2网站上更改默认订单号:

一种。变更单增量编号

b。变更单编号前缀

C。更改订单号后缀

d。变更单编号起始值

e。更改焊盘长度

我在本文中看到了完整的教程:《 Magento 2中更改订单号的完整教程指南》


表的名称不正确。它应该是“ sales_sequence_profile”
Dennis van Schaik,

0

要永久摆脱(或更改)多余的零,您不能覆盖核心文件。在您的代码中app/etc/di.xml添加以下内容并相应地更改"%s%'.09d%s"值(在此示例中,填充两个00):

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

Rakesh Jesadiya的答案完美描述了订单和发票编号的数据库编辑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.