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.
SKU
M2-B2B
3 690,00 zł
Email to a Friend

Zapytaj o ten produkt

Opis / Profesjonalny system B2B dla Magento 2 Open Source

Magento 2 · sprzedaż dla firm

Sprzedaż B2B, która działa tak, jak pracują Twoi klienci.

Daj każdemu kontrahentowi jego własne ceny, katalog, zasady zakupów i dokumenty. Kowal B2B Suite porządkuje cały proces — od rejestracji firmy, przez ofertę i zamówienie, po rozliczenie oraz wymianę danych z ERP.

Ikonograficzna grafika Kowal B2B Suite dla Magento 2
Jeden sklep, wiele relacji handlowych. Sprzedaż detaliczna i dla firm mogą działać obok siebie, bez mieszania zasad.
Własne warunki ceny, katalog i płatności dopasowane do konkretnej firmy
Mniej ręcznej pracy szybkie zakupy, listy zakupowe, dokumenty i obsługa ofert w jednym miejscu
Kontrola procesu limity kupieckie, akceptacje i jasne uprawnienia użytkowników
Połączone systemy gotowy fundament do współpracy z ERP, PIM, WMS i CRM

Dlaczego powstał Kowal B2B Suite

W B2B każda relacja handlowa ma własne zasady.

Klienci firmowi kupują inaczej niż konsumenci: wracają po te same produkty, negocjują ceny, pracują w zespołach i oczekują dokumentów oraz rozliczeń zgodnych z umową. Suite pozwala obsłużyć te różnice bez budowania osobnej platformy.

01

Każdy klient widzi swoją ofertę

Indywidualne ceny, katalog, progi ilościowe, warunki płatności i osoby uprawnione do zakupów.

02

Zakupy bez zbędnych kroków

Klient zamawia po SKU, korzysta z list zakupowych albo przechodzi przez ofertę i akceptację.

03

Sprzedaż połączona z operacją

Dokumenty, limity i dane handlowe mogą płynnie współpracować z ERP, magazynem i księgowością.

Zakres funkcjonalny

Wszystko, czego potrzebujesz, aby obsługiwać klientów firmowych po ich zasadach.

Od pierwszego kontaktu z firmą po kolejne, powtarzalne zamówienia. Wybierasz te obszary, których potrzebuje Twój model sprzedaży, a całość działa spójnie w Magento.

01

Firmy i użytkownicy

Rejestracja i akceptacja firm, wielu użytkowników, role, adresy, kontakty oraz jasny podział uprawnień.

02

Ceny zgodne z umową

Cenniki dla firm, ceny kontraktowe, progi ilościowe i ceny dopasowane do waluty oraz wielkości zamówienia.

03

Katalog dla właściwego klienta

Produkty i kategorie widoczne tylko tam, gdzie powinny — bez przypadkowego udostępniania oferty.

04

Szybkie, powtarzalne zakupy

Wyszukiwanie po SKU, dodawanie wielu pozycji, import listy i zapisane listy zakupowe dla stałych klientów.

05

Dokumenty pod ręką

Faktury, korekty, WZ, potwierdzenia zamówień i PDF-y dostępne bezpiecznie w portalu klienta.

06

Oferty i negocjacje

Zapytania ofertowe, uzgodnione ceny, rozmowa z klientem, PDF, termin ważności i zamówienie z zaakceptowanej oferty.

07

Bezpieczna sprzedaż z odroczoną płatnością

Warunki płatności, limity kupieckie i bieżąca kontrola wykorzystania limitu przed złożeniem zamówienia.

08

Zakupy pod kontrolą

Progi zakupowe, osoby akceptujące, decyzje i historia procesu dla firm, które potrzebują zatwierdzeń.

09

Dane, które pracują razem

Import i eksport CSV, integracje z ERP, PIM, WMS i CRM oraz monitorowanie wymiany danych i błędów.

Dopasowane do Twojego modelu sprzedaży

