Ganna Yevtushenko: PayPal - Unlocking global e-commerce opportunity
Maciej Ostrowski: Podstawy implementacji multi-inwentarza w Magento
1. Maciej Ostrowski
„Modyfikacja indekserów
na przykładzie obsługi wielu
magazynów w Magento”
MMeeeett MMaaggeennttoo PPoollaanndd 22001144
2. Case study
Podstawy implementacji
multi-inwentarza
w Magento
MMeeeett MMaaggeennttoo PPoollaanndd 22001144
3. Meet Magento Poland 2014
Wstęp
• Moduł Creatuity_MultiwarehouseDropship
– Do pobrania na http://creatuity.pl/meetmagento.zip
– Kod do wglądu w celach niekomercyjnych
• Prezentacja dla średnio-zaawansowanych
– Zakładamy podstawową znajomość działania indeksera
4. Charakterystyka
Creatuity_MultiwarehouseDropship
• Magento EE
• Podstawa do ERP
• Nastawiony na częstą aktualizację inwentarza w
sklepie z ok 1mln produktów.
• System rezerwacji czasowych
• Rozwiązanie szyte na miarę, a zatem utrata pewnej
ogólności
• Przezroczyste od strony front-end'u
Meet Magento Poland 2014
8. Dekompozycja problemu
• Analiza core Magento
• Dostosowanie struktury bazy danych
• Dostosowanie modeli inwentarza
• Dostosowanie procesu składania
zamówień
• Dostosowanie indeksera
Meet Magento Poland 2014
9. My skupimy się dzisiaj na:
• Dostosowaniu struktury bazy danych
Meet Magento Poland 2014
+Krótka analiza core
• Dostosowaniu modeli inwentarza
+Krótka analiza core
• Dostosowaniu indeksera
+Krótka analiza core
14. cataloginventory_stock_item
• Back-end
• Encja opisująca stan
inwentarza jednego
produktu
• Używana podczas
operacji na produkcie
• np.. dodanie do
koszyka
Meet Magento Poland 2014
29. Indexer (Magento CE)
Mage_CatalogInventory_Model_Indexer_Stock
Meet Magento Poland 2014
• Wejściowa klasa zarządzająca
indeksowaniem stocków
• Decyduje na które event'y
odpowiada
• Oddelegowuje faktyczne
reindexowanie do resource
modelu
30. Indexer (Magento CE)
Mage_CatalogInventory_Model_Resource_Indexer_Stock
Meet Magento Poland 2014
• Reindex produktu, reindexuje
także jego rodziców
• Najpier indeksują się produkty
proste, a później złożone
• Deleguje reindexowanie do
resource model'i, ze względu na
typ produktu
31. Index (Magento CE)
Mage_CatalogInventory_Model_Resource_Indexer_Stock_*
Meet Magento Poland 2014
• Właściwe klasy, które wykonują
reindexowanie
• Wykonuje zapytanie SELECT
które wylicza gotowe dane
• Zapisuje w paczkach po 1000 do
tabeli
cataloginventory_stock_status
• Tym samym, cała „logika”
reindexowania jest zawarta w
metodzie _getStockStatusSelect()
32. Index (Magento CE)
Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default::
::_getStockStatusSelect()
Meet Magento Poland 2014
• Indeksuje produkty proste
• Indeksuje produkty o zadanych id,
albo wszystkie
• 'qty' jest przepisywane z
inwentarza
• 'status' jest ustawiany na
podstawie konfiguracji inwentarza
oraz sklepu
• O wyniku decyduje to, czy produkt
jest włączony
33. Index (Magento CE)
Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default
Meet Magento Poland 2014
34. Index (Magento CE)
Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default
Meet Magento Poland 2014
35. Index (Magento CE)
Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default::
Meet Magento Poland 2014
::reindexAll()
36. Index (Magento CE)
Mage_CatalogInentory_Model_Resource_Indexer_Stock_Configurable
Meet Magento Poland 2014
37. Spostrzeżenie I
„Indeksery produktów złożonych bazują na
wyniku indeksera produktu prostego”
Meet Magento Poland 2014
38. Index (Magento EE)
Enterprise_CatalogInventory_Model_Index_Action_Refresh*
Meet Magento Poland 2014
39. Spostrzeżenie II
„Indekser EE oddelegowuje logikę do tych
samych resource modeli co w CE.
(także ze względu na typ produktu)”
Meet Magento Poland 2014
46. Podsumowanie
• Udało nam się zmienić system, tak aby
bieżąca dostępność produktu była
określana na podstawie naszych tabelek.
• Nie omówiliśmy procesu składania
zamówienia
Meet Magento Poland 2014