Jeśli koncentrujesz się na dostarczaniu produktów lub usług innym firmom (B2B), a nie indywidualnym klientom, możesz się zastanawiać, czy standardowe oprogramowanie eCommerce jest odpowiednim wyborem. Rzeczywiście, proces zakupowy może się w takim przypadku znacznie różnić. Zazwyczaj ostateczna decyzja zakupowa angażuje więcej osób. Może być wiele osób, które wiedzą, jakie towary są potrzebne i są zaangażowane w dodawanie produktów do koszyka. Ktoś inny może być odpowiedzialny za dodawanie danych dotyczących wysyłki, płatności i fakturowania, a czasami jest dodatkowa osoba, która musi to zatwierdzić. W przypadku współpracy z organizacjami, często spotyka się indywidualnie negocjowane rabaty, warunki wysyłki lub płatności. Nawet jeśli korzystanie z tego samego sklepu dla B2B jest możliwe, warto wprowadzić kilka dostosowań, które ułatwią składanie zamówień przez organizacje.

Przykładowe funkcje

Przyjrzyjmy się, jakie funkcje w sklepie mogą ułatwić życie użytkownikom biznesowym i jak mogą one wyglądać.

  • Zarządzanie członkami organizacji z uprawnieniami — Wyznaczone konto w organizacji musi mieć możliwość dodawania i usuwania innych członków oraz przypisywania im uprawnień do innych funkcji w ramach organizacji.
  • Wspólny koszyk — wszyscy członkowie organizacji powinni mieć możliwość dodawania produktów do tego samego koszyka, aby później mogło to stać się jednym zamówieniem.
  • Wspólne dane do fakturowania zarządzane przez administratora organizacji.
  • Wspólna książka adresowa do wysyłki.
  • Podgląd historii zamówień z możliwością ich opłacenia.
  • Możliwość przeglądania faktur organizacji.
  • Możliwość ograniczenia promocji do jednej organizacji, aby miała ona indywidualny rabat.
  • Możliwość ograniczenia metod wysyłki lub płatności tylko do wybranych organizacji.

Jak można to wszystko zaimplementować w Syliusie?

Należy utworzyć nowy zasób do przechowywania danych organizacji, zgodnie z dokumentacją Syliusa. Pozwoli to na przechowywanie nazw organizacji oraz dodatkowych istotnych informacji, takich jak dane identyfikacji podatkowej organizacji. Dzięki pakietowi Sylius grid bundle, będziesz mógł również przeglądać i zarządzać danymi organizacji w panelu administracyjnym Syliusa.

Następnie należy utworzyć powiązanie między encją User a organizacją, dodając do niego dodatkowe właściwości, takie jak „rola w organizacji” czy „czy to powiązanie zostało zweryfikowane przez administratora organizacji”. Konieczne będzie rozszerzenie Sylius CustomerType oraz odpowiedniego szablonu, aby umożliwić klientom dodawanie dodatkowych danych podczas procesu rejestracji. Możesz stworzyć dodatkowe kontrolery do obsługi procesu zatwierdzania przez administratorów organizacji, a na koniec zaimplementować funkcję umożliwiającą podstawowe zarządzanie użytkownikami w ramach organizacji.

Dzielenie koszyków i zamówień w ramach organizacji można zaimplementować, modyfikując encję Order, która jest używana zarówno dla koszyków, jak i zamówień. Należy dodać powiązanie między koszykiem a organizacją, jeśli jest to koszyk stworzony przez użytkownika organizacji. Sylius używa CartContext do pobierania koszyka bieżącego użytkownika, co można rozszerzyć o logikę potrzebną do udostępniania koszyka w ramach organizacji. Należy również wprowadzić pewne dostosowania w miejscach, gdzie wyświetlane są zamówienia, aby poprawnie wyświetlać zamówienia składane w ramach organizacji.


Adresy można zmodyfikować w podobny sposób. Należy dodać powiązanie z organizacją, stworzyć miejsce do zarządzania adresami organizacji dla administratorów oraz ostatecznie rozszerzyć Sylius AddressType, aby umożliwić użytkownikom organizacji korzystanie z adresów organizacji jako miejsca docelowego wysyłki.


Listę zamówień organizacji można zaimplementować, używając pakietu Sylius resource bundle oraz grid bundle. Należy dodać odpowiednią konfigurację, filtrowanie i niestandardowe szablony, ale powinno być możliwe uzyskanie estetycznych widoków, spójnych z widokiem użytkowników indywidualnych, bez potrzeby dużej ilości kodu.

Korzystając z wtyczki do fakturowania Sylius, poprzez modyfikację konfiguracji siatki, można łatwo dodać podstawową funkcjonalność fakturowania dla organizacji bez potrzeby wielu godzin programowania. Możesz jednak również zdecydować się na zaimplementowanie własnej, niestandardowej funkcji fakturowania. Podobnie jak w przypadku listy zamówień organizacji, powinno być możliwe wyświetlanie faktur – bez względu na to, jak są tworzone w systemie, bez potrzeby dużej ilości nowego kodu. Wymagane będą pewne zmiany w szablonie i konfiguracji. Ponownie, dzięki kombinacji pakietów Sylius resource & grid bundle.


Obsługę promocji, metod wysyłki i metod płatności dla organizacji można zrealizować w podobny sposób. Dla każdej z nich będziesz musiał utworzyć regułę, formularz konfiguracji reguły oraz kombinację kontrolera reguł. Reguły pozwolą na ograniczenie metod i promocji, gdy nowe metody i promocje zostaną dodane przez ogólnego administratora sklepu. Sugeruję również skorzystanie z grid bundle i utworzenie nowych siatek, aby wyświetlić promocje i metody mające zastosowanie do wybranych organizacji. Może to naprawdę pomóc w nie zgubieniu się, jeśli masz dużo indywidualnie przypisanych metod.

Jak długo to potrwa?

Jak widzisz, zmiany nie wydają się bardzo skomplikowane, ale jest ich wiele. W wielu miejscach, zwłaszcza w szablonach, trzeba uwzględnić „czy to jest klient indywidualny, czy może klient kupujący dla organizacji” i odpowiednio wyświetlać informacje. Niektórych funkcji możesz nie potrzebować, albo możesz chcieć innych, np. personalizowane listy życzeń. Albo może potrzebujesz skomplikowanej, niestandardowej funkcji fakturowania? A może już znacznie dostosowałeś swój sklep i te wszystkie zmiany będą bardziej skomplikowane niż się wydaje przy czystej instalacji Syliusa.

Jest też inna opcja: możesz skorzystać z wtyczki do obsługi organizacji, która jest częścią pakietu B2B w module Sylius Plus. Wśród innych funkcji zawiera ona już opisaną funkcjonalność organizacji.

Jeśli masz jakieś pytania dotyczące bloga, albo funkcjinalności i wdrożenia eCommerce B2B, skontaktuj się z nami! Odpowiemy na wszystkie pytania.