Profesjonalny system B2B dla Magento 2 Open Source

Kowal B2B Suite to pakiet modułów Magento 2 zaprojektowany dla firm, które chcą prowadzić sprzedaż B2B na Magento Open Source bez rezygnowania z natywnego katalogu, koszyka, checkoutu, MSI, store view, website scope i mechanizmów integracyjnych platformy.
Kompatybilność
2.4.9, 2.4.8, 2.4.7
Motyw Hyvä
Zgodny z motywem Hyvä
1 230,00 zł
Wyślij znajomemu

Zapytaj o ten produkt

Opis / Profesjonalny system B2B dla Magento 2 Open Source

MAGENTO 2 · MAGENTO OPEN SOURCE · FIRMY · HANDEL B2B

Połącz sprzedaż B2B i B2C w jednej instalacji Magento.

Kowal B2B Suite rozbudowuje Magento Open Source o firmy, weryfikację NIP i VAT UE w VIES, indywidualne warunki handlowe, listy zakupowe, oferty RFQ, kredyt kupiecki, akceptacje, dokumenty i integracje.

Obsługuj kontrahentów w portalu samoobsługowym, a pracę handlowców prowadź w panelu Magento.

17 modułów i bazowy motyw · REST i GraphQL · Adapter konta Hyvä

JAK TO DZIAŁA W PRAKTYCE

01 · Ustalasz model handlowy
Definiujesz firmy, kanały, ceny i źródła danych.

02 · Konfigurujesz proces B2B
Przypisujesz role, katalog, warunki oraz akceptacje.

03 · Łączysz systemy i wdrażasz
Dobierasz adaptery i sprawdzasz pełne scenariusze.

Pełny zakres funkcji Kowal B2B Suite

Od rejestracji kontrahenta i ustalenia ceny po ofertę, zamówienie, dokumenty i wymianę danych. Dobierz aktywowane obszary do zasad sprzedaży swojej firmy.

Firmy i cykl obsługi kontrahenta

Prowadź kartotekę firm z nazwą, NIP-em, identyfikatorem zewnętrznym i opiekunem handlowym.

  • Rejestracja firmy i jej akceptacja, aktywacja, blokowanie lub odrzucenie.
  • Statusy: oczekująca, aktywna, nieaktywna, zablokowana i odrzucona.
  • Powiązania z kontami klientów Magento, grupą klientów i kanałami sprzedaży.
  • Historia zmian firmy, użytkowników, ról, adresów i kontaktów.

Użytkownicy, role, adresy i kontakty

Jedna firma może mieć wielu kupujących oraz własne role z zestawem uprawnień.

  • Przypisywanie i dezaktywacja użytkowników oraz zmiana ich ról.
  • Osobne prawa do zamawiania, podglądu zamówień firmy, RFQ, dokumentów, użytkowników i adresów.
  • Adresy rozliczeniowe i dostawy, adresy domyślne dla website oraz wspólne adresy firmy.
  • Kontakty firmowe, w tym kontakt główny; edycja dostępna zgodnie z uprawnieniami.
  • Dane firmy i NIP pozostają oddzielone od prywatnych danych adresowych kupującego.

Weryfikacja NIP i VAT UE w systemie VIES

Sprawdzaj NIP z prefiksem kraju, czyli numer VAT UE, bezpośrednio w karcie firmy B2B w panelu Magento. Przycisk „Sprawdź w VIES” uruchamia weryfikację i wyświetla wynik przy polu NIP.

  • Numery VAT UE z kodem kraju, np. PL1234567890; weryfikacja obejmuje kraje rozpoznawane przez Magento jako należące do UE.
  • Normalizacja zapisu: ignorowanie spacji, kropek i myślników oraz zamiana liter na wielkie przed sprawdzeniem.
  • Obsługa greckiego prefiksu EL przez mapowanie na kod kraju GR używany w Magento.
  • Kontrola formatu i kraju przed wysłaniem zapytania do VIES oraz komunikat wskazujący potrzebę poprawienia danych.
  • Rozróżnienie wyników: numer prawidłowy w VIES, numer nieprawidłowy w VIES, nieprawidłowe dane wejściowe lub niedostępna weryfikacja.

Weryfikację uruchamia uprawniony administrator dla wcześniej zapisanej firmy i numeru VAT, w kontekście przypisanego jej aktywnego kanału B2B. Zmieniony numer należy najpierw zapisać.

Zapis wyników VIES i kontrola aktualności danych

Wynik sprawdzenia jest zapisywany od razu przy firmie wraz z datą i godziną weryfikacji oraz sprawdzonym numerem VAT. Ułatwia to ustalenie, które dane wymagają ponownego sprawdzenia.

  • Kolumna statusu VIES na liście firm z filtrem: niesprawdzony, prawidłowy, nieprawidłowy, błędny format lub VIES niedostępny.
  • Kolumna daty sprawdzenia z filtrowaniem według zakresu dat.
  • Reset po zmianie NIP-u: zapisanie innego numeru przywraca status „niesprawdzony” oraz usuwa poprzednią datę i zapis sprawdzonego numeru.
  • Zachowanie wyniku przy zmianie samego formatowania, np. spacji, separatorów lub wielkości liter, oraz przy edycji innych danych firmy.
  • Powiązanie wyniku z właściwym numerem: jeśli NIP zmieni się w trakcie sprawdzania, moduł odrzuca zapis wyniku dla poprzedniego numeru i prosi o ponowienie.

Gdy usługa nie może potwierdzić numeru, administrator otrzymuje osobny komunikat o niedostępności weryfikacji z prośbą o ponowienie później. Błąd połączenia jest odróżniany od negatywnego wyniku VIES.

B2B i B2C w jednej instalacji

Włączaj B2B dla wybranych website. Wszystkie widoki sklepu w danym website korzystają z tego trybu, a pozostałe website mogą obsługiwać B2C.

  • Firma może mieć przypisania do wielu aktywnych website B2B.
  • Aktywność relacji i grupa klientów firmy są ustalane osobno dla każdego website.
  • Ceny, katalogi, dokumenty, limity, oferty i integracje działają we właściwym kontekście firmy i kanału.
  • Dodanie website do firmy nie przenosi kont Magento Customers i nie zmienia automatycznie ich grup.

Kontrola dostępu i zamknięty portal B2B

Wybierz jeden z trzech modeli: sklep publiczny, sklep wymagający logowania albo publiczny katalog z ograniczeniami dla gości.

  • Wymuszone logowanie z wyjątkami dla wybranych akcji lub ścieżek URL.
  • Powrót do żądanej strony po zalogowaniu.
  • Niezależne ukrywanie cen oraz wyłączanie zakupów dla gości.
  • Własne komunikaty i link do logowania zamiast ceny lub przycisku zakupu.
  • Ukrycie standardowego „Dodaj do koszyka” oraz serwerowa blokada dodawania na klasycznym frontendzie.
  • Rejestracja klientów pozostawiona otwarta lub wyłączona.

Ochrona standardowego frontendu wymaga osobnego odwzorowania w niestandardowym publicznym API lub frontendzie headless.

Migracja obecnych klientów do firm

Akcja masowa Assign or Create Company pozwala uporządkować istniejącą bazę klientów Magento.

  • Filtrowanie klientów przypisanych i nieprzypisanych do firmy, także w eksporcie i akcjach masowych.
  • Dopasowanie firmy po znormalizowanym NIP-ie lub utworzenie nowej firmy; konta bez NIP-u otrzymują osobne firmy.
  • Skopiowanie domyślnych adresów i głównego kontaktu do nowej firmy.
  • Nadanie roli kupującego z podstawowymi prawami B2B.
  • Zachowanie dotychczasowych grup klientów, pomijanie już przypisanych kont oraz raport błędów i wyników migracji.

Panel administracyjny i operacje masowe

Zarządzaj firmami i ich powiązanymi danymi z jednego menu B2B. Karta klienta Magento zawiera pole przypisania do firmy.

  • Listy i formularze firm, użytkowników, ról, adresów, kontaktów i audytu.
  • Masowa zmiana statusu, opiekuna, przypisania do website, aktywności relacji i grupy klientów firmy.
  • Masowe tworzenie lub aktualizacja ról oraz możliwość nadania roli wszystkim aktywnym użytkownikom wybranych firm.
  • Osobna transakcja i wpisy audytowe dla każdej przetwarzanej firmy.
  • Uprawnienia administratorów Magento ograniczające dostęp do poszczególnych operacji.

Cenniki, ceny kontraktowe i progi ilościowe

