Zaawansowane modyfikacje

Jak zmodyfikować banner?

Modyfikacja banerów - wersje od 2025.2

Od wersji Comarch B2B 2025.2 dodawanie i edycja wpisów banerów jest możliwa z poziomu Panelu administracyjnego Comarch B2B. Więcej informacji znajduje się w artykule Menu Banery.  

Modyfikacja banerów - wersje do 2025.1

Do wersji Comarch B2B 2025.1 dodawanie i edycja banerów jest możliwa z poziomu katalogu i bazy danych opisanych w poniżej.  

Wgrywanie obrazków do bannera

Obrazki dla banera należy zmieniać w folderze: ClientApp/assets/images/slider. Podmiana obrazków będzie widoczna od razu, zarówno na wersji developerskiej, jak i produkcyjnej.
Wskazówka
Style domyślne, mające zastosowanie we wszystkich sliderach i banerach, można znaleźć w pliku: ClientApp/src/app/controls/slider.component.scss.
Wskazówka
Zalecany rozmiar grafiki to 1920px x 717px, format .jpg i .png.
 

Banner-slider na Stronie głównej

Kod html slidera ze Strony głównej modyfikowany jest w bazie danych. W tabeli CustomerPanel.Translations należy znaleźć rekordy, w których TSL_Description przyjmuje wartość HomePageContent. Kod będzie znajdować się w kolumnie o nazwie TSL_Value. Każdy rekord odpowiada za inną wersję językową.
Przykład
Przykład zmiany bannera na stronie głównej. 1. Do katalogu ClientApp\assets\images\slider należy skopiować nowy banner (np. o nazwie slide-nowy.png) 2. W tabeli CustomerPanel.Translations pod kluczem "HomePageContent" należy zmienić nazwę bannera np. "slide1.png" na "slide-nowy.png" 3. Następnie należy zrestartowąć pulę IIS lub przebudować cache przeglądarki 4. Na koniec wykonać skrypt BatchScripts/ngswVersionUpdate.bat Po wejściu na stronę B2B (lub odświeżeniu F5), serviceWorker po kilku sekundach zaktualizuje się do nowej wersji, razem z odświeżeniem bannera.
 

Rotacja bannera

Aby zrealizować funkcjonalność rotacji bannerów należy dodać właściwość: [autoplay]=”true”. Kod powinien wyglądać tak:
Kod
<template appSlider [items]="1" [slideBy]="1" [autoplay]="true">
Wskazówka
Wygląd slidera na stronie głównej różni się jednak od zwykłych sliderów z produktami, więc zawiera kilka modyfikacji nadpisujących domyślne style. Znajdują się one w pliku ClientApp/assets/homePage/home.component.scss.
 

Banner na stronie logowania

Kod html banerów na Stronie logowania oraz na Stronie z przypomnieniem hasła znajduje się w komponentach Angular: /ClientApp/src/app/components/account/account.component.html Kod na tych stronach zakłada jeden statyczny obrazek, nie przewiduje slidera. Treść w bannerze pobierana jest z odpowiednich pól z tabeli CustomerPanel.Translations. W celu zmiany nazwy treści na bannerze, należy odszukać rekord, w którym TSL_Descrtiption przyjmuje wartość ProductName, a dla zmiany opisu wartość B2BSalesPlatform. Następnie trzeba zmienić tekst w kolumnie TSL_Value. Zmiany kodu html w tych plikach będą widoczne od razu.
Wskazówka
Style banerów na Stronie logowania i Przypomnienia hasła zawierają kilka dedykowanych modyfikacji w pliku: ClientApp/src/global-styles/partials/authPages.scss.
 
Uwaga
Zmiany w stylach będą widoczne na produkcji dopiero po zrobieniu kompilacji interfejsu.
 

Czy można dodawać nowe języki?

Tak. Comarch B2B jest przygotowane do obsługi 33 języków.  

Zarządzanie wersjami językowymi z poziomu Panelu administracyjnego - wersje od 2025.1

Od wersji Comarch B2B 2025.1 dodawanie i modyfikacja języków jest możliwa z poziomu Panelu administracyjnego Comarch B2B. Więcej informacji znajduje się w artykule Menu Języki.  

Zarządzanie wersjami językowymi z poziomu bazy danych - wersje do 2025.0

Do wersji Comarch B2B 2025.0 dodawanie i modyfikacja języków jest możliwe tylko z poziomu bazy danych. Pełna lista języków dostępna jest w bazie danych w tabeli CustomerPanel.Languages.  

Możliwe modyfikacje:

  • Aktywacja języka – kolumna: CpL_Active, gdzie 0 – nieaktywny, 1 – aktywny
  • Domyślny język – kolumna: CpL_IsDefault, gdzie 1 – język domyślny (może być tylko jeden język domyślny)
  • Relacja języka Comarch B2B z językiem systemu Comarch ERP zapisywana jest w polu CpL_ErpId. W tym polu należy podać identyfikator języka używany w systemie ERP.
  • Przykład
    Język portugalski w Comarch B2B ma identyfikator 17, a w bazie systemu ERP ma on 13. Należy zatem podać liczbę 13 w polu CpL_ErpId
  • kolumna UserTranslations – oznacza czy są to tłumaczenia użytkownika, nie będą one kasowane przy migracji
 
Uwaga
Działanie języków jest uzależnione od przygotowania tłumaczeń artykułów i grup oraz samego interfejsu. Wszystkie frazy związane z interfejsem można znaleźć w tabeli CustomerPanel.Translations i tam należy je przetłumaczyć.
   

Czy można edytować treści maili?

