Instrukcja administratora > Parametryzacja systemu > Obieg dokumentów

Drukuj

Obieg dokumentów

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ść:

182001

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:

182002

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.

182003

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)