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ładJę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
UwagaDział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:- Modyfikacji procedury CustomerPanel.GetParametersToEmail
- 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:Wartości pobierane w procedurze np. IssueDate prezentowane są w szablonie (template html), jako zmienne @issuedate@, pisane zawsze z małej litery.- dane dotyczące nagłówka dokumentu
- dane dotyczące elementów dokumentu (pozycji)
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.UwagaNależ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.UwagaWszystkie 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 odzyskiwanieZaszyfrowanie 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 B2BUwagaPlik connectionStringsEncode.bat umożliwiający zaszyfrowanie danych dostępny jest od wersji Comarch B2B 2024.0UwagaOd 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
UwagaOsoba, 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
UwagaOd wersji Comarch B2B 2024.0 wykorzystywany jest Microsoft.AspNet.WebApi.WebHost w wersji 5.3.0.WskazówkaZachęcamy do zapoznania się z ogólnodostępnymi poradnikami dotyczącymi technologii, w której stworzony jest Comarch B2B: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
-
-
-
- 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)
-
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ówkaPo 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 ClientAppUwagaPo 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-buildSkompilowanie 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ówkaPolecenie 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ówkaPrzed przystąpieniem do wykonania własnych modyfikacji warto zapoznać się z dokumentacją do metod API opisaną w artykule Swagger – opis metod APISwagger - 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ówkaDla 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.UwagaObecnie nie wszystkie metody są opisane w dokumentacji, w kolejnych wersjach sukcesywnie będą pojawiać się opisy poszczególnych metod.
WskazówkaPrzeczytaj 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.UwagaZmiany 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.UwagaTreść 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ówkaNa 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ówkaW pozostałych miejscach trzeba przekazać ten obiekt klasom samodzielnie.UwagaW 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.GetArticleListUwagaWszystkie 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:Kod3. 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.insert into CustomerPanel.Translations(TSL_LanguageId, TSL_Value,TSL_Description) values (1, N'EAN','EAN');
Komponent ApiExtensions został przygotowany w taki sposób, aby nazwa pola odpowiadała kluczowi tłumaczenia (TSL_Description z tabeli CustomerPanel.Translations).
PrzykładPole 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ówkaAnalogiczny 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.UwagaNa szczegółach towaru obiekt rozszerzeń został odebrany z API i przekazany do klasy komponentu w następujących obszarach:Samodzielnie należy wybrać umiejscowienie nowych pól oraz odpowiednio ostylować sekcję.- Podstawowe dane towaru
- Zakupowe dane towaru
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 ……UwagaWszystkie 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 B2B2. Należy dodać tłumaczenia w tabeli CustomerPanel.Translations Przykładowy INSERT dla języka polskiego:Kod3. Ostatnim krokiem jest zmodyfikowanie interfejsu W pliku ClientApp/src/app/components/product-details/product-details.component.html. został dodany 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');
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”
UwagaTSL_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:
UwagaPowyż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.tsWskazówkaWarto 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ówkaKod 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ówkaWszystkie 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.UwagaNależy pamiętać, że nowe prawa muszą nazywać się od _ (podkreślnik), przykładowo: _HasAccessTo2. 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ówkaUsł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: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ć.- Modyfikacji procedury wyszukiwania
- Modyfikacji parametrów konfiguracyjnych
- Restartu usługi Comarch B2B Search
PrzykładZmodyfikowanie wyszukiwania zamówień Za wyszukiwanie zamówień odpowiedzialna jest procedura: CustomerPanel.SearchOrders Mamy w niej wyszukiwanie po numerze zamówienia, jak poniżej:KodMożemy dodać do niej na dwa sposoby nową kolumnę do wyszukiwania Sposób 1 – sklejamy wartości'^SourceNumber' = isnull(ZaN_DokumentObcy,'')KodSposób 2 – dodajemy nową kolumnę Pamiętamy, aby nazwa kolumny rozpoczynała się od znacznika ^'^SourceNumber' = isnull(ZaN_DokumentObcy,'') +' '+ isnull(ZaN_DokumentObcyP,'')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ładModyfikacja 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ówkaWszystkie 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ówkaPo 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:
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 intNazwa 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 WskazówkaProcedura 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 intJak 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.UwagaOsoba, 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ówkaKonfiguracja 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ówkaMenu 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ówkaWarto 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 stronieKod<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ówkaLink 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ówkaLink 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:
UwagaPrzykł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ówkaPowyż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).
UwagaObie 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?
UwagaPełen kod modyfikacji można pobrać tutaj: https://www.ibard.com/d/6dd32f2c2df8d160dc8ed39e86e20524c2059783UwagaPrzed kompilacją projektu należy podnieść Microsoft.AspNet.WebApi.WebHost do wersji 5.3.0Kroki 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:
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.- 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.
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:
Kod7. Następnie kompilujemy aplikacje i dodajemy nowo powstałą bibliotekę MyExtension\Bin\MyExtension.dll do katalogu Bin naszej aplikacji.<compilation debug="true" targetFramework="4.5"/>
8. Po zalogowaniu należy wprowadzić w okno adresu url przykładowe wywołanie serwisu: localhost/dorobki/api/Extension/1
WskazówkaPrawidłowe wprowadzenie wartości skutkuje wyświetleniem danych towaru zapisanych w jsonie. - Dodanie nowego komponentu jako stronę główną lub jako domyślną (otwieraną, gdy router nie znajdzie żadnej strony o podanej ścieżce).
- 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.
- Pliki pozostałych komponentów – znajdują się w katalogu ClientApp/src/app


