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.

znak
źródło
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.
znak
źródło
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;

Rakesh Jesadiya
źródło
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.

Kristof w Fooman
źródło
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

moja nazwa wyświetlana
źródło
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 !!

Dexter
źródło
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.

Blizzardengle
źródło
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

Darren Sutherland
źródło
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

Divya
źródło
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

Darren Sutherland
źródło
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

Jameslj
źródło
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.

TheFrakes
źródło