Magento 2 - Jak prawidłowo zmienić domyślny identyfikator zamówienia?


29

Magento 2. Po świeżej instalacji nowy identyfikator zamówienia to 100000001, 100000002 i tak dalej.

Jaki jest prawidłowy sposób zmiany tego identyfikatora przyrostu, aby był to wyższy numer? Na przykład 155555552, 155555553 i tak dalej. Po zmianie będzie wyglądał znacznie lepiej.

W Magento 1.9 Aby edytować domyślny identyfikator dla zamówień, faktury lub przesyłki, musieliśmy po prostu zmienić wartości w bazie danych w „eav_entity_store”.

Magento 2 wygląda tak inaczej ...

Wiem, że niektóre wtyczki oferują taką możliwość, ale chcę wiedzieć, jak to zrobić ręcznie.


Zobacz moje pytanie tutaj: magento.stackexchange.com/questions/279454/... ShipWorks (i inne) mogą nie używać increment_idtak, jak powinny.
— Chris K,

Odpowiedzi:


31
  1. Otwórz bazę danych PHP Admin (testowałem na php 7)
  2. Znajdź i kliknij tabelę o nazwie: sequence_order_1 (znajduje się ona w samej bazie danych, a nie w schemacie_informacyjnym)
  3. Kliknij kartę „Operacje” i pod „AUTO_INCREMENT” edytuj żądany numer zamówienia.

W polu AUTO_INCREMENT wpisuję liczbę 100500400, klikam „Kontynuuj”. Potem zrobiłem zakupy testowe, ale numery identyfikacyjne zamówień są nadal 000000013, 00000014 ...
— Luis Garcia

1
znalazłem sekwencję_danych_1, a na karcie operacji znajduje się Auto_inkrement, wartość wynosi 5, więc jaka jest poprawna wartość?
— Ahmad Darwish,

1) wykonaj kopię zapasową bazy danych przed wprowadzeniem jakichkolwiek zmian. 2) zamiast 5 ustawiasz wartość, którą chcesz dla swojego identyfikatora zamówienia, na przykład 1035327500. Twoje następne zamówienie to 1035327501
— Mark

o której wersji magento mówimy?
— Felix,

@ Felix To jest dla Magento 2
— Kishan Patadia

25

Przejdź do swojej bazy danych z phpmyadmin,

Tutaj _1 jest używany jako identyfikator sklepu po tablename.

Default Frontend store id is 1.jeśli masz wiele sklepów, musisz ustawić zapytanie dla każdego sklepu z nazwą tabeli, taką jak kolejność_sekwencji_2 do kolejności_sekwencji _. *

Wpisz poniżej zapytanie dla tabeli sekwencja_domeny_1 jest używana do przechowywania domyślnego. Jeśli masz wiele sklepów, musisz ustawić tablename zgodnie z identyfikatorem sklepu w poniższym zapytaniu.

Jest to używane tylko w przypadku zamówień złożonych z interfejsu użytkownika.

sequence_order_1 służy do zarządzania identyfikatorami zamówień w Magento 2.

ALTER TABLE sequence_order_1 AUTO_INCREMENT=155555551;

Następny identyfikator zamówienia zaczyna się od 155555551.

Zapytanie poniżej jest zdefiniowana na fakturze , jeśli chcesz zmienić id faktury

ALTER TABLE sequence_invoice_1 AUTO_INCREMENT=155555551;

Do wysyłki ALTER TABLE sequence_shipment_1 AUTO_INCREMENT=155555551;


To nie działa u mnie. Po kilku testowych zakupach, numery identyfikacyjne zamówień to nadal 000000013, 00000014 ...
— Luis Garcia

doskonała odpowiedź!
— huzefam


czy możesz podać wersję magento, dla której jest to poprawne?
— Felix,

jak zmienić pierwszą cyfrę nowego identyfikatora zamówienia
— Tirth Patel

16

To, co było wcześniej, eav_entity_storejest teraz objęte sales_sequence_profilei sales_sequence_meta. Tabela sequence_order_1jest zapełniana po złożeniu zamówienia.


Czy możesz z grubsza podać numery wersji Magento, dla których jest to prawdą i działa?
— Felix,

Nie spotkałem się z żadnymi zmianami w zachowaniu w tym, myślę, że dotyczy to od 2.0.0 do aktualnej wersji 2.2.1
— Kristof na Fooman

Wciąż tak samo na 2.2.4, właśnie go przetestowałem.
— Frank Groot,

7

Format nowego identyfikatora zamówienia jest domyślnie definiowany przez stałą w