Ustalaj ceny według firmy, website, SKU, waluty i ilości. Priorytet ma cena kontraktowa, następnie przypisany cennik B2B, a potem cena katalogowa Magento.

  • Wiele cenników i ich przypisania do firm z priorytetami.
  • Ceny kontraktowe oraz pozycje cenników z progami ilościowymi i polami okresu obowiązywania.
  • Zastosowanie cen kontraktowych i cennikowych w koszyku.
  • Indeksowanie cen, audyt zmian i narzędzie Explain Price pokazujące źródło wybranej ceny.
  • Import i eksport CSV pozycji cennika oraz obsługa cen przez API.

Podpowiedzi cen w RFQ uwzględniają sklep, klienta, ilość, walutę i podatki; przy źródle katalogowym także odpowiednie promocje Magento.

Katalog dopasowany do firmy

Ograniczaj widoczność produktów regułami dla konkretnego kontrahenta lub całego website.

  • Reguły obejmujące wskazane produkty, kategorie albo cały katalog.
  • Akcje allow i deny; zakaz ma pierwszeństwo przed zezwoleniem.
  • Indeks widoczności i filtrowanie list produktów na frontendzie.
  • Kontrola dostępu do ukrytego SKU oraz ponowna walidacja w listach zakupowych, RFQ i checkout.
  • Podgląd widoczności produktu dla firmy i przebudowa indeksu przez API.

Brak pasującej reguły sam w sobie nie ukrywa produktu. Oferta pozostaje oparta na natywnym katalogu Magento.

Szybkie zamówienia i listy zakupowe

Klient tworzy nazwane listy zakupowe i dodaje wiele pozycji po SKU, zamiast wyszukiwać produkty pojedynczo.

  • Wklejanie do 100 wierszy jednocześnie: SKU, ilość i opcjonalna notatka, np. SKU-001;10;Dostawa do magazynu.
  • Listy z flagą domyślną, pozycjami, ostatnią ceną B2B i walutą.
  • Sprawdzenie SKU, statusu produktu, website, widoczności dla firmy, dodatniej ilości i ceny B2B.
  • Dodanie listy do koszyka po ponownej walidacji.
  • Podgląd list i usuwanie pozycji przez administratora, eksport pozycji do CSV.
  • Narzędzie Debug SKU oraz ekrany logów importów i błędów wierszy dla procesów zasilających te dane.

RFQ: zapytanie ofertowe z konta klienta

Uprawniony kupujący może sam wysłać zapytanie z tytułem, notatką i od 1 do 200 pozycji.

  • Wyszukiwanie po SKU, nazwie produktu oraz istniejących atrybutach EAN, EAN13, GTIN lub barcode.
  • Podpowiedzi ograniczone do aktywnych, widocznych produktów typu simple i virtual.
  • Ilość, opcjonalna oczekiwana cena jednostkowa netto i komentarz do pozycji.
  • Podgląd cen netto i brutto oraz odświeżanie podpowiedzi po zmianie ilości z zachowaniem ręcznie wpisanej ceny.
  • Rozliczanie ceny w walucie sklepu i zgodnie z jego konfiguracją podatkową.
  • Walidacja całego zapytania; błąd pozycji wycofuje zapis, a formularz zachowuje dane do poprawy.

RFQ: przygotowanie i negocjowanie oferty

Handlowiec tworzy RFQ także w panelu Magento, wybierając website, Store View, firmę, klienta, walutę i produkty.

  • Zapis szkicu lub wysłanego zapytania; wyszukiwanie produktów i podpowiedzi cen netto/brutto.
  • Ceny oczekiwane i oferowane, suma negocjowana, termin ważności, komentarze i notatki handlowe.
  • Statusy procesu, historia decyzji oraz ochrona przed akceptacją oferty po terminie.
  • Wysłanie gotowej oferty e-mailem z linkami do podglądu i PDF wymagającymi zalogowania.
  • Akceptacja lub odrzucenie przez klienta, opcjonalny powód odrzucenia oraz decyzje administratora.
  • Osobny PDF klienta i administratora; notatki wewnętrzne i historia administracyjna pozostają w wariancie admina.

Od zaakceptowanej oferty do zamówienia

Przenieś pozycje i uzgodnione ceny z zaakceptowanej oferty do procesu zakupowego Magento.

  • Convert to Cart tworzy koszyk klienta z pozycjami i cenami ofertowymi.
  • Klient z prawem do zamawiania przechodzi do standardowego checkoutu i wybiera adres, dostawę i płatność.
  • Create Order w panelu tworzy zamówienie automatycznie, gdy dostępne są wymagane adresy oraz jednoznaczne metody płatności i dostawy.
  • Gdy potrzebny jest wybór warunków, oferta trafia do natywnego formularza tworzenia zamówienia w panelu.
  • Zachowanie kontekstu Store View oferty i powiązania z przygotowanym koszykiem lub zamówieniem.

Checkout, płatności, dostawy i numer PO

Standardowy proces zamówienia Magento zostaje uzupełniony o reguły B2B.

  • Kontrola aktywnej firmy, przypisania do website i prawa użytkownika do zamawiania.
  • Walidacja katalogu i dostępności ceny B2B przy składaniu zamówienia.
  • Reguły dozwolonych metod płatności i dostawy dla firmy oraz website.
  • Firmowe adresy rozliczeniowe i dostawy z domyślnymi wartościami właściwymi dla kanału.
  • Numer zamówienia zakupu klienta (PO) i komentarz do zamówienia.
  • Zapis firmy, kupującego, statusu kredytu, akceptacji i eksportu w kontekście B2B zamówienia.

Limity kupieckie i warunki płatności

Kontroluj limit, wykorzystanie i dostępną kwotę osobno dla firmy, website i waluty.

  • Warunki płatności, aktywacja lub blokada limitu i opcja dopuszczenia jego przekroczenia.
  • Wybór metod płatności korzystających z kredytu; pozostałe metody działają bez skonfigurowanego limitu.
  • Atomowa rezerwacja przed złożeniem zamówienia i przypisanie jej do zapisanego zamówienia.
  • Zwolnienie rezerwacji po błędzie bez utworzonego zamówienia, pełnej zapłacie, anulowaniu lub zamknięciu.
  • Ręczne korekty wykorzystania, podgląd ekspozycji i historia zdarzeń.
  • Cron uzgadniający rezerwacje po przerwanym procesie lub chwilowym błędzie.

Częściowa zapłata pozostawia pełną rezerwację do całkowitego rozliczenia lub anulowania.

Akceptacja zamówień i kontrola realizacji

Ustal reguły akceptacji według firmy, website, waluty i progu wartości. Przy wielu regułach znaczenie mają priorytet i próg kwotowy.

  • Przypisanie aktywnych użytkowników firmy jako akceptujących.
  • Automatyczne utworzenie oczekującego wniosku dla zamówienia spełniającego regułę.
  • Decyzje: zatwierdzenie, odrzucenie lub anulowanie, z komentarzem i audytem.
  • Oznaczenie eksportu jako zablokowanego oraz wstrzymanie zamówienia, gdy jego stan na to pozwala.
  • Po akceptacji aktualizacja statusu B2B i zwolnienie wstrzymania; odrzucenie lub anulowanie pozostawia blokadę eksportu.

Gotowy mechanizm zamyka oczekujący wniosek jedną decyzją. Wieloetapowy obieg wymaga dodatkowego rozszerzenia, a integracja musi respektować status blokady eksportu.

Dokumenty handlowe w portalu klienta

Udostępniaj faktury, korekty, dokumenty dostawy/WZ i potwierdzenia zamówień właściwej firmie.

  • Automatyczne tworzenie dokumentów z zamówień, faktur, wysyłek i korekt Magento Sales.
  • Konfiguracja źródła dokumentów, statusu początkowego i generowania poszczególnych typów; obsługa modelu hybrydowego Magento + API.
  • Ręczny upload PDF w panelu, metadane, daty, kwoty, waluty i powiązania z encjami Magento.
  • Oryginalne pliki z systemu zewnętrznego udostępniane bez zmiany ich zawartości.
  • Pobieranie po sprawdzeniu firmy, website, uprawnień i statusu dokumentu.
  • Podgląd dostępu klienta, plików i logów synchronizacji w panelu.

Edytowalne PDF-y i wersje językowe

