// *************************************************************************** // * * // * Funkcja zwraca warto˜† > 0 gdy pracownik ma cho† jedn¥ umow© o prac©. * // * W przeciwnym razie zwracane jest 0. * // * * // * Argumenty: data * // * * // * 10.09.2009 WA-PRO (Administrator) * // *************************************************************************** local um_ok=0 // 0 - brak anga¾u w dniu "data" data_konca_umowy=0 data_konca_angazu=0 data_zamkniecia_umowy=domyslna_data zatr_od=Zatrudniony od (data) zatr_do=Zatrudniony do (data) data_um_od=0 data_um_do=0 data_ang_do=0 data_ang_od=0 data_p_ang_do=0 start_ang=1 zwol=0 end if data < zatr_od or zatr_od <= 0 Return (9) // jeszcze nie pracowaˆ end if zatr_do < data (1,1,rok(data)) and zatr_do > 0 Return (11) // ju¾ nie pracowaˆ end Clear (Kartoteka um¢w o prac©) Set (Kartoteka um¢w o prac©) Next (Kartoteka um¢w o prac©) while not eof() and Kartoteka um¢w o prac© (Data od) <= data(31,12,rok(data)) data_um_od=Kartoteka um¢w o prac© (Data od) data_um_do=Kartoteka um¢w o prac© (Data do) if data_um_do=0 data_um_do=domyslna_data end Kartoteka anga¾y (Data od)=data_um_od Set (Kartoteka anga¾y) Next (Kartoteka anga¾y) data_ang_do=Kartoteka anga¾y (Data do) if data_ang_do=0 data_ang_do=domyslna_data end if eof() or Kartoteka anga¾y (Data od) > data_um_od if rok(data) > 2003 if rok(data_um_do) < 2004 Return (1) else if data_ang_do <= data(1,1,2004) Return (1) else Loop if eof() break end if Zawierasi©(data,data_ang_od,data_ang_do) Return(1) end Next (Kartoteka anga¾y) data_ang_od=Kartoteka anga¾y (Data od) data_ang_do=Kartoteka anga¾y (Data do) if data_ang_do=0 data_ang_do=domyslna_data end end Return (0) end end Return (1) else Return (1) end end if data_ang_do=0 data_ang_do=domyslna_data end while not eof() and Kartoteka anga¾y (Data od) >= data_um_od and data_ang_do <= data_um_do if start_ang start_ang=0 else if data_p_ang_do > 0 and data_p_ang_do+1 < Kartoteka anga¾y (Data od) and Zawierasi©(data,data_p_ang_do+1,Kartoteka anga¾y (Data od)-1) Return (2) // trafiˆo w luk© pomi©dzy umowami end end data_p_ang_do=Kartoteka anga¾y (Data do) Next (Kartoteka anga¾y) data_ang_do=Kartoteka anga¾y (Data do) end Next (Kartoteka um¢w o prac©) end OstatniRekord (Kartoteka anga¾y) data_ang_do=Kartoteka anga¾y (Data do) data_konca_umowy=Kartoteka anga¾y (Data do) if data_konca_umowy=0 data_konca_umowy=domyslna_data end zwol=Kartoteka anga¾y (Zwolnienie) while not eof() and (Kartoteka anga¾y (Data od)) >= data if Kartoteka anga¾y (Zwolnienie) zwol=1 else zwol=0 end Previous(Kartoteka anga¾y) end //if not eof() and (data_konca_umowy >= data or Zwol) if data_konca_umowy >= data or Zwol if Zwol data_zamkniecia_umowy=Kartoteka anga¾y (Data do) else data_zamkniecia_umowy=domyslna_data end data_konca_umowy=Kartoteka anga¾y (Data do) if data_konca_umowy=0 data_konca_umowy=domyslna_data end case of Zwol and rok(data_zamkniecia_umowy) < rok(data) // umowa zostaˆa zamkni©ta przed dniem 01.01 bie¾¥cego roku um_ok=11 of Zwol and rok(data_zamkniecia_umowy)=rok(data) // aktualna umowa zostaˆa zamkni©ta w bie¾¥cym roku if data_zamkniecia_umowy <= data um_ok=12 // umowa zostaˆa zamkni©ta do dnia "data" else um_ok=13 // umowa zostaˆa zamkni©ta po dniu "data" end of Zwol and rok(data_zamkniecia_umowy) > rok(data) um_ok=14 // aktualna umowa zostaˆa zamkni©ta, ale z dat¥ p¢«niejsz¥ // ni¾ 31.12 bie¾¥cego roku of not Zwol if data_zamkniecia_umowy >= data um_ok=15 // jest aktywna umowa else um_ok=16 // umowa niezamkni©ta, ale min©ˆa "Data do" end end end if um_ok > 12 and um_ok <> 16 um_ok=um_ok+100 case of Zwol and rok(data_zamkniecia_umowy) < rok(data) // anga¾ zostaˆ zamkni©ty przed dniem 01.01 bie¾¥cego roku um_ok=um_ok+100 of Zwol and rok(data_zamkniecia_umowy)=rok(data) // aktualny anga¾ zostaˆ zamkni©ty w bie¾¥cym roku if data_zamkniecia_umowy < data um_ok=um_ok+200 // anga¾ zostaˆ zamkni©ty do dnia "data" else um_ok=um_ok+300 // anga¾ zostaˆ zamkni©ty po dniu "data" end of Zwol and rok(data_zamkniecia_umowy) > rok(data) um_ok=um_ok+400 // aktualny anga¾ zostaˆ zamkni©ty, ale z dat¥ p¢«niejsz¥ // ni¾ 31.12 bie¾¥cego roku of not zwol um_ok=um_ok+500 // jest aktywny anga¾ end end //info('um.OK='&num2txt(um_ok)) Return (um_ok)