// *************************************************************************** // * * // * Funkcja oblicza podstaw© wymiaru urlopu na podstawie sta¾u pracy, * // * wyksztaˆcenia i okresu sˆu¾by wojskowej. * // * * // * Podstawa: Dziaˆ si¢dmy KP * // * * // * Argumenty: data_do * // * data_zatrudnienia * // * ilosc_miesiecy_pracy * // * sluzba * // * wyksztalcenie$ * // * miesiace_stazu * // * lata_stazu * // * znetat * // * znet_a * // * znet_h * // * * // * 03.03.2010 WA-PRO (Dziaˆ Rozwoju Oprogramowania) * // *************************************************************************** local data_rozpoczecia_pracy=Data pierwszego zatrudnienia () poprzednie_wyksztalcenie$='' wilosc_dni=0 //sta¾ z pominieciem okresu nauki wdni=0 wmiesiace=0 wlata=0 pilosc_dni=0 //sta¾ z przebiegu pracy pdni=0 pmiesiace=0 plata=0 silosc_dni=0 //suma sta¾u tylko z pracy sdni=0 smiesiace=0 slata=0 swilosc_dni=0 //sta¾ ze sˆu¾by wojskowej swdni=0 swmiesiace=0 swlata=0 swilosc_dni_st=0 //sta¾ ze sˆu¾by wojskowej swdni_st=0 swmiesiace_st=0 swlata_st=0 ilosc_dni=0 //suma sta¾u z uwzgl©dnieniem pracy i wykszaˆcenia dni=0 miesiace=0 lata=0 dni1=0 //zmienne tymczasowe miesiace1=0 lata1=0 ilosc1=0 ilosc2=0 dni2=0 miesiace2=0 lata2=0 staz_za_wyksztalcenie=0 istaz_za_wyksztalcenie=0 pdata_od=0 pdata_do=0 nauka_od=0 nauka_do=0 sluzba_od=0 sluzba_do=0 twyksztalcenie$='' tstaz_za_wyksztalcenie=0 pozycja$='' bezplatny=0 jest=0 ang_od=0 ang_do=0 wymiar_ustawowy=0 lata_wk=0 lata_start=0 wyksztalcenie_st$='' staz_za_wyksztalcenie_st=0 prop_wym_start=0 wymiar_start=0 data_start=data(1,1,rok(data_do)) data_pobrania=0 wym_ust_start=0 end if data_zatrudnienia=-1 //je¾eli pracownik nie byˆ zatrudniony w danym okresie ilosc_miesiecy_pracy=0 //to nie obliczamy sluzba=0 wyksztalcenie$='' miesiace_stazu=0 lata_stazu=0 Return(0) end data_start=Max(data_start,data_zatrudnienia) //obliczenie dotychczasowego sta¾u pracy if data_do=0 data_do=dzisiaj() end //Oblicz sta¾ z przebiegu zatrudnienia (data_do, silosc_dni, sdni, smiesiace, slata) Oblicz sta¾ z przebiegu zatrudnienia (data_start, silosc_dni, sdni, smiesiace, slata) //Oblicz sta¾ z aktualnego zatrudnienia R04 (data_start, silosc_dni, sdni, smiesiace, slata) Oblicz sta¾ z aktalnego zatrudnienia (data_start, silosc_dni, sdni, smiesiace, slata) lata_start=slata //Oblicz sta¾ z aktualnego zatrudnienia R04 (data_zatrudnienia, silosc_dni, sdni, smiesiace, slata) Oblicz sta¾ z aktalnego zatrudnienia (data_zatrudnienia, silosc_dni, sdni, smiesiace, slata) ilosc_miesiecy_pracy=slata*12+smiesiace //staz w miesiacach sluzba_od=Pracownik (Sˆu¾ba wojskowa od dnia) sluzba_do=Pracownik (Sˆu¾ba wojskowa do dnia) if sluzba_od>0 and sluzba_do>0 //obliczenie sta¾u ze sˆu¾by wojskowej Oblicz sta¾ sˆu¾by wojskowej (data_do, swilosc_dni, swdni, swmiesiace, swlata) Oblicz sta¾ sˆu¾by wojskowej (data_start, swilosc_dni_st, swdni_st, swmiesiace_st, swlata_st) //obliczenie sta¾u pracy pomniejszonego o sˆu¾b© wojskow¥ Oblicz sta¾ z przebiegu zatrudnienia od do (sluzba_od, sluzba_do, data_do, ilosc1, dni1, miesiace1, lata1) Oblicz sta¾ z aktalnego zatrudnienia od do (sluzba_od, sluzba_do, data_do, ilosc1, dni1, miesiace1, lata1) //oblicz r¢¾nic© mi©dzy sta¾em z przebiegu zatrudnienia bez uwzgl©dnienia //sˆu¾by wojskowej, sta¾em pomniejszonym o sˆu¾b© Odejmij dni miesiace lata (sdni, smiesiace, slata, dni1, miesiace1, lata1) //odj©cie od sta¾u ze sˆu¾by wojskowej okresu pokrywaj¥cego si© z zatrudnieniem Odejmij dni miesiace lata (swdni, swmiesiace, swlata, sdni, smiesiace, slata) end lata_start=lata_start+swlata_st silosc_dni=0 sdni=0 smiesiace=0 slata=0 //obliczenie sta¾u za wykszaˆcenie nabyte przed podj©ciem pracy istaz_za_wyksztalcenie=Oblicz sta¾ za wyksztaˆcenie przed rozp. pracy (wyksztalcenie$) staz_za_wyksztalcenie=istaz_za_wyksztalcenie //obliczenia stazu z przebiegu zatrudnienia Clear (Przebieg pracy zawodowej) Set (Przebieg pracy zawodowej) Loop Post©p() Next (Przebieg pracy zawodowej) //koniec przegl¥dania gdy koniec kartoteki, zapis pokrywa si© z okresem zatrudnienia lub wychodzi poza okres sprawdzania if eof() or Przebieg pracy zawodowej (Data od)>=data_zatrudnienia or Przebieg pracy zawodowej (Data od)>=data_do break end if not Przebieg pracy zawodowej (Sta¾) cycle end //pierwszy zapis w kartotce if pdata_od=0 and pdata_do=0 if Przebieg pracy zawodowej (Data od)=data_zatrudnienia pdata_do=data_zatrudnienia-1 else pdata_do=Przebieg pracy zawodowej (Data do) end if pdata_do>data_do pdata_do=data_do end else break end else //pomini©cie pokrywajacego si© zapisu if Przebieg pracy zawodowej (Data do)<=pdata_do cycle end //je¾eli kolejny zapis zaczyna si© p¢¾niej ni¾ skoäczyˆ poprzedni if Przebieg pracy zawodowej (Data od) > pdata_do pdata_od=Przebieg pracy zawodowej (Data od) else pdata_od=pdata_do+1 end case of Przebieg pracy zawodowej (Data do)>data_zatrudnienia pdata_do=data_zatrudnienia of Przebieg pracy zawodowej (Data do)>data_do pdata_do=data_do else pdata_do=Przebieg pracy zawodowej (Data do) end end if pdata_do=0 pdata_do=data_do end //obliczenie sta¾u z pracy pilosc_dni=0 pdni=0 pmiesiace=0 plata=0 R¢¾nica dat w latach miesi¥cach dniach (pdata_od, pdata_do, plata, pmiesiace, pdni) pilosc_dni=pdata_do-pdata_od+1 ilosc_dni=0 dni=0 miesiace=0 lata=0 //sta¾ dotychczasowy Sumuj dni miesiace lata (dni, miesiace, lata, sdni, smiesiace, slata) //sta¾ aktualny Sumuj dni miesiace lata (dni, miesiace, lata, pdni, pmiesiace, plata) //staz za poprzednie wyksztaˆcenie lata=lata+istaz_za_wyksztalcenie ilosc_dni=silosc_dni+pilosc_dni+istaz_za_wyksztalcenie*365 //obliczenie sta¾u z uwzgl©dnieniem ewentualnego okresu nauki Clear(Ukoäczone szkoˆy) Set(Ukoäczone szkoˆy) loop Post©p() Next(Ukoäczone szkoˆy) if eof() or Ukoäczone szkoˆy (Data od)>pdata_do or Ukoäczone szkoˆy (Data do)>pdata_do break end if Ukoäczone szkoˆy (Data do)= max(data(1,1,rok(data_do)),data_zatrudnienia) break end if Ukoäczone szkoˆy (Data do) < max(data(1,1,rok(data_do)),data_zatrudnienia) wyksztalcenie_st$=Ukoäczone szkoˆy (Wyksztaˆcenie) staz_za_wyksztalcenie_st=Pobierz sta¾ za wyksztaˆcenie (wyksztalcenie_st$) cycle end end OstatniRekord (Kartoteka anga¾y) jest=0 While not Kartoteka anga¾y (Zwolnienie) if eof() break end jest=1 Previous (Kartoteka anga¾y) end lata_wk=lata if not jest or eof() Clear (Kartoteka anga¾y) end Set (Kartoteka anga¾y) Loop Post©p() Next (Kartoteka anga¾y) if eof() or Kartoteka anga¾y (Data od) > data_do break end ang_od=Kartoteka anga¾y (Data od) ang_do=Kartoteka anga¾y (Data do) jest=0 Clear (Przebieg pracy zawodowej) Set (Przebieg pracy zawodowej) Loop Post©p() Next (Przebieg pracy zawodowej) //koniec przegl¥dania gdy koniec kartoteki, zapis pokrywa si© z okresem zatrudnienia lub wychodzi poza okres sprawdzania if eof() or Przebieg pracy zawodowej (Data od)>=data_zatrudnienia or Przebieg pracy zawodowej (Data od)>=data_do break end if not Przebieg pracy zawodowej (Sta¾) cycle end if Zawierasi© (ang_od,Przebieg pracy zawodowej (Data od),Przebieg pracy zawodowej (Data do)) if Zawierasi© (ang_do,Przebieg pracy zawodowej (Data od),Przebieg pracy zawodowej (Data do)) jest=1 break end end end if jest cycle end //pierwszy zapis w kartorece if pdata_od=0 and pdata_do=0 pdata_od=Kartoteka anga¾y (Data od) pdata_do=Kartoteka anga¾y (Data do) if pdata_do=0 or pdata_do>data_do pdata_do=data_do end else //pomini©cie pokrywajacego si© zapisu (na wszelki wypadek) if Kartoteka anga¾y (Data do)>0 and Kartoteka anga¾y (Data do)<=pdata_do cycle end if Kartoteka anga¾y (Data od) > pdata_do pdata_od=Kartoteka anga¾y (Data od) else pdata_od=pdata_do+1 end pdata_do=Kartoteka anga¾y (Data do) if pdata_do=0 or pdata_do>data_do pdata_do=data_do end end //obliczenie sta¾u z pracy pilosc_dni=0 pdni=0 pmiesiace=0 plata=0 R¢¾nica dat w latach miesi¥cach dniach (pdata_od, pdata_do, plata, pmiesiace, pdni) pilosc_dni=pdata_do-pdata_od+1 ilosc_dni=0 dni=0 miesiace=0 lata=0 //sta¾ dotychczasowy Sumuj dni miesiace lata (dni, miesiace, lata, sdni, smiesiace, slata) Sumuj dni miesiace lata (dni, miesiace, lata, pdni, pmiesiace, plata) //staz za poprzednie wyksztaˆcenie lata=lata+istaz_za_wyksztalcenie ilosc_dni=silosc_dni+pilosc_dni+istaz_za_wyksztalcenie*365 //obliczenie sta¾u z uwzgl©dnieniem ewentualnego okresu nauki Clear(Ukoäczone szkoˆy) Set(Ukoäczone szkoˆy) loop Post©p() Next(Ukoäczone szkoˆy) if eof() or Ukoäczone szkoˆy (Data od)>pdata_do or Ukoäczone szkoˆy (Data do)>pdata_do break end nauka_od=Ukoäczone szkoˆy (Data od) nauka_do=Ukoäczone szkoˆy (Data do) //obliczenie sta¾u pominiejszonego o okres nauki wilosc_dni=0 wdni=0 wmiesiace=0 wlata=0 pozycja$=Position(Kartoteka anga¾y) Oblicz sta¾ z przebiegu zatrudnienia od do (nauka_od, nauka_do, pdata_do, wilosc_dni, wdni, wmiesiace, wlata) Oblicz sta¾ z aktalnego zatrudnienia od do (nauka_od, nauka_do, pdata_do, wilosc_dni, wdni, wmiesiace, wlata) Reset(Kartoteka anga¾y,pozycja$) Next(Kartoteka anga¾y) // obliczenie przepracowanego okresu bez uwzglednienia aktualnego okresu nauki dni1=0 miesiace1=0 lata1=0 ilosc1=0 //sta¾ dotychczasowy Sumuj dni miesiace lata (dni1, miesiace1, lata1, sdni, smiesiace, slata) //sta¾ aktualny Sumuj dni miesiace lata (dni1, miesiace1, lata1, pdni, pmiesiace, plata) //staz za poprzednie wyksztaˆcenie lata1=lata1+istaz_za_wyksztalcenie ilosc1=silosc_dni+pilosc_dni+istaz_za_wyksztalcenie*365 //obliczenie sta¾u z uwzgl©dnieniem aktualnego wykszaˆcenia dni2=0 miesiace2=0 lata2=0 ilosc2=0 //sta¾ dotychczasowy //Sumuj dni miesiace lata (dni2, miesiace2, lata2, sdni, smiesiace, slata) //sta¾ aktualny z wyˆ¥czeniem okresu nauki Sumuj dni miesiace lata (dni2, miesiace2, lata2, wdni, wmiesiace, wlata) //staz za wyksztaˆcenie twyksztalcenie$=Ukoäczone szkoˆy (Wyksztaˆcenie) tstaz_za_wyksztalcenie=Pobierz sta¾ za wyksztaˆcenie (twyksztalcenie$) lata2=lata2+tstaz_za_wyksztalcenie ilosc2=silosc_dni+pilosc_dni+tstaz_za_wyksztalcenie*365 if lata10 Sumuj dni miesiace lata (dni, miesiace, lata, swdni, swmiesiace, swlata) sluzba=1 end //pomniejszenie sta¾u o urlopy bezpˆatne udzielone w trakcie zatrudnienia //z ewidencji nieobecno˜ci do koäca okresu sprawdzania. pdata_do=Data(31,12,Rok(data_do)+1) loop pdata_do=Data(31,12,Rok(pdata_do)-1) //kolejny rok pdata_od=Data(1,1,Rok(pdata_do)) if pdata_do>data_do pdata_do=data_do end if pdata_do0 if bezplatny>12 lata1=Int(bezplatny/12) bezplatny=bezplatny-lata1 end Odejmij dni miesiace lata (dni, miesiace, lata, lata1, bezplatny, 0) end miesiace_stazu=lata*12+miesiace lata_stazu=lata data_pobrania=data_zatrudnienia if rok(data_pobrania) < rok (data_do) data_pobrania=data_do end if data_start - data_rozpoczecia_pracy < 730 if lata_start=10 lata_start=9 end end wymiar_start=Pobierz wymiar urlopu R04 O (lata_start,data_start,data_start, dnia, dnih,prop_wymiar,nak,fri,lata_start) prop_wym_start=prop_wymiar if data_do - data_rozpoczecia_pracy < 730 if lata=10 lata=9 end end wymiar_ustawowy=Pobierz wymiar urlopu R04 O (lata,data_pobrania,data_pobrania, dnia, dnih,prop_wymiar,nak,fri,lata_start) wym_ust_start=wymiar_ustawowy //info('NaDz R04 O ZZ: data_pob='&data2txt(data_pobrania)&&'; lata_st='&num2txt(lata_start)&&';'&&'lata='&num2txt(lata)&&'; wym ust='&num2txt(wymiar_ustawowy)&&'; pwym='&num2txt(prop_wymiar)) Return(wym_ust_start)