Wspólny generator PDF obsługuje dokumenty sprzedaży i oferty RFQ.

  • Szablony HTML/CSS edytowane w panelu, z podglądem na danych przykładowych.
  • Osobne szablony według typu dokumentu, website i odbiorcy; lokalny szablon ma pierwszeństwo przed globalnym.
  • Własne tytuły potwierdzeń, faktur, korekt, WZ i ofert handlowych.
  • Logo, dane sprzedawcy i nabywcy, NIP, adresy, pozycje, podsumowania oraz informacje i instrukcje płatności i dostawy w dokumentach Sales.
  • Wariant RFQ dla klienta oddzielony od danych wewnętrznych administratora.
  • Tłumaczone etykiety zgodnie z językiem sklepu; słowniki obejmują polski i wiele innych języków europejskich.

Zmiany szablonu dotyczą nowo generowanych PDF-ów. Wcześniej zapisane pliki wymagają ponownego wygenerowania.

Konto firmy i adapter Hyvä Themes

Panel firmy łączy dane kontrahenta, adresy, kontakty, użytkowników, dokumenty, kredyt, listy zakupowe i RFQ.

  • Firmowe adresy oraz pięć ostatnich zamówień w natywnym panelu konta.
  • Podgląd zamówień własnych lub całej firmy zależnie od uprawnień, chronione linki PDF i ponowne zamówienie dla uprawnionego pierwotnego kupującego.
  • Sześć przełączników widoczności natywnych linków: adresy, zamówienia, pliki do pobrania, zapisane płatności, recenzje i newsletter.
  • Dołączony opcjonalny adapter Hyvä Themes z responsywnymi tabelami, formularzami i nawigacją konta.
  • Włączenie adaptera per Store View; domyślnie wyłączony, aktywny tylko przy Hyvä i B2B.

Adapter obejmuje konto klienta. Hyvä Checkout, koszyk i minicart wymagają osobnego zakresu integracji. Przełączniki menu sterują widocznością linków, a uprawnienia są sprawdzane niezależnie.

Import i eksport CSV danych B2B

Przenoś i aktualizuj dane za pomocą profili przypisanych do konkretnego website.

  • Firmy, przypisania użytkowników i role wraz z uprawnieniami.
  • Definicje cenników, ceny kontraktowe i reguły widoczności katalogu.
  • Metadane dokumentów, powiązania istniejących plików dokumentów i limity kupieckie.
  • Upload CSV, walidacja i tryb dry-run, który pozwala sprawdzić import przed zapisem.
  • Historia zadań, logi błędów z numerem wiersza oraz pobieranie raportu błędów i pliku eksportu.
  • Oddzielny import i eksport pozycji cenników w obszarze Pricing.

Import powiązań użytkowników korzysta z istniejących kont Magento; import plików dokumentów wskazuje pliki już dostępne w dozwolonej lokalizacji.

REST API i GraphQL

Udostępnij procesy B2B integracjom lub własnym interfejsom przez API.

  • REST: konfiguracja website, firmy i użytkownicy, produkty, dostępność MSI, ceny, katalog, listy zakupowe, RFQ, dokumenty, limity, akceptacje, kontekst zamówień, import/eksport i integracje.
  • Operacje zbiorcze na firmach oraz klucz idempotencji przy tworzeniu firmy.
  • Raporty produktowe, w tym braki tłumaczeń i danych magazynowych.
  • GraphQL: odczyty danych firmy, cen, list, ofert, dokumentów, kredytu, akceptacji i zadań integracyjnych.
  • Mutacje GraphQL dla list zakupowych, procesu RFQ oraz publikowania, przetwarzania i ponawiania zadań integracji.

Zakres dostępu zależy od uprawnień i kontekstu operacji. REST i GraphQL udostępniają określone kontrakty; ich zestawy operacji nie są identyczne.

Integracje ERP, PIM, WMS i CRM

Pakiet dostarcza infrastrukturę do połączenia Magento z systemami firmy.

  • Profile według website, typu systemu, kierunku wymiany i adaptera.
  • Mapowania lokalnych i zewnętrznych identyfikatorów.
  • Tworzenie zadań synchronizacji z terminem uruchomienia, danymi wejściowymi i kluczem idempotencji.
  • Statusy przetwarzania, wyniki, liczba prób, logi i błędy.
  • Ręczne ponawianie tego samego zadania oraz lista zadań wymagających interwencji (Dead Letter Queue).

Połączenie z konkretnym ERP, PIM, WMS, CRM, EDI lub systemem zakupowym wymaga adaptera i uruchomienia procesu przetwarzania. We wdrożeniu ustala się źródła firm, cen, stanów, zamówień i dokumentów.

Dashboard, raporty i diagnostyka

Panel B2B pokazuje liczbę i statusy firm, aktywnych użytkowników, cenniki, reguły katalogu, błędy i ostatnie zmiany.

  • Raporty firm bez aktywnego website, użytkowników lub cennika oraz klientów bez firmy.
  • Raporty brakujących cen w indeksie, danych źródeł MSI i tłumaczeń nazw produktów.
  • Dokumenty bez pliku, błędy importów i integracji oraz zamówienia oczekujące na akceptację lub zablokowane do eksportu.
  • Filtrowanie raportów według website, podgląd rekordów i eksport CSV.
  • Status systemu, audyt firm i decyzji, logi kredytowe i synchronizacji oraz narzędzia Explain Price i Debug SKU.
  • Konfiguracja diagnostyki B2B i retencji logów.

Jeden pakiet, modułowa architektura

Pakiet kowal/metapackage-b2b-suite zawiera 17 modułów Magento oraz bazowy motyw frontend/Kowal/b2b. Obejmuje Base, Access Control, Company, Admin UI, Pricing, Catalog Permissions, Quick Order, Quote, Checkout, Credit Limit, Approval, Document, Import/Export, Integration, REST API, GraphQL i opcjonalny adapter Hyvä.

Instalacja odbywa się przez jeden pakiet Composer. Po nadaniu dostępu do repozytorium wdrożenie obejmuje włączenie potrzebnych modułów, aktualizację bazy Magento, konfigurację website i firm oraz kompilację, publikację zasobów i czyszczenie cache zgodnie z trybem sklepu.

Wymagania i zakres wdrożenia

Projekt jest ukierunkowany na Magento Open Source 2.4.9, a pakiet wymaga PHP ^8.3. Korzysta z natywnego katalogu, koszyka, checkoutu i MSI Magento oraz generatora PDF mPDF.

Dostępny jest klasyczny frontend Magento i opcjonalny adapter konta Hyvä Themes. Bazowy motyw B2B stanowi punkt wyjścia do dopasowania wyglądu portalu.

Zakres wdrożenia ustalamy na podstawie wersji sklepu, motywu, płatności, dostaw i systemów zewnętrznych. Kompatybilność oraz pełny proces zakupowy wymagają sprawdzenia w docelowej instalacji.

Zaplanuj wdrożenie B2B dopasowane do firmy

Chcesz dopasować moduł do swojego sklepu? Zapytaj o wdrożenie Kowal B2B Suite i omów konfigurację lub potrzebne rozszerzenia.

Przed zaplanowaniem wdrożenia zobacz, jak ograniczyć ręczną obsługę sprzedaży B2B w Magento 2 oraz ile kosztuje ręczna obsługa zamówienia B2B.

Więcej informacji

Motyw Hyvä Zgodny z motywem Hyvä
Zgodność z szablonem Hyvä, Luma / Blank, KOWAL

Konfiguracja Integracji

Kowal B2B API — pełna dokumentacja REST

Wersja kontraktu: V1 · Źródło prawdy: Kowal_B2BApi/etc/webapi.xml · Odbiorcy: administratorzy sklepów, partnerzy wdrożeniowi i zespoły integrujące ERP, PIM, WMS lub system zakupowy.

1. Przeznaczenie i granice API

Kowal B2B API udostępnia dane i procesy B2B działające w Magento 2: firmy, katalog i ceny indywidualne, szybkie zakupy, dokumenty, limit kupiecki, akceptacje, RFQ oraz kolejki integracyjne. Jest to REST API do integracji systemowych; nie zastępuje standardowych endpointów Magento dla katalogu, koszyka, checkoutu i konta klienta.

Dokument opisuje wyłącznie endpointy aktualnie wystawione przez moduł. Brak w nim obietnicy operacji, których kontrakt V1 nie udostępnia, np. tworzenia zamówienia przez REST, CRUD cenników lub edycji konfiguracji website.

2. Uzyskanie dostępu i zasady współpracy

