// *************************************************************************** // * * // * * // * * // * * // * 11.09.2009 WA-PRO (Administrator) * // *************************************************************************** local etat_znormal=0 data_prop_od=0 data_prop_do=0 rokur=rok(na_dzien) ang_do=0 ang_od=0 pre_ang_do=0 pre_ang_od=0 zatrudniony_od=Zatrudniony od (na_dzien) zatrudniony_do=Zatrudniony do (na_dzien) licz_do=0 licz_od=0 licz_do_prev=na_dzien mcy_ang=0 bn_mcy_ang=0 kk=0 dni_ang=0 kda=0 kdh=0 pier_ang=1 last_ang_do=0 zwol=0 i=0 wspet=0 wspet_o=0 dzien_przeskoku=0 data_przeskoku=0 data_k=0 dzien_k=0 miesiac_k=0 dzielna=0 skok_ostatniego=0 mc_poprzedni=0 mcy_z_angazy=0 max_mc=0 angaz_startowy$='' powrot=0 historia_do=0 umowa_OK=0 jest=0 ostatni_ang_od=0 wymiar_proporcjonalny=0 wymiar_dla_wspet=0 start=1 bn_data_od=0 bn_data_do=0 bn_dzien_cyk=0 bn_data_tym=0 old_bn_data_tym=0 bn_etat$='' bn_wspet=0 bn_dzien_ost=0 poz_num=0 od_miesiaca=0 do_miesiaca=0 mcy_ang_tot=0 zmiana=0 wymiar_roboczy=0 dodaj=0 wspet_akt=0 poprzedni_poszedl=0 nie_doliczal=1 licznik=0 dodal=0 k=0 basta=0 nxt_ang=0 przeb_od=0 przeb_do=0 w_firmie=0 his_num=0 ii=0 k=0 jj=0 end if zatrudniony_do=0 zatrudniony_do=domyslna_data end if na_dzien > zatrudniony_do na_dzien=zatrudniony_do+1 end wymiar_roboczy=wymiar_ustawowy if KartotekaPusta (Kartoteka anga¾y) or zatrudniony_od data(31,12,rok(na_dzien)) break end ang_od=Kartoteka anga¾y (Data od) ang_do=Kartoteka anga¾y (Data do) if ang_do=0 ang_do=domyslna_data end if ang_od > data(31,12,rok(na_dzien)) or ang_od > Data(31,12,rok(na_dzien)+1) break end if ang_do > 0 and ang_do < data(1,1,rok(na_dzien)) cycle end poz_num=poz_num+1 TabNum(poz_num,1)=Kartoteka anga¾y (Data od) if Kartoteka anga¾y (Data do)=0 or Kartoteka anga¾y (Data do) > data(31,12,rok(na_dzien)) TabNum(poz_num,2)=data(31,12,rok(na_dzien)) else TabNum(poz_num,2)=Kartoteka anga¾y (Data do) end if TabNum(poz_num,2)=0 TabNum(poz_num,2)=data(31,12,rok(na_dzien)) end TabNum(poz_num,3)=Etat(Kartoteka anga¾y (Etat)) TabNum(poz_num,4)=Kartoteka anga¾y (Zwolnienie) TabTxt(poz_num,3)=Kartoteka anga¾y (Etat) i=poz_num end i=poz_num while i > 1 i=i-1 k=0 if i > 0 and TabNum(i,4) jj=i while jj < poz_num k=k+1 jj=jj+1 TabNum(k,1)=TabNum(jj,1) TabNum(k,2)=TabNum(jj,2) TabNum(k,3)=TabNum(jj,3) TabNum(k,4)=TabNum(jj,4) end poz_num=k break end end i=0 while i < poz_num i=i+1 ang_od=TabNum(i,1) ang_do=TabNum(i,2) if ang_do=0 ang_do=data(31,12,rok(na_dzien)) TabNum(i,2)=data(31,12,rok(na_dzien)) end if Zawierasi©(na_dzien,ang_od,ang_do) break end end poz_num=i i=0 while i < poz_num i=i+1 bn_data_od = TabNum(i,1) bn_data_do = TabNum(i,2) end i=poz_num while i > 1 i=i-1 k=0 if i > 0 and TabNum(i,4) jj=i while jj < poz_num k=k+1 jj=jj+1 TabNum(k,1)=TabNum(jj,1) TabNum(k,2)=TabNum(jj,2) TabNum(k,3)=TabNum(jj,3) TabNum(k,4)=TabNum(jj,4) end poz_num=k break end end ///////////\\\\\\\\\\\\\\/////////\\\\\\\\\\\\\ //i=0 //while i < poz_num // i=i+1 // if TabNum(i,1) > na_dzien // break // end //end //poz_num=i ///////////\\\\\\\\\\\\\\/////////\\\\\\\\\\\\\ bn_data_od=TabNum(1,1) if bn_data_do = 0 or bn_data_do > data(31,12,rok(na_dzien)) bn_data_do=data(31,12,rok(na_dzien)) end zatrudniony_od = Min(zatrudniony_od,bn_data_od) bn_data_do = min(bn_data_do,na_dzien) if na_dzien >= bn_data_do or bn_data_do=domyslna_data zatrudniony_do=bn_data_do end kdh=Max(dnih-30*Int(dnih/30),0) if kdh=0 bn_data_tym=zatrudniony_od else bn_data_tym=OstatniDzieä(zatrudniony_od)-Pierwszydzieä(zatrudniony_od)+1-kdh+zatrudniony_od end bn_dzien_cyk=dzieä(bn_data_tym) if kdh=0 bn_data_tym=data(bn_dzien_cyk,miesi¥c(bn_data_tym)+1,rok(bn_data_tym)) end if miesi¥c(zatrudniony_od)=1 if bn_dzien_cyk > Dzieä(OstatniDzieä(Data(1,2,Rok(na_dzien)))) bn_dzien_cyk = Dzieä(OstatniDzieä(Data(1,2,Rok(na_dzien)))) end end umowa_OK=Umowa OK (na_dzien) i=0 if not KartotekaPusta (Przebieg pracy zawodowej) Clear (Przebieg pracy zawodowej) Set (Przebieg pracy zawodowej) Next (Przebieg pracy zawodowej) Loop i=i+1 if eof() break end TabNum(i,10)=Przebieg pracy zawodowej (Data od) TabNum(i,11)=Przebieg pracy zawodowej (Data do) TabNum(i,12)=Przebieg pracy zawodowej (W firmie) Next (Przebieg pracy zawodowej) end his_num=i OstatniRekord (Przebieg pracy zawodowej) w_firmie=Przebieg pracy zawodowej (W firmie) przeb_od=Przebieg pracy zawodowej (Data od) przeb_do=Przebieg pracy zawodowej (Data do) if rok(przeb_do)=rok(na_dzien) and not w_firmie or (w_firmie and przeb_do < na_dzien and Zawierasi© (na_dzien,przeb_od,przeb_do)) if Zatrudniony w okresie (na_dzien,na_dzien) if na_dzien > Przebieg pracy zawodowej (Data do) historia_do=Przebieg pracy zawodowej (Data do) end else if his_num > 1 i=his_num while i > 1 if TabNum(i-1,12) w_firmie=TabNum(i-1,12) historia_do=TabNum(i-1,10)-1 else break end i=i-1 end end case of {Urlop w zatrudnieniu r¢wnolegˆym}='' or {Urlop w zatrudnieniu r¢wnolegˆym}='Odlicz 1-y miesi¥c nakˆadki' if miesi¥c(historia_do) >= miesi¥c (TabNum(1,1)) and rok(historia_do)=rok(na_dzien) if not w_firmie historia_do= OstatniDzieä(TabNum(1,1)) end end end end end end if rok(Przebieg pracy zawodowej (Data do))=rok(na_dzien) if historia_do=0 and not KartotekaPusta(Przebieg pracy zawodowej) OstatniRekord(Przebieg pracy zawodowej) if Przebieg pracy zawodowej (Data do)=0 historia_do=domyslna_data end end end if TabNum(1,1) < historia_do or PierwszyDzieä(TabNum(1,1))=PierwszyDzieä(historia_do) case of {Urlop w zatrudnieniu r¢wnolegˆym}='Odlicz 1-y miesi¥c nakˆadki' or {Urlop w zatrudnieniu r¢wnolegˆym}='' case of miesi¥c(zatrudniony_od) < miesi¥c(TabNum(1,2)) and historia_do > 0 if miesi¥c(TabNum(1,1)) <= miesi¥c(historia_do) if miesi¥c(TabNum(1,1))=miesi¥c(historia_do) TabNum(1,1)=historia_do-1 else end end TabNum(1,1)=data(1,miesi¥c(TabNum(1,1)),rok(na_dzien)) of miesi¥c(zatrudniony_od)=miesi¥c(TabNum(1,2)) TabNum(1,1)=data(1,miesi¥c(TabNum(1,1))+1,rok(na_dzien)) else TabNum(1,1)=data(1,miesi¥c(TabNum(1,1)),rok(na_dzien)) end of {Urlop w zatrudnieniu r¢wnolegˆym}='Niezale¾ny okres nakˆadki' of {Urlop w zatrudnieniu r¢wnolegˆym}='Caˆkowicie niezale¾nie' end end if Przebieg pracy zawodowej (W firmie) ii=0 while not eof() if ii=0 Previous (Przebieg pracy zawodowej) end if not Przebieg pracy zawodowej (W firmie) historia_do=Przebieg pracy zawodowej (Data do) else Clear (Kartoteka anga¾y) Kartoteka anga¾y (Data od)=Przebieg pracy zawodowej (Data od) Set (Kartoteka anga¾y) Next (Kartoteka anga¾y) if Kartoteka anga¾y (Data od)=Przebieg pracy zawodowej (Data od) and Kartoteka anga¾y (Zwolnienie) historia_do=Kartoteka anga¾y (Data do) end end if ii=1 Previous (Przebieg pracy zawodowej) end ii=1 end end i=poz_num while i > 1 i=i-1 k=0 if i > 0 and TabNum(i,4) jj=i while jj < poz_num k=k+1 jj=jj+1 TabNum(k,1)=TabNum(jj,1) TabNum(k,2)=TabNum(jj,2) TabNum(k,3)=TabNum(jj,3) TabNum(k,4)=TabNum(jj,4) end poz_num=k break end end if TabNum(poz_num,4) TabNum(poz_num,2)=na_dzien end i=0 while i < poz_num old_bn_data_tym=bn_data_tym i=i+1 if poz_num > 1 case of {Strategia zmiany wymiaru etatu}='' or {Strategia zmiany wymiaru etatu}='Liczenie wg stanu na 1-y dzieä miesi¥ca' if i <= poz_num Tabnum(i,2)=OstatniDzieä(TabNum(i,2)) end of {Strategia zmiany wymiaru etatu}='Liczenie wg stanu na ostatni dzieä miesi¥ca' if miesi¥c(TabNum(i,2)) > 1 if miesi¥c(TabNum(i,1)) < miesi¥c(TabNum(i,2)) if dzieä(TabNum(i,2)) < dzieä(OstatniDzieä(TabNum(i,2))) if i < poz_num TabNum(i+1,1)=data(bn_dzien_cyk+1,miesi¥c(TabNum(i,2))-1,rok(na_dzien)) TabNum(i,2)=TabNum(i+1,1)-1 end end end end of {Strategia zmiany wymiaru etatu}='Liczenie wg stanu dotycz¥cego ponad poˆowy miesi¥ca' if miesi¥c(TabNum(i,2)) > 1 if dzieä(TabNum(i,2)) > (dzieä(OstatniDzieä(TabNum(i,2))))*0.5 if i < poz_num TabNum(i,2)=OstatniDzieä(TabNum(i,2)) TabNum(i+1,1)=TabNum(i,2)+1 if TabNum(i+1,2) < TabNum(i+1,1) TabNum(i+1,2)=TabNum(i+1,1) end end end end of {Strategia zmiany wymiaru etatu}='Liczenie najkorzystniej dla pracownika' if miesi¥c(TabNum(i,2)) > 1 if miesi¥c(TabNum(i,1)) < miesi¥c(TabNum(i,2)) if TabNum(i,3) < TabNum(i+1,3) if i < poz_num TabNum(i+1,1)=data(bn_dzien_cyk+1,miesi¥c(TabNum(i,2))-1,rok(na_dzien)) TabNum(i,2)=TabNum(i+1,1)-1 end end end end end end end i=0 while i < poz_num i=i+1 case of {Strategia zmiany wymiaru etatu}='' or {Strategia zmiany wymiaru etatu}='Liczenie wg stanu na 1-y dzieä miesi¥ca' if i=poz_num and i > 1 and TabNum(i,1) <= TabNum(i-1,2) if miesi¥c(TabNum(i-1,2))=12 if TabNum(i-1,2) < TabNum(i,2) TabNum(i-1,2)=TabNum(i,2) end poz_num=poz_num-1 break end TabNum(i,1)=TabNum(i-1,2)+1 if TabNum(i,2) <= TabNum(i,1) poz_num=poz_num-1 break end end end end if bn_data_tym = OstatniDzieä(bn_data_tym) bn_dzien_ost = 1 end i=0 while i < poz_num i=i+1 if bn_data_tym < TabNum(i,1) bn_data_tym = Data(bn_dzien_cyk,Miesi¥c(TabNum(i,1)),Rok(bn_data_tym)) end while bn_data_tym <= na_dzien bn_wspet=TabNum(i,3) if na_dzien < data(31,12,rok(na_dzien)) if bn_dzien_ost = 1 bn_data_tym = OstatniDzieä(bn_data_tym+1) end end if not start and not nxt_ang bn_data_tym = Data(bn_dzien_cyk,Miesi¥c(bn_data_tym)+1,Rok(bn_data_tym)) end if bn_data_tym > data(31,12,rok(na_dzien)) bn_data_tym=data(31,12,rok(na_dzien)) end if bn_data_tym > na_dzien break end if TabNum(i,2) >= bn_data_tym bn_wspet=TabNum(i,3) if bn_wspet <= 0 or wspet > 1 bn_wspet=1 end wymiar_dla_wspet=Zaokr¥glenie w g¢r© (wymiar_ustawowy*bn_wspet) if {Czy zaokr¥gla† pierwszy urlop ?}='Tak' and {Urlopy w ci¥gu roku zaokr¥gla†}='ka¾dy okres osobno' and bn_wspet <> wspet_o and not start wymiar_proporcjonalny=wymiar_proporcjonalny+Zaokr¥glenie w g¢r© (wymiar_dla_wspet/12) else wymiar_proporcjonalny=wymiar_proporcjonalny+wymiar_dla_wspet/12 end bn_etat$=TabTxt(i,3) if bn_data_tym > na_dzien break end etat_znormal=etat_znormal+bn_wspet start=0 end if bn_data_tym > TabNum(i,2) dodal=1 break end start=0 if miesi¥c(bn_data_tym) = miesi¥c(TabNum(i,2)) and i >= poz_num if miesi¥c (bn_data_tym)=12 break end end nxt_ang=0 end if dodal dodal=0 end if basta break end nxt_ang=1 end bn_wspet=TabNum(poz_num,3) etat_znormal=etat_znormal/12 if bn_mcy_ang>0 and i > 1 wymiar_dla_wspet=Zaokr¥glenie w g¢r© (wymiar_ustawowy*bn_wspet) if {Czy zaokr¥gla† pierwszy urlop ?}='Tak' and {Urlopy w ci¥gu roku zaokr¥gla†}='ka¾dy okres osobno' and bn_wspet <> wspet_o and not start wymiar_proporcjonalny=wymiar_proporcjonalny+wymiar_dla_wspet/12 wymiar_proporcjonalny=Zaokr¥glenie w g¢r© (wymiar_proporcjonalny) else wymiar_proporcjonalny=wymiar_proporcjonalny+wymiar_dla_wspet/12 end end if bn_dzien_cyk=1 and na_dzien=data(31,12,rok(na_dzien)) wymiar_dla_wspet=Zaokr¥glenie w g¢r© (wymiar_ustawowy*bn_wspet) if {Czy zaokr¥gla† pierwszy urlop ?}='Tak' and {Urlopy w ci¥gu roku zaokr¥gla†}='ka¾dy okres osobno' and bn_wspet <> wspet_o and not start wymiar_proporcjonalny=wymiar_proporcjonalny+Zaokr¥glenie w g¢r© (wymiar_dla_wspet/12) else wymiar_proporcjonalny=wymiar_proporcjonalny+wymiar_dla_wspet/12 end end //info('POLZNOR N LAST : wym_prop='&num2txt(wymiar_proporcjonalny)) return(wymiar_proporcjonalny)