Magento \ SalesSequence \ Model \ Sequence:

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

Jest to wzorzec funkcji sprintf (), który tworzy nowy identyfikator. Aby usunąć zera wiodące, musisz przekazać swój wzorzec do konstruktora w następujący sposób:

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

lub rozszerz klasę sekwencji i zmieniaj według potrzeb


6

Chociaż wszystkie powyższe odpowiedzi są w pełni / częściowo poprawne, pomyślałem, aby zapisać odpowiedź, ponieważ byłoby to pomocne dla przyszłych czytelników. Ta odpowiedź dotyczy dwóch pytań:

1) Jak zmienić numer porządkowy zamówienia?

2) Jak dodać Prefiks lub Sufiks do numeru zamówienia?

Przed wprowadzeniem jakichkolwiek ślepych zmian w bazie danych powinieneś zrozumieć, która tabela sekwencji jest z czym powiązana. Możesz to sprawdzić z tabelisales_sequence_meta

Uruchom zapytanie select * from sales_sequence_meta; każdego sklepu przypisana była tabela sekwencji. Zanotuj nazwę tabeli: Zamówienie, Faktura, kredyt lub przesyłka.

Po wykonaniu tej czynności przejdź na przykład do tabeli, jeśli chcesz edytować goto numer zamówienia sequence_order_1i zmienić AUTO_INCREMENTwartość

alter table sequence_order_1 AUTO_INCREMENT=617;

To wszystko, co jest wymagane do skoku sekwencji zamówień.

Teraz przejdź dalej, jeśli kopiesz więcej i masz wymaganie, aby dodać Prefiks / Sufiks, aby zamówić, wykonaj następujące kroki:

Przejdź do tabeli sales_sequence_profilei sprawdź dane

select * from sales_sequence_profile;

Zobaczysz kolumnę prefixi „sufiks”. Początkowo byłoby NULL. Możesz dodać tam wartość prefiksu i sufiksu dla odpowiedniego, meta_idktóry możesz zmapować z tabelisales_sequence_meta

Spowoduje to zmianę prefiksu / sufiksu zamówienia dla wszystkich zamówień.

Mam nadzieję, że to pomaga wszystkim !! Twoje zdrowie !!


4


Nowa instalacja: Jeśli korzystasz z Magento 2.2.0+ i uruchamiasz nową instalację z włączoną obsługą wielu sklepów (ta opcja jest domyślnie włączona), możesz po prostu uruchomić następujące zapytania przed złożeniem zamówienia za pośrednictwem witryny:

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;

Należy pamiętać, że 303to tylko numer, który wybrałem dla naszej witryny, ponieważ nasza stara platforma została przerwana pod numerem 300 i chciałem zachować spójność. Pamiętaj również, że nie potrzebujesz żadnych zapytań, które kończą się, _1jeśli włączysz tryb pojedynczego sklepu.

Istniejąca instalacja:
Jeśli już korzystasz z Magento 2.2.0+ (lub zaktualizowałeś go) i po prostu chcesz podnieść liczby, nie zmieniać dopełnienia ani dodawać znaków, po prostu sprawdź bieżącą wartość AUTO_INCREMENT w poniższych tabelach (zakładając, że wiele witryn ):

  • sequence_creditmemo_0
  • sequence_creditmemo_1
  • ciąg_faktury_0
  • faktura_sekwencyjna_1
  • kolejność_0
  • Kolejność__1
  • kolejność_0
  • kolejność__1

I zmień je za pomocą zapytań alter pokazanych powyżej, ale upewnij się, że nowa wartość, której używasz, jest większa niż wartość, którą otrzymujesz po sprawdzeniu bieżącej wartości AUTO_INCREMENT.

Jeśli masz zamiar zadzierać z dopełnieniem lub dodać niestandardowy wzór, musisz zobaczyć inne odpowiedzi tutaj i przejrzeć następujące tabele:

  • sales_sequence_meta
  • profil_sekwencji sprzedaży

Aktualizacja: sklepy wielostanowiskowe?
Dla tych, którzy nie znają wielu sklepów, jest to funkcja, która pozwala na uruchamianie całkowicie oddzielnych sklepów od tej samej instalacji Magento. Częstym powodem jest obsługa innych języków. Z tego powodu możesz wybrać widok sklepu, na który patrzysz (jeśli włączony jest wiele sklepów) podczas aktualizacji konfiguracji i wykonywania innych czynności, na przykład.