2.1. Proces uruchomienia integracji

  1. Integrator przekazuje administratorowi sklepu cel integracji, środowisko (test/produkcja), system źródłowy, zakres danych oraz listę wymaganych obszarów API.
  2. Administrator zakłada lub konfiguruje integrację Magento, przypisuje jej minimalne uprawnienia ACL i przekazuje bezpiecznym kanałem: baseUrl, token, websiteId, companyId (gdy dotyczy), walutę oraz dane testowe.
  3. Integrator wykonuje test GET /V1/kowal-b2b/websites/:websiteId/config, a następnie testy funkcjonalne na środowisku testowym.
  4. Przed produkcją obie strony uzgadniają harmonogram synchronizacji, maksymalny rozmiar danych, retry, właściciela danych i sposób zgłaszania błędów.
  5. Tokeny są przechowywane wyłącznie w sejfie sekretów; administrator rotuje lub odbiera je przy zmianie dostawcy, użytkownika albo zakresu integracji.

2.2. Odpowiedzialności

Strona Odpowiedzialność
Administrator sklepu Konfiguracja B2B website, firmy i relacji firmy z website, tokenu oraz ACL; przekazanie danych testowych; decyzja o dostępie do danych.
Integrator Bezpieczne przechowywanie tokenu, poprawne użycie kontekstu websiteId/companyId, walidacja danych, obsługa błędów i ponowień, nieujawnianie danych innych firm.
Właściciel procesu biznesowego Uzgodnienie źródła prawdy dla cen, dokumentów, RFQ, limitów i statusów synchronizacji.

Nie należy używać tokenu administratora w aplikacji klienckiej ani współdzielić jednego tokenu przez niezależne systemy. Każda integracja powinna mieć własny token i wyłącznie wymagane ACL.

2.3. Uprawnienia

Magento weryfikuje token Bearer oraz ACL przypisane do użytkownika administracyjnego lub integracji. Endpointy B2B wymagają jednej z poniższych grup uprawnień:

ACL Zakres
config Websites i feature flags
companies, company_save, company_users, batch Firmy, ich użytkownicy i import wsadowy firm
products, prices, catalog_permissions Katalog, dostępność, ceny i widoczność
import_export, quick_order, documents Profile importu/eksportu, listy zakupowe i dokumenty
credit_limits, approvals, orders, quotes Limit, workflow akceptacji, kontekst zamówień i RFQ
system_integrations Profile, mapowania i joby integracyjne

Zakres powinien wynikać z przeznaczenia integracji. Przykład: system zakupowy zwykle potrzebuje products, prices, catalog_permissions, quick_order i quotes; ERP obsługujący dokumenty — documents oraz, jeśli jest właścicielem synchronizacji, system_integrations.

3. Konwencje techniczne

Adres, nagłówki i parametry

Adres bazowy ma postać https://b2b.example.com/rest/V1. Wszystkie ścieżki dalej w dokumencie są podawane od /V1; pełny adres endpointu to BASE_URL + ścieżka.

Authorization: Bearer <token>
Accept: application/json
Content-Type: application/json

API używa JSON. Nazwy w URL są camelCase (websiteId, companyId), a pola JSON odpowiadają nazwom parametrów kontraktów Magento. :companyId, :quoteId, :sku itd. to parametry ścieżki. W przykładach ? oznacza parametr opcjonalny.

websiteId jest wymagany przy operacjach zależnych od kanału sprzedaży. Musi wskazywać istniejący website z włączonym B2B. companyId wskazuje firmę, która musi mieć aktywną relację z tym website, gdy operacja działa w jej kontekście. API nie wybiera domyślnego website ani firmy.

Request body i idempotencja

Magento serializuje obiekt DTO pod nazwą parametru metody: większość zapisów przyjmuje {"request": {...}}; tworzenie firmy używa {"company": {...}}; batch firm — {"companies": [...]}. Endpointy z prostymi argumentami przyjmują pola bez wrappera, np. {"websiteId": 1, "currency": "PLN", "items": [...]}.

Nagłówek Idempotency-Key (maks. 128 znaków) jest obecnie obsługiwany przez POST /companies: ponowienie z tym samym kluczem zwróci wcześniej utworzoną firmę. Dla joba integracyjnego użyj pola request.idempotencyKey. Nie zakładaj automatycznej idempotencji innych endpointów zapisu; ponawiaj je dopiero po ustaleniu statusu operacji.

Odpowiedzi i błędy

Odpowiedzi sukcesu są obiektami lub tablicami kontraktów Magento. Pola zwracane przez obiekty mogą być rozszerzane w kompatybilny sposób; integracja powinna ignorować nieznane pola. Błąd biznesowy może zawierać:

{
  "code": "b2b.company.not_assigned_to_website",
  "message": "B2B company is not assigned to website.",
  "website_id": 1,
  "trace_id": "request-correlation-id",
  "details": {"company_id": 10},
  "field_errors": []
}
HTTP Znaczenie Reakcja integratora
400 / 422 Niepoprawne dane albo walidacja domenowa Popraw dane; nie ponawiaj bez zmiany payloadu.
401 / 403 Brak lub niewystarczający token/ACL Nie ponawiaj; zgłoś administratorowi zakres tokenu.
404 Zasób lub relacja w danym kontekście nie istnieje Zweryfikuj identyfikatory i kontekst website.
409 Konflikt statusu lub duplikat Odczytaj aktualny stan przed decyzją o ponowieniu.
5xx / timeout Błąd techniczny Zastosuj ograniczone retry z backoffem i zachowaj trace_id.

Nie loguj tokenów, pełnych danych osobowych ani sekretów konfiguracji. Zgłoszenie do zespołu sklepu powinno zawierać czas, metodę, ścieżkę bez sekretów, status HTTP, trace_id oraz zanonimizowany payload.

4. Schematy danych wejściowych

Poniższe schematy są wspólne dla endpointów referencyjnych. Pole bez ? jest wymagane przez kontrakt; ? oznacza wartość opcjonalną. Pola metadata, config, configuration i payload są obiektami JSON.

DTO / wrapper Pola
company websiteId, name, taxId, externalId?, status?, salesRepresentativeId?, customerGroupId?, websiteActive?
companyUser websiteId, roleId, active
request — RFQ websiteId, companyId, customerId?, externalId?, title, currency, validUntil?, customerNote?, salesNote?, metadata?
request — pozycja RFQ quoteId, sku, productId?, name?, qty, requestedPrice?, offeredPrice?, comment?, metadata?
request — decyzja RFQ customerId?, adminUserId?, message?
request — komentarz RFQ quoteId, customerId?, adminUserId?, authorType, message, visibleForCustomer
request — dokument websiteId, companyId, orderId?, orderIncrementId?, invoiceId?, invoiceIncrementId?, creditmemoId?, creditmemoIncrementId?, externalId?, documentNumber, documentType, status, issueDate?, dueDate?, grandTotal?, currency?, metadata?
request — plik dokumentu documentId, fileName, filePath, mimeType, fileSize, checksum?, primary
request — limit websiteId, companyId, termsId?, creditLimit, currency, active, status, metadata?
request — ekspozycja limitu websiteId, companyId, sourceType, sourceId, sourceIncrementId?, amount, currency, dueDate?, metadata?
request — warunki płatności websiteId, code, name, daysDue, active, description?
request — reguła akceptacji websiteId, companyId, name, thresholdAmount, currency?, priority, active, metadata?
request — akceptujący ruleId, customerId, sortOrder, active
request — decyzja akceptacji approverCustomerId?, comment?
request — wniosek akceptacji websiteId, companyId, orderId?, orderIncrementId?, requesterCustomerId?, grandTotal, currency, comment?, metadata?
request — profil import/export websiteId, code, name, direction, entityType, format, behavior, active, configuration?
request — profil integracji websiteId, code, name, systemType, adapterCode, direction, active, maxAttempts, config?
request — mapowanie websiteId, systemType, entityType, localId, externalId, metadata?
request — job integracyjny profileId, direction?, entityType, operation, idempotencyKey?, maxAttempts?, payload?, scheduledAt?

5. Referencja endpointów

W tabelach ACL oznacza minimalny zasób uprawnienia Magento. Wynik określa rodzaj odpowiedzi sukcesu.

5.1. Websites i konfiguracja

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /V1/kowal-b2b/websites config — Tablica website (websiteId, kod, nazwa, flaga B2B). Pobierz przed konfiguracją integracji.
GET /V1/kowal-b2b/websites/:websiteId/config config path: websiteId Konfiguracja B2B website (m.in. enabled/debug/retencja logów). Wykonaj jako test dostępu.
GET /V1/kowal-b2b/websites/:websiteId/features config path: websiteId Feature flags aktywne dla website; użyj do warunkowego włączania funkcji klienta.

