BUDOWA WYRAŻEŃ NA LIŚCIE PŁAC: ---------------------------------- 1. Znaki: 0 1 2 3 4 5 6 7 8 9 , + - * / () piszemy normalnie jako wyrażenia np. (120 - 14,12)/15 2. Wartości z pól baz danych podajemy w postaci: [TypBazy:Pole] gdzie typ bazy to - dane z bieżącej listy płac np. [:IDN] lub bieżącej tabeli C - pole z kalendarzy (brane sa pod uwagę mc i rok listy płac) /tabela: VKIP_CALS np. [C:SUM_DR] E - pole z ewidencji czasu pracy (brane sa pod uwagę mc i rok listy płac) /tabela: VKIP_EWPRAC np. [E:PRZEP_DNI] K - pole z danych kadrowych np. [K:WMies] /tabela: VKIP_PRAC P - pole z list płac np. [P:PREMIA] /tabela: VKIP_PLACE F - pole z bazy członków rodzin /tabela: VKIP_RODZINA S - pole ze stałych wartości (brana jest pod uwagę data listy płac) /tabela: VKIP_STALE np. [S:KUP] R - pole z rachunków do umów zleceń /tabela: VKIP_RACH D - pole z danych o firmie np. [D:NAZWA] /tabela: VKIP_DANFIRM Z - pole z danych umowy-zlec np. [Z:TRESC] /tabela: VKIP_ZLEC N - tabela z numerami list /tabela: VKIP_NRLIST 3. Funkcje mają konstrukcję: NazwaFunkcji{parametr1;..;parametrN} 4. Kolejność działania makro: a) zamiana małych liter na duże b) podstawienie wartości liczbowych zamiast nazw pól baz danych c) oblicznie wartości funkcji i podstawienie ich do wzoru d) obliczenie wyniku 5. Możliwe jest stosowanie do 9 bloków (zagnieżdzeń): &0$ ... $0& &1$ ... $1& np. DOSTĘPNE FUNKCJE NA LIŚCIE PŁAC ------------------------------------ LODU{} - liczba osób do dodatku z tytułu urodzenia dziecka np. LODU{}*[S:DOD_URODZ] UWAGA! Po wywołaniu funkcji pyta się czy oznaczyć, że dodatek jest wypłacony LODR{typ} - liczba osób do dodatku z tytułu kształcenia i rehab. dziecka niepełnospr. typ = 0 lub puste - ponad pięć lat 5 - do pięciu lat np. LODR{}*[S:DOD_REHAB]+LODR{5}*[S:DOD_REHAB] LODS{} - liczba osób do dodatku z tytułu rozpoczęcia roku szkolnego np. LODS{}*[S:DOD_Szkola] UWAGA! Po wywołaniu funkcji pyta się czy oznaczyć, że dodatek jest wypłacony LODD{typ} - liczba osób do dodatku z tytułu podjęcia nauki poza miejscem zamieszkania typ = N lub puste - w miejscowości, w której znajduje się szkoła P - w miejscowości poza zamieszkaniem np. LODD{}*[S:DOD_DOJAZD]+LODD{P}*[S:DOD_DOJAZDP] KWABS{filtr} - oblicza kwotę dla aktualnego pracownika, miesiąca i roku listy będącej sumą kwot dla podanego filtru absencji wg SQL np. KWABS{(ID_CH='UW') OR (ID_CH='UO'))} KWDABS{filtr} - oblicza kwotę dodatkową (KWOTA_DOD) dla aktualnego pracownika, miesiąca i roku listy będącej sumą kwot dla podanego filtru absencji wg SQL np. KWABS{(KSP_DOD='329')} WZORABS{wzor;filtr} - oblicza wzor dla aktualnego pracownika, miesiąca i roku listy będącej dla podanego filtru absencji wg SQL np. WZORABS{KWOTA/PROC;ID_CH='CHZUS'} WM_R{wyn mc za pełny mc} - oblicza wynagrodzenie miesięczne za przepracowany mc. Jesli pracownik przepracował wszystkie dni to bierze Wyn Mc, a jesli nie to liczy wg wzoru: Wynagrodznie miesięczne * Ilość dni przepracowanych / Ilość dni roboczych np. WM_R{[K:WMies]} WM_K{wyn mc za pełny mc} - oblicza wynagrodzenie miesięczne za przepracowany mc. Jesli pracownik przepracował wszystkie dni to bierze Wyn Mc, a jesli nie to liczy wg wzoru: Wynagr.mies. - Wynagr.mies. / 30 * Ilość dni nieprzepracowanych Jeśli nie pracował cały miesiąc wtedy Ilość dni nieprzepracowanych = 0 Uwzględnia datę zatrudnienia i zwolnienia np. WM_K{[K:WMies]} PUER{kwota} - oblicza wysokość podstawy ub. emer i rent, biorąc pod uwagę, czy prac jest zgłoszony do ub. społ (K:ZGU), czy nie przekroczył kwoty ograniczającej, jeśli tak to pyta, czy wpisać informację do kadr (K:IoPrzER) wg mc_w i rok_w PUCW{kwota} - oblicza wysokość podstawy ub. chor i wypadk, biorąc pod uwagę, czy prac jest zgłoszony do ub. społ (K:ZGU) PUZDR{kwota} - oblicza wysokość podstawy ub. zdrowotnego, biorąc pod uwagę, czy prac jest zgłoszony do ub. zdrowtnego (K:ZGU) UZDR{podstawa_ub_zdr;podatek} - oblicza wysokość ub. zdrowotnego, biorąc pod uwagę, wysokość podatku UZDR_US{podstawa_ub_zdr;podatek} - oblicza wysokość ub. zdrowotnego do odliczenia, biorąc pod uwagę, wysokość podatku IIF{warunek;wyrażenie} - jeżeli warunek jest spełniony (tzn jego reprezentacja łańcuchowa jest inna niż 'FALSE', '', spacje, '0') zwraca wyrażenie, jeśli nie to zwraca 0. IF{warunek;wyrażenieTrue;wyrazenieFalse} - jeżeli warunek jest spełniony tzn. wartosc <> 0, lub gdy warunek nie ma wartości FALSE (np. z jakiegoś pola) lub '' (pusty łańcuch) zwraca wyrażenieTrue, jeśli nie to zwraca wyrazenieFalse. KUP{} - zwraca wysokość kosztów uzyskania przychodu, czy w kadrach jest BRAK, Normalne, Podwyższone UWAGA! Niewypełnionne pole KUP w kadrach równoważne jest z 'BRAK' KUP_PD{} - zwraca wysokość kosztów uzyskania przychodu, bierze pod uwagę, czy pracownik przepracowal chociaz jeden dzien, czy w kadrach jest BRAK, Normalne, Podwyższone KUP_W{kwota} - zwraca wysokość kosztów uzyskania przychodu, bierze pod uwagę, czy kwota>0, czy w kadrach jest BRAK, Normalne, Podwyższone PPD{kwota} - podstawa podatku dochodowego, jeśli podpisal ośw.podatkowe to zwraca kwote zaokraglona do całosci, jeśli nie to zwraca 0. IGA_L{filtr} - oblicza ilość godzin absencji dla aktualnego pracownika, miesiąca i roku listy będącej sumą GODZ dla podanego filtru absencji wg SQL np. IGA_L{(ID_CH='UW') OR (ID_CH='UO'))} IDR_L{filtr} - oblicza ilość dni roboczych dla aktualnego pracownika, miesiąca i roku listy będącej sumą D_ROB dla podanego filtru absencji wg SQL np. IDR_L{(ID_CH='UW') OR (ID_CH='UO'))} IDK_L{filtr} - oblicza ilość dni kalendarzowych dla aktualnego pracownika, miesiąca i roku listy będącej sumą D_KAL dla podanego filtru absencji wg SQL np. IDK_L{((ID_CH='UW') OR (ID_CH='UO'))} IGAPMC_L{filtr} - oblicza ilość godzin absencji dla aktualnego pracownika, miesiąca i roku listy będącej sumą GODZ dla podanego filtru absencji wg SQL z poprzedniego m-ca np. IGAPMC_L{(ID_CH='UW') OR (ID_CH='UO'))} lub IGAPMC_L{ID_CH IN ('UW','UO')} IDRPMC_L{filtr} - oblicza ilość dni roboczych dla aktualnego pracownika, miesiąca i roku listy będącej sumą D_ROB dla podanego filtru absencji wg SQL z poprzedniego m-ca np. IDRPMC_L{(ID_CH='UW') OR (ID_CH='UO'))} IDKPMC_L{filtr} - oblicza ilość dni kalendarzowych dla aktualnego pracownika, miesiąca i roku listy będącej sumą D_KAL dla podanego filtru absencji wg SQL z poprzedniego m-ca np. IDKPMC_L{((ID_CH='UW') OR (ID_CH='UO'))} IGA{ID_CH} - ilość godzin aktualnego pracownika dla podanej absencji np. IGA{UW} wg ewidencji czasu pracy (absdni) dla miesiąca i roku listy IDR{ID_CH} - ilość dni roboczych aktualnego pracownika dla podanej absencji np. IDR{UW} wg ewidencji czasu pracy (absdni) dla miesiąca i roku listy IDK{ID_CH} - ilość dni kalendarzowych aktualnego pracownika dla podanej absencji np. IDK{CH} wg ewidencji czasu pracy (absdni) dla miesiąca i roku listy POTR_POD{podstawaDoLiczenia;podstawaSQL} - zwraca wysokosc potraconego podatku w zaleznosci od sumy podstawySQL w poprzednich miesiącach oraz Wspol_POD (czy z małżonkiem) w kadrach. Left join z nrlist.db. Domyślnie podstawaSQL=PODST_POD np. POTR_POD{[:DOCH];DOCH+DOCH_UZ} (Informuje w miesiącu przekroczenia) POTR_POD26{podstawaDoLiczenia;podstawaZPoprzMiesięcy} - ale progi osób do 26 lat (oraz przekroczenie wieku w bieżącym roku) UWAGA! innaczej niż w POTR_POD trzeba jako podstawaZPoprzMiesięcy podać wzór makro np. [:NARPP] lub &0$SUMWNAR{DOCH-FD_PRAC}$0& (Informuje w miesiącu przekroczenia) PRC_POD{podstawaSQL;PodstawaMakro;bezKomunikatu} - zwraca procent podatku w zaleznosci od sumy podstawy w poprzednich miesiącach oraz Wspol_POD (czy z małżonkiem) w kadrach. Left join z VKIP_NRLIST (Informuje w miesiącu przekroczenia) podstawaSQL - wzór na podstawę do zapytania z poprzednich list podstawaMakro - wzór na podstawę do bieżącej listy wg makro (można pominąć, gdy podstawaSQL to jedno pole bezKomunikatu - wpisanie cokolwiek wyłącza komunikat np. PRC_POD{RB-UB_RAZEM;[:RB]-[:UB_RAZEM]} lub PRC_POD{PODST_POD} lub PRC_POD{RB-UB_RAZEM;[:RB]-[:UB_RAZEM];BEZ_KOM} ULGA{podstawaSQL} - Jeśli pracownik ma zaznaczone "Ulga podatkowa i nie przekroczył progu" to liczy ulgę podatkową Left join z nrlist.db. Domyślnie podstawaSQL=PODST_POD np. ULGA{DOCH+DOCH_UZ} R4{kwota|wzór} - zaokrągla do 4 miejsc po przecinku R3{kwota|wzór} - zaokrągla do 3 miejsc po przecinku R2{kwota|wzór} - zaokrągla do 2 miejsc po przecinku R1{kwota|wzór} - zaokrągla do 1 miejsca po przecinku R0{kwota|wzór} - zaokrągla do całości LOZR{} - liczba osób zasiłku rodzinnego (uwzględnia date konca zasilku i porównuje ją z mc i rokiem listy płac LOZP{} - liczba osób zasiłku pielęgnacyjnego (uwzględnia date konca zasilku i porównuje ją z mc i rokiem listy płac LOUP{ROK} - liczba osób do ulgi podatkowej z tytułu wychowywania dzieci (porównuje rok wpisany przy członku rodziny oraz rok podany jako parametr) np. LOUP{[:ROK]}*[S:ULGA_DZIECI] ZAS_RODZ{} - oblicza kwotę zasiłku rodzinnego z uwzględnieniem daty końca zasiłku oraz stopnia pokrewieństwa (gdy jest on nieokreślony - liczy jak dla dziecka). Poza tym jeśli rodzic jest samotny oraz dziecko ma zas.piel. wtedy zas_rodz*2 KWOTA_ALIM{} - zwraca wysokość alimentów z uwzględnieniem daty końca MIN{wartosc1;wartosc2} - zwraca mniejsza z dwoch wartosci MAX{wartosc1;wartosc2} - zwraca wieksza z dwoch wartosci PRZEL1/2/3{kwota;nie mniej niż - opcjonalnie} - oblicza wysokosc przelewu na ROR1/2/3. Najpierw sprawdza, czy w ILE_ROR1/2/3 wpisana jest jakas wartosc, gdy tak to sprawdza czy to jest procent (CO_ROR1/2/3='%'), jesli tak to liczy wg wzoru: kwota*(ILE_ROR1/2/3 / 100), jesli nie to wg wzoru: min(kwota, ILE_ROR1/2/3) jeśli kwota0) np. LP{ULGA;RLP = 1} LP_SUM{POLE;warunek_WHERE} - zwraca sumę wartości pola z płac dla podanego warunku (same place BEZ LEFT JOIN NrList) dla bieżącego miesiąca listy (do klauzury WHERE + NR_Akt,Mc,Rok,IsOk>0) np. LP_SUM{ULGA;RLP = 1} LP_SUMW{POLE;warunek_WHERE} - zwraca sumę wartości pola z płac dla podanego warunku (same place BEZ LEFT JOIN NrList) dla bieżącego miesiąca wypłaty listy (do klauzury WHERE + NR_Akt,Mc,Rok,IsOk>0) np. LP_SUMW{ULGA;RLP = 1} SUM{pole} - zwraca sume pola (podsumowanie listy plac) dla aktualnie ustawionej listy (tblNrList) DNI_30{ile_dni_wzor} - if ile_dni_wzor = dni kal mca then ile_dni_wzor:=30; Result := ile_dni_wzor miesiąc i rok pobiera ze zmiennych KtoryMc i KtoryRok DNIMC_30{ile_dni_wzor;MC;ROK} - if ile_dni_wzor = dni kal mca then ile_dni_wzor:=30; Result := ile_dni_wzor DN30{ile_dni_wzor} - if ile_dni_wzor = dni kal mca then ile_dni_wzor:=30; Result := ile_dni_wzor / 30 miesiąc i rok pobiera ze zmiennych KtoryMc i KtoryRok IRBOX{opis} - wyświetla okienko z prośbą o podanie liczby rzeczywistej, wyświetlania komunikat "opis" FRMABS{wzor_sql;dni_abs_sql;ile_mcy;WHERE} - wyświetla formularz do liczenia podstaw absencji, ktory zwraca średnią z zaznaczonych miesięcy wzór_sql - wzór na sumy do zapytania sql, wzór ma postać: suma_uzupeł@suma_nie_uzpeł, jeśli wpisane będzie DEF_ZUS to pobiera z definicji ZUS\Definicja pól dni_abs - dni absencji traktowane jako nieprzepracowane (dni w mc - dni_abs) ile_mcy - ile miesięcy wstecz brać do obliczenia gdy ile_mcy=? wtedy wyswietli okienko z pytaniem o m-ce WHERE - dodatkowy warunek do vkip_place (opcjonalny) np. FRMABS{BRUTTO@ZAGNOC+ZAGN50;ID_CH<>'UW';6; RLP<>3} LICZAS{czas} - zwraca czas w postaci liczby np. 15,3 -> 15,5 (część dziesiętna w postaci minut przeliczana na ułamek) SUMMC{pola;mc_listy;rok_listy;ile_mcy; WHERE} - zwraca sume pól przez ile_mcy poprzednich licząc od mc_listy i rok_listy dla pracownika. Opcjonalnie jest warunek WHERE np. SUMMC{WM-UB_RAZEM;[:MC];[:ROK];3} SUMMCNL{pola;mc_listy;rok_listy;ile_mcy; WHERE} - zwraca sume pól przez ile_mcy poprzednich licząc od mc_listy i rok_listy dla pracownika. Left join z vkiP_nrlist Opcjonalnie jest warunek WHERE np. SUMMC{WM-UB_RAZEM;[:MC];[:ROK];3} SUMMCW{pola;mc_wypł;rok_wypł;ile_mcy; WHERE} - zwraca sume pól przez ile_mcy poprzednich licząc od miesiaca i roku wypłaty dla pracownika Opcjonalnie jest warunek WHERE np. SUMMCW{WM-UB_RAZEM;[:MC];[:ROK];3} SRMCW_GODZ{pola;mc_wypł;rok_wypł;ile_mcy; WHERE} - zwraca średnią stawkę godzinową; Wykonuje SELECT ROK,MC, SUM(pola) AS KWOTA FROM VKIP_PLACE P WHERE P.ISOK<>0 AND P.Nr_Akt =:NR_AKT AND P.ROK_W*100+P.MC_W(rok_wypł*100+mc_wypł)-ile_mcy AND "WHERE" GROUP BY ROK,MC HAVING SUM(pola)<>0 Dla każdego zwróconego wiersza wykonuje SELECT PRZEP_SUM FROM VKIP_EWPRAC WHERE Nr_Akt=:NR_AKT AND ROK=:ROK AND MC=:MC Sumuje KWOTĘ oraz PRZEP_SUM. Następnie oblicza KWOTA/PRZEP_SUM (jeśli PRZEP_SUM<>0) np. SRMCW_GODZ{WM-UB_RAZEM;[:MC];[:ROK];3} Opcjonalnie jest warunek WHERE SUMMCWNL{pola;mc_listy;rok_listy;ile_mcy; WHERE} - zwraca sume pól przez ile_mcy poprzednich licząc od mc_listy i rok_listy dla pracownika. Left join z vkip_nrlist Opcjonalnie jest warunek WHERE np. SUMMCWNL{WM-UB_RAZEM;[:MC];[:ROK];3} SUMPMC{pola;mc_listy;rok_listy;ile_mcy; baza; WHERE} - zwraca sume pól przez ile_mcy poprzednich bez uwzględnienia nr_akt pracownika Opcjonalnie jest warunek WHERE np. SUMPMC{SUM_DR;[:MC_L];[:ROK_L];3;VKIP_CALS;ID_CAL=[K:ID_CAL]} SUMDBMC{pola;mc;rok;ile_mcy; baza;WHERE} - zwraca sume pól przez ile_mcy poprzednich licząc od mc i rok dla pracownika z podanej bazy (musi być MC i ROK) Opcjonalnie jest warunek WHERE np. SUMDBMC{PRZEP_DNI;[:MC];[:ROK];3;vkip_ewprac} - suma dni przepracowanych z ewidencji pracy np. SUMDBMC{PRZEP_SUM;[:MC];[:ROK];3;vkip_ewprac} - suma godzin przepracowanych z ewidencji pracy SUMDBMCL{pola;mc;rok;ile_mcy; baza;WHERE} - zwraca sume pól przez ile_mcy poprzednich licząc od mc i rok dla pracownika z podanej bazy (musi być MC_L i ROK_L) Opcjonalnie jest warunek WHERE np. SUMDBMCL{D_ROB;[:MC];[:ROK];3;vkip_ABSENCJE; ID_CH='UW'} - suma z 3 mcy dni roboczych SRMC{pola;mc_listy;rok_listy;ile_mcy; WHERE} - zwraca średnią pól przez ile_mcy poprzednich licząc od mc_listy i rok_listy dla pracownika Opcjonalnie jest warunek WHERE np. SRMC{WM-UB_RAZEM;[:MC_L];[:ROK_L];3} SRMCW{pola;mc_listy;rok_listy;ile_mcy; WHERE} - zwraca średnią pól przez ile_mcy poprzednich wg miesiąca wypłaty licząc od mc_listy i rok_listy dla pracownika Opcjonalnie jest warunek WHERE np. SRMC{WM-UB_RAZEM;[:MC_L];[:ROK_L];3} SRMCNL{pola;mc_listy;rok_listy;ile_mcy; WHERE} - zwraca średnią pól przez ile_mcy poprzednich licząc od mc_listy i rok_listy dla pracownika. Left join z nrlist.db Opcjonalnie jest warunek WHERE np. SRMC(WM-UB_RAZEM;[:MC_L];[:ROK_L];3} SUMROK{pola;mc_listy;rok_listy; WHERE} - zwraca sume pól od pocz.roku do mc_listy i rok_listy wg mc i rok listy dla pracownika. Opcjonalnie jest warunek WHERE np. SUMMC(WM-UB_RAZEM;[:MC_L];[:ROK_L]} SUMROKNL{pola;mc_listy;rok_listy; WHERE} - zwraca sume pól od pocz.roku do mc_listy i rok_listy wg mc i rok listy dla pracownika. Left join z nrlist.db Opcjonalnie jest warunek WHERE np. SUMMC(WM-UB_RAZEM;[:MC_L];[:ROK_L]} SUMROKW{pola;mc_listy;rok_listy; WHERE} - zwraca sume pól od pocz.roku do mc_listy i rok_listy wg mc i rok listy dla pracownika. wg roku i miesiąca wypłaty Opcjonalnie jest warunek WHERE np. SUMMC(WM-UB_RAZEM;[:MC_L];[:ROK_L]} SUMROKWNL{pola;mc_listy;rok_listy; WHERE} - zwraca sume pól od pocz.roku do mc_listy i rok_listy wg mc i rok listy dla pracownika. Left join z nrlist.db. wg roku i miesiąca wypłaty Opcjonalnie jest warunek WHERE np. SUMMC(WM-UB_RAZEM;[:MC_L];[:ROK_L]} SUMDAT{pola;mc_listy;rok_listy;DAT_TXT; WHERE} - zwraca sume pól od DAT_TXT do mc_listy i rok_listy Opcjonalnie jest warunek WHERE np. SUMMC(WM-UB_RAZEM;[:MC_L];[:ROK_L];200112} SUMDATNL{pola;mc_listy;rok_listy;DAT_TXT; WHERE} - zwraca sume pól od DAT_TXT do mc_listy i rok_listy dla pracownika. Left join z nrlist.db Opcjonalnie jest warunek WHERE np. SUMMC(WM-UB_RAZEM;[:MC_L];[:ROK_L];200112} SQL{baza;SELECT;WHERE;POLE} - dowolne zapytanie SQL, gdzie: baza - nazwa pliku np. prac.db, SELECT - zawartość klauzuli SELECT WHERE - zawartość klauzuli WHERE POLE - nazwa pola, które ma być zwrócone np. SQL{prac.db;SUM(KWMIES) as wm;DZIAL='[K:DZIAL]';WM} SQLMIN{baza;SELECT;WHERE} SQLMAX{baza;SELECT;WHERE} - dowolne zapytanie SQL, ktore zwraca wartosc MAX/MIN z podanych kolumn gdzie: baza - nazwa pliku np. prac.db, SELECT - zawartość klauzuli SELECT WHERE - zawartość klauzuli WHERE POLE - nazwa pola, które ma być zwrócone np. SQLMAX{prac.db;SUM(KWMIES), SUM(STAWGODZ*176);DZIAL='[K:DZIAL]'} SKL_KZP{} - pobiera wysokość deklarowanej składki KZP pracownika RATA_KZP{typ} - pobiera wysokość rat do spłaty, ostatnia rata może być mniejsza (wylicza różnicę kwota - suma rat i spr. z wysokością raty [w sumowaniu omija bieżącą listę]) typ = K - KZP, M - Mieszkaniowa. Pierwsza rata: mc i rok listy taki sam jak mc i rok potr. I raty DOSPL_KZP{typ} - jaka kwota pożyczek pozostała do spłaty. typ = K - KZP, M - Mieszkaniowa CZY_KZP{} - sprawdza, czy pracownik należy do KZP (zwraca 1 - należy, 0 - nie należy) DNIK_MC{} - zwraca dni kalendarzowe bieżącego miesiąca DNIK_ZATR{} - zwraca ilość dni kalendarzowych jakie pracownik nieprzepracował ze względu na datę zatrudnienia i zwolnienia DNI_ZATR{} - zwraca ilość dni roboczych jakie pracownik nieprzepracował ze względu na datę zatrudnienia i zwolnienia GODZ_ZATR{} - zwraca ilość godzin jakie pracownik nieprzepracował ze względu na datę zatrudnienia i zwolnienia (uwaga np. dwa dni 8:30 i 8:15 zwraca 16,75 a nie 16:45) WEW{wartosc; lista} - sprawdza czy wartosc zawiera sie w liscie, elementy listy musza byc oddzielone # np. WEW{[P:RLP], #1#5#} POS{substr; string} - zwraca pozycję wystąpienia (brak to zwraca 0) np. POS{/R;[:NRLISTY]} KSN{} - zwraca kod stop. niespełn. z danych kadrowych (z kodu tyt. ub.) KWOTAMC{nr_kwoty} - pobiera kwotę o numerze nr_kwota z kwot miesiecznych dla pracownika z bieżącej listy płac np. KWOTAMC{1} - pole Kwota1, KWOTAMC{2} - pole Kwota2 PIT40{co} - pobiera kwotę nadpłaty podatku za rok poprzedni (jako dodatnie) oraz niedopłaty jako ujemny gdy co = W to MC_W=3, gdy co = L to MC=3 IGT{jakiegodz;dn} - ilość godzin przepracownych w m-cu wybranym dniu tygodnia: nd=1, pn=2, wt=2,...sb=7. jakiegodz: przep - przepracowane, nadl- nadl 50%, nadl100 - nadl 100%, noc - nocne, szkod - szkodliwe, postoj - postojowe IDT{jakie;dn} - ilość dni przepracownych w m-cu wybranym dniu tygodnia: nd=1, pn=2, wt=3,...sb=7. jakiegodz: przep - przepracowane, nadl- nadl 50%, nadl100 - nadl 100%, noc - nocne, szkod - szkodliwe, postoj - postojowe IDBW{jakie}- ilość dni przepracownych w m-cu bez godzin w dniach wolnych jakiegodz: przep - przepracowane, nadl- nadl 50%, nadl100 - nadl 100%, noc - nocne, szkod - szkodliwe, postoj - postojowe IGBW{jakie}- ilość dni przepracownych w m-cu bez dni w dniach wolnych jakiegodz: przep - przepracowane, nadl- nadl 50%, nadl100 - nadl 100%, noc - nocne, szkod - szkodliwe, postoj - postojowe ZG{co} - zwraca wartości z zestawienia godzin (musi być najpierw przygotowane) dla pracownika co: SUM_DR suma dni roboczych SUM_DW suma dni wolnych SUM_GODZ suma godzin nominalnych PRZEP_DNI suma dni przepracowanych PRZEP_SUM suma godzin przepracowanych NADL_SUM50 suma godzin nadliczbowych 50% przepr. NADL_SUM100 suma godzin nadliczbowych 100% przepr. SUM_NOC suma godzin nocnych nominalnych NOC_SUM suma godzin nocnych przepracowanych SZKOD_SUM suma godzin szkodliwych przepr. POSTOJ_SUM suma godzin postojowych (z ew.czas prac) DNI_ZATR suma dni rob. nieprzepr. ze wzgl. na zatrudnienie STMC{id;mc;rok} - WARTOSC z stałych miesięcznych dla podanego ID, roku i mc gdy ROK=0 i MC=0 - globalne np. STMC{[K:KATZATR];0;0} ROK<>0 i MC=0 - roczna np. STMC{[K:KATZATR];0;[:ROK]} ROK<>0 i MC<>0 - miesięczna np. STMC{[K:KATZATR];[:MC];[:ROK]} STPMC{id;mc;rok;ile mcy poprz} - suma WARTOSC z stałych miesięcznych dla podanego ID, roku i mc i ilości mcy poprzednich ROK<>0 i MC<>0 - miesięczna np. STPMC{[K:KATZATR];[:MC];[:ROK];3} ET{komunikat} - etat w postaci ułamka (komunikat=1 - wyświetla komunikat, że zły etat) Result := 0; if (Etat_2<>'0')and(Etat_1<>'')and(Etat_2<>'') then Result := Etat_1/Etat_2; cofniecie o jeden miesiac: IF{[:MC]-1;[:MC]-1;12} IF{[:MC]-1;[:ROK];[:ROK]-1} OZPUF{podstawa} - Liczy F.Pracy wg ustawień w danych kadrowych podstawa - podstawa liczenia F.Pracy OZPUG{podstawa} - Liczy FGŚP wg ustawień w danych kadrowych podstawa - podstawa liczenia FGŚP WSP_REH{ile dni) - jeśli ilość dni>182 to pyta o współczynnik waloryzacji rehabilitacji np. R2{FRMABS{PB-ZUZ_SUP;ID_CH<>'UW' and ID_CH<>'UO' AND ID_CH<>'DM';12}/30*[:PROC]/100*WSP_REH{[:L_35]}}*DNI_30{[:D_CH]} SWURL{warunek} - pobiera kwotę świadczenia urlopowego dal bieżącego pracownika np. SWURL{} OBL{wyrażenie} - oblicza wartość wyrażenia (stosowane, gdy jest za duże wyrażenie tzn. too many nestings) ZNETTO{kwota_NETTO} - oblicza wartość BRUTTO z kwota_NETTO wg wzoru: (wg ustawień w danych pracownika) BRUTTO = (NETTO - KUP*%podatku - ULGA) / (100%-%ub.społ-(100%-%ub.społ.)*%podatku-(100%-%ub.społ.)*(%ub.zdrow.Pobr.-%ub.zdrow.Odl)) ZNETTO_US{Kwota_NETTO;KUP;ULGA} - oblicza wartość BRUTTO z kwota_NETTO wg wzoru: (wg ustawień w danych pracownika ale trzeba podać KUP i ULGA - domyślnie jest zero) BRUTTO = (NETTO - KUP*%podatku - ULGA) / (100%-%ub.społ-(100%-%ub.społ.)*%podatku-(100%-%ub.społ.)*(%ub.zdrow.Pobr.-%ub.zdrow.Odl)) PARAM{jakiParam;ileMcWstecz} - zwraca parametr w zależności od wartości JakiParam i odejmuje od niego ileMcyWstecz (domyślnie 0): AMC - aktywny miesiąc AMC2 - aktywny miesiąc na dwóch znakach AMCR - aktywny miesiąc po rzymsku AROK - aktywny rok AROK2 - aktywny rok (2 znaki) AFULL - aktywny miesiąc na dwóch znakach.rok np. 08.2016 np. aktywny mc i rok 01.2016: PARAM{AMC2;0} -> 01 SUMAMC{pola;ileMcWstecz;WHERE} - zwraca sume pól z aktywnego m-ca cofniętego o ilość mcy ileMcWstecz (domyślnie 0) dla pracownika. Opcjonalnie jest warunek WHERE np. SUMAMC{WM-UB_RAZEM;1} NIEGODZ{godz} - zwraca sumę niedogodzin w miesiącu, jeśli dzień jest pracujący a ktoś przepracował w danym dniu więcej niż godz ale mniej niż wynika to z grafiku; UWAGA! Zwraca już czas do liczenia np. 30min to 0,5 np. NIEGODZ{0} RYCZ_SAM{POLE} - zwraca POLE z tabeli VKIP_RYCZ_SAM dla NR_AKT, MC, ROK KP_PLACE{warunek} - zwraca sumę kwot z KP_PLACE dla podanego warunku i dla pracownika z listy płac np. KP_PLACE{POLE='PKZP'} ALERT{wartosc;wzor;komunikat} - gdy po obliczeniu 'wzor' wyniesie (lub jest mniejsze) 'wartosc' to program wyświeli 'komunikat' gdy komunikat jest pominięty to wyświetli: wystąpiła wartość: 'wartosc' np. ALERT{0;[:PODATEK]-[:UB_ZDR_US]; PODATEK ZEROWY} ALERT{0;[:PODATEK]-[:UB_ZDR_US]} PPK{PODSTAWA} - sprawdza czy w danych kadrowych zaznaczone "Czy ma PPK" i liczy PRC_PPK (pracodawca ze stałych wskaźników) od PODSTAWY, uwzględnia daty przystąpienia PPK_P{PODSTAWA} - sprawdza czy w danych kadrowych zaznaczone "Czy ma PPK" i liczy PRC_PPK_P (pracownik ze stałych wskaźników) od PODSTAWY , uwzględnia daty przystąpienia PPKD{PODSTAWA} - sprawdza czy w danych kadrowych zaznaczone "Czy ma PPK" i liczy PRC_PPK (pracodawca z danych kadrowych) od PODSTAWY, uwzględnia daty przystąpienia PPKD_P{PODSTAWA} - sprawdza czy w danych kadrowych zaznaczone "Czy ma PPK" i liczy PRC_PPK_P (pracownik z danych kadrowych) od PODSTAWY , uwzględnia daty przystąpienia L26{} - zwraca 1, gdy pracownik ma mniej niż 26 lat w dniu wypłaty (DATA_UR+2631.07.2019 oraz zaznaczone w danych kadrowych "Podpisane oświadczenie zero podatku 26 lat" (tylko w 2019r.) LO26{} - zwraca 1, gdy pracownik ma mniej niż 26 lat w dniu wypłaty (DATA_UR+2631.07.2019 oraz NIE zaznaczone w danych kadrowych "Podpisane oświadczenie zero podatku 26 lat" (tylko w 2019r.) NL26{podstawaDoLiczenia;podstawaSQL} - zwraca 0, gdy pracownik ma mniej niż 26 lat w dniu wypłaty (DATA_UR+2631.07.2019 oraz zaznaczone w danych kadrowych "Podpisane oświadczenie zero podatku 26 lat" (tylko w 2019r.) opcja: podstawaDoLiczenia;podstawaSQL (jak w POTR_POD) jeśli PODSTAWA>I próg to zwraca 1 NIE{wzór} - neguje tzn. gdy wartość wzoru=0 to zwraca 1, jeśli wartość wzoru<>0 to zwraca 0 L65{} - zwraca 1, gdy pracownik osiągnął wiek emerytalny: kobieta 60, mężczyzna 65 NL65{}- zwraca 0, gdy pracownik osiągnął wiek emerytalny: kobieta 60, mężczyzna 65 ULGA_KLSR{Wzór na przychód z bieżącej listy;Pole na przychód z pozostałych list wyplaconych w miesiącu;Pole z kwotą ulgi klasy średniej} np. ULGA_KLSR{[:PODST_POD];PODST_POD;ULGA_KLSR} - oblicza kwotę ulgi dla klasy średniej POD2021{Wzór na podstawę z bieżącej listy;Wzór na podstawę od początku roku (BEZ bieżącej listy)} np. MAX{POD2021{[:PODST_POD];[:PODST_NAR]}-*43.76;0} - liczy podatek wg zasad obowiązujących w 2021 UWAGA! Na liście musi być kwota narastająco od początku roku podana jako drugi parametr POD2021{[:PODST_POD];[:PODST_NAR];[:ULGA]} - działa jak powyższy przykład z MAX SUMWNAR{pola do zsumowania} sumuje pola od początku roku do bieżącego miesiąca wypłaty (włącznie) z pominięciem bieżącej listy płac dla aktualnego pracownika (wykorzystywane do liczenia sumy przychodu) np. SUMWNAR{PODST_POD} MINSOC{kwota wynagrodzenia; dni rob. zmniejszenia; dni kal. zmniejszenia;CzyKomunikat} - oblicza wyrównanie do minimalnej; CzyKomunkat=1 - TAK ********* FUNKCJE DLA MAKRA TEKSTOWEGO ROZPOCZYNAJĄ SIĘ OD "_" *********