Magento 2 - Как правильно изменить идентификатор заказа по умолчанию?


29

Magento 2. После новой установки новый идентификатор заказа будет 100000001, 100000002 и так далее.

Как правильно изменить этот инкрементный идентификатор, чтобы он был больше? Например 155555552, 155555553 и так далее. После изменения это будет выглядеть намного лучше.

В Magento 1.9 Чтобы отредактировать Id по умолчанию для заказов, счетов-фактур или отгрузок, нам просто нужно было изменить значения в базе данных в «eav_entity_store».

Magento 2 выглядит так по-другому ...

Я знаю, что есть некоторые плагины, которые предлагают сделать это, но я хочу знать, как сделать это вручную.


Пожалуйста, посмотрите мой вопрос здесь: magento.stackexchange.com/questions/279454/… ShipWorks (и другие) могут использовать не так, increment_idкак они должны.
Крис К

Ответы:


31
  1. Откройте базу данных PHP Admin (я проверял на php 7)
  2. Найдите и щелкните по таблице с именем: sequence_order_1 (она находится в самой базе данных, а не в information_schema)
  3. Нажмите на вкладку «Операции» и в разделе «AUTO_INCREMENT» измените номер нужного заказа.

Я поставил номер 100500400 в поле AUTO_INCREMENT, нажмите «Продолжить». Затем я совершил пробные покупки, но идентификаторы заказа все еще 000000013, 00000014 ...
Луис Гарсия

1
я нашел sequence_order_1 и на вкладке операций есть Auto_increment значение 5, так что это правильное значение?
Ахмад Дарвиш

1) сделайте резервную копию вашей базы данных, прежде чем вносить какие-либо изменения. 2) вместо 5 вы устанавливаете желаемое значение для идентификатора вашего заказа, например, 1035327500. Ваш следующий заказ должен быть 1035327501
Марк

о какой версии magento мы говорим?
Феликс

@Felix Это для Magento 2
Кишан Патадия

25

Зайдите в свою базу данных из phpmyadmin,

Здесь _1 используется для идентификатора магазина после имени таблицы.

Default Frontend store id is 1.если у вас есть несколько магазинов, вы должны установить запрос для каждого магазина с именем таблицы, например sequence_order_2 до sequence_order _. *

Введите ниже запрос для таблицы sequence_order_1 используется для хранилища по умолчанию. Если у вас есть несколько магазинов, вы должны установить имя таблицы в соответствии с идентификатором магазина в запросе ниже.

Это используется только для заказа, размещенного в веб-интерфейсе.

sequence_order_1 используется для управления идентификатором заказа в magento 2.

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

Следующий идентификатор заказа начинается с 155555551.

Ниже запрос определен для СЧЕТА , если вы хотите изменить идентификатор счета

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

Для отправки ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;


Это не работает от меня. После нескольких тестовых покупок идентификаторы заказа все еще 000000013, 00000014 ...
Луис Гарсия

отличный ответ!
huzefam

это может помочь - magento.stackexchange.com/questions/156075/... -
Sandip

Не могли бы вы указать версию magento, для которой это правильно?
Феликс

как изменить первую цифру нового идентификатора заказа
Тирт Патель

16

То, что было раньше, eav_entity_storeтеперь покрыто sales_sequence_profileи sales_sequence_meta. Стол sequence_order_1заполняется при размещении заказов.


Не могли бы вы приблизительно указать номера версий magento, для которых это верно и работает?
Феликс

Я не сталкивался с какими-либо изменениями в поведении по этому
поводу,

Все так же на 2.2.4, только что проверил.
Фрэнк Гроот

7

Формат для нового идентификатора заказа по умолчанию определяется константой в

Magento \ SalesSequence \ Model \ Sequence:

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

Это шаблон для функции sprintf (), который создает новый идентификатор. Чтобы удалить начальные нули, вы должны передать свой шаблон конструктору следующим образом:

<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; каждый магазин будет иметь таблицу последовательности, связанную с этим магазином. Обратите внимание на название таблицы, а именно: Заказ, Счет-фактура, Кредитная отметка или Отгрузка.

Как только это будет сделано, перейдите к таблице, например, если вы хотите отредактировать номер заказа до таблицы 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