5.2. Firmy i użytkownicy firmowi

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /companies?websiteId= companies query: websiteId Tablica firm przypisanych do website.
POST /companies company_save body: company Tworzy firmę i relację z website; użyj Idempotency-Key przy ponowieniach. Zwraca firmę.
POST /companies/batch batch body: companies — tablica company Tworzy wiele firm i zwraca wynik per element, w tym błędy.
GET /companies/:companyId?websiteId= companies path: companyId; query: websiteId Firma zweryfikowana w kontekście website.
PUT /companies/:companyId company_save path: companyId; body: company Aktualizuje dane i relację firmy dla company.websiteId.
POST /companies/:companyId/activate?websiteId= company_save path: companyId; query: websiteId Aktywuje firmę w wskazanym website i zwraca firmę.
POST /companies/:companyId/block?websiteId= company_save path: companyId; query: websiteId Blokuje firmę w wskazanym website i zwraca firmę.
GET /companies/:companyId/users?websiteId= company_users path: companyId; query: websiteId Tablica przypisań klientów do firmy.
PUT /companies/:companyId/users/:customerId company_users path: companyId, customerId; body: companyUser Nadaje/aktualizuje rolę i aktywność klienta w firmie; zwraca przypisanie.

5.3. Produkty, cena i widoczność katalogu

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /products?websiteId= products query: websiteId Tablica podstawowych produktów Magento dla website.
GET /products/:sku?websiteId= products path: zakodowane sku; query: websiteId Produkt (id, sku, nazwa, typ, status, websites).
GET /products/:sku/availability?websiteId= products path: sku; query: websiteId Dostępność i ilość sprzedażowa MSI dla SKU.
GET /products/:sku/b2b-status?websiteId= products path: sku; query: websiteId Status B2B: przypisanie do website, tłumaczenia i dane stock.
GET /reports/products/missing-translations?websiteId= products query: websiteId Raport SKU bez wymaganych tłumaczeń, z reason/details.
GET /reports/products/missing-stock?websiteId= products query: websiteId Raport SKU bez wymaganych danych stock.
GET /companies/:companyId/products/:sku/price?websiteId=&currency=&qty= prices path: companyId, sku; query: websiteId, currency, opcj. qty (domyślnie 1) Wyjaśnienie ceny właściwej dla firmy, waluty i ilości; odczytuj przed zakupem.
GET /companies/:companyId/products/:sku/visibility?websiteId= catalog_permissions path: companyId, sku; query: websiteId Wynik widoczności/zakupu SKU dla firmy.
GET /companies/:companyId/catalog-visibility?websiteId= catalog_permissions path: companyId; query: websiteId Tablica pozycji indeksu widocznego katalogu firmy.
POST /companies/:companyId/catalog-visibility/reindex?websiteId= catalog_permissions path: companyId; query: websiteId Przebudowuje indeks i zwraca liczbę zaindeksowanych pozycji. Operacja administracyjna.

5.4. Import i eksport plikowy

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /import-export/profiles?websiteId= import_export query: websiteId Tablica profili importu/eksportu website.
POST /import-export/profiles import_export body: request — profil import/export Zapisuje profil i zwraca jego dane.
POST /import-export/import/:profileId?sourceFile=&dryRun= import_export path: profileId; query: sourceFile, opcj. dryRun=false Uruchamia import pliku wskazanego po stronie środowiska Magento; zwraca job. Nie przesyła multipart.
POST /import-export/export/:profileId?resultFile= import_export path: profileId; opcj. query: resultFile Tworzy job eksportu, opcjonalnie z docelową ścieżką pliku.
GET /import-export/jobs?websiteId= import_export query: websiteId Tablica jobów import/export dla website.
GET /import-export/jobs/:jobId import_export path: jobId Stan, wynik i dane pojedynczego joba.
GET /import-export/jobs/:jobId/logs import_export path: jobId Logi diagnostyczne joba.

5.5. Szybkie zamówienie i listy zakupowe

Metoda i endpoint ACL Wejście Wynik i zastosowanie
POST /companies/:companyId/quick-order/validate quick_order path: companyId; body: websiteId, currency, items (sku, qty) Waliduje wiele SKU w kontekście firmy: dostępność, widoczność i cenę; zwraca zbiorczy wynik.
GET /companies/:companyId/shopping-lists?websiteId= quick_order path: companyId; query: websiteId Tablica list zakupowych firmy.
POST /companies/:companyId/shopping-lists quick_order path: companyId; body: websiteId, name, opcj. customerId, isDefault=false Tworzy listę zakupową i zwraca ją.
GET /shopping-lists/:listId/items quick_order path: listId Tablica pozycji wskazanej listy.
POST /shopping-lists/:listId/items quick_order path: listId; body: currency, items (sku, qty) Dodaje pozycje do listy i zwraca zapisane pozycje.

5.6. Dokumenty i pliki

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /companies/:companyId/documents?websiteId=&documentType= documents path: companyId; query: websiteId, opcj. documentType Dokumenty firmy, opcjonalnie filtrowane typem.
GET /documents/:documentId?companyId=&websiteId= documents path: documentId; query: companyId, websiteId Szczegóły dokumentu po sprawdzeniu przynależności firmy.
POST /documents documents body: request — dokument Tworzy lub zapisuje metadane dokumentu i zwraca dokument.
POST /documents/files documents body: request — plik dokumentu Rejestruje plik istniejący w storage Magento (nazwa, ścieżka, MIME, rozmiar), nie wysyła binariów.
GET /documents/:documentId/files?companyId=&websiteId= documents path: documentId; query: companyId, websiteId Tablica metadanych plików dokumentu.
GET /documents/:documentId/sync-logs documents path: documentId Logi synchronizacji dokumentu; przeznaczone dla integracji administracyjnej.

5.7. Limit kupiecki i terminy płatności

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /companies/:companyId/credit/status?websiteId=&currency= credit_limits path: companyId; query: websiteId, currency Status limitu, wykorzystanie i dostępna kwota firmy.
POST /credit-limits credit_limits body: request — limit Tworzy/aktualizuje limit firmy i zwraca limit.
POST /credit/exposures credit_limits body: request — ekspozycja Rezerwuje ekspozycję limitu dla źródła (np. zamówienia) i zwraca ją.
POST /credit/exposures/:exposureId/release credit_limits path: exposureId; opcj. body: message Zwalnia ekspozycję; zwraca jej stan.
GET /payment-terms?websiteId= credit_limits query: websiteId Tablica aktywnych/znanych warunków płatności website.
POST /payment-terms credit_limits body: request — warunki płatności Zapisuje warunki płatności i zwraca je.

5.8. Workflow akceptacji

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /companies/:companyId/approval/rules?websiteId=&currency= approvals path: companyId; query: websiteId, opcj. currency Reguły akceptacji firmy dla kanału/waluty.
POST /approval/rules approvals body: request — reguła Tworzy/aktualizuje regułę progową i zwraca ją.
GET /approval/rules/:ruleId/approvers approvals path: ruleId Tablica przypisanych akceptujących, w kolejności sortOrder.
POST /approval/approvers approvals body: request — akceptujący Zapisuje przypisanie klienta jako akceptującego.
GET /companies/:companyId/approval/required?websiteId=&grandTotal=&currency= approvals path: companyId; query: websiteId, grandTotal, currency Boolean: czy kwota wymaga akceptacji.
POST /approval/requests approvals body: request — wniosek akceptacji Tworzy request dla zamówienia i zwraca go.
GET /companies/:companyId/approval/requests?websiteId=&status= approvals path: companyId; query: websiteId, opcj. status Tablica requestów akceptacji firmy.
POST /approval/requests/:requestId/approve approvals path: requestId; body: request — decyzja Zatwierdza request; zwraca jego aktualny stan.
POST /approval/requests/:requestId/reject approvals path: requestId; body: request — decyzja Odrzuca request; zwraca jego aktualny stan.
POST /approval/requests/:requestId/cancel approvals path: requestId; body: request — decyzja Anuluje request; zwraca jego aktualny stan.
GET /approval/requests/:requestId/decisions approvals path: requestId Historia decyzji dla requestu.

5.9. Kontekst B2B zamówień

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /orders/:orderId/b2b-context orders path: orderId Kontekst B2B pojedynczego natywnego zamówienia Magento (np. firma, status akceptacji, limit, eksport).
GET /companies/:companyId/orders/b2b-context?websiteId=&approvalStatus= orders path: companyId; query: websiteId, opcj. approvalStatus Tablica kontekstów zamówień firmy, opcjonalnie filtrowana statusem akceptacji.

