|
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
UWAGA. 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
UWAGA. 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
UWAGA. 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
UWAGA. 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
UWAGA. Ż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}
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
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
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)