在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;
前端商店都在一个名为的网站下Main Website
。
select * from store_website;
前缀,后缀,start_value和step数据存储在名为的表中sales_sequence_profile
。
select * from sales_sequence_profile;
上表的meta_id字段来
自该表sales_sequence_meta
select * from sales_sequence_meta;
联接sales_sequence_meta
和store
表在以下查询的同一结果视图中显示商店代码和商店名称:
我们可以加入三个表sales_sequence_profile
,sales_sequence_meta
并store
看到一个更清晰的数据视图。
我们可以使用以下查询:
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_type
该test
商店的,
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 也是如此。