Zarządzanie statusami zamówień w Magento 2
Zarządzanie statusami zamówień w Magento może być łatwe i wykonalne bez zagłębiania się w kod aplikacji, jeśli tylko zrozumiemy, jak one działają.
Na początku chciałbym zwrócić uwagę na to, że w Magento istnieją statusy zamówień (order status) i stany zamówień (order state), które są podobne do siebie. Główną różnicą jest to, że stany zamówień odpowiadają za umiejscowienie zamówienia we „flow” procesu zamówień i nie są one widoczne dla użytkownika. Statusy – w przeciwieństwie do stanów – są widoczne dla użytkownika. Magento 2 (podobnie jak Magento 1) posiada własny „flow” statusów zamówień, który obrazuje poniższy rysunek. Standardowo Magento nie daje nam możliwości ręcznej zmiany stanów i statusów zamówienia. Są one ustawiane automatycznie ze względu na akcję, którą na nim wykonamy (jak widać na rysunku). Oznacza to, że stworzenie np. faktury dla zamówienia automatycznie zmieni jego stan i status.

Rysunek 1. Proces przepływu zamówienia.
Wśród domyślnych stanów zamówień w Magento znajdziemy:
- Pending Payment – nadane zamówieniu, dla którego płatność się rozpoczęła, ale oczekuje na potwierdzenie,
- New – nadane nowym zamówieniom, które nie zostały opłacone,
- Processing – nadane zamówieniom dla których została stworzona faktura bądź dostawa, ale nie obie z tych rzeczy,
- Complete – dla zamówień z fakturą i dostawą,
- Closed – dla zamówień, które są ‘zwracane’ i użytkownik otrzymał zwrot środków,
- Canceled – nadawany przez administratora sklepu albo bramkę płatności, kiedy zamówienie nie zostało opłacone,
- On Hold – stan ustawiany ręcznie przez operatora sklepu,
- Payment Review – dla zamówień, które oczekują na potwierdzenie płatności.
Z kolei wśród domyślnych statusów zamówień znajdują się np.:
- Processing,
- Pending Payment,
- Suspected Fraud,
- Payment Review,
- Pending,
- On Hold,
- Complete,
- Closed, Canceled.
Jak łatwo zauważyć niektóre z nazw stanów pokrywają się z nazwami statusów, standardowo określając to samo miejsce w przepływie informacji o zamówieniu.
Każdy stan, może mieć przypisany jeden bądź więcej statusów zamówień. To sprawia, że zarządzanie zamówieniami jest łatwiejsze i elastyczniejsze. Dla przykładu, stan „Pending Payment”, w zależności od wybranej przez klienta metody płatności, może mieć przypisane do siebie następujące statusy zamówień:
- Pending Payment Card
- Pending Payment Paypal
- Pending Payment Store Credit
Jako operatorzy systemu, bez zagłębiania się w kod aplikacji, mamy okrojoną możliwość zarządzania statusami zamówień. Jesteśmy jednak w stanie tworzyć nowe statusy i przypisywać je do konkretnych stanów. Taki mechanizm umożliwia nam podmienienie pojedynczych statusów zamówienia.
Zmiana statusu zamówienia po stworzeniu Invoice i Shippingu na customowy
Aby zarządzać statusami zamówień, musimy zalogować się do panelu administracyjnego, a następnie z lewego menu wybrać sklepy i status zamówienia.

W tym miejscu możemy zarządzać statusami zamówień.
Dodajmy nowy status (przycisk „Utwórz nowy status”), pole „kod statusu” oznacza identyfikator statusu, którego używa Magento (i programista) – nie jest widoczny dla klienta, pole „Etykieta statusu” jest polem, które widzi klient.

Abyśmy mogli używać tylko tego statusu zamówienia dla każdego zakończonego zamówienia, odepnijmy najpierw status „Complete”, od stanu „Zakończone”, który oznacza zamówienie, dla którego została stworzony Invoice i Shipping.

Ostatnim krokiem będzie przypisanie nowo utworzonego statusu do stanu. Pamiętajmy o tym, żeby zaznaczyć „Użyj statusu zamówienia jako domyślny”, oraz „Widoczne na sklepie”. Dzięki takiej konfiguracji Magento będzie automatycznie przypisywało status „Customer Complete”, dla każdego zakończonego zamówienia.