Instrukcja administratora > Parametryzacja systemu > Obieg dokumentów | | Drukuj |
Obieg dokumentów polega na wysyłaniu maila do określonego odbiorcy w wyniku jakiegoś działania w systemie. Najczęściej jest to zatwierdzenie dowolnego rekordu, w którym dokonano zmian w pewnych polach. Docelowy mail może zawierać informacje o konieczności zmodyfikowania kolejnych pól w tabelach, które to modyfikacje mogą być realizowane np. przez moduł WWW. Modyfikacje tych pól generują wysyłanie następnego maila do innego odbiorcy. Powoduje to powstanie łańcucha powiadomień kolejnych odbiorców o działaniu jakiegoś procesu w systemie. Dobrym przykładem może być wysyłanie przez pracownika wniosku urlopowego do przełożonego, który może ten wniosek zatwierdzić lub odrzucić, a następnie wysłać zwrotne powiadomienie do pracownika składającego wniosek. W tym konkretnym przypadku pracownik wpisuje do karty urlopowej przez moduł WWW nowy rekord z urlopem planowanym, i po jego zatwierdzeniu wysyła się mail na adres przełożonego z informacją, że wniosek został złożony. W treści maila zostają wygenerowne dwie akcje, które może podjąć przełożony - albo zatwierdzić wniosek, albo go odrzucić. Akcje mają formę linków do strony obsługiwanej przez moduł WWW. Pierwsza zmienia w rekordzie wystawionym przez pracownika jako wniosek status na 'zatwierdzony', druga na 'odrzucony'. Po zatwierdzeniu zmian w rekordzie wysyła się mail zwrotny do pracownika z informacją o podjętej akcji. Na tym łańcuch obiegu dokumentów się kończy. Standardowo w programie zdefiniowane ścieżki obiegu dokumentów dostępne są po wciśnięciu prawego przycisku myszy: •Wstaw obieg urlopów - zatwierdzenie i odrzucenie wniosku urlopowego - patrz PORTAL DLA PRACOWNIKÓW - Wnioski urlopowe przez internet •Wstaw obieg urlopów bezpłatnych - zatwierdzenie i odrzucenie wniosku o urlop bezpłatny z ewidencji nieobecności Portalu dla pracowników •Wstaw obieg delegacji - zatwierdzenie i odrzucenie polecenia wyjazdu oraz zatwierdzenie i odrzucenie rozliczenia delegacji - patrz PORTAL DLA PRACOWNIKÓW - Zdalne rozliczanie delegacji •Wstaw obieg karty pracy - zatwierdzenie i odrzucenie wniosków z karty pracy (polecenia wykonania pracy, wnioski o wykorzystanie czasu wolnego itp.) •Wstaw obieg pracy zdalnej - zatwierdzenie i odrzucenie wniosku o pracę zdalną •Wstaw obieg szkoleń - zatwierdzenie i odrzucenie zapisu na szkolenia •Wstaw obieg świadczeń socjalnych - zatwierdzenie i odrzucenie wniosku o świadczenia socjalne •Wstaw obieg komunikatów - zapoznanie się z opublikowanym komunikatem dla pracownika •Wstaw obieg zgód RODO - powiadomienie pracownika o wprowadzeniu nowego wpisu w ewidencji zgód RODO, że należy wyrazić zgodę w portalu dla pracowników na przetwarzanie danych w określonym celu •Wstaw obieg PPK - powiadomienie przełożonego o wprowadzeniu przez pracownika w portalu dla pracowników zgłoszenia, zmiany lub rezygnacji z PPK z możliwością zatwierdzenia lub odrzucenia tego wpisu •Wstaw obieg haseł pracowników - informacja dla pracownika o wprowadzeniu lub zmianie hasła do Logowania przez internet •Wstaw obieg zmiany danych - informacja do przełożonego lub działu HR o wnioskwaniu zmiany danych z możliwością ich automatycznego uwzględnienia - patrz PORTAL DLA PRACOWNIKÓW - Wnioski o zmianę danych •Wstaw obieg umów o pracę - informacja do przełożonego przełożonego lub działu HR o proponowanej przez przełożonego zmianie angażu (np. podwyżce) wraz z możliwością zdalnej akceptacji - patrz PORTAL DLA PRACOWNIKÓW - Wnioski o zmianę angaży Tylko aktywne elementy obiegu dokumentów powodują akcję w postaci wysłania e-maila. Po wstawieniu dodatkowych elementów obiegu należy odpowiednio ustawić opcję Aktywny na zakładce Parametry we wszystkich pozycjach. Aby zdefiniować jakiś element łańcucha obiegu dokumentów należy z Menu-Ustawienia, wybrać Obieg dokumentów i wypełnić następujące pola poniżej. Na zakładce Wiadomość: ![]() •Nazwa - unikalna nazwa nowego elementu w łańcuchu obiegu dokumentów •Tabela - dla jakiej tabeli ma być wygenerowny mail po zatwierdzeniu rekordu (patrz Lista modułów danych i tabel) •Warunek - mail będzie wysyłany tylko wtedy, gdy będzie spełniony zadany warunek •Pytanie - przed wysłaniem maila system zada pytanie •Rodzaj - można wybrać E-mail - zostanie wysłany mail z powiadomieniem lub E-mail/WWW - mail będzie zawierał akcje (bezpośrednie linki), które może podjąć odbiorca w celu kontynuacji łańcucha obiegu Zdefiniowane akcje, czyli linki będą zawarte w treści e-maila tylko wtedy, jeśli określimy adres URL wywołania modułu WWW (w menu Ustawienia - Środowisko na zakładce Inne). •Tytuł - tytuł wysyłanego maila •Treść - treść wysyłanego maila •E-mail - adres odbiorcy maila E-maile będą wysyłane z aplikacji tylko wtedy, jeśli określimy parametry serwera poczty SMTP (w menu Ustawienia - Środowisko na zakładce Internet) dla każdego użytkownika oddzielnie. Szczególnie należy określić te parametry dla użytkownika ADMIN, żeby e-maile mogły być wysyłane z modułu WWW. •E-mail DW - adres odbiorcy maila DW Jeśli użyjemy {FIRMY.#EmailDW} to mail zostanie pobrany z parametrów firmy z zakładki Kadry •Załącznik - można załączyć dowolny załączny dokument •Komunikat - po wysłaniu maila zostanie wyświetlony komunikat Na zakładce Akcje: ![]() Zakładka ta jest widoczna tylko dla rodzaju E-mail/WWW. Można zdefiniować wiele akcji, a w każdej z nich następujące informacje (jedna akcja może zmienić wartości 3 pól tabeli): •Nazwa - unikalna nazwa akcji •Treść - opis działania akcji •Pole 1 - nazwa pierwszego pola w tabeli, które akcja ma zmienić (patrz Lista modułów danych i tabel) •Wartość 1 - wartość na jaką trzeba zmienić Pole 1 •Pole 2 - nazwa drugiego pola w tabeli, które akcja ma zmienić •Wartość 2 - wartość na jaką trzeba zmienić Pole 2 •Pole 3 - nazwa trzeciego pola w tabeli, które akcja ma zmienić •Wartość 3 - wartość na jaką trzeba zmienić Pole 3 •SQL - dodatkowe zapytanie SQL, które można wykonać po zakończeniu danej akcji •Komunikat - komunikat, który zostanie wyświetlony po zakończeniu akcji Żeby linki z akcjami pojawiły się w e-mailu z wnioskiem to należy określić Adres URL wywołania portalu na zakładce KONFIGURACJA w ustawieniach środowiska modułu WWW - patrz Udostępnianie przez internet. Na zakładce Parametry: •Pokazuj okno wysyłania maila - czy przed wysłaniem maila pokazać dodatkowe okno z adresem, tytułem i treścią maila •Aktywny - włącza/wyłącza definiowany element obiegu dokumentów Działanie elementów obiegu dokumentów opiera się na wyzwalaczach typu AfterPost, które są uruchamiane tylko w pewnych warunkach (definiowanych jako Warunek) np. podczas zmiany wartości niektórych pól. Definicje elementów obiegu dokumentów opierają się na zapytaniach SQL z wykorzystaniem wewnętrznych symboli dostępu do tabel i pól aplikacji. Dwuklik myszy na większości pól definicji powoduje otwarcie okna wygodnego edytora zapytań SQL. Przed przystąpieniem do definiowania elementów obiegu dokumentów zaleca się przeczytanie całego rozdziału Obiekty użytkownika, a zwłaszcza podrozdziału Wyzwalacze użytkownika, oraz dobrze jest zapoznać się z przykładem wyzwalaczy. Poniżej zamieszczony jest przykład łańcucha obiegu dokumentów. Przykład Łańcuch obiegu dokumentów składa się z 3 elementów: wniosek urlopowy, zatwierdzenie wniosku i odrzucenie wniosku. ![]() Wniosek urlopowy •Tabela - KARTA URLOPOWA - ten element działa na tej właśnie tabeli •Warunek - {Status}=1 and <API>=2 - jesli pole Status ma wartość 1 (urlop planowany) i wywołanie tego wyzwalacza odbywa się z modułu WWW; tzn. mail z wnioskiem zostanie wysłany w momencie wprowadzania wniosku przez pracownika z modułu WWW, a nie prze użytkownika w aplikacji •Pytanie - if {AKTUALNE ZATRUDNIENIE.X_IPrzelozony}>0 select 'Wysłać e-mail do przełożonego z wnioskiem urlopowym?' else select 'Wysłać e-mail do kierownika działu z wnioskiem urlopowym?' - tutaj mamy warunek,czy mail z wnioskiem ma być wysłany do przełożonego, czy do kierownika (jeśli w tabeli AKTUALNE ZATRUDNIENIE pole X_IPrzelozony jest wypełnione) •Rodzaj - E-mail/WWW - ponieważ ten mail będzie zawierał akcje, które ma podjąć odbiorca maila (zatwierdzić albo odrzucić) •Tytuł - Wniosek urlopowy - {PRACOWNICY.#Nazwisko} {PRACOWNICY.#Imie} - z tabeli PRACOWNICY pola Imię i Nazwisko •Treść - declare @s varchar(100) if {AKTUALNE ZATRUDNIENIE.X_IPrzelozony}>0 select @s='przełożonego '+p.[Nazwisko]+' '+p.[Imie] from PRACOWNK p where (p.X_I={AKTUALNE ZATRUDNIENIE.X_IPrzelozony}) else select @s='kierownika działu '+p.[Nazwisko]+' '+p.[Imie] from DZIAL d LEFT JOIN PRACOWNK p ON p.X_I=d.X_IPracownika where (d.X_I={AKTUALNE ZATRUDNIENIE.X_IDzial}) select '{FIRMY.#Nazwa} Pracownik {PRACOWNICY.#Nazwisko} {PRACOWNICY.#Imie} złożył wniosek na urlop {#R_DNIA} w okresie od {#OD} do {#DO} (ilość dni roboczych: {#IL_GODZ} ({#N_IL_GODZ}), pozostało dni: {#POZOSTALO_GODZ} ({#N_POZOSTALO_GODZ})). Wniosek oczekuje na zatwierdzenie przez '+@s+'.' - najpierw należy sprawdzić, czy pracownik ma przełożonego, czy kierownika, następnie podstawić pod zmienną @s odpowiednie pola z nazwikiem i imieniem przełożonego lub kierownika. Potem konstruujemy właściwą treść, w której należy zawrzeć nazwę firmy {FIRMY.#Nazwa}, dane pracownika {PRACOWNICY.#Nazwisko} ,rodzaj urlopu {#R_DNIA} , jego termin {#OD} {#DO} oraz ile limitu pozostało {#POZOSTAŁO_GODZ} •E-mail - if {AKTUALNE ZATRUDNIENIE.X_IPrzelozony}>0 select CASE WHEN h.Email_sluzb<>'' THEN h.Email_sluzb else a.K_E_mail END from PRACOWNK p left join HISTORIA h ON (p.X_I=h.X_IPracownik)AND((h.AktZatrudnienie=1)AND(h.X_Default=1)) left join ADRES a ON a.X_IPracownik=h.X_IPracownik where (p.X_I={AKTUALNE ZATRUDNIENIE.X_IPrzelozony}) else select CASE WHEN h.Email_sluzb<>'' THEN h.Email_sluzb else a.K_E_mail END from DZIAL d left join PRACOWNK p ON p.X_I=d.X_IPracownika left join HISTORIA h ON (p.X_I=h.X_IPracownik)AND((h.AktZatrudnienie=1)AND(h.X_Default=1)) left join ADRES a ON a.X_IPracownik=h.X_IPracownik where (d.X_I={AKTUALNE ZATRUDNIENIE.X_IDzial}), - dość skomplikowane zapytanie, które pobiera z bazy danych adres e-mail przełożonego lub kierownika - albo ze względu na {AKTUALNE ZATRUDNIENIE.X_IPrzelozony} z tabeli PRACOWNK (przełożony), albo ze względu na {AKTUALNE ZATRUDNIENIE.X_IDzial} - z tabeli DZIAL (kierownik) •Komunikat - if {AKTUALNE ZATRUDNIENIE.X_IPrzelozony}>0 select 'Wysłano e-mail do przełożonego z wnioskiem urlopowym' else select 'Wysłano e-mail do kierownika działu z wnioskiem urlopowym' - komunikat; w treści albo do przełozonego albo kierownika w zależności od {AKTUALNE ZATRUDNIENIE.X_IPrzelozony} Wniosek urlopowy zawiera akcje TAK na zatwierdzenie i NIE na odrzucenie. Akcja TAK jest zdefiniowana następująco: •Treść - Żeby zatwierdzić wniosek urlopowy kliknij - tekst opisujący działanie akcji •Pole 1 - STATUS •Wartość 1 - 0 - zmiana pola STATUS na 0 zatwierdzi wniosek •Pole 2 -Zatwierdzil_wniosek •Wartość 2 - if {AKTUALNE ZATRUDNIENIE.X_IPrzelozony}>0 select p.[Nazwisko]+' '+p.[Imie] from PRACOWNK p where (p.X_I={AKTUALNE ZATRUDNIENIE.X_IPrzelozony}) else select p.[Nazwisko]+' '+p.[Imie] from DZIAL d left join PRACOWNK p ON p.X_I=d.X_IPracownika where (d.X_I={AKTUALNE ZATRUDNIENIE.X_IDzial}) - pole Zatwierdzil_wniosek otrzyma wartość jak w zapytaniu - albo nazwisko i imię przełożonego albo kierownika •Pole 3 - Data_zatw •Wartość 3 - <NOW> - pole Data_zatw otrzyma wartość bieżącej daty •Komunikat - declare @s varchar(100) if {AKTUALNE ZATRUDNIENIE.X_IPrzelozony}>0 select @s='przełożonego '+p.[Nazwisko]+' '+p.[Imie] from PRACOWNK p where (p.X_I={AKTUALNE ZATRUDNIENIE.X_IPrzelozony}) else select @s='kierownika działu '+p.[Nazwisko]+' '+p.[Imie] from DZIAL d left join PRACOWNK p ON p.X_I=d.X_IPracownika where (d.X_I={AKTUALNE ZATRUDNIENIE.X_IDzial}) select 'Wniosek urlopowy został zatwierdzony przez '+@s - komunikat, że wniosek został zatwierdzony przez przełożonego albo kierownika Akcja NIE jest zdefiniowana bardzo podobnie, z tym że tekst 'zatwierdzony' został zastąpiony przez 'odrzucony', a pole STATUS otrzymuje wartość 2 Zatwierdzenie wniosku urlopowego •Tabela - KARTA URLOPOWA - ten element działa na tej właśnie tabeli •Warunek - {$Status}=1 and {Status}=0 and (<API>=0 or <API>=2) - jesli pole Status miało przed edycją wartość 1, a obecnie ma wartość 0 (czyli urlop był wnioskowany, a następnie zatwierdzony) i wywołanie tego wyzwalacza odbywa się z aplikacji lub modułu WWW (kierownik może zatwierdzić wniosek zarówno z modułu WWW jak i bezpośrednio z aplikacji). •Pytanie - Wysłać e-mail do pracownika o zatwierdzeniu wniosku urlopowego? - tekst pytania •Rodzaj - E-mail - ponieważ ten mail nie będzie zawierał akcji •Tytuł - Wniosek urlopowy - {PRACOWNICY.#Nazwisko} {PRACOWNICY.#Imie} - z tabeli PRACOWNICY pola Imię i Nazwisko •Treść - select '{FIRMY.#Nazwa} Pracownik {PRACOWNICY.#Nazwisko} {PRACOWNICY.#Imie} złożył wniosek na urlop {#R_DNIA} w okresie od {#OD} do {#DO} (ilość dni roboczych: {#IL_GODZ} ({#N_IL_GODZ}), pozostało dni: {#POZOSTALO_GODZ} ({#N_POZOSTALO_GODZ})). Wniosek urlopowy został zatwierdzony przez {#Zatwierdzil_wniosek}. - w treści zawarte są: nazwa firmy {FIRMY.#Nazwa}, dane pracownika {PRACOWNICY.#Nazwisko} ,rodzaj urlopu {#R_DNIA} , jego termin {#OD} {#DO} , ile limitu pozostało {#POZOSTAŁO_GODZ} oraz komunikat o zatwierdzeniu wniosku {#Zatwierdzil_wniosek} •E-mail - if {AKTUALNE ZATRUDNIENIE.Email_sluzb}<>'' select {AKTUALNE ZATRUDNIENIE.Email_sluzb} else select {ADRESY.K_E_mail} - mail zostanie wysłany albo na adres służbowy {AKTUALNE ZATRUDNIENIE.Email_sluzb} albo na prywatny {ADRESY.K_E_mail} Odrzucenie wniosku urlopowego •Tabela - KARTA URLOPOWA - ten element działa na tej właśnie tabeli •Warunek - {$Status}=1 and {Status}=2 and (<API>=0 or <API>=2) - jesli pole Status miało przed edycją wartość 1, a obecnie ma wartość 2 (czyli urlop był wnioskowany, a następnie odrzucony) i wywołanie tego wyzwalacza odbywa się z aplikacji lub modułu WWW (kierownik może zatwierdzić wniosek zarówno z modułu WWW jak i bezpośrednio z aplikacji). •Pytanie - Wysłać e-mail do pracownika o odrzuceniu wniosku urlopowego? - tekst pytania •Rodzaj - E-mail - ponieważ ten mail nie będzie zawierał akcji •Tytuł - Wniosek urlopowy - {PRACOWNICY.#Nazwisko} {PRACOWNICY.#Imie} - z tabeli PRACOWNICY pola Imię i Nazwisko •Treść - select '{FIRMY.#Nazwa} Pracownik {PRACOWNICY.#Nazwisko} {PRACOWNICY.#Imie} złożył wniosek na urlop {#R_DNIA} w okresie od {#OD} do {#DO} (ilość dni roboczych: {#IL_GODZ} ({#N_IL_GODZ}), pozostało dni: {#POZOSTALO_GODZ} ({#N_POZOSTALO_GODZ})). Wniosek urlopowy został odrzucony przez {#Zatwierdzil_wniosek}. - w treści zawarte są: nazwa firmy {FIRMY.#Nazwa}, dane pracownika {PRACOWNICY.#Nazwisko} ,rodzaj urlopu {#R_DNIA} , jego termin {#OD} {#DO} , ile limitu pozostało {#POZOSTAŁO_GODZ} oraz komunikat o odrzuceniu wniosku {#Zatwierdzil_wniosek} •E-mail - if {AKTUALNE ZATRUDNIENIE.Email_sluzb}<>'' select {AKTUALNE ZATRUDNIENIE.Email_sluzb} else select {ADRESY.K_E_mail} - mail zostanie wysłany albo na adres służbowy {AKTUALNE ZATRUDNIENIE.Email_sluzb} albo na prywatny {ADRESY.K_E_mail} UWAGI 1. Podczas używania tagów (np.{FIRMY.Nazwa}), możemy korzystać ze znaków specjalnych, takich jak - #, $. •# - wstawia wartość danego pola bez apostrofów (' ') •$ - wstawia poprzednią wartość danego pola sprzed zmiany •% - wstawia liczbową wartość danego pola (dla wartości null wstawi 0, bez % dla wartości null wstawi ’’ -puste) •Pozostawienie nazwy kolumny bez w/w przedrostków wstawi wartość danego pola w apostrofach (' '), przeciwnie do zastosowania #. Przykład: {FIRMY.#Nazwa} zwraca wartość: Przykładowa_Firma {FIRMY.Nazwa} zwraca wartość: 'Przykładowa_Firma' {FIRMY.$Nazwa} zwraca wartość: Poprzednia_Nazwa_Firmy 2. Zmienna specjalna <API> w zależności od sposobu logowania przyjmuje następujące wartości •0 - użytkownik zalogowany do programu •1 - użytkownik zalogowany do modułu WWW •2 - pracownik zalogowany do modułu WWW (czyli użytkownik z grupy Użytkownicy WWW) lub logowanie po kliknięciu linka otrzymanego e-mailem (np. zatwierdzenie lub odrzucenie wniosku) |