5.10. RFQ i oferty handlowe

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /companies/:companyId/quotes?websiteId=&status= quotes path: companyId; query: websiteId, opcj. status RFQ i oferty firmy, opcjonalnie według statusu.
POST /quotes quotes body: request — RFQ Tworzy robocze RFQ i zwraca je. Dodaj pozycje osobnym endpointem.
GET /quotes/:quoteId quotes path: quoteId Szczegóły RFQ/oferty.
GET /quotes/:quoteId/items quotes path: quoteId Tablica pozycji RFQ.
POST /quotes/items quotes body: request — pozycja RFQ Dodaje SKU i ilość, opcjonalną cenę żądaną/ofertową oraz komentarz.
GET /quotes/:quoteId/comments quotes path: quoteId Komentarze RFQ. Klient widzi tylko komentarze oznaczone jako widoczne.
POST /quotes/comments quotes body: request — komentarz RFQ Dodaje wiadomość; authorType i visibleForCustomer określają autora i widoczność.
GET /quotes/:quoteId/history quotes path: quoteId Historia zmian statusu i zdarzeń RFQ.
POST /quotes/:quoteId/submit quotes path: quoteId; body: request — decyzja RFQ Przekazuje robocze RFQ do wyceny.
POST /quotes/:quoteId/make-offer quotes path: quoteId; body: request — decyzja RFQ Handlowiec tworzy/przekazuje ofertę; przed wywołaniem ustal ceny pozycji.
POST /quotes/:quoteId/accept quotes path: quoteId; body: request — decyzja RFQ Akceptuje aktualną ofertę. Nie tworzy w tym kontrakcie zamówienia REST.
POST /quotes/:quoteId/reject quotes path: quoteId; body: request — decyzja RFQ Odrzuca ofertę/RFQ.
POST /quotes/:quoteId/cancel quotes path: quoteId; body: request — decyzja RFQ Anuluje RFQ, jeśli pozwala na to bieżący status.

5.11. Profile i joby integracyjne

Metoda i endpoint ACL Wejście Wynik i zastosowanie
GET /integrations/profiles?websiteId=&systemType= system_integrations query: websiteId, opcj. systemType Profile integracji dla website.
POST /integrations/profiles system_integrations body: request — profil integracji Zapisuje profil ERP/PIM/WMS itp. i zwraca go.
POST /integrations/mappings system_integrations body: request — mapowanie Zapisuje parę lokalny ID ↔ zewnętrzny ID.
GET /integrations/mappings/local?websiteId=&systemType=&entityType=&localId= system_integrations query: wszystkie parametry wymagane Odszukuje mapowanie po identyfikatorze Magento.
GET /integrations/mappings/external?websiteId=&systemType=&entityType=&externalId= system_integrations query: wszystkie parametry wymagane Odszukuje mapowanie po identyfikatorze systemu zewnętrznego.
POST /integrations/jobs system_integrations body: request — job Publikuje job do wykonania; idempotencyKey identyfikuje operację biznesową.
GET /integrations/jobs?websiteId=&status= system_integrations query: websiteId, opcj. status Tablica jobów integracyjnych.
GET /integrations/jobs/:jobId system_integrations path: jobId Stan i szczegóły pojedynczego joba.
POST /integrations/jobs/:jobId/process system_integrations path: jobId Przetwarza job i zwraca jego aktualny stan.
POST /integrations/jobs/:jobId/retry system_integrations path: jobId Ponawia job po błędzie, zgodnie z jego limitem prób.
GET /integrations/jobs/:jobId/logs system_integrations path: jobId Logi wykonania joba.
GET /integrations/jobs/:jobId/errors system_integrations path: jobId Błędy domenowe/techniczne joba.

6. Przykłady wywołań

export BASE_URL='https://b2b.example.com/rest/V1'
export TOKEN='token-przekazany-przez-administratora'
export WEBSITE_ID=1 COMPANY_ID=10 SKU='B2B-SKU-001' CURRENCY='PLN'

# Test dostępu i konfiguracji kanału
curl -sS "$BASE_URL/kowal-b2b/websites/$WEBSITE_ID/config" \
  -H "Authorization: Bearer $TOKEN" -H 'Accept: application/json'

# Cena kontraktowa firmy dla konkretnej ilości
curl -sS "$BASE_URL/kowal-b2b/companies/$COMPANY_ID/products/$SKU/price?websiteId=$WEBSITE_ID&currency=$CURRENCY&qty=5" \
  -H "Authorization: Bearer $TOKEN" -H 'Accept: application/json'

# Walidacja koszyka po SKU
curl -sS -X POST "$BASE_URL/kowal-b2b/companies/$COMPANY_ID/quick-order/validate" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  --data '{"websiteId":1,"currency":"PLN","items":[{"sku":"B2B-SKU-001","qty":5}]}'

# Utworzenie RFQ
curl -sS -X POST "$BASE_URL/kowal-b2b/quotes" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  --data '{"request":{"websiteId":1,"companyId":10,"customerId":25,"title":"Dostawa kwartalna","currency":"PLN","externalId":"ERP-RFQ-2026-001"}}'

7. Zalecane scenariusze integracyjne

Zakup po SKU

  1. Odczytaj konfigurację website i zapisz przekazane websiteId, companyId, walutę.
  2. Użyj quick order do zbiorczej walidacji SKU, ilości, widoczności i dostępności.
  3. Dla zaakceptowanych pozycji pobierz cenę z price z właściwym qty.
  4. Utwórz RFQ, dodaj pozycje i wyślij je przez submit, jeśli zakup wymaga oferty.
  5. Śledź status i historię RFQ; po akceptacji postępuj zgodnie z uzgodnionym procesem zamówienia Magento, ponieważ V1 nie wystawia endpointu tworzenia order.

Dokumenty i rozliczenia

  1. Pobierz listę dokumentów firmy, opcjonalnie filtrując documentType.
  2. Dla wybranego dokumentu pobierz metadane i listę plików; ścieżka pliku nie jest automatycznie publicznym URL — sposób pobrania binarium uzgodnij z administratorem sklepu.
  3. Odczytaj status limitu przed procesem zakupowym; tylko integracja z ACL credit_limits może nim zarządzać.

Operacje asynchroniczne

  1. Zapisz profil integracji i mapowania identyfikatorów.
  2. Opublikuj job z biznesowym idempotencyKey i zachowaj jobId.
  3. Odczytuj job oraz logi/błędy; retry wywołuj dopiero po analizie błędu i usunięciu jego przyczyny.

8. Lista odbiorowa przed produkcją

  • Token ma wyłącznie wymagane ACL i nie jest tokenem administratora używanym przez UI.
  • Integrator poprawnie obsługuje 401, 403, 404, walidację 422, konflikt 409 i timeouty.
  • Każdy request w kontekście B2B przekazuje właściwe websiteId, a dane firmy używają prawidłowego companyId.
  • Ceny, widoczność i dostępność są sprawdzane przed utworzeniem procesu zakupowego.
  • Tworzenie firmy używa Idempotency-Key; joby integracyjne mają stabilny idempotencyKey w body.
  • Logi nie zawierają tokenów ani danych wrażliwych, a procedura wsparcia przekazuje trace_id.
  • Testy zostały wykonane na środowisku testowym na firmie, która ma aktywną relację z B2B website.

9. Kompatybilność

Kontrakt jest wersjonowany przez /V1. Rozszerzenie odpowiedzi o nowe pola jest kompatybilne; integrator powinien tolerować pola nieznane. Zmiana usuwająca pole, znaczenie pola lub endpoint wymaga nowej wersji API. W razie rozbieżności między dokumentem a działającą instalacją wiążący jest aktywny kontrakt webapi.xml danej wersji modułu.

Instrukcja Instalacji modułu

Przed rozpoczęciem

Instalacja i konfiguracja Kowal B2B Suite

Ten podręcznik jest przeznaczony dla osoby, która kupiła Kowal B2B Suite i ma go uruchomić w istniejącej instalacji Magento Open Source. Prowadzi przez dwa etapy:

  1. instalacja techniczna — wykonywana przez developera lub administratora serwera;
  2. konfiguracja biznesowa — wykonywana w panelu Magento przez administratora sklepu.

Przed rozpoczęciem wykonaj kopię bazy danych i plików Magento. Pierwsze uruchomienie zalecamy przeprowadzić na środowisku testowym, a dopiero później wdrożyć na produkcję.

1. Co otrzymujesz i czego potrzebujesz

Kowal B2B Suite jest dostarczany jako pakiet Composer kowal/metapackage-b2b-suite. Zawiera moduły B2B oraz theme frontend/Kowal/b2b.

Wymagania

Element Wymaganie
Magento Magento Open Source 2.4.9
PHP 8.3
Composer Composer 2
Dostęp serwerowy SSH oraz możliwość uruchamiania bin/magento
Magento działające katalog, klienci, checkout, Sales, MSI oraz cron
PDF możliwość zapisu w var/ przez proces PHP