Z tego powodu Magento doda podkreślenie i liczbę na końcu niektórych tabel, aby śledzić różne widoki sklepu. Zauważysz, jak zapytania, które podałem, wyglądają jak zduplikowane tabele, ale kończą się różnymi liczbami, w tym przypadku 0 lub 1. Gdybyś miał kilka sklepów / widoków, liczby te zwiększałyby się, na przykład _2 lub _3. Pozwala to na zarządzanie identyfikatorami każdego sklepu inaczej. Twoja zmiana w systemie identyfikatorów w jednym widoku (sklepie) nie musi być taka sama w innym.

Jest to poza zakresem tego postu, ale ten sam system numeracji stosuje się do innych tabel w bazie danych, co pozwala naprawdę traktować i wpływać na każdy widok sklepu inaczej. Na przykład możesz mieć zupełnie inny motyw na sklep.


Dlaczego ciągle wspominasz o wielu sklepach? Co by było inaczej, gdybyś miał włączony tryb pojedynczego sklepu?
— Condor,

1
Odpowiedziałem: „... pamiętaj, że nie potrzebujesz żadnych zapytań, które kończą się na _1, jeśli włączyłeś tryb pojedynczego sklepu”. Zauważ, że podane przeze mnie zapytania wywołują coś, co wygląda jak zduplikowane tabele, z wyjątkiem tego, że koniec ma w tym przypadku liczbę 0 lub 1. Jeśli wyłączyłeś wiele sklepów, nie zobaczysz nic _0 tylko z _1 lub _2 lub _3 i tak dalej. Dodałem aktualizację, aby to wyjaśnić.
— Blizzardengle,

2

Zmień sekwencję Aby zmienić uzupełnienie numeru zamówienia, edytuj Sequence.php (uważam, że jest lepszy sposób poprzez di.xml)

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

Edytuj ten wiersz

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

Zmień „9” na żądane wypełnienie

Przykład

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

Zmień prefiks

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

Aby wszystko było łatwe, dodaj Fooman ten sam numer faktury zamówienia


1
Edytowanie wzoru wypełnienia w plikach podstawowych jest złym pomysłem, należy użyć metody „moja nazwa wyświetlana”, aby zmienić wzór wypełnienia.
— Timon de Groot

1
Co to za magento? (admin> Sklepy> Sprzedaż> Numer zamówienia) Używam MAG 2.2.2, ale kolejność menu wydaje się być zmieniona.
— Mohammed Joraid

1

Zmień identyfikator przyrostu zamówienia

  1. Otwórz administratora PHP
  2. Znajdź i kliknij tabelę o nazwie: sequence_order_1
  3. Kliknij kartę „Operacje” i pod „AUTO_INCREMENT” edytuj żądany numer zamówienia.

W przypadku innego sklepu wykonaj ten sam krok

  1. Znajdź i kliknij tabelę o nazwie: sekwencja_domeny_2
  2. Kliknij kartę „Operacje” i pod „AUTO_INCREMENT” edytuj żądany numer zamówienia.

Spowoduje to zmianę numeru zamówienia dla wielu sklepów


0

Aby dostosować numery faktur za pośrednictwem PHPMYADMIN

INSERT INTO sequence_order_1(sequence_value ) VALUES („2000”);

2000 będzie nowym numerem początkowym


0

Tą wskazówką możesz wprowadzić zmiany do numeru zamówienia bezpośrednio w bazie danych Magento 2

Przede wszystkim musisz otworzyć bazę danych administratora PHP. Następnie znajdź i otwórz tabelę „sales_sequence_profile”.

Następnie możesz wprowadzić zmiany w domyślnym numerze zamówienia w swojej witrynie Magento 2:

za. Zmień identyfikator przyrostu zamówienia

b. Zmień prefiks numeru zamówienia

do. Zmień sufiks numeru zamówienia

re. Zmień numer zamówienia Wartość początkowa

mi. Zmień długość pada

Widzę pełny samouczek w tym artykule: Kompletny samouczek do zmiany numeru zamówienia w Magento 2


Nazwa tabeli jest niepoprawna. powinien to być „sales_sequence_profile”
— Dennis van Schaik

0

Aby trwale pozbyć się (lub zmienić) dodatkowe zera, nie wolno zastępować podstawowych plików. W swoim app/etc/di.xmldodaj następujące i zmień"%s%'.09d%s" wartość (w tym przykładzie dwa 00 są uzupełnione):

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

Edycje w bazie danych numerów zamówień i faktur są doskonale opisane w odpowiedzi Rakesha Jesadiyi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.