// *************************************************************************** // * * // * Funkcja oblicza ilo˜† peˆnych miesiecy sˆu¾by wojskowej w danym roku. * // * Cz¥stkowe urlopu sumuje si© a¾ do przekroczenia 30 dni. * // * Sprawdzany jest okres od Daty Od do Daty Do. * // * * // * Podstawa: Rozp MPiPS z dn. 8.01.97 Dz.U. nr 2 1997r. Par.2 * // * * // * Argumenty: data_od * // * data_do * // * * // * 23.02.2010 WA-PRO (Dziaˆ Rozwoju Oprogramowania) * // *************************************************************************** local data1=Data(1,1,Rok(data_do)) //poczatek roku data2=Data(31,12,Rok(data_do)) //koniec roku suma_dni_urlopu_wychowawczego=0 a1=0 a2=0 wychowawczy=0 //ilo˜† peˆnych miesiecy urlopu wychowawczy w roku poz_num=0 i=0 k=0 end if data_od>data_do Return(0) end Czy˜†TabNum() data2=Min(data2,data_do) //ograniczenie do okresu sprawdzania do roku data1=Max(data_od,data1) //okre˜lonego dat¥ do if data1 > data2 Return(0) end i=0 StartNieobecno˜ci(data1) //od pocz¥tku zatrudnienia lub pocz¥tku roku Loop Nast©pnaNieobecno˜†() if eof() break end if Nieobecno˜†(Kod Powodu)<>'J' cycle end a1=Nieobecno˜† (Data Od) //ograniczenie nieobecno˜ci w ramach roku if rok(a1) > rok(data_od) break end if a1 data(31,12,rok(data1)) a2=data(31,12,rok(data1)) end i=i+1 TabNum(i,1)=a1 TabNum(i,2)=a2 end poz_num=i if i=0 Return(0) end i=0 while i < poz_num i=i+1 a1=TabNum(i,1) a2=TabNum(i,2) if i < poz_num if a2=TabNum(i+1,1)-1 TabNum(i,2)=TabNum(i+1,2) k=i+1 while k < poz_num TabNum(k,1)=TabNum(k+1,1) TabNum(k,2)=TabNum(k+1,2) k=k+1 end poz_num=poz_num-1 if poz_num <= 0 break end end end end i=0 while i < poz_num i=i+1 a1=TabNum(i,1) a2=TabNum(i,2) if a1 > data(1,1,rok(a1)) and a2 >= data2 break end if a1=PierwszyDzieä(a1) and a2=OstatniDzieä(a2) wychowawczy=wychowawczy+Miesi¥c(a2)-Miesi¥c(a1)+1 else //sumujemy dni suma_dni_urlopu_wychowawczego=suma_dni_urlopu_wychowawczego+a2-a1+1 end end //suma miesi©cy urlopu wychowawczego jako suma peˆnych miesi©cy i ilo˜† miesi©cy //z sumy dni przyjmuj¥c ¾e miesi¥c ma 30 dni wychowawczy=wychowawczy+int(suma_dni_urlopu_wychowawczego/30) Return(wychowawczy)