Magento2 订单 发票 退款 物流 更改增量ID前缀 后缀 起始值 步长

在Magento 2中有一个特定的模式/公式来生成增量ID。该模式在函数calculateCurrentValue()中的Magento \ SalesSequence \ Model \ Sequence类中定义。

/**
 * Calculate current value depends on start value
 *
 * @return string
 */
private function calculateCurrentValue()
{
    return ($this->lastIncrementId - $this->meta->getActiveProfile()->getStartValue())
    * $this->meta->getActiveProfile()->getStep() + $this->meta->getActiveProfile

然后,当前值由前缀和后缀包围。它在同一类Magento \ SalesSequence \ Model \ Sequence的函数getCurrentValue()中定义。

我有一个前端商店english。带有code的商店admin是管理商店,而不是前端商店。

 select * from store;
store

前端商店都在一个名为的网站下Main Website

select * from store_website;
store_webiste

前缀,后缀,start_value和step数据存储在名为的表中sales_sequence_profile

select * from sales_sequence_profile;
sales_sequence_profile

上表的meta_id字段来自该表sales_sequence_meta 

 select * from sales_sequence_meta;
sales_sequence_meta

联接sales_sequence_metastore表在以下查询的同一结果视图中显示商店代码和商店名称:

我们可以加入三个表sales_sequence_profilesales_sequence_metastore看到一个更清晰的数据视图。

我们可以使用以下查询:

SELECT profile.*, meta.entity_type, meta.store_id, meta.code, meta.name, meta.sequence_table, meta.is_active AS is_active_store
FROM `sales_sequence_profile` AS profile 
LEFT JOIN (
    SELECT meta.*, store.name, store.code, store.is_active
    FROM `sales_sequence_meta` AS meta
    LEFT JOIN store
    ON store.store_id = meta.store_id
) AS meta
ON profile.meta_id = meta.meta_id;

sales_sequence_profile表中选择特殊的行。

SELECT profile.profile_id, profile.meta_id, profile.prefix, profile.suffix, profile.start_value, profile.step, meta.entity_type, meta.store_id, meta.code, meta.sequence_table 
FROM `sales_sequence_profile` AS profile 
LEFT JOIN (
    SELECT meta.*, store.name, store.code, store.is_active
    FROM `sales_sequence_meta` AS meta
    LEFT JOIN store
    ON store.store_id = meta.store_id
) AS meta
ON profile.meta_id = meta.meta_id;
链表查询

更改前缀

让我们更改english商店的订单前缀。

在上面的查询结果中,您可以看到order entity_typetest商店的,

profile_id = 5
meta_id = 5

我将前缀设置为JAX-

这是更新english商店前缀的查询:

UPDATE `sales_sequence_profile` SET `prefix` = 'JAX-' WHERE `meta_id` = 5;

您也可以使用profile_id代替meta_id。两者将导致相同的结果。

UPDATE `sales_sequence_profile` SET `prefix` = ‘JAX-‘ WHERE `profile_id` = 5;

您可以对数据库表中所有可用商店的发票,贷项凭单和装运执行相同的操作。

订单前缀

要更新 invoice、shipment 也是如此。

本文参考:https://blog.chapagain.com.np/magento-2-change-increment-id-prefix-suffix-start-value-step-pad-length-of-order-invoice-creditmemo-shipment/