Tak. Modyfikacja treści maili składa się z dwóch kroków:
  1. Modyfikacji procedury CustomerPanel.GetParametersToEmail
  2. Modyfikacji plików Template \ odpowiedni szablon html
 

Modyfikacja procedury

Procedura CustomerPanel.GetParametersToEmail zawiera zdefiniowane warunki, pobiera wartości dla odpowiednich typów dokumentów (typy dokumentów można znaleźć w dokumentacji do bazy danych systemu Comarch ERP). Procedura ta zwraca dwa wyniki:
  • dane dotyczące nagłówka dokumentu
  • dane dotyczące elementów dokumentu (pozycji)
Wartości pobierane w procedurze np. IssueDate prezentowane są w szablonie (template html), jako zmienne @issuedate@, pisane zawsze z małej litery.  

Modyfikacja szablonów maili

Szablony można modyfikować poprzez dodanie nowych informacji i zmianę odpowiedniego pliku html. Odpowiednie zmiany należy także uwzględniać w pliku orderde.html, orderen.html, orderfr.html (dla różnych wersji językowych). Możliwa jest także modyfikacja klas CSS.  
Uwaga
Należy pamiętać, że style używane w mailach są nieco uboższe od tych, które implementują przeglądarki.
   

Czy można sprawdzić czy użytkownik jest zalogowany?

Tak. W Comarch B2B API jest dostępna metoda: IdentityService.GetIdentity() - zwraca ona id klienta i osoby kontaktowej na których jesteśmy zalogowani lub wartość NULL. 
Przykład
 

Rekomendacje w zakresie bezpieczeństwa i konfiguracji

Poniżej przedstawiamy rekomendacje w zakresie bezpieczeństwa i konfiguracji aplikacji Comarch B2B. Zastosowanie się do nich zwiększy bezpieczeństwo użytkowania aplikacji.
Uwaga
Wszystkie opisane zalecenia są dobrowolne i ich wdrożenie leży po stronie klienta. Można wprowadzić wszystkie zalecenia na raz lub zastosować tylko wybrane. Im więcej rekomendacji zostanie wdrożonych, tym uzyska się większy poziom bezpieczeństwa aplikacji Comarch B2B. Niewykonanie żadnych z tych zaleceń nie spowoduje błędnego działania aplikacji.
 

Zainstalowanie certyfikatu SSL

Obecnie większość stron internetowych, a tym bardziej aplikacji dostępnych w Internecie działa za pośrednictwem połączenia szyfrowanego HTTPS. W aplikacji Comarch B2B występują obszary tj. np. strona logowania, gdzie przesyłane są login i hasło użytkownika. W celu zwiększenia bezpieczeństwa klientów, dane te powinny być przesyłane w żądaniach HTTPS, czyli zabezpieczone certyfikatem SSL. Zalecamy: Korzystanie w Comarch B2B z szyfrowanego protokołu HTTPS. Jak to zrobić? Należy we własnym zakresie zakupić certyfikat SSL, a następnie skonfigurować aplikacje Comarch B2B według instrukcji opisanej w artykule: Jak zainstalować certyfikat SSL w Comarch B2B?  

Bezpieczne skonfigurowanie IIS

IIS jest instalowany samodzielnie przez klienta, Comarch B2B nie dostarcza jego instalacji ani konfiguracji. Poniżej znajdują się zalecenia, jak skonfigurować serwer, aby zwiększyć bezpieczeństwo działania aplikacji Comarch B2B. Zalecamy: 1. Skonfigurować serwer webowy z wykorzystaniem hardeningu IIS. 2. Włączyć na serwerze nagłówki bezpieczeństwa: HSTS, CSP, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Refferer Policy. Jak to zrobić? ad. 1. Należy skonfigurować serwer według instrukcji opisanej w artykule: Jak skonfigurować serwer webowy z wykorzystaniem hardeningu IIS dla Comarch B2B? ad. 2. Należy włączyć na serwerze nagłówki bezpieczeństwa według instrukcji opisanej w artykule: Jak skonfigurować na serwerze nagłówki bezpieczeństwa?  

Korzystanie z nowego sposobu tworzenia haseł

Zmiana sposobu tworzenia nowego hasła oraz logowana została wprowadzona w wersji 2018.5 Comarch B2B. W nowym sposobie hasła są zaszyfrowane i zahaszowane, co jest najlepszą ochroną haseł użytkowników. Zalecamy: Włączyć nowy sposób zakładania hasła. Jak to zrobić? Należy w pliku konfiguracyjnym appSettings.config ustawić w parametrze "NewUserVerification" value="1". Więcej na ten temat znajduje się w artykule: Nadawanie hasła kontrahentowi i jego odzyskiwanie  

Zaszyfrowanie danych w pliku connectionStrings

W pliku konfiguracyjnym connectionStrings znajdują się dane, do których dostęp powinni mieć tylko wybrani administratorzy aplikacji Comarch B2B. Należy zaszyfrować plik, aby zapobiec nieautoryzowanemu dostępowi do bazy i aplikacji, w przypadku wycieku pliku. Zalecamy: Zaszyfrować dane w pliku connectionStrings. Jak to zrobić? Należy uruchomić plik connectionStringsEncode.bat z katalogu CustomerPanel/ BatchScripts. Więcej na ten temat znajduje się w artykule: Aktualizacja Comarch B2B
Uwaga
Plik connectionStringsEncode.bat umożliwiający zaszyfrowanie danych dostępny jest od wersji Comarch B2B 2024.0
Uwaga
Od wersji Comarch B2B 2024.1 plik connectionStrings jest automatycznie szyfrowany podczas instalacji i aktualizacji. Dodatkowo został wprowadzony wymóg zaszyfrowania danych pliku connectionStrings.config - jeśli plik nie będzie zaszyfrowany, aplikacja Comarch B2B będzie niedostępna.
 