Od Kowal otrzymasz:

  • adres prywatnego repozytorium Composer — dalej jako REPOSITORY_URL;
  • nazwę użytkownika lub identyfikator dostępu — USERNAME;
  • token dostępu — ACCESS_TOKEN;
  • dozwolony zakres wersji pakietu.

Nie zapisuj tokenu w repozytorium Git, w ticketach ani w historii powłoki współdzielonej z innymi osobami.

2. Instalacja techniczna

Wszystkie polecenia wykonuj w katalogu głównym istniejącej instalacji Magento, jako użytkownik mający dostęp do plików oraz do polecenia bin/magento.

2.1. Przygotowanie

  1. Upewnij się, że Magento działa poprawnie przed zmianą.
  2. Zapisz stan wdrożenia i wykonaj backup bazy danych oraz katalogów app/etc, pub/media i var.
  3. Na produkcji włącz tryb maintenance na czas aktualizacji:
bin/magento maintenance:enable

2.2. Dodanie prywatnego repozytorium

Dodaj repozytorium Composer Kowal i skonfiguruj otrzymane dane dostępowe.

Dane dostępowe do repozytorium Composer (adres e-mail klienta i token licencyjny) otrzymasz e-mailem po zakupie. Są również dostępne w panelu klienta po zalogowaniu na kowal.store. Zastąp TWOJ_EMAIL_KLIENTA adresem e-mail swojego konta, a TWOJ_TOKEN otrzymanym tokenem. Polecenia wykonaj w katalogu głównym Magento.

Dodaj repozytorium Composer

composer config repositories.kowal composer https://repo.kowal.store

Skonfiguruj dane dostępowe

composer config http-basic.repo.kowal.store "TWOJ_EMAIL_KLIENTA" "TWOJ_TOKEN"

Composer zwykle zapisuje poświadczenia w lokalnym auth.json; nie dodawaj tego pliku do Git.

2.3. Instalacja pakietu

Zainstaluj wersję przekazaną wraz z licencją. Dla bieżącej linii pakietu przykładowe polecenie ma postać:

composer require kowal/metapackage-b2b-suite:^0.2 --with-all-dependencies

Po pobraniu zależności wykonaj aktualizację schematu i konfiguracji Magento:

bin/magento setup:upgrade
bin/magento cache:clean

W trybie produkcyjnym wykonaj dodatkowo:

bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f pl_PL en_US
bin/magento cache:flush

Użyj tylko tych locale, które są aktywne w sklepie. Jeżeli instalacja korzysta z innego procesu deploymentu, dołącz powyższe komendy do jego standardowej procedury.

2.4. Weryfikacja instalacji

bin/magento module:status | grep Kowal
bin/magento indexer:status

W panelu administracyjnym powinno pojawić się menu B2B oraz zakładka Stores > Configuration > Kowal > B2B. Jeżeli ich nie ma, sprawdź wynik setup:upgrade, cache oraz role ACL użytkownika administratora.

2.5. Uprawnienia plików PDF

PDF-y generowane przez B2B używają mPDF i katalogów pod var/, w tym var/tmp/kowal_b2b_mpdf oraz var/kowal_b2b_documents. Proces PHP musi mieć możliwość ich utworzenia i zapisu. Brak tych uprawnień objawia się błędem generowania dokumentu lub PDF.

Po zakończeniu wdrożenia produkcyjnego wyłącz maintenance:

bin/magento maintenance:disable

3. Konfiguracja struktury sklepu B2B

3.1. Website i store view

Suite działa w zakresie website, a nie globalnie. Możesz prowadzić B2C i B2B w tej samej instalacji Magento, lecz B2B powinno działać w osobnym website lub w świadomie wybranym website sprzedaży firmowej.

  1. W Stores > Settings > All Stores utwórz lub wybierz website B2B, jego store oraz store view.
  2. Zapamiętaj website_id — jest używany przez firmy, ceny, dokumenty, API i integracje.
  3. W Content > Design > Configuration przypisz theme frontend/Kowal/b2b tylko do B2B store view.
  4. Sprawdź, że aktywne waluty, podatki, metody dostawy i metody płatności są skonfigurowane dla tego samego scope.

Nie przypisuj theme B2B do store view B2C, jeśli nie chcesz zmieniać jego warstwy prezentacji. Sama instalacja modułów nie włącza logiki B2B dla wszystkich website.

3.2. Aktywacja B2B

  1. Otwórz Stores > Configuration > Kowal > B2B.
  2. W przełączniku scope wybierz właściwy Website.
  3. W sekcji General ustaw Enable B2B na Yes.
  4. Na czas wdrożenia możesz włączyć Debug Mode; wyłącz go po testach.
  5. W scope Default Config ustaw okres retencji logów.
  6. Zapisz konfigurację i wyczyść cache.

Po aktywacji wszystkie store view należące do tego website są traktowane jako B2B. Firma bez aktywnej relacji z tym website nie uzyska do niego dostępu.

3.3. Dane sprzedawcy

Uzupełnij dane firmy sprzedającej w Stores > Configuration > General > Store Information: nazwę, adres, telefon oraz NIP. Są używane w dokumentach i PDF RFQ. Uzupełnij również ogólny adres e-mail nadawcy w konfiguracji Sales Emails oraz logo e-mail, jeśli ma pojawiać się w PDF.

4. Konfiguracja pierwszego klienta B2B

Poniższą kolejność stosuj dla każdej firmy. Pozwala uniknąć sytuacji, w której klient ma konto, ale nie widzi oferty lub nie może przejść checkoutu.

4.1. Firma, osoby i adresy

  1. Otwórz B2B > Companies i utwórz firmę.
  2. Podaj nazwę, NIP, identyfikator zewnętrzny (jeśli firma jest synchronizowana z ERP), status Active oraz przypisanie do B2B website.
  3. Dodaj użytkownika firmy lub przypisz istniejącego klienta Magento. Nadaj mu właściwą rolę i aktywuj przypisanie.
  4. W B2B > Company Addresses dodaj adresy firmy; oznacz domyślny adres rozliczeniowy i wysyłkowy dla website B2B.
  5. W B2B > Company Contacts dodaj aktywny kontakt główny z e-mailem i telefonem.

Adres rozliczeniowy i kontakt główny są również używane w PDF RFQ. Brak danych nie blokuje PDF, ale dokument będzie mniej kompletny.

4.2. Role firmowe

Nadaj użytkownikom tylko potrzebne uprawnienia. Typowy podział to:

Rola Przykładowe zadania
Administrator firmy użytkownicy, role, adresy, dokumenty i historia firmy
Kupiec katalog, szybkie zamówienie, koszyk, RFQ i zamówienia
Akceptujący decyzje w workflow akceptacji
Księgowość dokumenty i informacje rozliczeniowe

Przetestuj konto każdego typu, zwłaszcza uprawnienie do składania zamówień i akceptacji. Nie używaj jednego wspólnego konta dla całej firmy.

5. Oferta, ceny i checkout

5.1. Katalog i ceny

  1. Upewnij się, że produkty Magento są przypisane do B2B website, aktywne i mają poprawne dane MSI.
  2. Skonfiguruj cenniki lub ceny kontraktowe dla firmy w obszarze B2B > Pricing (Price Lists, Price List Assignments lub Contract Prices).
  3. Skonfiguruj reguły widoczności katalogu dla firmy zgodnie z wdrożonym modelem uprawnień, a następnie sprawdź widoczność na koncie klienta.
  4. Przetestuj na koncie firmy: wyszukanie SKU, widoczność produktu i cenę dla ilości 1 oraz dla progu ilościowego.

Cena B2B zależy od firmy, website, waluty i ilości. Produkt widoczny w B2C nie musi być dostępny dla klienta B2B.

5.2. Dostawa i płatność

  1. Włącz wymagane metody dostawy i płatności w standardowej konfiguracji Magento dla B2B store view.
  2. W B2B > Checkout dodaj reguły dostępnych metod dla firmy/website, jeśli chcesz ograniczyć wybór.
  3. Przeprowadź test koszyka na domyślnych adresach firmy.

Jeśli tworzenie zamówienia z RFQ ma działać automatycznie po stronie administratora, firma musi mieć jednoznaczne domyślne adresy, aktywną metodę płatności i dostawy. W przeciwnym razie Suite załaduje dane do natywnego Backend Order Create, gdzie administrator uzupełnia brakujące elementy.

5.3. Limity i akceptacje

