Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Maciej Ostrowski: Podstawy implementacji multi-inwentarza w Magento

579 views

Published on

  • Be the first to comment

  • Be the first to like this

Maciej Ostrowski: Podstawy implementacji multi-inwentarza w Magento

  1. 1. Maciej Ostrowski „Modyfikacja indekserów na przykładzie obsługi wielu magazynów w Magento” MMeeeett MMaaggeennttoo PPoollaanndd 22001144
  2. 2. Case study Podstawy implementacji multi-inwentarza w Magento MMeeeett MMaaggeennttoo PPoollaanndd 22001144
  3. 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. 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
  5. 5. Inwentarz w Magento Meet Magento Poland 2014
  6. 6. Meet Magento Poland 2014 Nasz cel
  7. 7. Meet Magento Poland 2014 Nasz cel
  8. 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. 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
  10. 10. Mage_CatalogInventory Analiza struktury bazy danych Meet Magento Poland 2014
  11. 11. Jak to działa w Magento? Baza danych Meet Magento Poland 2014
  12. 12. cataloginventory_stock czy to zaszłość? ... Meet Magento Poland 2014
  13. 13. cataloginventory_stock ...wygląda, że zaszłość. Meet Magento Poland 2014
  14. 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
  15. 15. cataloginventory_stock_item Meet Magento Poland 2014
  16. 16. cataloginventory_stock_status • Front-end • Wynik wyliczeń indeksera • Używany podczas wyświetlania produktów Meet Magento Poland 2014
  17. 17. Creatuity_MultiwarehouseDropship Struktura bazy danych Meet Magento Poland 2014
  18. 18. Jak to działa u nas? Meet Magento Poland 2014
  19. 19. multiwarehouse_warehouse multiwarehouse_warehouse_stock_item multiwarehouse_warehouse_stock_item_reservation Meet Magento Poland 2014
  20. 20. Mage_CatalogInventory Krótka analiza modeli Meet Magento Poland 2014
  21. 21. Jak inwentarz jest odpytywany? Meet Magento Poland 2014 1. Back-end
  22. 22. Jak inwentarz jest odpytywany? Meet Magento Poland 2014 2. Front-end
  23. 23. Creatuity_MultiwarehouseDropship Nadpisanie modeli inwentarza Meet Magento Poland 2014
  24. 24. Mage::getModel('cataloginventory/stock_item')->load(1) Meet Magento Poland 2014 przed
  25. 25. Mage::getModel('cataloginventory/stock_item')->load(1) Meet Magento Poland 2014 po
  26. 26. Meet Magento Poland 2014
  27. 27. Mage_CatalogInventory Meet Magento Poland 2014 Indekser
  28. 28. Indekser „Stock Status” Meet Magento Poland 2014
  29. 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. 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. 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. 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. 33. Index (Magento CE) Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default Meet Magento Poland 2014
  34. 34. Index (Magento CE) Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default Meet Magento Poland 2014
  35. 35. Index (Magento CE) Mage_CatalogInventory_Model_Resource_Indexer_Stock_Default:: Meet Magento Poland 2014 ::reindexAll()
  36. 36. Index (Magento CE) Mage_CatalogInentory_Model_Resource_Indexer_Stock_Configurable Meet Magento Poland 2014
  37. 37. Spostrzeżenie I „Indeksery produktów złożonych bazują na wyniku indeksera produktu prostego” Meet Magento Poland 2014
  38. 38. Index (Magento EE) Enterprise_CatalogInventory_Model_Index_Action_Refresh* Meet Magento Poland 2014
  39. 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
  40. 40. Meet Magento Poland 2014 Konkluzja „Logikę indeksowania wystarczy zmienić w indekserze produktów prostych”
  41. 41. Meet Magento Poland 2014 Konkluzja „Logikę indeksowania wystarczy zmienić w indekserze produktów prostych” (w metodzie _getStockStatusSelect())
  42. 42. Creatuity_Multiwarehouses Nadpisanie zachowania Indeksera Meet Magento Poland 2014
  43. 43. Zapytanie przed Meet Magento Poland 2014
  44. 44. Zapytanie po Meet Magento Poland 2014
  45. 45. Meet Magento Poland 2014
  46. 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
  47. 47. Meet Magento Poland 2014 Pytania ?

×