Pomyłka z identyfikatorem zamówienia, identyfikatorem przyrostu zamówienia i nie otrzymuję identyfikatora zamówienia jako 20001201

28

Jestem trochę mylony z identyfikatorem zamówienia i identyfikatorem przyrostu zamówienia. Czy ktoś może mi pomóc zrozumieć różnicę między tymi dwoma?

Mam obserwatora dla Sales_order_place_after, gdzie przechowuję szczegóły sprzedaży w niestandardowej tabeli.

Ale z

$orderId = $observer->getEvent()->getOrder()->getId();

Dostaję identyfikatory zamówienia jako normalne identyfikatory, takie jak 112, 113 lub 110 itd., Nie jak 20001201

Więc jaki jest prawdziwy identyfikator zamówienia, 20001201 lub 112?

Muszę dalej przetwarzać dane zamówienia w oparciu o ten identyfikator zamówienia, używam 112, 113 itd. I to działa, ale muszę to wyjaśnić.

Charlie
źródło

Odpowiedzi:

23

Różnica polega na:

  • order_id to wewnętrzny identyfikator zamówienia Magento
  • identyfikator przyrostu zamówienia to identyfikator, który przekazujesz klientowi

Możesz łatwo załadować zamówienie za pomocą wewnętrznego id_danych:

Mage::getModel('sales/order')->load($orderId);

PS: Jeśli potrzebujesz, możesz łatwo uzyskać identyfikator przyrostu z załadowanego zamówienia:

$order->getIncrementId();
mpaepper
źródło
1
Masz na myśli, że programista używa wewnętrznego identyfikatora, a klienci używają Increment_id?
Charlie
Charlie, post Mariusza poniżej rozróżnia te dwa, a odpowiedź mpaepper faktycznie pokazuje metodę, która jest wywoływana w celu zwrócenia identyfikatora przyrostu (który jest faktycznie „identyfikatorem zamówienia” w widoku administratora i dla klienta).
Joshua Chavanne
26

id= sales_flat_orderwartość klucza podstawowego tabeli. Jest to automatycznie zwiększane dla każdego zamówienia, które otrzymasz w swoim sklepie. Zwykle zaczyna się od 1 i idzie w górę.

increment id= „przyjazny dla użytkownika” numer wygenerowany przed złożeniem zamówienia. Musi być unikalny i wykorzystywany przez internetowe metody płatności jako odniesienie (ale nie tylko).
Identyfikator przyrostu domyślnie wygląda następująco.

                  100000104
                  ||   || |
 store view id ---||   || |
                   |---||-|
                     |   |----- an increment number kept in the table eav_entity_store
    a lot of zeros --|

Liczba zer jest zmienna. Jest dodawany za pomocą, str_padaby długość identyfikatora przyrostu bez identyfikatora sklepu wynosiła 8.

Marius
źródło
Zapamiętaj moje nowe pytanie, ale czy pierwszy bajt nie jest wartością prefiksu z tabeli EAV, a nie store_view_id?
someGuyOnTheWeb
4
@someGuyOnTheWeb. Cóż ... tak i nie. Technicznie rzecz biorąc, prefiks (nie tylko pierwszy bajt ... Pracowałem nad projektami, które miały 2-cyfrowy prefiks) pochodzi z tabeli eav_entity_store. Ale dla pierwszego rzędu nie ma rekordu w tej tabeli. Tak powstaje jeden. Po utworzeniu identyfikator sklepu jest zapisywany jako increment_prefix. Zobacz, jak to działa w metodzie Mage_Eav_Model_Entity_Type::fetchNewIncrementId. Począwszy od linii: if (!$entityStoreConfig->getId()) {.
Marius
5

Zamówienie sprzedaży zawiera dwie wartości: identyfikator_ podmiotu (identyfikator zamówienia) i identyfikator_kwotowania (identyfikator przyrostu zamówienia). Identyfikator podmiotu jest kluczem podstawowym w tabeli zamówień. Oznacza to, że używasz tego do załadowania rzeczywistej jednostki zamówienia. Patrz poniżej

Mage::getModel("sales/order")->load($enityId);

I przetrwaj

$order->getId(); lub $order->getEntityId();

Increment_id jest zwykle bardziej przyjaznym numerem, który często jest specyficzny dla strony internetowej / sklepu, tj. 20001201 2 z przodu często oznacza, że ​​jest to zamówienie z drugiego sklepu / strony internetowej (nie pamiętam, które). Jest to często określane jako rzeczywisty identyfikator zamówienia. Możesz załadować jednostkę zamówienia za pomocą tego increment_id

Mage::getModel("sales/order")->loadByIncrementId($incrementId);

I przetrwaj

$order->getRealOrderId(); or $order->getIncrementId();
Danny Dev Nz
źródło
0

Ten order_id, który moim zdaniem jest taki sam jak entity_id, jest kluczem podstawowym w tabeli sales_order używanym do łączenia wszystkich tabel eav. Jest używany wewnętrznie w Magento.

order_increment_id służy do wyświetlania klientowi

TBI Infotech
źródło