Magento 2 - Який правильний спосіб змінити стандартний ідентифікатор замовлення?


29

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

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

У Magento 1.9 Для редагування ідентифікатора за замовчуванням для замовлень, рахунків-фактур або відправлення нам просто довелося змінити значення в базі даних на "eav_entity_store".

Magento 2 виглядає так інакше ...

Я знаю, що є кілька плагінів, які пропонують це зробити, але я хочу знати, як це зробити вручну.


Будь ласка, дивіться моє запитання тут: magento.stackexchange.com/questions/279454/… ShipWorks (та інші) можуть не використовувати так, increment_idяк належить.
Кріс К

Відповіді:


31
  1. Відкрийте базу даних PHP Admin (я тестував на php 7)
  2. Знайдіть і натисніть на таблицю під назвою: послідовність_порядок_1 (вона розташована в самій базі даних, а не в інформаційній схемі)
  3. Клацніть на вкладці "Операції" та під "AUTO_INCREMENT" редагуйте потрібний номер замовлення.

Я ставлю число 100500400 у поле AUTO_INCREMENT, натискаю «Продовжити». Тоді я зробив тестові покупки, але ідентифікатори замовлення все ще 000000013, 00000014 ...
Луїс Гарсія

1
Я знайшов послідовність_порядок_1 і на вкладці "Операція" є функція автоматичного підвищення значення 5, так що це правильне значення?
Ахмад Дарвіш

1) створити резервну копію вашої бази даних перед внесенням змін. 2) замість 5 ви встановлюєте потрібне для ідентифікатора замовлення значення, наприклад 1035327500. Наступне замовлення має бути 1035327501
Марк

про яку версію magento ми говоримо?
Фелікс

@Felix Це для Magento 2
Kishan Patadia

25

Перейдіть у свою базу даних із phpmyadmin,

Тут _1 використовується для ідентифікатора магазину після імені таблиці.

Default Frontend store id is 1.якщо у вас є мульти - магазин , то ви повинні встановити запит для кожного магазину з ім'ям таблиці , як sequence_order_2 Шифрування до sequence_order _. *

Введіть нижче запит для таблиці row_order_1 використовується для зберігання за замовчуванням. Якщо у вас є кілька магазинів, ви повинні встановити ім'я таблиці відповідно до ідентифікатора магазину в нижченаведеному запиті.

Це використовується лише для замовлення, розміщеного з фронтенду.

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

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

Наступний ідентифікатор замовлення починається з 155555551.

Нижче Запит визначено для INVOICE , якщо ви хочете змінити ідентифікатор рахунка-фактури

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

Для відвантаження ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;


Це не працює у мене. Зробивши кілька тестових покупок, ідентифікатори замовлення все ще 000000013, 00000014 ...
Луїс Гарсія

відмінна відповідь!
хузефам

це може допомогти - magento.stackexchange.com/questions/156075/… -
пісок

ви можете вказати версію magento, для якої це правильно?
Фелікс

як змінити першу цифру нового ідентифікатора замовлення
Tirth Patel

16

Те , що було раніше в eav_entity_storeданий час розглядається в sales_sequence_profileі sales_sequence_meta. Таблиця sequence_order_1заповнюється при розміщенні замовлень.


Не могли б ви приблизно вказати номери версій magento, для яких це правда і працює?
Фелікс

Я не зустрічав жодних змін у поведінці щодо цього. Я думаю, що це стосується від 2.0.0 до поточного випуску 2.2.1
Крістоф в Fooman

Ще те ж саме на 2.2.4, тільки тестував.
Френк Грут

7

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

Magento \ SalesSequence \ Модель \ Послідовність:

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>

або розширити клас послідовності та змінити, як потрібно


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 у наступних таблицях (якщо припустити, багатосторінковий ):

  • послідовність_кредитування_0
  • послідовність_кредитування_1
  • послідовність_invoice_0
  • послідовність_invoice_1
  • послідовність_порядку_0
  • послідовність_порядок_1
  • послідовність_код_0
  • послідовність_код_1

І змінити їх з допомогою альтер запити , зазначеної вище , але переконайтеся , що нове значення ви використовуєте більше , ніж значення , яке ви отримаєте назад від перевірки поточного значення AUTO_INCREMENT.

Якщо ви збираєтеся возитися з прокладками або додавати власну схему, вам потрібно переглянути інші відповіді тут і переглянути наступні таблиці:

  • sales_sequence_meta
  • sales_sequence_profile

Оновлення: Мульти-магазини?
Для тих, хто не знайомий з кількома магазинами, це особливість, яка дозволяє запускати повністю окремі магазини з тієї ж інсталяції Magento. Поширеною причиною цього є підтримка інших мов. На задньому кінці, ось чому ви можете вибрати перегляд магазину, на який ви дивитесь (якщо багато магазину увімкнено) під час оновлення конфігурації та, наприклад, інших дій.

З цієї причини Magento додасть підкреслення та цифру в кінці певних таблиць для відстеження різних представлень магазину. Ви помітите, як подані мною запити здаються дублюючими таблицями, але вони закінчуються різними цифрами, 0 або 1 в цьому випадку. Якщо у вас було кілька магазинів / представлень, ці цифри збільшуватимуться, наприклад, _2 або _3. Це дозволяє по-різному керувати ідентифікаторами кожного магазину. Ваша зміна системи id в одному перегляді (магазині) не повинна бути однаковою в іншому.

Ця публікація поза сферою, але ця сама система нумерації застосовується до інших таблиць у базі даних, що дозволяє по-справжньому ставитися до кожного виду магазину та впливати по-різному. Наприклад, у вас може бути зовсім інша тема в магазині.


Чому ви постійно згадуєте про кілька магазинів? Що було б інакше, якби ввімкнено режим одноразового зберігання?
Кондор

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
Що це за магенто? (адміністратор> Магазини> Продажі> Номер замовлення) Я використовую MAG 2.2.2, але порядок меню, здається, змінився.
Мохаммед Жораїд

1

Змінення ідентифікатора збільшення замовлення

  1. Відкрийте свого адміністратора PHP
  2. Знайдіть та натисніть на таблицю під назвою: послідовність_порядок_1
  3. Клацніть на вкладці «Операції» та під редакцією «AUTO_INCREMENT» до потрібного номера замовлення.

Для іншого магазину виконайте такий же крок

  1. Знайдіть та натисніть на таблицю під назвою: послідовність_порядок_2
  2. Клацніть на вкладці «Операції» та під редакцією «AUTO_INCREMENT» до потрібного номера замовлення.

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


0

Налаштування номерів рахунків через PHPMYADMIN

ВСТАВЛЯЄТЬСЯ У sequence_order_1( sequence_value) 2000 ЦІННОСТІ;

2000 рік буде новим стартовим номером


0

Ви можете внести зміни до номера замовлення безпосередньо в базі даних Magento 2 за допомогою цього поради

Перш за все, вам потрібно відкрити базу даних PHP Admin. Потім знайдіть і відкрийте таблицю “sales_sequence_profile”.

Після цього на веб-сайті Magento 2 ви можете внести зміни до номера замовлення за замовчуванням:

а. Змінити ідентифікатор збільшення замовлення

б. Змінити префікс номера замовлення

c. Змінити суфікс номера замовлення

г. Змінити початкове значення номера замовлення

е. Зміна довжини колодки

Я бачу повний підручник у цій статті: Повне керівництво підручника щодо зміни номера замовлення в 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.