Te funkcje są opcjonalne, ale powinny być skonfigurowane przed włączeniem ich klientom.

  1. W B2B > Credit > Payment Terms dodaj terminy płatności.
  2. W B2B > Credit > Credit Limits przypisz firmie limit, walutę, status i termin płatności.
  3. W B2B > Approvals > Rules utwórz regułę progu kwotowego dla firmy i website.
  4. W B2B > Approvals > Approvers przypisz osoby akceptujące.
  5. Przetestuj koszyk poniżej i powyżej progu oraz sprawdź, czy decyzja akceptującego zmienia dalszy proces.

6. Dokumenty, PDF i RFQ

6.1. Dokumenty Magento

W Stores > Configuration > Kowal > B2B > Documents wybierz źródło dokumentów i zdecyduj, które dokumenty mają być generowane automatycznie: potwierdzenia zamówień, faktury, WZ i korekty. Ustaw też docelowy status dokumentu.

W B2B > Documents > PDF Templates:

  1. sprawdź aktywny szablon dla każdego typu i website;
  2. wykonaj podgląd;
  3. dostosuj HTML/CSS wyłącznie, gdy masz osobę znającą szablony Magento i CSS mPDF;
  4. wygeneruj testową fakturę lub potwierdzenie i sprawdź pobranie z konta firmy.

6.2. RFQ i oferta PDF

  1. W B2B > Quotes > RFQ utwórz testowe RFQ dla aktywnej firmy i użytkownika.
  2. Dodaj widoczne dla firmy SKU, ilość oraz cenę ofertową.
  3. Ustaw termin ważności, prześlij ofertę klientowi i wygeneruj PDF.
  4. Sprawdź wariant klienta: dane sprzedawcy/nabywcy, pozycje, cena, suma i termin ważności.
  5. Sprawdź wariant administratora: dodatkowo notatki handlowe, komentarze, historię oraz wewnętrzne informacje o pozycjach.

PDF klienta nie może zawierać notatek handlowca ani wewnętrznej historii statusów.

7. Szybkie zamówienia, importy i integracje

Szybkie zamówienia

W B2B > Quick Order > Debug SKU sprawdź listę SKU,qty dla firmy, website i waluty. Następnie utwórz listę zakupową i przetestuj jej użycie przez klienta na storefront.

Import i eksport

W B2B > Import/Export zdefiniuj profil dopiero po ustaleniu źródła danych. Konfiguracja profilu jest obiektem JSON i musi zawierać ścieżki plików dostępne na serwerze Magento. Najpierw uruchom import w trybie testowym oraz przeanalizuj job i logi.

Integracje API

Przed utworzeniem tokenu integracyjnego ustal zakres danych i właściciela synchronizacji. Użyj osobnej integracji Magento dla każdego ERP, PIM, WMS lub middleware i nadaj jej wyłącznie potrzebne ACL B2B. Pełna lista endpointów, tokenów i zasad bezpieczeństwa znajduje się w dokumentacji API dla integratorów.

8. Checklista odbiorowa

Przed uruchomieniem produkcyjnym potwierdź:

  • [ ] Moduły Kowal są aktywne, cron działa, a cache i indeksy są poprawne.
  • [ ] B2B jest włączone wyłącznie dla właściwego website.
  • [ ] Theme B2B jest przypisany wyłącznie do B2B store view.
  • [ ] Firma testowa ma status Active, użytkownika, rolę, kontakt i domyślne adresy.
  • [ ] Produkt testowy jest aktywny, przypisany do website, widoczny dla firmy i ma poprawną cenę B2B.
  • [ ] Klient może zalogować się, wyszukać SKU, użyć quick order i dodać produkt do koszyka.
  • [ ] Checkout pokazuje tylko dopuszczalne metody dostawy i płatności.
  • [ ] Limit i reguła akceptacji działają zgodnie z polityką firmy, jeśli te funkcje są używane.
  • [ ] Dokument oraz PDF RFQ generują się i są dostępne wyłącznie dla właściwej firmy.
  • [ ] RFQ można wysłać, zaakceptować i przekazać do procesu utworzenia zamówienia.
  • [ ] Integracje mają osobne tokeny i ograniczone ACL, jeśli są używane.

9. Najczęstsze problemy

Objaw Co sprawdzić
Nie ma menu B2B setup:upgrade, status modułów, cache oraz ACL administratora.
Firma lub klient nie widzi B2B Czy B2B jest aktywne dla właściwego website i czy firma ma aktywną relację z tym website.
Produkt nie jest widoczny albo nie ma ceny Przypisanie produktu do website, aktywność SKU, dane MSI, reguły katalogu, cena firmy, waluta i ilość.
Brak metody dostawy lub płatności Standardowa konfiguracja Magento, scope B2B store view oraz reguły B2B Checkout.
Nie powstaje PDF Aktywny szablon PDF, pakiet mPDF, uprawnienia do var/, dane sprzedawcy i logi Magento.
RFQ nie tworzy zamówienia automatycznie Domyślne adresy firmy, jednoznaczna płatność i dostawa; w pozostałych przypadkach użyj Backend Order Create.
API zwraca 403 Token integracji nie ma wymaganego ACL; nie używaj tokenu administratora w aplikacji zewnętrznej.

Przy zgłoszeniu do wsparcia podaj wersję Magento, wersję pakietu, kroki odtworzenia, godzinę zdarzenia, bezpiecznie zanonimizowane logi i ewentualny trace_id. Nie przesyłaj tokenów ani haseł.

10. Aktualizacja pakietu

  1. Zapoznaj się z informacją o wersji przekazaną przez Kowal.
  2. Wykonaj aktualizację najpierw na środowisku testowym.
  3. Wykonaj backup, composer update kowal/metapackage-b2b-suite --with-all-dependencies, bin/magento setup:upgrade, a w produkcji także kompilację DI i deployment zasobów statycznych.
  4. Powtórz checklistę odbiorową, ze szczególnym uwzględnieniem cen, checkoutu, dokumentów i integracji.

Nie aktualizuj pakietu przez ręczne kopiowanie plików do app/code; powoduje to problemy z Composerem oraz utrudnia późniejsze wsparcie.

Naciśnij, aby pominąć karuzelę

Znaleźliśmy inne produkty, które mogą Cię zainteresować!

Magento 2 BaseLinker Stock Export - synchronizacja stanów magazynowych z ERP i Magento do BaseLinker
123,00 zł
Kowal Analytics dla Magento 2
123,00 zł
Napisz opinię
Napisz opinię o produkcie: Profesjonalny system B2B dla Magento 2 Open Source
Twoja ocena:
Cena
Jakość
Wsparcie
loader
Wczytywanie...

Twoja opinia została przekazana do moderacji.

Pytania i odpowiedzi

Pytanie
Czy Kowal B2B Suite działa z Magento 2 Open Source?
Odpowiedź
Tak. Kowal B2B Suite jest przeznaczony do rozbudowy Magento 2 Open Source o funkcje sprzedaży B2B, dzięki czemu wiele procesów typowych dla handlu hurtowego i kontraktowego można wdrożyć bez przechodzenia na Adobe Commerce.
Pytanie
Czy każdy klient B2B może mieć własne ceny i katalog produktów?
Odpowiedź
Tak. System pozwala odwzorować indywidualne warunki handlowe kontrahentów, w tym ceny, katalogi, progi ilościowe i zasady zakupowe. Zakres konfiguracji jest dopasowywany do modelu sprzedaży firmy.
Pytanie
Czy jedna firma może mieć wielu użytkowników z różnymi uprawnieniami?
Odpowiedź
Tak. W ramach jednego kontrahenta można obsługiwać wielu użytkowników i różne role zakupowe. Pozwala to rozdzielić między innymi składanie zamówień, ich akceptację oraz dostęp do danych i dokumentów.
Pytanie
Czy system B2B można zintegrować z ERP, PIM, WMS lub CRM?
Odpowiedź
Tak. Kowal B2B Suite może wymieniać dane z zewnętrznymi systemami, między innymi ERP, PIM, WMS i CRM. Integracja może obejmować produkty, ceny, klientów, zamówienia, dokumenty, statusy oraz inne dane wymagane przez konkretny proces biznesowy.
Pytanie
Czy wdrożenie platformy B2B można realizować etapami?
Odpowiedź
Tak. Wdrożenie może rozpocząć się od podstawowych funkcji, takich jak firmy, użytkownicy, ceny i katalogi, a następnie zostać rozszerzone o szybkie zamówienia, RFQ, limity kupieckie, akceptacje, dokumenty oraz integracje.
Aktualizacja preferencji plików cookie