Rozwijaj B2B bez porzucania sklepu, który już znasz.

Kowal B2B Suite rozszerza Magento o procesy firmowe, zamiast zastępować cały e-commerce. Możesz uruchomić B2B obok sprzedaży detalicznej i wdrażać kolejne obszary w tempie organizacji.

  • Sprzedaż B2C i B2B mogą działać w jednym ekosystemie.
  • Klienci B2B dostają własne zasady bez komplikowania oferty detalicznej.
  • Możesz zacząć od katalogu i cen, a potem dodać limity, oferty czy integracje.
  • Twoje dane produktowe, zamówienia i magazyn pozostają w znanym środowisku Magento.

Jedna platforma, różne doświadczenia

Klient detaliczny kupuje prosto. Klient firmowy kupuje po swojej umowie.

Oddzielne kanały sprzedaży pozwalają prowadzić ofertę detaliczną i handlową obok siebie, zachowując porządek w cenach, katalogu i dostępach.

Sprzedaż B2C i B2B Jeden katalog produktów Indywidualne warunki Portal klienta Magento Open Source

Od pierwszego logowania do realizacji

Proces B2B, który łączy klienta, handlowca, finanse i operacje.

Każdy etap ma właściciela i jasne zasady. Klient zyskuje wygodę, a Twój zespół kontrolę oraz pełną historię działań.

1. Firma dołącza do platformy
Rejestracja firmy, weryfikacja, aktywacja konta, adresy, kontakty oraz osoby odpowiedzialne za zakupy.
2. Klient widzi swoją ofertę
Katalog, produkty, ceny i warunki handlowe są dopasowane do konkretnego kontrahenta.
3. Kupujący składa zamówienie
Szybkie zakupy po SKU, import pozycji, listy zakupowe i standardowy koszyk z zasadami B2B.
4. Zakup przechodzi właściwą ścieżkę
System sprawdza uprawnienia, dostępność produktów, dostawę, płatność oraz ustalone limity.
5. W razie potrzeby zamówienie jest akceptowane
Progi kwotowe kierują zakup do odpowiedniej osoby, a decyzje zostają zapisane w historii.
6. Handlowiec obsługuje ofertę
RFQ pozwala ustalić ceny, termin ważności i warunki; klient akceptuje ofertę online lub przechodzi do koszyka.
7. Finanse zachowują kontrolę
Limity kupieckie, wykorzystanie kredytu i terminy płatności chronią sprzedaż z odroczoną płatnością.
8. Klient ma dokumenty pod ręką
Faktury, WZ, korekty, potwierdzenia i oferty PDF są dostępne bezpiecznie w portalu B2B.
9. Zespół zarządza danymi
Panel administracyjny, role, audyt oraz import i eksport CSV ułatwiają codzienną obsługę.
10. Systemy wymieniają dane
ERP, PIM, WMS, CRM i systemy zakupowe klientów mogą wymieniać dane przez gotowe mechanizmy integracyjne.
11. Wymiana danych jest monitorowana
Profile synchronizacji, ponawianie zadań, historia błędów i mapowanie danych ograniczają pracę ręczną.
12. Platforma rozwija się razem z biznesem
Funkcje można wdrażać etapami, zachowując wspólny katalog, dane klientów i procesy Magento.

Integracje bez utraty kontroli

Połącz sprzedaż B2B z systemami, z których już korzystasz.

Dane o klientach, cenach, dokumentach i zamówieniach mogą płynąć między Magento a ERP, PIM, WMS, CRM, EDI oraz systemami zakupowymi Twoich kontrahentów. Zespół ma wgląd w statusy i błędy wymiany danych.

ERP i księgowość PIM i katalog WMS i magazyn CRM i handlowcy Systemy zakupowe