Korzystanie z najnowszych wersji systemów ERP i Comarch B2B

Najnowsze wersje systemów ERP oraz Comarch B2B umożliwiają prace zgodnie z obowiązującymi przepisami prawa. Ponadto, zawierają nowe funkcje, zmiany i poprawki oraz aktualizacje technologii. Wszystko to sprawia, że użyteczność programów jest lepsza dla użytkowników. Zalecamy: Korzystać z najnowszych wersji systemów ERP (XL i Altum) oraz aplikacji Comarch B2B. Jak to zrobić? Należy pobrać aktualne wersje programów, a następnie je zaktualizować. Instalatory nowych wersji znajdują się w odpowiednich sekcjach na Indywidualnych Stronach dla Partnerów oraz Indywidualnych Stronach dla klientów.  

Własne modyfikacje - podstawowe informacje

Technologia

Uwaga
Osoba, która zamierza modyfikować Comarch B2B powinna posiadać umiejętności swobodnego poruszania się w poniższych technologiach.
Technologie wykorzystywane do modyfikacji interfejsu Comarch B2B to:
  • Baza danych systemu Comarch ERP XL / Comarch ERP Altum (procedury i funkcje w schemacie CustomerPanel)
  • HTML5
  • CSS3
  • Angular 19 – od wersji Comarch B2B 2025.2  (Angular 15 – dla wersji do Comarch B2B 2025.1)
  • ASP Web API / MVC
  • Sass
  • TypeScript 5
  • NodeJS – tylko dla celów deweloperskich
Uwaga
Od wersji Comarch B2B 2024.0 wykorzystywany jest Microsoft.AspNet.WebApi.WebHost w wersji 5.3.0.
Wskazówka
 

Struktura aplikacji

Struktura Comarch B2B oparta jest o katalog instalacyjny aplikacji oraz o obiekty w bazie danych. Poniżej przedstawione są niezbędne informacje do wykonania zmian w aplikacji.
      • Obiekty bazy danych – w odpowiedniej bazie systemu Comarch ERP XL/Comarch ERP Altum oraz po pobraniu plików instalacyjnych w katalogach SQLXL/SQLAltum.
      • ClientApp \ Src – pliki aplikacji do ewentualnych modyfikacji
      • ClientApp \ Prod – skompilowane pliki aplikacji
      • BIN – pliki wyszukiwarki i aplikacji API
Dodatkowo:
      • ClientApp \ Assets* – pliki bannera (dotyczy wersji niższych od Comarch B2B 2025.2)
      • ClientApp \ Assets* – pliki logotypu / manifestu – (dotyczy wersji niższych wersji od Comarch B2B 2025.1)
      • Templates \ Mails* – pliki szablonów e-maili (dotyczy wersji niższych od Comarch 2025.0)
* Pliki szablonów maili, logotypów, banerów zostały przeniesione do Panelu administracyjnego Comarch B2B.
 

Przygotowanie aplikacji developerskiej

Rozpoczęcie pracy deweloperskiej wymaga zainstalowanych narzędzi:
      • Visual Studio 2022 / Visual Studio Code
      • NodeJS
      • Angular CLI
      • Pakiet Visual Studio: Attribute Routing
Wskazówka
Po zapoznaniu się z technologią i zainstalowaniu niezbędnych narzędzi można przystąpić do skompilowania aplikacji zgodnie z artykułem Skompilowanie wersji developerskiej i produkcyjnej.

Skompilowanie wersji produkcyjnej i developerskiej

Skompilowanie aplikacji produkcyjnej Comarch B2B

W celu skompilowania aplikacji produkcyjnej Comarch B2B należy: 1. Uruchomić wiersz polecenia w katalogu ClientApp
Uwaga
Po pobraniu wymaganych modułów, zostanie wyświetlona informacja o dostępności nowszych wersji tych modułów. Nie są one wymagane do poprawnego działania aplikacji Comarch B2B, natomiast ich aktualizacja (komendą npm audit fix) może powodować problemy z uruchomieniem środowiska developerskiego. Dlatego niezalecane jest wykonywanie komendy npm audit fix. Od wersji Comarch B2B 2020.0 należy dodatkowo użyć komendy npm install file-saver
2. Uruchomić komendę npm run prod-build  

Skompilowanie wersji developerskiej Comarch B2B

W celu skompilowania aplikacji developerskiej obsługiwaną przez node.js Comarch B2B należy: 1. Uruchomić komendę npm run start.
Wskazówka
Polecenie wykonuje się tylko raz. Ta wersja obserwuje pliki w celu wykrycia zapisu i automatycznie kompiluje jedynie zmodyfikowane pliki. Tworzy również websocket, który automatycznie odświeża przeglądarkę po kompilacji plików.
Wersja developerska będzie dostępna w przeglądarce pod adresem localhost:4200. 2. W pliku ClientApp/proxy.conf.json należy zdefiniować przekierowania na właściwy serwer IIS (z odpowiednim portem), do którego mają docierać zapytania z przeglądarki.  
Wskazówka
Przed przystąpieniem do wykonania własnych modyfikacji warto zapoznać się z dokumentacją do metod API opisaną w artykule Swagger – opis metod API

Swagger - opis metod API

Dostęp do dokumentacji do metod API

Comarch B2B posiada dodatkową dokumentację do metod API zgodną ze standardem OpenAPI z użyciem narzędzia Swagger. Aby uruchomić dokumentację Swagger-a należy:
  • w Panelu Administracyjnym w zakładce Ustawienia/ Swagger należy zdefiniować login i hasło,
  • zalogować się do Comarch B2B na użytkownika
  • następnie w przeglądarce wpisać URL/swagger/login
  • podać login i hasło zdefiniowane w Panelu Administracyjnym.
