//********************************************************************* //* Funkcja: Zwraca ilo˜† miesi©cy przepracowanych w roku bie¾¥cym * //* u poprzednich pracodawc¢w * //* ostatnia modyfikacja: 10.09.2009 * //********************************************************************* local mies_his_od=0 mies_his_do=0 last_do=0 last_mies_his_do=0 il_mies_prac_w_roku=0 prev_od=0 prev_do=0 przeb_do=0 przeb_od=0 zatrudniony_od=Zatrudniony od (data_pytania) zatrudniony_do=Zatrudniony do (data_pytania) umowa_od=0 umowa_do=0 historia_do=0 his_od=0 his_do=0 his_od_new=0 his_do_new=0 his_od_tmp=0 j=0 i=0 umowa_ok=0 data_p_z=Data Pierwszego Zatrudnienia () dnihtmp=0 pozycja$='' last_his_do=0 zwarta_h=1 poz_num=0 end if zatrudniony_do=0 zatrudniony_do=domyslna_data end OstatniRekord(Przebieg pracy zawodowej) last_do=Przebieg pracy zawodowej (Data do) if last_do=0 last_do=domyslna_data end Czy˜†TabNum() Clear(Przebieg pracy zawodowej) Set(Przebieg pracy zawodowej) i=0 Loop Next(Przebieg pracy zawodowej) if eof() break end przeb_do=Przebieg pracy zawodowej (Data do) przeb_od=Przebieg pracy zawodowej (Data od) if przeb_do=0 przeb_do=domyslna_data end if Przeb_do < data(1,1,rok(data)) cycle end if przeb_do >= zatrudniony_od przeb_do=zatrudniony_od-1 end if data < Przeb_do cycle end if Przeb_od < data(1,1,rok(data)) przeb_od=data(1,1,rok(data)) end if zatrudniony_od < przeb_do cycle end if Zawierasi© (data,przeb_od,przeb_do) cycle end i=i+1 TabNum(i,1)=Przebieg pracy zawodowej (Data od) TabNum(i,2)=Przebieg pracy zawodowej (Data do) TabNum(i,3)=Przebieg pracy zawodowej (Sta¾) TabNum(i,4)=Przebieg pracy zawodowej (W firmie) if TabNum(i,2)=0 TabNum(i,2)=domyslna_data end end if i=0 Return(0) end poz_num=i i=0 while i < poz_num i=i+1 if Zawierasi©(zatrudniony_od,TabNum(i,1),TabNum(i,2)) and data >= zatrudniony_od TabNum(i,2)=max(OstatniDzieä(zatrudniony_od)+1,data(1,1,rok(data))) // ???????????????????? break end end if i < 1 Return(0) end poz_num=i last_do=TabNum(poz_num,2) if last_do >= zatrudniony_do Return(0) end if KartotekaPusta (Kartoteka anga¾y) Return (0) end dnih=0 umowa_ok=Umowa OK (data) historia_do=TabNum(poz_num,2) if historia_do=0 or historia_do >= zatrudniony_od historia_do=OstatniDzieä(zatrudniony_od) end if pierwszy_rok and historia_do >= data historia_do=data end i=0 dnih=0 while i < poz_num i=i+1 if i > 1 last_his_do=TabNum(i-1,2) if last_his_do > 0 if TabNum(i,1) > last_his_do+1 zwarta_h=0 break end end end if historia_do < data(1,1,rok(data)) or zatrudniony_od < data(1,1,rok(data)) dnih=0 Return (0) end if zwarta_h his_od=TabNum(1,1) if his_od < data(1,1,rok(data)) his_od=data(1,1,rok(data)) end his_do=historia_do if his_do=0 his_do=data(31,12,rok(data)) end if pierwszy_rok if dzieä(his_od)=1 and dzieä(his_do)=dzieä(OstatniDzieä(his_do)) dnih=0 Return(miesi¥c(his_do)-miesi¥c(his_od)+1) end if dzieä(his_od)=1 dnih=dzieä(his_do) else dnih=dzieä(his_do)-dzieä(his_od)+1 end Return(miesi¥c(his_do)-miesi¥c(his_od)) else dnih=0 Return(miesi¥c(his_do)-miesi¥c(his_od)+1) end else i=0 while i < poz_num i=i+1 Post©p() if rok(TabNum(i,1)) > rok(data) break end if not TabNum(i,3) i=i+1 cycle end if TabNum(i,1) >= zatrudniony_od or TabNum(i,1) > historia_do break end if rok(TabNum(i,2)) < rok(data) i=i+1 cycle end his_od_new=TabNum(i,1) his_do_new=TabNum(i,2) if his_do_new=0 if pierwszy_rok his_do_new=data else his_do_new=data(31,12,rok(data)) end end his_od_tmp=his_od if his_od > 0 case of Zawierasi©(his_od_new,his_od,his_do) and Zawierasi©(his_do_new,his_od,his_do) i=i+1 cycle of Zawierasi©(his_od,his_od_new,his_do_new) and Zawierasi©(his_do,his_od_new,his_do_new) i=i+1 cycle else if j=1 j=2 his_od_tmp=data(1,miesi¥c(his_do)+1,rok(his_do_new)) end end end case of Zawierasi©(his_od_new,his_od,his_do) his_od_new=his_do+1 of Zawierasi©(his_do_new,his_od,his_do) his_do_new=his_do-1 end his_od=his_od_tmp if his_od < data(1,1,rok(data)) his_od=data(1,1,rok(data)) end his_do=his_do_new if his_do_new >= zatrudniony_od his_do=zatrudniony_od-1 else his_do=his_do_new if his_do=0 his_do=data(31,12,rok(data)) end end if i=0 i=1 his_od=his_od_new end if rok(his_do) < rok(data) and his_do > 0 i=i+1 cycle else if rok(his_od_new) < rok(data) his_od=data(1,1,rok(data)) else if i <> 2 his_od=his_od_new end end end mies_his_od=miesi¥c(his_od) mies_his_do=miesi¥c(his_do) if miesi¥c(his_do) > miesi¥c(his_od) or (dzieä(his_od)=dzieä(PierwszyDzieä(his_od)) and dzieä(his_do)=dzieä(OstatniDzieä(his_do))) if dzieä(his_od)=dzieä(PierwszyDzieä(his_od)) and dzieä(his_do)=dzieä(OstatniDzieä(his_do)) il_mies_prac_w_roku=il_mies_prac_w_roku+mies_his_do-mies_his_od+1 else if dzieä(his_do) > dzieä(his_od) il_mies_prac_w_roku=il_mies_prac_w_roku+mies_his_do-mies_his_od else il_mies_prac_w_roku=il_mies_prac_w_roku+mies_his_do-mies_his_od-1 end end end if pierwszy_rok dnih=dnih+Max(his_do-his_od+1,0) else if miesi¥c(his_do) > miesi¥c(his_od) if dzieä(his_do) < dzieä(his_od)-1 dnih=dnih+Max(dzieä(PierwszyDzieä(his_do)-1)+dzieä(his_do)-dzieä(his_od)+1,0) else if dzieä(his_od) > 1 or dzieä(his_do) < dzieä(OstatniDzieä(his_do)) dnih=dnih+Max(dzieä(his_do)-dzieä(his_od)+1,0) end end end if miesi¥c(his_do)=miesi¥c(his_od) and (dzieä(his_od) <> dzieä(PierwszyDzieä(his_od)) or dzieä(his_do) <> dzieä(OstatniDzieä(his_do))) if miesi¥c(his_do)=miesi¥c(zatrudniony_od) il_mies_prac_w_roku=il_mies_prac_w_roku+mies_his_do-mies_his_od+1 else dnih=his_do-his_od+1 end end end i=i+1 end end if dzieä(his_do)=dzieä(OstatniDzieä(his_do)) dnih=dzieä(OstatniDzieä(his_od))-dzieä(his_od)+1 if miesi¥c(his_od)=2 and dnih=28 dnih=30 end Return(miesi¥c(his_do)-miesi¥c(his_od)) end dnih=dzieä(his_do)+dzieä(OstatniDzieä(his_od))-dzieä(his_od)+1 if dnih >= dzieä(OstatniDzieä(his_od)) dnih=dnih-dzieä(OstatniDzieä(his_od)) Return(miesi¥c(his_do)-miesi¥c(his_od)) end Return(miesi¥c(his_do)-miesi¥c(his_od)-1) else dnih=0 Return(miesi¥c(his_do)-miesi¥c(his_od)+1) end if pierwszy_rok il_mies_prac_w_roku=0 else if dnih > 0 dnih=0 il_mies_prac_w_roku=il_mies_prac_w_roku+1 end end //info('W ROKU H : data='&data2txt(data)&&' dnih='&num2txt(dnih)&&'; ilmph='&num2txt(il_mies_prac_w_roku)) Return(Min(Max(il_mies_prac_w_roku,0),12))