Co można połączyć

  • firmy, użytkowników i uprawnienia zakupowe,
  • produkty, katalogi oraz indywidualne ceny,
  • zamówienia, oferty i ich statusy,
  • faktury, WZ, korekty i pozostałe dokumenty,
  • limity kupieckie oraz warunki płatności,
  • importy i eksporty CSV dla pracy operacyjnej,
  • statusy synchronizacji oraz zadania wymagające uwagi.

Proces wdrożenia

Dobre B2B zaczyna się od uporządkowania zasad handlowych, nie od instalacji modułu.

1. Poznajemy model sprzedaży

Ustalamy klientów, kanały, cenniki, płatności, ograniczenia zakupowe i źródła danych.

2. Ustawiamy zasady dla firm

Konfigurujemy konta firm, użytkowników, ceny, katalog, adresy, limity i role zakupowe.

3. Projektujemy ścieżkę zakupu

Wdrażamy szybkie zamówienia, oferty, akceptacje, dokumenty i właściwą obsługę checkoutu.

4. Łączymy i sprawdzamy

Podłączamy systemy zewnętrzne, testujemy scenariusze klientów oraz szkolimy zespół z obsługi procesu.

Dla kogo jest Kowal B2B Suite?

  • hurtownie i dystrybutorzy,
  • producenci sprzedający do kontrahentów,
  • firmy z indywidualnymi cennikami,
  • organizacje z limitami kupieckimi,
  • organizacje z procesem akceptacji zakupów,
  • firmy, które chcą połączyć sklep z ERP lub PIM,
  • marki prowadzące B2C i B2B w jednym ekosystemie.

Co zyskuje Twój zespół?

  • spójne warunki handlowe dla każdego kontrahenta,
  • mniej ręcznych pytań o ceny, dokumenty i status zamówienia,
  • kontrolę nad zakupami oraz ekspozycją kredytową,
  • pełniejszy obraz działań klienta i zespołu,
  • możliwość wdrażania kolejnych obszarów etapami,
  • gotowość do połączenia sprzedaży z systemami firmy.

FAQ

Najważniejsze pytania przed uruchomieniem sprzedaży B2B.

Czy Kowal B2B Suite wymaga osobnej instalacji Magento?

Nie. B2C i B2B mogą działać w jednym ekosystemie Magento. Dzięki temu zachowujesz wspólny katalog, zamówienia i zaplecze operacyjne.

Czy możemy zacząć od wybranych funkcji?

Tak. Możesz rozpocząć od firm, cen i katalogu, a następnie rozbudować platformę o szybkie zamówienia, oferty, limity, akceptacje lub integracje.

Czy klient B2B może mieć własne ceny i katalog?

Tak. Każda firma może otrzymać własny katalog, ceny kontraktowe, progi ilościowe oraz ustalone zasady zakupów i płatności.

Czy można kontrolować zakupy na firmowym koncie?

Tak. Role użytkowników, limity kupieckie, warunki płatności i wieloetapowa akceptacja pozwalają dopasować proces do polityki zakupowej klienta.

Czy dokumenty i dane mogą pochodzić z ERP?

Tak. Platforma obsługuje dokumenty generowane w Magento oraz pliki dostarczane przez ERP. Integracje pozwalają wymieniać dane i monitorować ich przebieg.

Porozmawiajmy o tym, jak powinien działać Twój proces B2B.

Wspólnie przełożymy zasady handlowe, potrzeby klientów i wymagania operacyjne na wygodną platformę sprzedażową. Od indywidualnych cen i szybkich zamówień po dokumenty, akceptacje oraz integracje.

More Information

Zgodność z szablonem 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

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.

composer config repositories.kowal composer https://repo.kowal.store
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.

Write Your Own Review
You're reviewing: Profesjonalny system B2B dla Magento 2 Open Source
Your Rating:
Cena
Jakość
Wsparcie
loader
Loading...

You submitted your review for moderation.

This form is protected by reCAPTCHA - the Google Privacy Policy and Terms of Service apply.

Aktualizacja preferencji plików cookie