Wskazówka
Dla wersji sprzed 2025.0 należy zdefiniować login i hasło w pliku appsettings.config  w polach: add key=”SwaggerLogin” value=”” add key=”SwaggerPassword” value=””

Dokumentacja do metod API

Po zalogowaniu uzyskamy dostęp do opisu metod API używanych w Comarch B2B.
Uwaga
Obecnie nie wszystkie metody są opisane w dokumentacji, w kolejnych wersjach sukcesywnie będą pojawiać się opisy poszczególnych metod.
Wskazówka
Przeczytaj także artykuł: Jak modyfikować interfejs Comarch B2B?

Jak modyfikować interfejs Comarch B2B?

Własne modyfikacje interfejsu - wstęp

Modyfikować interfejs Comarch B2B można nanosząc zmiany w plikach zawartych w katalogu ClientApp. Aby zobaczyć efekty zmian w kodzie plików na wersji produkcyjnej, należy skompilować wersję produkcyjną - po wprowadzeniu zmian uruchomić wiersz poleceń w katalogu ClientApp, a następnie wpisać komendę npm run prodbuild.
Uwaga
Zmiany w wersji deweloperskiej będą widoczne od razu.
 

Modyfikacje wykonywane na bazie danych

Wszelkie modyfikacje w bazie danych widoczne będą od razu zarówno w wersji deweloperskiej, jak i produkcyjnej.  

Modyfikacja styli kolorystycznych

