//*********************************************************************// //* Funkcja: Zwraca ilo˜† miesi©cy przepracowanych w b.r. "u nas" *// //* ostatnia modyfikacja: 09.02.2011 *// //*********************************************************************// local il_mies_prac_w_roku=0 prev_od=0 prev_do=0 kart_data_do=0 kart_data_od=0 kart_data_do1=0 kart_data_od1=0 m_p=0 m_k=0 zatrudniony_od=Zatrudniony od (data) zatrudniony_do=Zatrudniony do (data) jest=0 // 0 - b©dzie oznacza†, ¾e "data wpadˆa" w luk© pomi©dzy umowami // 1 - b©dzie oznacza†, ¾e "data" mie˜ci si© w kt¢rej˜ z um¢w (czynnych) // 2 - b©dzie oznacza†, ¾e "data" mie˜ci si© w kt¢rej˜ z um¢w (zamkni©tych) // 3 - b©dzie oznacza†, ¾e "data" > ostatniej, zamkni©tej umowy ang_od=0 ang_do=0 zwol=0 m_prev_do=-1 il_ang=0 koniec=0 mies_ang_od=0 mies_ang_do=0 end if KartotekaPusta (Kartoteka anga¾y) Return(0) end Clear (Przebieg pracy zawodowej) Set (Przebieg pracy zawodowej) Loop Next (Przebieg pracy zawodowej) if eof() break end end if zatrudniony_do=0 zatrudniony_do=domyslna_data end Kartoteka anga¾y (Data od)=data+0.5 Set (Kartoteka anga¾y) Previous (Kartoteka anga¾y) while not eof() and (Kartoteka anga¾y (Data do) >= data(1,1,rok(data)) or Kartoteka anga¾y (Data do)=0) Previous (Kartoteka anga¾y) il_ang=il_ang+1 end OstatniRekord (Kartoteka anga¾y) if Kartoteka anga¾y (Zwolnienie) >=1 and data > Kartoteka anga¾y (Data do) jest=3 else PierwszyRekord (Kartoteka anga¾y) while not eof() ang_do=Kartoteka anga¾y (Data do) if ang_do=0 or ang_do > data(31,12,rok(data)) ang_do=data(31,12,rok(data)) end kart_data_od=Kartoteka anga¾y (Data od) kart_data_do=Min(Kartoteka anga¾y (Data do),data(31,12,rok(data))) if pierwszy_rok if kart_data_do=0 or kart_data_do > data kart_data_do=data end else if kart_data_do=0 or kart_data_do > data(31,12,rok(data)) kart_data_do=data(31,12,rok(data)) end end zwol=Kartoteka anga¾y (Zwolnienie) if il_ang > 1 if Kartoteka anga¾y (Data do)=0 or Kartoteka anga¾y (Data do) > data(31,12,rok(data)) m_prev_do=12 else m_prev_do=miesi¥c(Kartoteka anga¾y (Data do)) end end if data >= kart_data_od and data <= kart_data_do if zwol jest=2 else jest=1 end break end Next (Kartoteka anga¾y) if eof() m_prev_do=-1 break end end end kart_data_do=0 Kartoteka anga¾y (Data od)=data+0.5 Set (Kartoteka anga¾y) Loop Previous (Kartoteka anga¾y) if eof() break end ang_do=Kartoteka anga¾y (Data do) if ang_do=0 or ang_do > data(31,12,rok(data)) ang_do=data(31,12,rok(data)) end if rok(ang_do) < rok(data) if il_ang > 1 if Kartoteka anga¾y (Data do)=0 or Kartoteka anga¾y (Data do) > data(31,12,rok(data)) m_prev_do=12 else m_prev_do=miesi¥c(Kartoteka anga¾y (Data do)) end end Next (Kartoteka anga¾y) if eof() m_prev_do=-1 end break end zwol=Kartoteka anga¾y (Zwolnienie) if Kartoteka anga¾y (Zwolnienie) >=1 and jest and jest < 3 if il_ang > 1 if Kartoteka anga¾y (Data do)=0 or Kartoteka anga¾y (Data do) > data(31,12,rok(data)) m_prev_do=12 else m_prev_do=miesi¥c(Kartoteka anga¾y (Data do)) end end if eof() m_prev_do=-1 end break end end Kartoteka anga¾y (Data od)=data+0.5 Set (Kartoteka anga¾y) Previous (Kartoteka anga¾y) ang_do=Kartoteka anga¾y (Data do) if ang_do=0 or ang_do > data(31,12,rok(data)) ang_do=data(31,12,rok(data)) end if jest zwol=0 Loop if eof() Next (Kartoteka anga¾y) break end if (jest <> 3 or zwol) and Kartoteka anga¾y (Zwolnienie) and ang_do < data break end zwol=Kartoteka anga¾y (Zwolnienie) Previous (Kartoteka anga¾y) ang_do=Kartoteka anga¾y (Data do) if ang_do=0 or ang_do > data(31,12,rok(data)) ang_do=data(31,12,rok(data)) end if ang_do < data(1,1,rok(data)) Next (Kartoteka anga¾y) break end if Kartoteka anga¾y (Zwolnienie) >=1 Next (Kartoteka anga¾y) break end end end ///// jestem ustawiony na pierwszym z potrzebnych tu rekord¢w /////////// prev_od=Kartoteka anga¾y (Data od) kart_data_od=Kartoteka anga¾y (Data od) kart_data_do=Kartoteka anga¾y (Data do) if pierwszy_rok if kart_data_do=0 or kart_data_do > data kart_data_do=data end else if kart_data_do=0 or kart_data_do > data(31,12,rok(data)) kart_data_do=data(31,12,rok(data)) end end zwol=Kartoteka anga¾y (Zwolnienie) if pierwszy_rok and kart_data_od > data Return (0) end while not eof() ang_do=Kartoteka anga¾y (Data do) if ang_do=0 or ang_do > data(31,12,rok(data)) ang_do=data(31,12,rok(data)) end if pierwszy_rok and ang_do >= data ang_do=data koniec=1 end if Kartoteka anga¾y (Zwolnienie) >=1 and (jest=1 or jest=2) break end kart_data_do1=ang_do if kart_data_do1=0 if pierwszy_rok kart_data_do1=data else kart_data_do1=data(31,12,rok(data)) end end kart_data_od1=Kartoteka anga¾y (Data od) if pierwszy_rok if kart_data_do1 > data and not zwol kart_data_do1=data end else if rok(kart_data_od1) <= rok(data) and kart_data_do1 > data(31,12,rok(data)) if pierwszy_rok kart_data_do1=data else kart_data_do1=data(31,12,rok(data)) end end end if kart_data_do1 > kart_data_do kart_data_do=kart_data_do1 end if pierwszy_rok if data < kart_data_do1 kart_data_do1=data kart_data_do=data else end end if il_ang > 1 if Kartoteka anga¾y (Data do)=0 or Kartoteka anga¾y (Data do) > data(31,12,rok(data)) m_prev_do=12 else m_prev_do=miesi¥c(Kartoteka anga¾y (Data do)) end end if koniec end Next (Kartoteka anga¾y) ang_do=Kartoteka anga¾y (Data do) if ang_do=0 or ang_do > data(31,12,rok(data)) ang_do=data(31,12,rok(data)) end if eof() m_prev_do=-1 end if pierwszy_rok and ang_do > data if kart_data_od > data break end if kart_data_do > data and not jest kart_data_do=data end end zwol=Kartoteka anga¾y (Zwolnienie) end if rok(kart_data_od) < rok(data) m_p=0 else m_p=miesi¥c(kart_data_od) end if rok(kart_data_do) > rok(data) or ((jest=0 or jest=1 or jest=2) and not pierwszy_rok) m_k=12 else m_k=miesi¥c(kart_data_do) end if rok(kart_data_od) < rok(data) kart_data_od=data(1,1,rok(data)) end if rok(kart_data_do) > rok(data) or kart_data_do=0 if pierwszy_rok if kart_data_do=0 or kart_data_do > data kart_data_do=data end else if kart_data_do=0 or kart_data_do > data(31,12,rok(data)) kart_data_do=data(31,12,rok(data)) end end end if pierwszy_rok if dzieä(kart_data_do) < dzieä(kart_data_od) m_k=miesi¥c(kart_data_do)-1 else if jest and jest <> 3 m_k=miesi¥c(data) else if dzieä(kart_data_od)=1 and dzieä(kart_data_do)=dzieä(OstatniDzieä(kart_data_do)) m_k=miesi¥c(kart_data_do)+1 else m_k=miesi¥c(kart_data_do) end end end end if m_prev_do < m_p - 1 or m_prev_do=-1 if not pierwszy_rok or rok(data) < 2004 m_p=m_p-1 end end if not pierwszy_rok and rok(kart_data_od) < rok(data) m_p=0 end m_k=Min(Max(m_k,0),12) if rok(zatrudniony_do)=rok(data) and m_k > miesi¥c(zatrudniony_do) m_k=miesi¥c(zatrudniony_do) end m_p=Min(Max(m_p,0),12) il_mies_prac_w_roku=Min(Max(m_k-m_p,0),12) if pierwszy_rok mies_ang_od=miesi¥c(kart_data_od) mies_ang_do=miesi¥c(kart_data_do) if dzieä(kart_data_od)=dzieä(PierwszyDzieä(kart_data_od)) and dzieä(kart_data_do)=dzieä(OstatniDzieä(kart_data_do)) il_mies_prac_w_roku=il_mies_prac_w_roku+1 end if miesi¥c(kart_data_do) > miesi¥c(kart_data_od) if dzieä(kart_data_do) < dzieä(kart_data_od)-1 dnia=dnia+Max(dzieä(PierwszyDzieä(kart_data_do)-1)+dzieä(kart_data_do)-dzieä(kart_data_od),0) else dnia=dnia+Max(dzieä(kart_data_do)-dzieä(kart_data_od),0) end end if miesi¥c(kart_data_do)=miesi¥c(kart_data_od) and (dzieä(kart_data_od) <> dzieä(PierwszyDzieä(kart_data_od)) or dzieä(kart_data_do) <> dzieä(OstatniDzieä(kart_data_do))) if dzieä(kart_data_do) >= dzieä(kart_data_od) dnia=dnia+Max(dzieä(kart_data_do)-dzieä(kart_data_od),0) end end end il_mies_prac_w_roku=il_mies_prac_w_roku+Int(dnia/30) dnia=dnia-30*Int(dnia/30) //info('KONIEC IL.M.P.a : m_k='&num2txt(m_k)&&'; ilmpa='&num2txt(il_mies_prac_w_roku)) Return(min(max(il_mies_prac_w_roku,0),12))