Własne wyzwalacze SQL w Comarch ERP XL

Podstawą systemu Comarch ERP XL jest baza danych, a dokładniej relacyjna baza danych SQL. Jednym z mechanizmów wewnętrznych takiej bazy są wyzwalacze, czyli polecenia bazodanowe wykonywane w reakcji na określone zdarzenie, takie jak dodanie lub modyfikacja rekordu. W tym artykule przedstawię kilka przykładów jak za pomocą dodatkowych wyzwalaczy możemy usprawnić pracę z Comarch ERP XL.

UWAGA! Wyzwalacze są potężnym narzędziem w doświadczonych rękach i bardzo niebezpiecznym w nieumiejętnych. Są one uruchamiane zawsze w przypadku wybranego zdarzenia, przez co błąd w procedurze wyzwalacza może mieć daleko idące skutki dla systemu. Od częściowego zablokowania systemu do nawet uszkodzenia danych. Tworzenie wyzwalaczy prosimy zostawić profesjonalistom zaznajomionym z strukturą danych i procesami zachodzącymi w systemie.

Nie będziemy w tym wypadku pokazywać jak tworzyć wyzwalacze, a skupimy się bardziej na ich efektach na podstawie kilku przykładowych modyfikacji.

Blokada wystawiania dokumentów danego typu z daną serią na danym centrum

Załóżmy taką sytuację, w strukturze naszej firmy znajdują się centra A i B, na tych centrach wystawiane są dokumenty z seriami X i Y. Stwierdzamy jednak, że chcemy zablokować możliwość wystawiania dokumentów RW-X na centrum A. Nie możemy jednak zablokować danej serii na centrum ponieważ chcemy nadal wystawiać pozostałe dokumenty z serią X. Nie możemy odpiąć dokumentu RW od danej serii ponieważ nadal ma istnieć możliwość wystawiania RW-X na centrum B. Nie możemy też zablokować dokumentu RW na centrum A ponieważ chcemy nadal wystawiać dokumenty RW-Y na tym centrum.

Ten problem możemy właśnie rozwiązać wyzwalaczem. Poprzez sprawdzenie czy dodajemy właśnie do bazy dokument o zdefiniowanych przez nas parametrach możemy wywołać błąd na bazie danych, który zablokuje dodanie takiego dokumentu. Dodatkowo Comarch ERP XL posiada opcje rozpoznawania składni błędu bazodanowego, i pozwala na takie sformatowanie komunikatu o błędzie aby wyświetlił się jako czytelny dla użytkownika powód blokady tej akcji.

Automatyczne dodawanie atrybutów

Comarch ERP XL posiada opcję automatycznego dodawania atrybutów do obiektów i inicjowania ich wyliczaną lub stałą wartością. Jednak ta opcja jest dość ograniczona i jeżeli chcemy automatycznie generować atrybut z wartością wyliczaną na podstawie powiązanych dokumentów, może się okazać, że w momencie generowania atrybutu te powiązania nie istnieją.

W takich przypadkach możemy zastosować wyzwalacze. Mogą one generować atrybuty dopiero po powstaniu odpowiednich powiązań. Można je zdefiniować tak aby wartość atrybutów była aktualizowana po zajściu zmiany na dokumencie. Można też taki atrybut generować dopiero w momencie wykonania konkretnej operacji na dokumencie, na przykład zatwierdzenia.

Przepisywanie opisów z dokumentów źródłowych

Kolejną funkcjonalnością dla wyzwalaczy, może być przepisywanie opisów z innych dokumentów gdy taka funkcjonalność jest nieobsługiwana w standardzie. W takiej sytuacji, możemy też zamiast przepisania generować całkiem nowy opis na podstawie analizy wcześniej wygenerowanych dokumentów.