Modyfikacja styli wykorzystywanych w Comarch B2B znajduje się w różnych miejscach, w zależności od modyfikowanego o obszaru.
  • Style dla interfejsu, obejmujące m.in. ustawienia motywu kolorystycznego – znajdują się w pliku ClientApp/assets/configuration.scss
  • Style globalne – znajdują się w katalogu ClientApp/src/global-styles
  • Kod strony głównej – znajduje się w katalogu ClientApp/assets/homePage.
    Uwaga
    Treść strony głównej można również modyfikować z poziomu bazy danych.W tabeli CustomerPanel.Translations należy odszukać rekordy, w których TSL_Description przyjmuje wartość HomePageContent, a następnie zmodyfikować zawartość kolumny TSL_Value. Każdy rekord odpowiada za inną wersję językową.W pliku html strony głównej, odwołanie do pola odpowiedzialnego za treść wygląda następująco: r.translations.homePageConten
  • Pliki pozostałych komponentów – znajdują się w katalogu ClientApp/src/app
    Wskazówka
    Na wersji deweloperskiej aktualny stan komponentów można zobaczyć używając wtyczki do przeglądarki o nazwie Augury (https://augury.angular.io). Wtyczka pokazuje m.in. drzewo komponentów, zmienne i metody dostępne w pliku html dla wybranego komponentu oraz aktualne wartości dostępnych zmiennych.Za pomocą wtyczki można również zmienić wartości zmiennych i zobaczyć na stronie rezultat tych zmian. Wtyczka nie działa na wersji produkcyjnej.
 

Jak dodać własne pola na interfejs?

Aplikację Comarch B2B można dostosować do własnych potrzeb m.in. poprzez dodawanie dodatkowych pól na interfejsie. Obiekty API zawierają obiekt extensions.extendedItemsList, w którym znajdują się wszystkie własnoręcznie dodane pola. Obiekt extensions.extendedItemsList należy odebrać z API i przekazać do klasy komponentu, aby następnie wyświetlić dane na interfejsie. Obiekt został już przekazany do odpowiednich klas w następujących miejscach:
  • Lista towarów – towary
  • Szczegóły towaru – ogólne oraz zakupowe właściwości towaru
  • Koszyk – towary
  • Listy dokumentów – wszystkie obiekty
  • Szczegóły dokumentów – wszystkie obiekty
Wskazówka
W pozostałych miejscach trzeba przekazać ten obiekt klasom samodzielnie.
Uwaga
W obiektach API znajduje się również przestarzały obiekt objectExtensions, który jest poprzednią wersją obiektu exensions i pozostał dla zapewnienia zgodności wstecz. ObjectExtensions zostanie usunięty w następnych wersjach.

Jak dodać własne pola na Liście towarów?

W niniejszym artykule została opisana modyfikacja Listy towarów.  

Przykład:

Na Liście towaru dla każdego towaru dodamy kod EAN.  

Kroki do wykonania:

1. Należy dodać kolumnę _EAN do procedury CustomerPanel.GetArticleList
Uwaga
Wszystkie nowe kolumny należy dodawać z prefiksem dolnego podkreślenia "_" , np. Twr_Ean AS _EAN Ma to związek z wdrożeniem rozwiązania OpenAPI i systematyzowaniem metod API, które obecnie są w Comarch B2B.
  2. Następie należy dodać tłumaczenia w tabeli CustomerPanel.Translations Przykładowy INSERT dla języka polskiego:
Kod
insert into CustomerPanel.Translations(TSL_LanguageId, TSL_Value,TSL_Description) values (1, N'EAN','EAN');
  3. Ostatnim krokiem jest zmodyfikowanie interfejsu Na Liście towarów przygotowany został przykładowy kod, który wyświetla nowe pola dodane do towaru z wykorzystaniem komponentu ApiExtensions. Wystarczy usunąć znaczniki komentarza. Definicje obiektów zostały przygotowane, a dane towaru z API zostały przekazane do klasy komponentu. Komponent jest również odpowiednio ostylowany dla każdego z widoków. Komponent ApiExtensions został przygotowany w taki sposób, aby nazwa pola odpowiadała kluczowi tłumaczenia (TSL_Description z tabeli CustomerPanel.Translations).
Przykład
Pole o nazwie _EAN wyświetli etykietę znajdującą się pod kluczem EAN w tabeli tłumaczeń. W przypadku braku tłumaczenia wyświetli się nazwa pola.
Wskazówka
Analogiczny zakomentowany kod został przygotowany również na szczegółach dokumentów w polach nagłówkowych dokumentu.
 

Jak dodać własne pola na Szczegółach towaru?

W niniejszym artykule została opisana modyfikacja Szczegółów towaru.
Uwaga
Na szczegółach towaru obiekt rozszerzeń został odebrany z API i przekazany do klasy komponentu w następujących obszarach:
  • Podstawowe dane towaru
  • Zakupowe dane towaru
Samodzielnie należy wybrać umiejscowienie nowych pól oraz odpowiednio ostylować sekcję.
 

Przykład:

Dodamy nową informacje o certyfikacie i numerze katalogowym na szczegółach towaru.  

Kroki do wykonania:

1. Należy dodać przykładowe pola: _Certificate i _CatalogNumber do procedury [CustomerPanel].[GetArticleGeneralInfoXl] Przykładowo dodane nowe pola do procedury [CustomerPanel].[GetArticleGeneralInfoXl]:
Kod
…… ,[EAN] = Twr_Ean ,ItemExistsInCurrentPriceList = @itemExistsInCurrentPriceList ,_Certificate = Twr_Certyfikat ,_CatalogNumber = Twr_Katalog from CDN.TwrKarty i ……
Uwaga
Wszystkie nowe kolumny należy dodawać z prefiksem _ np. _CatalogNumber Ma to związek z wdrożeniem rozwiązania OpenAPI i systematyzowaniem metod API, które obecnie są w Comarch B2B
  2. Należy dodać tłumaczenia w tabeli CustomerPanel.Translations Przykładowy INSERT dla języka polskiego:
Kod
insert into CustomerPanel.Translations(TSL_LanguageId, TSL_Value,TSL_Description) values (1, N'Certyfikat’, 'Certificate'); insert into CustomerPanel.Translations(TSL_LanguageId, TSL_Value,TSL_Description) values (1, N'Numer katalogowy’, 'CatalogNumber');
3. Ostatnim krokiem jest zmodyfikowanie interfejsu W pliku ClientApp/src/app/components/product-details/product-details.component.html. został dodany kod: Co robi dodany powyżej kod?
  • Wyświetla nowe pola na interfejsie z użyciem tłumaczeń odpowiadających nazwom pól
  • Komponent ApiExtensions domyślnie opakowuje każdą parę klucz-wartość w kontener ‘<div>’. Właściwość [removeElementContainer]=”true” oznacza, że wszystkie pola klucz-wartość wyświetlą się bez kontenerów, jako sąsiedzi w trzewie DOM.
  • Wszystkie w ten sposób nowo dodane pola dostępne są na widoku szczegółów towaru w obiekcie „generalInfo”
Uwaga
TSL_Description z tabeli CustomerPanel.Translations jest kluczem, który wskazuje właściwe tłumaczenie.
  4. W efekcie powyższy przykład wyświetli dodaną informację w „tabelce właściwości” towaru:  
Uwaga
Powyższe zmiany w kodzie ts i html będą widoczne w wersji produkcyjnej dopiero po kompilacji interfejsu.
   

Jak dodać własne pola w Strefie klienta na Liście reklamacji?

W niniejszym artykule została opisana modyfikacja Listy reklamacji dostępnej w Strefie klienta.  

Przykład:

Dodamy kolumnę Osoba prowadząca reklamacje na Liście reklamacji w Strefie klienta.  

Kroki do wykonania:

1. Należy dodać kolumnę _OsobaProwadzaca do procedury CustomerPanel.GetComplaintList 2. Następnie należy dodać tłumaczenia w tabeli CustomerPanel.Translations 3. Zmodyfikować plik complaints.service.ts
Wskazówka
Warto pamiętać:
  • Tablica kolumn zdefiniowana jest w konstruktorze klasy. Jeżeli kolumna ma tylko wyświetlać tekst i nie musi być sformatowana w żaden konkretny sposób, to wystarczy do tablicy dodać wpis: { property: [nazwa property w api], translation: [klucz dla tłumaczenia, który przychodzi w api]}
  • Jeżeli nazwa property i klucz do tłumaczeń są takie same, to wystarczy podać tylko property.
  • Kolumny wyświetlą się w kolejności podanej w tablicy columns.
  • Klucz do tłumaczeń podaje się zawsze z małej litery. W naszym przykładzie zatem będzie to { property: ‘_osobaProwadzaca’ }
 

Jak usunąć pola z interfejsu?

W niniejszym artykule została opisana modyfikacja polegająca na usunięciu danego pola z interfjesu Comarch B2B.  

Przykład:

Usuniemy stan magazynowy z Listy towarów.
Wskazówka
Kod html Listy towarów znajduje się w pliku ClientApp/src/app/components/products/products.component.html. Na liście, oprócz wartości i etykiety przy towarze, należy także usunąć etykietę z nagłówka tabeli.
 

Kroki do wykonania:

Aby usunąć stan magazynowy z Listy towarów  należy usunąć zaznaczone linie kodu:    

Jak dodać własne prawa?

Wskazówka
Wszystkie domyślne prawa, które można nadać użytkownikowi w aplikacji Comarch B2B zostały opisane w artykule Uprawnienia i role Kontrahenta.
 

Dodanie własnych praw użytkownika

Na potrzeby własnych modyfikacji istnieje możliwość zdefiniowania nowych praw. Dodanie nowych praw użytkownika wiąże się z modyfikacją procedury SQL oraz modyfikacją interfejsu. Kroki do wykonania: 1. Należy zmodyfikować procedurę CustomerPanel.GetContactPersonRights. Procedura pobiera dane z tabeli CDN.Prawa.
Uwaga
Należy pamiętać, że nowe prawa muszą nazywać się od _ (podkreślnik), przykładowo: _HasAccessTo
2. Po poprawnej modyfikacji praw w obiekcie Configuration (API/Configuration/GetForCustomer) – wywołanie metody można sprawdzić przy użyciu narzędzia SWAGGER – otrzymamy nowododane prawa. 3. Następnie można zaimplementować zmiany na interfejsie:  

Jak modyfikować usługę wyszukiwania?

Wskazówka
Usługa wyszukiwarki Comarch B2B Search instalowana jest automatycznie w trakcie instalacji aplikacji Comarch B2B. Podstawowa konfiguracja wyszukiwarki została opisana w artykule Wyszukiwarka – konfiguracja i modyfikacje.
 

Zaawansowana modyfikacja usługi wyszukiwania Comarch B2B Search

Na własne potrzeby użytkowania aplikacji Comarch B2B można zmodyfikować usługę wyszukiwarki. Modyfikacja usługi Comarch B2B Search składa się z trzech kroków:
  • Modyfikacji procedury wyszukiwania
  • Modyfikacji parametrów konfiguracyjnych
  • Restartu usługi Comarch B2B Search
  Kroki do wykonania: 1. Należy zmodyfikować procedurę wyszukiwania W tym celu odnaleźć odpowiednią procedurę związaną z wyszukiwaniem. Procedury te mają nazwę CustomerPanel.Search*, gdzie * oznacza odpowiedni obszar wyszukiwania np. Articles, Orders. Modyfikacja procedury polega na dodaniu lub usunięciu kolumny, po której chcemy wyszukiwać.
Przykład
Zmodyfikowanie wyszukiwania zamówień Za wyszukiwanie zamówień odpowiedzialna jest procedura: CustomerPanel.SearchOrders Mamy w niej wyszukiwanie po numerze zamówienia, jak poniżej:
Kod
'^SourceNumber' = isnull(ZaN_DokumentObcy,'')
Możemy dodać do niej na dwa sposoby nową kolumnę do wyszukiwania Sposób 1sklejamy wartości
Kod
'^SourceNumber' = isnull(ZaN_DokumentObcy,'') +' '+ isnull(ZaN_DokumentObcyP,'')
Sposób 2 dodajemy nową kolumnę Pamiętamy, aby nazwa kolumny rozpoczynała się od znacznika ^
Kod
'^SourceForeignNumber'= isnull(ZaN_DokumentObcyP,'')
  2. Następnie należy zmodyfikować parametry wyszukiwania Jeśli w kroku 1 dodaliśmy nową kolumnę należy ją uwzględnić w pliku konfiguracyjnym usługi. Plik konfiguracyjny nazywa się: CustomerPanel.IndexService.exe.config i może zostać modyfikowany np. w notatniku. Należy odnaleźć odpowiednią sekcję, w tym przykładzie Orders, i dodać odpowiednie nowe pole, określić jego wagę w postaci liczby 1-15. Waga określa ważność danej kolumny w wyszukiwaniu.
Przykład
Modyfikacja pliku konfiguracyjnego:
Kod
<scope name="Orders"> <field name ="NumberString" weight="8"/> <field name ="SourceNumber" weight="6"/> <field name ="SourceForeignNumber" weight="6"/> </scope>
3. Ostatnim krokiem jest restart usługi wyszukiwania Należy zrobić restart usługi wyszukiwania Comarch B2B Search. Po restarcie zostanie wykonana reindeksacja i będzie można zweryfikować czy po nowododanej kolumnie wyszukiwarka szuka poprawnie.  

Jak skorzystać z roli zalogowanego użytkownika?

Role użytkowników zalogowanych są dostępne w interfejsie użytkownika w obiekcie configService.permissions. Obiekt ten dostępny praktycznie w każdym miejscu w Comarch B2B. Definicja obiektu Angular jest dostępna w src/app/model/config.service.ts. Znajdują się tam dwa obiekty z prawami:
  • rightXL
  • rightAltum
Wskazówka
Wszystkie domyślne prawa, które można nadać użytkownikowi w aplikacji Comarch B2B zostały opisane w artykule Uprawnienia i role Kontrahenta.

Jak wykluczyć aktualizację tłumaczeń przez instalator?

Jeśli chcemy wykluczyć aktualizacje tłumaczeń w trakcie instalacji nowych wersji należy skorzystać z dwóch możliwych opcji:
  • Wykluczyć cały język – Należy w tabeli CustomerPanel.Languages pole Cpl_UserTranslations ustawić dla języka wartość = 1. Nowe tłumaczenia zostaną dodane, ale obecne nie zostaną zmienione.
  • Wykluczyć konkretną frazę – Należy w tabeli CustomerPanel.ResourcesKeysNotToUpdate dodać nazwę frazy, która nie będzie podlegać aktualizacji. Nazwę frazy można znaleźć w kolumnie TsL_Description w tabeli CustomerPanel.Translations i następnie dodać ją do tabeli powyżej.
 

Jak dodać wpis do menu Aktualności w Strefie Klienta?

Wskazówka
Po zalogowaniu do Comarch B2B w Strefie klienta/ Aktualności użytkownik ma możliwość przeglądnięcia różnych artykułów dodanych przez administratora aplikacji.
 

Dodawanie wpisu do Aktualności z poziomu Panelu administracyjnego (wersje od 2025.1)

Od wersji Comarch B2B 2025.1 dodawanie wpisów do Aktualności jest możliwe z poziomu Panelu administracyjnego Comarch B2B. Więcej informacji znajduje się w artykule Menu Aktualności.  

Dodawanie wpisu do Aktualności z poziomu bazy danych (wersje do 2025.0)

Do wersji Comarch B2B 2025.0 dodawanie wpisów do Aktualności jest możliwe tylko z poziomu bazy danych. Opis pól:
Nazwa pola  Opis Opcjonalne
title Tytuł news-a Tak
content Treść newsa (HTML) Tak
category Kategoria Tak
expirationDate Data ważności Tak
imgId id zdjęcia, kolumna dab_id (np. CDN.DaneBinarne dla ERP XL) Nie
height Wysokość zdjęcia Nie
width Szerokość zdjęcia Nie
attachments Lista id załączników przypisanych do tworzonego news-a. kolumna dab_id (np. CDN.DaneBinarne dla ERP XL) Nie
languages lista języków, co najmniej jeden język być musi dodany Lista języków w tabeli CustomerPanel.Languages Tak
customerIds lista id kontrahentów, która ma mieć dostęp do news-a. Pusta lista => wszyscy mają dostęp. Nie
  Kroki do wykonania 1. Dodawanie nowego wpisu Procedura: Aby dodać nowy wpis należy wywołać procedurę: CustomerPanel.NewsAdd Parametry: @title nvarchar(250), @content nvarchar(max), @category nvarchar(125), @expirationDate date, @imgId int, @imgHeight int, @imgWidth int, @attachments CustomerPanel.[IntegerDatabase] readonly, @customerIds CustomerPanel.[IntegerDatabase] readonly, @languages CustomerPanel.[IntegerDatabase] readonly   2. Dodanie / usunięcie języka Procedury: CustomerPanel.NewsLanguagesAdd CustomerPanel.NewsLanguagesRemove Parametry: @NewsId int, @LanguageId int   3. Dodanie / usunięcie załącznika Procedury: CustomerPanel.NewsAttachmentAdd CustomerPanel.NewsAttachmentRemove Parametry: @NewsId int, @AttachmentId int   4. Dodanie / usunięcie Klienta Procedury: CustomerPanel.NewsCustomerAdd CustomerPanel.NewsCustomerRemove Parametry: @NewsId int, @CustomerId int   5. Aktualizacja aktualności (nazwa news, content, kategoria) Procedura: CustomerPanel.NewsBasicPropUpdate Parametry: @newsId int, @title nvarchar(250), @content nvarchar(max), @category nvarchar(125), @expirationDate date Jeżeli wartość parametru = NULL to pole nie zostanie zaktualizowane.   6. Aktualizacja zdjęcia Procedura: CustomerPanel.NewsImageUpdate Parametry: @NewsId int, @ImgId int, @ImgHeight int, @ImgWidth int
Wskazówka
Procedura zadziała jedynie, gdy parametry @ImgId, @ImgHeight, @ImgWidth będą różne od NULL lub gdy wszystkie będą równe NULL.
  7. Usunięcie aktualności Procedura: CustomerPanel.NewsRemove Parametr: @newsId int  

Jak dodać nowy komponent (stronę)?

Dodanie własnej strony

  Istnieje możliwość robienia bardziej zaawansowanych modyfikacji interfejsu, m.in. takich jak dodawanie nowych stron, widoków.
Uwaga
Osoba, która zamierza modyfikować Comarch B2B powinna zapoznać się z technologią i strukturą aplikacji Comarch B2B opisaną w artykule Własne modyfikacje – podstawowe informacje.
Wskazówka
Konfiguracja routera dostarczanego przez Angular polega na przyporządkowaniu obiektu komponentu do ścieżki URL.
 

Kroki do wykonania:

1. Aby utworzyć nowy komponent, należy uruchomić wiersz poleceń w katalogu komponentów: ClientApp/src/app/components 2. Następnie należy uruchomić komendę: ng g c NazwaKomponentu. Uruchomienie komendy:
  • Wygeneruje katalog nazwa-komponentu z plikami html, scss oraz ts dla komponentu NazwaKomponentuComponent.
  • Zarejestruje komponent w głównym module aplikacji plik ClientApp/src/app/app.module.ts
Wskazówka
Menu znajdujące się pod nagłówkiem jest kontekstowe, więc jest dodawane w kodzie HTML każdej podstrony. Aby zobaczyć domyślne menu na stronie nowego komponentu, należy dodać znacznik w jego kodzie HTML.
  3. Następnie należy zmodyfikować konfigurację routera, aby przyporządkować ten komponent odpowiedniej ścieżce URL. Konfiguracja routera znajduje się w pliku z głównym modułem aplikacji ClientApp/src/app/app.module.ts. Wystarczy odnaleźć stałą routes, a następnie dodać odpowiedni wpis do tablicy, na przykład w ten sposób: 4. Nowa strona została dodana. Teraz można wypisać link do nowej strony na interfejsie.
Wskazówka
Warto dodać dla linku nowe tłumaczenia, które realizuje się tak samo jak w przypadku nowej kolumny wypełniając tabelę CustomerPanel.Translations.
W zależności od potrzeb, link do nowej strony można wyświetlić na różne sposoby:
  • Zwykły link w dowolnym miejscu na stronie
    Kod
    <a [routerLink]=”[‘/NazwaKomponentu’]” routerLinkActive=”active”> {{r?.translations?.link}} </a>
  • Link na stałe do menu znajdującego się pod nagłówkiemPlik: ClientApp/src/app/components/menu.component.html
    Wskazówka
    Link dodany w ten sposób będzie widoczny dla każdego rodzaju menu.
  • Link tylko do domyślnego menu Domyślne menu jest widoczne na stronie głównej, liście produktów, szczegółach produktu, na stronie z promocjami, a teraz również w nowym komponencie. Elementy domyślnego menu są przypisywane w serwisie MenuService, po pobraniu pełnego menu z serwera ClientApp/src/app/model/menu.service.ts, metoda loadFullMenuItems.Serwis przechowuje je w polu defaultMenuItems. Można więc rozszerzyć tablicę o nowy element menu, na przykład tuż po wybraniu, które elementy pełnego menu mają się znajdować w domyślnym menu.
    Wskazówka
    Link dodany w ten sposób będzie miał domyślnie przypisaną ikonkę menu. Można ją nadpisać w stylach globalnych, w pliku: ClientApp/src/app/global styles/partials/common.scss.
5. Efekt końcowy - Całość wykonanych dotychczas zmian powinna wyglądać jak na poniższym screenie:
Uwaga
Przykłady nie uwzględniają stylowania pod RWD.

Jak przekierować aplikację na własną stronę po zalogowaniu?

Przekierowanie aplikacji na własną stronę po zalogowaniu

  Istnieją dwie możliwości zrobienia takiego przekierowania:
  • Dodanie przekierowania po zalogowaniu można utworzyć w pliku ze stroną logowania: Views/Account/Login.cshtml. W pobliżu kodu HTML odpowiedzialnego za formularz logowania należy odnaleźć zmienną ReturnUrl, a następnie podmienić wartość ViewBag.ReturnUrl na własną ścieżkę.
    Wskazówka
    Powyższa zmiana będzie widoczna od razu na stronie.
  •  
  • Dodanie nowego komponentu jako stronę główną lub jako domyślną (otwieraną, gdy router nie znajdzie żadnej strony o podanej ścieżce).
    Uwaga
    Obie zmiany wymagają kompilacji plików *.ts.
      Ustawienie strony głównej Ustawić stronę jako główną można tworząc nowy, osobny route dla dotychczasowej strony głównej, a następnie dodać przekierowanie dla pustego ciągu znaków.   Ustawienie strony domyślnej Do ustawienia domyślnej strony służy specjalny ciąg znaków ‘**’. W tym przypadku można przypisać konkretny komponent zamiast używać przekierowania.
  

Jak rozszerzyć działanie webAPI o nowe dane?

Uwaga
Pełen kod modyfikacji można pobrać tutaj: https://www.ibard.com/d/6dd32f2c2df8d160dc8ed39e86e20524c2059783 
Uwaga
Przed kompilacją projektu należy podnieść Microsoft.AspNet.WebApi.WebHost do wersji 5.3.0
 

Kroki do wykonania

1. W pierwszym kroku należy przygotować na bazie procedurę: Comarch B2B/SqlXL/getMyArticle.sql Procedura zawiera parametr Id towaru, który będzie wyróżniany oraz będzie wyświetlać kod, nazwę, jednostkę oraz opis. 2. Następnie potrzebny jest Controller, który udostępni te dane w API. W tym celu należy nadpisać bibliotekę MyExtension i umieścić ją w katalogu Bin aplikacji Comarch B2B. Aby to uzyskać potrzebujemy zdefiniować nowy projekt w Visual Studio, wskazać ASP.NET WebApplication i WebAPI.

Jak umożliwić wykonanie kodu (dll) przed zalogowaniem użytkownika?

W Comarch B2B domyślnie wszystkie metody wymagają, aby użytkownik był zalogowany. Istnieje jednak możliwość uruchomienia napisanej własnej metody przed zalogowaniem.

Kroki do wykonania

1. Należy explicite pozwolić na uruchomienie metody przed zalogowaniem dodając nad metodą nagłówek [AllowAnonymous].   2. W nowo powstałym projekcie zanim zostanie stworzony kontroler, należy zainstalować Attribute Routing:
  • W menu w zakładce Tools należy wskazać: NuGet Package Manager\ Package Manager Console.
  • W linii komend należy wpisać: Install-Package Microsoft.AspNet.WebApi.WebHost i nacisnąć klawisz Enter.
Dzięki temu wersja jest kompatybilna z Web API 2.0. 3. Teraz należy kliknąć prawym przyciskiem myszy na katalog Controller i stworzyć nowy plik o dowolnej nazwie lub zmodyfikować istniejący ValuesController.cs.   4. W utworzonym pliku należy zmodyfikować namespace na CustomerPanel.Controllers oraz nad klasą dodać [RoutePrefix("api/Extension")].  5. Wewnątrz klasy należy zdefiniować metodę wyciągającą dane z bazy MyExtension\Controllers\ExtensionApiController.cs. 6. Kod kontrolera możemy weryfikować (debuggowanie). W tym celu najlepiej ustawić kursor myszki wewnątrz ciała metody i nacisnąć F9. Następnie uruchomić projekt w trybie debugowania. Jeśli proces dalej nie działa należy sprawdzić czy w pliku web.config mamy ustawioną wartość jak niżej:
Kod
<compilation debug="true" targetFramework="4.5"/>
7. Następnie kompilujemy aplikacje i dodajemy nowo powstałą bibliotekę MyExtension\Bin\MyExtension.dll do katalogu Bin naszej aplikacji. 8. Po zalogowaniu należy wprowadzić w okno adresu url przykładowe wywołanie serwisu: localhost/dorobki/api/Extension/1
Wskazówka
Prawidłowe wprowadzenie wartości skutkuje wyświetleniem danych towaru zapisanych w jsonie.