И измените их, используя запросы на изменение, показанные выше, но убедитесь, что новое значение, которое вы используете, больше, чем значение, которое вы получаете от проверки текущего значения AUTO_INCREMENT.

Если вы собираетесь возиться с отступами или добавить собственный шаблон, вам нужно посмотреть другие ответы здесь и просмотреть следующие таблицы:

  • sales_sequence_meta
  • sales_sequence_profile

Обновление: Mult-Stores?
Для тех, кто не знаком с мульти-магазинами, эта функция позволяет вам запускать совершенно разные магазины из одной и той же установки Magento. Распространенной причиной для этого является поддержка других языков. В конце концов, именно поэтому вы можете выбрать вид магазина, на который вы смотрите (если мульти-магазин включен), например, при обновлении конфигурации и выполнении других действий.

По этой причине Magento добавит подчеркивание и число в конце определенных таблиц, чтобы отслеживать различные представления магазина. Вы заметите, что представленные мной запросы выглядят как дубликаты таблиц, но они заканчиваются разными числами, в данном случае 0 или 1. Если бы у вас было несколько магазинов / просмотров, эти числа просто продолжали бы увеличиваться, например, _2 или _3. Это позволяет вам по-разному управлять идентификаторами каждого магазина. Внесение изменений в систему идентификаторов в одном представлении (магазине) не обязательно должно быть таким же в другом представлении.

Это выходит за рамки данной статьи, но эта же система нумерации применяется к другим таблицам в базе данных, что позволяет вам по-разному относиться к каждому представлению магазина и влиять на него. Например, у вас может быть совершенно другая тема для магазина.


Почему вы продолжаете упоминать о мульти-магазинах? Что было бы иначе, если бы у вас был включен режим одного магазина?
Кондор

1
Я ответил на это сообщение: «... обратите внимание, что вам не нужны никакие запросы, заканчивающиеся на _1, если вы включили режим единого хранилища». Обратите внимание, что предоставленные мною запросы вызывают то, что выглядит как дубликаты таблиц, за исключением того, что конец имеет число 0 или 1 в этом случае. Если вы отключите мульти-магазин, вы не увидите ничего _0 только с _1, _2 или _3 и так далее. Я добавил обновление, чтобы прояснить это.
Blizzardengle

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
Плохая идея редактировать шаблон заполнения в основных файлах, вы должны использовать «метод моего отображаемого имени», чтобы изменить шаблон заполнения.
Тимон де Гроот

1
Что это за мадженто? (admin> Магазины> Продажа> Номер заказа) Я использую MAG 2.2.2, но порядок меню, похоже, изменился.
Мохаммед Джорайд

1

Изменить идентификатор приращения заказа

  1. Откройте администратор PHP
  2. Найдите и нажмите на таблицу под названием: sequence_order_1
  3. Нажмите на вкладку «Операции» и в разделе «AUTO_INCREMENT» измените номер нужного заказа.

Для другого магазина выполните тот же шаг

  1. Найдите и нажмите на таблицу под названием: sequence_order_2
  2. Нажмите на вкладку «Операции» и в разделе «AUTO_INCREMENT» измените номер нужного заказа.

Это изменит номер заказа для нескольких магазинов


0

Чтобы настроить номера счетов через PHPMYADMIN

INSERT INTO sequence_order_1( sequence_value) VALUES ('2000');

2000 будет новым стартовым номером


0

Вы можете внести изменения в номер заказа непосредственно в базе данных Magento 2 с помощью этого совета

Прежде всего, вам нужно открыть базу данных PHP Admin. Затем найдите и откройте таблицу «sales_sequence_profile».

После этого вы можете изменить номер заказа по умолчанию на вашем веб-сайте Magento 2:

а. Изменить идентификатор приращения заказа

б. Изменить префикс номера заказа

с. Изменить суффикс номера заказа

д. Начальный номер изменения номера заказа

е. Изменить длину площадки

Я вижу полное руководство в этой статье: Полное руководство по изменению номера заказа в Magento 2


Название таблицы неверно. это должно быть "sales_sequence_profile"
Деннис ван Шайк

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>

Редактирование базы данных для номеров заказа и счета-фактуры прекрасно описано в ответе Ракеша Джесадии.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.