praksa.uni-mb.sipraksa.uni-mb.si/porocila/e1074545.docx · web viewv začetku so mi po tednu...
TRANSCRIPT
VISOKOŠOLSKI STROKOVNI ŠTUDIJ
Računalništvo in Informacijske Tehnologije
POROČILO PRAKTIČNEGA IZOBRAŽEVANJAv
MTD BIO, d. o. o. -- Slovenska Bistrica
1
Čas opravljanja od 15.3.2016 do 15.5.2016
Mentor v GD Peter Tadič
Študent Janez Krnc
Vpisna številka E1074545
E pošta [email protected]
Telefon 068 686 952
2
3
1 UVOD.................................................................................................................................5
2 OPIS GOSPODARSKE DRUŽBE IN PRODUKTOV......................................................5
3 OPIS PRAKTIČNEGA IZOBRAŽEVANJA – PROJEKTNEGA DELA ŠTUDENTA...6
4 STROKOVNO PODROČJE ALI PROJEKT.....................................................................6
4.1 PRIPRAVA DELOVNEGA OKOLJA........................................................................6
4.2 SPOZNAVANJE PROGRAMA IN DELOVANJA PODJETJA................................7
4.3 POPRAVKI NA PODATKOVNI BAZI IN V PROGRAMU...................................10
4.4 IZDELAVA IN VKLJUČITEV OBRAZCEV...........................................................12
4.5 RAZŠIRITEV INFRASTRUKTURE PROGRAMA ZA VEČ DELODAJALCEV.16
4.5.1 IZDELAVA TABEL NA PODATKOVNI BAZI IN INTEGRACIJA...............16
4.5.2 IZDELAVA UPORABNIŠKEGA VMESNIKA................................................23
5 SKLEP...............................................................................................................................37
6 PRILOGE..........................................................................................................................38
4
1 UVOD
Podjetje MTD BIO, d. o. o. je podjetje, ki nudi celovite tehnološke rešitve za podporo
avtomatizaciji proizvodnih/storitvenih procesov, opreme za kovinsko predelovalno
industrijo in kovinske konstrukcije. Vendar pa jaz nisem bil prisoten pri delu na stroki
podjetja, temveč na njihovim informacijsko računalniškim potrebam.
Podjetje za ažuriranje projektov, zaposlenih, ipd. uporablja računalniški program (pisan v
C#) vezan z SQL podatkovno bazo. Program služi tudi za avtomatizirano polnjenje
obrazcev in pogodb s podatki iz baze. Pri delu sem na novo pridobil znanje dela na
dejanskem programu in podatkovni bazi večjega podjetja. Seznanil sem se s prevzemom
kompleksne programske kode in delovanja programa, ki ga nisem napisal sam, reševanja
številnih problemov in naročil, ki sem jih dobil iz firme v zvezi z delovanjem programa in
dela v skupini.
2 OPIS GOSPODARSKE DRUŽBE IN PRODUKTOV
V gospodarski družbi so zaposleni delavci na
delovnih mestih, ki pokrivajo predvsem delovna
mesta monterjev, varilcev, cevarjev, ipd. Ti so
dodeljeni na projekte.
Na področju mojega praktičnega izobraževanja
sem bil na razvojnem oddelku programske
opreme, preko katere je potekalo ažuriranje
zaposlenih, njihovih osebnih podatkov, pogodb,
polnjenje in tiskanje obrazcev in prijavljanje na
projekte. Delal in sodeloval sem s sodelavcem,
ki mi je bil v pomoč in vir znanja s strani
delovanja, potreb in strukture podjetja, naloge
5
Slika 1:Montaža robotskih sistemov
in naročila pa sem dobival preko mentorja in kadrovskih referentov, saj so le-ti uporabljali
ta program na katerem sem delal.
3 OPIS PRAKTIČNEGA IZOBRAŽEVANJA – PROJEKTNEGA DELA ŠTUDENTA
V začetku so mi po tednu uvajanja bila zaupana dela, kot so kreacija novih obrazcev z
orodjem Adobe Acrobat Pro, ki delujejo s programom, popravljanje starih, kot tudi manjši
popravki v programu ali na SQL poizvedbah. Kasneje sem pridobil večjo odgovornost dela
neposredno s podatkovno bazo, ki vsebuje podatke o vseh zaposlenih, njihove prijave,
pogodbe,… Najpomembnejša naloga, ki mi je bila zaupana, je bila razširitev infrastrukture
programa in baze za delovanja programa v povezavi z ostalimi podružnicami v drugih
državah, ki pa spadajo pod isto firmo.
4 STROKOVNO PODROČJE ALI PROJEKT
4.1 PRIPRAVA DELOVNEGA OKOLJA
Ker sem delal od doma, mi je bilo treba v prvi fazi pripraviti delovno okolje za delo.
Program v osnovi predstavlja vmesnik uporabnika s podatkovno bazo, ki se nahaja v
poslopju podjetja. Verzioniziranje programske kode je potekalo preko GIT repozitorija,
razvoj programske kode preko »Visual Studio«, delo s podatkovno bazo preko »Microsoft
SQL Server Management Studio«, urejanje pdf obrazcev pa v programu »Adobe Acrobat
Pro«.
Za povezavo s podatkovno bazo sva s sodelavcem na mojem računalniku vzpostavila VPN
povezavo na domače omrežje v podjetju. Funkcija je na voljo v operacijskem sistemu
Windows. Naslov povezave sva določila »mtd-bio.si«. Ustvarjeno mi je bilo uporabniško
ime »janez« in geslo »admin%1234«. Vedno, ko sem delal na programu ali podatkovni
bazi, sem se moral najprej povezati na to povezavo.
6
Sledi nameščanje programa za verzioniziranje programske kode »SourceTree«, ki dela z
repozitorijem »GIT«. Ustvarjen mi je bil privatni ssh ključ (»janez_rsa.ppk«) z geslom, da
sem lahko delal na programu. Sledilo je kloniranje obstoječega repozitorija na moj lokalni
računalnik. Vnesel sem pot/URL repozitorija, »[email protected]:~/MTD/program.git« in
določit lokalno izhodno pot na računalniku (slika 2). Seveda sem moral biti povezan preko
na zgoraj omenjeno VPN povezavo.
Slika 2: Kloniranje GIT repozitorija v programu SourceTree
Po kloniranju repozitorija sem lahko izvorno kodo programa zagnal s programskim
okoljem Visual Studio 2013.
4.2 SPOZNAVANJE PROGRAMA IN DELOVANJA PODJETJA
Prvi trije dnevi so bili namenjene seznanitvi, kako program deluje in okvirne dejavnosti z
strani podjetja, ki jih moram vedeti.
Ob zagonu in prijavi v t.i. »kadrovski program" se uporabniku izpišejo seznami aktualnih
osebnih dokumentov zaposlenih in potek le-teh (slika 3)
7
Slika 3: Kadrovski program – izgled
Od začetnega okna lahko naposled uporabnik, če ima ustrezne pravice, dostopa do okna
»Administracija« (slika 4), ki omogoča upravljanje z uporabniki programa, pregled
dostopov v program in brisanje zaposlenih, projektov in kupcev.
Slika 4: Administracija programa
8
Poleg tega pa program pod
zavihkom »Napake«
prikazuje izpis vseh
javljenih napak
uporabnikom (slika 5).
Ob izbiri na zavihek
»Iskanje«, dobi uporabnik
prikaz vseh zaposlenih,
projektov, kupcev, katerih
podatke le-teh lahko, če
ima ustrezne pravice, prosto
spreminja (slika 6).
Slika 6: Iskanje/Izbira po kadrih, projektih ali kupcih
9
Slika 5: Spisek javljenih napak
Preko tega okna je mogoče zaposlene prijaviti na želen projekt. To se stori tako, da se
odkljuka želene kadre iz velikega okna. Naposled se z klikom na gumb »Dodaj«, v grupi
kontrol »Dodaj na …«, delavce prijavi na želen projekt z izbranim datumom.
Ob kliku na delavca se odpre okno »Zaposleni« (slika 7).
Slika 7: okno "Zaposleni"
V tem oknu so vidni vsi osebni podatki o zaposlenemu in podatki in dokumenti v zvezi z
njegovim delom na podjetju, kot so delovne pogodbe, certifikati, opombe in zavihek z
možnostjo tiskanja obrazcev z samodejnim polnjenjem vnosnih polj na podlagi podatkov o
delavcu iz podatkovne baze.
4.3 POPRAVKI NA PODATKOVNI BAZI IN V PROGRAMU
Prva dela so predstavljala popravke v programu ali popravki pogledov ali procedur v
podatkovni bazi. Ker je takšnih del bilo mnogo, bom v tem poglavju opisal eno, prvo delo
te vrste, ki sem ga dobil.
Na prvem zaslonu prikazuje potek A1 dokumentov zaposlenih (slika 8). Vsak zaposleni
ima lahko več teh dokumentov. Težava je, da program na tem seznamu prikazuje vse
dokumente, medtem ko je željeno, da prikazuje samo aktualen dokument za vsakega, poleg
tega pa se ob izbrisu dokumenta (gumb »Prezri«) morajo skriti vsi dokumenti zaposlenega,
10
kateremu je pripadal prezrt dokument. Torej, ko se prezre dokument zaposlenega, se za
njim ne sme pojaviti zadnji najbolj aktualen dokument.
Slika 8: Prikaz potekov A1 dokumentov
Naloge sem se lotil tako, da sem pogledal kako se seznam polni in kaj se zgodi ob kliku na
gumb »Prezri«. Po preučitvi programske kode sem ugotovil, da se večina obdelave prikaza
podatkov iz baze dogaja preko pogledov in procedur na bazi in ne v programski kodi. V
programu se samo bere podatke iz baze in se jih prikazuje z minimalnim obdelovanjem ali
prireditvijo prikaza. Ta delovna praksa mi je bila v primerjavi z delom in nalogami med
študijem nekaj novega. V študijskih nalogah, ki zajemajo delo s podatkovnimi bazami in
njihovo integracijo v aplikacije, ni bilo posebnega poudarka na tem, katera opravila je
smiselno ali bolje opravljati na strani podatkovne baze, kaj pa v sami programski kodi
lokalno v programu.
Prikaz v programu je narejen preko selekcije pogleda »PotekA1« iz baze in prikazom
dobljenih podatkov v mrežo podatkov (angl. »Data grid«)(slika 9).
Slika 9: Selekcija pogleda iz baze v programu
V podatkovni bazi sta tabeli »Zaposleni« v kateri se nahajajo vsi zaposleni, podani z
identifikacijsko številko in »Dokumenti« v kateri so vsi dokumenti vseh zaposlenih. Ob
kliku na gumb »Prezri«, se kliče funkcija, ki bazi poda parameter IDdokumenta, katerega
dokumenta gumb je bil pritisnjen, ter požene proceduro »PosodobiDokument_skrij«, ki se
nahaja na podatkovni bazi (slika 10). Ob preučitvi le-te, sem ugotovil, da procedura
posodobi dokument, katerega ID se ujema z podanim parametrom. Za željeno rešitev
naloge, v kateri se morajo posodobiti vsi dokumenti zaposlenega, sem proceduro spremenil
tako, da sem ji dodal vhodni parameter »IDZaposleni«, pri posodobitvi dokumenta pa
posodobim vse dokumente, ki se ujemajo z ID-jem zaposlenega.
11
Slika 10: Procedura, ki posodobi vse dokumente zaposlenemu
4.4 IZDELAVA IN VKLJUČITEV OBRAZCEV
V programu je vključeno število pdf obrazcev, ki jih podjetje uporablja in izdaja za
zaposlene delavce. Sem spadajo pogodbe za zaposlitev, potrdila, sklepi, itd. Večina
podatkov o zaposlenemu, potrebnih na obrazcih, je v podatkovni bazi. V programu se ob
izbiri obrazca podatki iz baze samodejno izpolnijo. To je narejeno preko vnosnih polj v
obrazcih, katerim so podani ključi in uporabo posebne knjižnice v programu.
Tekom praktičnega izobraževanja na firmi, sem moral prirediti prikaz podatkov številnim
obrazcem, kot tudi kreiranje in dodajanje povsem novih neobstoječih obrazcev v program.
V nadaljevanju je opisan postopek kreacije in dodajanja obrazca »Potrdilo o prejemu
plačilne liste«. Obrazec sem s strani firme dobil v obliki Word dokumenta (slika 11).
Slika 11: Dobljen obrazec »Potrdilo o prejemu plačilne liste« v obliki Word dokumenta
V dokumentu so bila mesta, ki naj bi se samodejno izpolnila iz baze označena z črto in
namigom.
12
Polje za
samodejno
1.) Dokument sem najprej pretvoril v obliko PDF tako, da sem dokument shranil kot
PDF dokument. Nato sem preučil, ter se posvetoval z sodelavci, kateri podatki se
morajo ročno določiti v programu in kateri se pridobijo iz baze.
2.) V mojem primeru potrebujem samo ime, priimek in delovno mesto zaposlenega.
Datum spodaj se avtomatsko določi kot datum tiska obrazca (današnji datum),
datum v prvem odstavku pa se določi ročno znotraj programa ob izbiri obrazca.
3.) Izpis podatkov poteka preko pogleda (angl. »View«) na podatkovni bazi. Za
obrazce, ki potrebujejo samo najosnovnejše podatke o delavcu, se lahko uporabi
pogled »PROSNJE«. Za ostale obrazce, ki pa potrebujejo še podatke iz drugih tabel
(npr. delovno mesto, drzava…), pa sem moral ustvariti nov pogled (slika 12).
Slika 12:Pogled "POTRDILOOPREJEMUPLACILNE"
4.) Znotraj programske opreme Adobe Acrobat Pro sem počistil polja, kjer se bodo
prikazovali resnični podatki, ter jih nadomestil z vnosnimi polji. Vnosna polja sem
moral poimenovati identično, kot so imena stolpcev, ki jih izpisuje pogled, opisan v
točki 3 (slika 13). Pri tem sem moral biti pazljiv, da se tekst, ki bo pristal v
vnosnem polju, sklada z tekstom v isti vrstici. Tako v položaju, velikosti, stilu in
družini pisave.
Slika 13:Narejen obrazec z vnosnimi polji
13
5.) Končni obrazec sem nato dodal v program na listo obrazcev posebnega razreda
Forms.cs, v slovar, po katerem se sklicujemo, ko potrebujemo dostop do obrazca
(slika 14). Razred vključuje tudi metodo, ki napolni obrazec s podatki in metodo, ki
obrazec potem tudi odpre pripravljenega za tiskanje.
Slika 14:Dodajanje obrazca v program
6.) Sledilo je dodajanje obrazca na ravni uporabniškega vmesnika. Treba je bilo dodati
gumb za izbiro obrazca pod zavihek »Obrazci« v oknu »Zaposleni« (slika 7,
opisano v poglavju 4.2). Ob kliku na obrazec se odpre okno, kjer uporabnik za
izbran obrazec še vnese podatke, ki jih ni mogoče pridobiti iz baze in zahtevajo
ročni vnos (slika 15). Dodal sem zavihek »Potrdilo o prejemu plačilne liste«, ter mu
dodal zahtevana vnosna polja za ročni vnos.
14
Slika 15:Okno "Tiskanje obrazcev"
7.) Ob kliku na gumb »Natisni« ali »Predogled« se potem kliče funkcija, ki, glede na
izbran obrazec, kliče selekcijo podatkov iz ustreznega pogleda iz baze (slika 12,
opisano v točki 3), ter v definiran slovar dict (Dictionary<string, string> dict) vnese
dodatne podatke iz ročnih vnosov, če so le-ti bili potrebni (slika 16).
Slika 16:klic pogleda in vpis podatkov v slovar
Nato s pomočjo metod »fillForm« in »printForm« razreda »Forms.cs« (slika 17,
opisano v točki 5) napolnim polja v obrazcu z vrednostmi, katerih imena stolpcev,
ki jih vrne pogled »POTRDILOPREJEMAPLACILNE«, ali vrednostmi katerih
imena ključev v slovarju dict se ujemajo z imeni vnosnih polj v obrazcu.
Slika 17:Polnjenje in tiskanje obrazca
15
Končen rezultat vsebuje obrazec pripravljen za tisk z vsemi vnosnimi polji
samodejno izpolnjenimi. Obrazec priložen v poglavju »PRILOGE« (Priloga 1)
4.5 RAZŠIRITEV INFRASTRUKTURE PROGRAMA ZA VEČ DELODAJALCEV
Prva izmed dveh večjih projektov, oz. nalog, ki sem jih dobil je bila razširitev programa za
delovanje pod več podružnicami, ki spadajo pod isto podjetje. Podjetje je zaradi lažjega
poslovanja in zaposlovanja delavcev iz tujine odprlo novo podjetje na Slovaškem po imenu
»Pazmax«. Prav tako pa sodeluje z več kooperanti, oz. manjšimi podjetji. Podjetje hoče
imeti v programu tako ločene zaposlene. Prav tako, pa želijo pri tem sledljivost zaposlitev
za nazaj, oz. beleženo zgodovino prijav in odjav (zaposlitev) za vsakega delodajalca. Mora
se vedeti, pri katerem delodajalcu je delavec prijavljen za delo, obrazci so za slovaško
firmo »Pazmax« drugačni… Program mora omogočati dodajanje delodajalcev v program
podobno kot dodajanje kadrov, prijavo delavca na željenega delodajalca, posodabljanje
zaposlitev pri vsakem delodajalcu (delovno mesto, zgodovina pogodb, vrsta zaposlitve…),
ločeni dokumenti za vsako firmo, itd.
Preden sem začel karkoli delati na tem, sem šel skozi nekaj sestankov na firmi in
posvetovanj s sodelavcem, da so bile specifikacije naloge kar se da jasno določene.
4.5.1 IZDELAVA TABEL NA PODATKOVNI BAZI IN INTEGRACIJA
1.) DELODAJALCI
V programu se bomo pri zaposlitvah, dokumentih, zaposlenih sklicevali po delodajalcih.
Ker v bazi ne obstajajo podatki o njih, sem najprej ustvaril novo tabelo, ki jih bo vsebovala
(slika 18). V tabeli sem vključil tudi stolpec »IDDrzave«, ki je tuj ključ, ki povezuje tabelo
»Drzave« iz katere dobimo podatke o državi, v kateri se delodajalec nahaja. Skripta za
kreacijo tabele je vključena v prilogah (Priloga 2).
16
Slika 18:Stolpci nove tabele "Delodajalci"
V tabelo sem potem vnesel vrstice za delodajalce, po katerih se bo program skliceval (slika
19).
Slika 19:Podatki o delodajalcih v bazi
Delodajalec z ID številko 1 je firma, na kateri se praktično izobražujem sam, v Sloveniji.
Delodajalec z ID številko 2 je omenjana firma na Slovaškem po imenu Pazmax. ID
številka 3 pa predstavlja množico kooperantskih podjetij. Za ta podjetja sem ustvaril
posebno tabelo »Kooperanti«, ki vsebuje identične podatke kot tabela »Delodajalci«. Nova
tabela »Kooperanti« je potrebna zato, ker nas znotraj programa bolj ali manj ne zanima, za
katerega kooperanta gre. Le za to, da gre za kooperantsko podjetje.
Pomembni del pri delodajalcih je bil posvetovanje in določitev podatkov, ki bodo različni
in je za njih pomembno vedeti, pod katerega delodajalca spadajo. Tuji ključ
»IDDelodajalca« je bilo treba dodati v podatkovni bazi v potrebne tabele. Za vse
dokumente (tabela »Dokumenti«), delovno opremo na zaposlenega (tabela
»OvoPrevzem«) (slika 20) in opombe zaposlenega (tabela »Opombe«).
17
Slika 20:Struktura tabele »OvoPrevzem« in selekcija vsebine
2.) STANJA ZAPOSLENEGA
Do zdaj je bila tabela »Zaposleni« zgrajena tako, da je s stolpci »Predlog« (tip »bit«),
»Aktiven« (tip »bit«), »DatumPrijave« (tip »Date«) in »DatumOdjave« (tip »Date«)
ponazarjala stanje zaposlenega. Ob vnosu zaposlenega v program ima vrednost stolpca
»Predlog« 1. To pomeni, da še ni prijavljen in je samo v naboru delavcev. Ob prijavi se mu
določi »DatumPrijave«, »DatumOdjave« se (če obstaja) izbriše, »Predlog« se nastavi na 0,
stolpec »Aktiven« pa na 1, kar pomeni, da je delavec prijavljen. Ob odjavi, se mu samo
določi »DatumOdjave«, »Aktiven« pa se nastavi na 0.
Iz tega sem torej lahko sklepal:
- Delavec je prijavljen, če ima vrednost »Aktiven« 1, prav tako je vrednost
»DatumOdjave« prazna.
- Delavec je odjavljen, če ima neko vrednost pod stolpcem »DatumOdjave«, prav
tako pa je vrednost »Aktiven« 0.
- Delavec je v naboru takrat, ko ima vrednost »Predlog« 1.
Primer vidimo na sliki (slika 21).
Slika 21:Primer ponazoritve stanja zaposlenega po starem sistemu
Ta sistem seveda ne more funkcionirati, ko je prisotnih več delodajalcev. Moramo vedeti
stanja delavca pri vsakem delodajalcu. Tako sem najprej ustvaril novo tabelo »Stanja«, ki
18
Nov dizajn tabele »OvoPrevzem«
Dodan
stolpec
Odjavljen
V naboru
Prijavljen
vsebuje vsa stanja, ki jih delavec lahko ima (npr. Prijavljen), oz. dejanje ki to stanje
povzroči (npr. »Prijava«). Strukturo tabele in vrednosti, ki sem jih vanjo shranil lahko
vidimo na sliki spodaj (slika 22).
Slika 22: Struktura tabele "Stanja" in selekcija vsebine
Za vsakega zaposlenega je treba vedeti kakšno stanje ima pri vseh izmed treh delodajalcev.
Zato sem v tabelo »Zaposleni« dodal tri polja, ki predstavljajo stanja zaposlenega pri vseh
treh delodajalcih (slika 23). Za primer, da je delavec zaposlen pri delodajalcu »kooperanti«
(t.j. vrednost »IDStanjaKooperanti« je enaka 2, kar pomeni, da je prijavljen) sem dodal še
stolpec »IDKooperanti«, kjer je vrednost tuj ključ to tabele »Kooperanti« (opisano v
poglavju 4.5.1) in ponazarja pri katerem kooperantu je prijavljen.
Slika 23: Nov sistem ponazoritve stanj zaposlenih pri delodajalcih
Na tej točki sem moral stolpce, ki so bili potrebni za delovanje in reprezentacijo stanj
zaposlenih, odstraniti. Pred tem pa sem moral seveda obstoječim zaposlenim nastaviti
stanja glede na prejšnji sistem. Pri pisanju skripte (slika 24) sem, kot prej, iz vrednosti
»Aktiven«, »Predlog«, »DatumPrijave« in »DatumOdjave« sklepal, ali je delavec trenutno
prijavljen (vrednost stanja »2«), odjavljen (vrednost stanja »1«) ali pa samo v naboru
(vrednost stanja »0«). V času razvoja v bazi še ni bilo dodanih delavcev, ki bi bili
prijavljeni pri drugih delodajalcih, temveč samo tisti, ki delajo v Sloveniji, pod
gospodarsko družbo MTD-bio. Zato, sem lahko stanja za Pazmaks in kooperante nastavil
na 0, kar pomeni, da so v naboru.
19
Slika 24: Skripta za nastavitev aktualnih stanj
3.) ZAPOSLITVE PRI DELODAJALCIH
Vsak zaposlen ima mnogo podatkov, ki se prikazujejo v oknu »Zaposleni« (slika 25).
Slika 25: Podatki o delavcu
20
Stanja
delodajalce
ma Pazmax
Prijavljen
je takrat, ko Odjavljen
je takrat, ko V naboru je
takrat, ko je
Podatki, ki
ostanejo
glede na
Nekateri podatki se glede na zaposlitev pri drugem delodajalcu ne spremenijo. Sem
spadajo osebni podatki, izobrazba, družinski člani, ipd. Kot smo že opisali v poglavju
4.5.1, morajo biti vsi dokumenti ločeni med delodajalci. Poleg dokumentov pa morajo biti
ločeni tudi podatki o sami zaposlitvi (delovno mesto, pogodbe o zaposlitvi, možnost
odjave/prijave delavca…). Začel sem s tem, da ustvarim novo tabelo
»ZaposlitveDelodajalci«, kjer so izvzeti vsi podatki o zaposlitvi iz tabele »Zaposleni«.
Tabeli je dodan tudi stolpca »IDDelodajalci« in »IDZaposleni«, ki ponazarjata za katerega
delavca je vnos podatkov o zaposlitvi, kot tudi pri katerem delodajalcu. Tako dobimo v
podatkovni bazi za vsakega delavca 3 vnose podatkov o zaposlitvi (za vsakega izmed treh
delodajalcev)(slika 26).
Slika 26: Struktura tabele ZaposlitveDelodajalci in primer podatkov o zaposlitvi za delavca
Obstoječe podatke o zaposlitvi delavca sem sedaj moral iz tabele »Zaposleni« prenesti pod
ustreznim ID-jem delodajalca v tabelo »ZaposlitveDelodajalci«. Za to sem napisal skripto
(slika 27). Vse zaposlitve trenutnih delavcev veljajo za »MTD-bio«, zato sem nastavil
privzeto vrednost delodajalca pri novem vnosu v tabelo »ZaposleniDelodajalci« na 1.
Slika 27: Skripta za prenos podatkov o zaposlitvah iz tabele "Zaposleni" v "ZaposlitveDelodajalci"
Za tem sem moral v programu in na bazi v vseh pogledih, tabelah in procedurah poiskati
reference na katerikoli podatek o zaposlitvi, ki se bodo odstranili iz tabele »Zaposleni« in
urediti, da se glede na željen rezultat, sklicuje na podatke o zaposlitvi ustreznega
delodajalca, iz tabele »ZaposlitveDelodajalci«. Postopek je bil zamuden in nadvse
pomemben. Potrebno je bilo poiskati in razumno spremeniti vse reference vsakega
podatka. Za iskanje na strani podatkovne baze sem si pomagal z iskalnim orodjem
»ApexSQL«, ki deluje kot vtičnik znotraj programa za upravljanje z podatkovno bazo Sql
21
Server Management studio 2008. Ob vpisu željene entitete (bodisi ime stolpca, ime
procedure, funkcije, tabele, pogleda…) ti program izpiše vse reference na to ime znotraj
celotne baze (slika 28).
Slika 28: Uporaba iskalnega vtičnika "Apex SQL"
Za tem sem šel skozi vse najdene entitete in posodobil reference na pravo mesto po smislu,
prav tako pa rekurzivno iskal vsa mesta, kjer se nahaja entiteta, kjer se nahaja iskan objekt
in tako dalje. Po končanem procesu dela, sem lahko iz tabele »Zaposleni« končno odstranil
stolpce.
4.) ZGODOVINA PRIJAV ZAPOSLENEGA
Podatkovna baza je do sedaj za vsakega zaposlenega beležila samo zadnji aktualni datum
prijave in datum odjave. To predstavlja problem v primeru, da se želi imeti sledljivost na
zaposlitve delavca ali izpis zaposlenih delavcev v določenem preteklem časovnem
obdobju. Za beleženje zgodovine prijav in odjav sem ustvaril tabelo s podatkom za
katerega zaposlenega gre, katerega delodajalca se zadeva vnos, za kakšno vrsto vnosa gre
(bodisi prijava, odjava…), datum vnosa in ID projekta, v primeru da se pri vnosu gre za
22
prijavo na projekt. Strukturo tabele in primer zgodovine zaposlenega vidimo na sliki
spodaj (slika 29).
Slika 29: Struktura tabele ZaposlitveDelodajalci in primer podatkov o zgodovini prijav delavca
Vnos v tabelo se zgodi ob dodajanju zaposlenega v bazo, ob vsaki prijavi, odjavi in prijavi
na projekt.
4.5.2 IZDELAVA UPORABNIŠKEGA VMESNIKA
Sedaj, ko sem za evidenco zaposlenih in delovanje programa za več delodajalcev izdelal,
odstranil in priredil vse potrebne komponente v podatkovni bazi , je bilo potrebno vse to še
prenesti v uporabniški vmesnik, oz. poskrbeti za programerski del projekta v oknu
»Zaposleni«. Najprej sem v programu dodal vnosni obrazec, ki omogoča dodajanje novih
kooperantov v tabelo »Kooperanti« na podoben način kot dodajanje kadrov, projektov in
kupcev (slika 30).
Slika 30: Okno za dodajanje kooperantov
Za uporabniku prijazen in odporen proti napakam uporabniški vmesnik, sem pri vnosu
države podal uporabniku izbiro iz spustnega seznama, ki podatke dobi iz podatkovne baze,
specifično tabele »Države«, ki vsebuje vse države in njihove kode. To sem ob inicializaciji
23
okna storil z preprostim vezanjem (angl. binding) elementov spustnega seznama na vir
podatkov iz podatkovne baze (slika 31).
Slika 31: Vezanje vira podatkov na tabelo iz podatkovne baze
Vsako vnosno polje je označeno z svojo značko (angl. »Tag«). Ob posodobitvi (kliku na
gumb »Posodobi/dodaj«, se kliče funkcija (slika 32), ki podatkovni bazi pošlje parametre,
z istim imenom, kot so imena značk vsakega vnosnega polja. Vrednosti parametrov, pa so
vrednosti vnosnih polj z značkami.
Slika 32: Dodajanje kooperanta
Zatem se požene procedura »PosodobiKooperanta«, ki sem jo pred tem ustvaril na
podatkovni bazi (slika 33).
24
Slika 33: Dodajanje kooperanta
Zatem je nastopil največji delež dela, to je, programiranje prikaza podatkov o zaposlenih,
njihova prijava, odjava, prikaz zgodovine in stanj pri delodajalcih in prikaz in tiskanje
ustreznih obrazcev glede na delodajalca. Obstoječemu oknu sem na levi strani popolnoma
odstranil meni za izbiranje zavihkov, saj ni potreben. Nadomestil sem ga z izpisom stanj
delavca pri delodajalcih in aktualnim datumom prijave in odjave.
Zavihkom s podatki sem dodal 3 nove zavihke. Eden za vsakega delodajalca: MTD-bio,
Pazmaks in Kooperanti. Vse zavihke, katerih podatki delavca so odvisni od delodajalca
(opisano v poglavju 4.5.1, glej: slika 25), sem premestil v zavihke treh delodajalcev. V
glavni kontroli zavihkov v oknu naposled ostanejo samo trije zavihki (eden za vsakega
delodajalca) in zavihki z podatki, ki se glede na delodajalca ne spremenijo (slika 34).
25
Slika 34: Nov izgled okna "Zaposleni"
Vsaki strani zavihka delodajalcev sem dodal kontrolo zavihki (angl. TabControl). To
kontrolo sem pri vsakemu delodajalcu napolnil z vsemi, prej, odstranjenimi zavihki. To so
zavihki, ki vsebujejo podatke delavca, ki morajo biti za vsakega delodajalca ločeni
(podatki o zaposlitvi, dokumenti, itd…). z adicijo zavihka »Prijave/Odjave« (slika 35).
Slika 35: Ločeni zavihki za delodajalce in nov zavihek za prijavo in odjavo delavca
Po starem sistemu so kontrole za prijavo in odjavo potekale pod zavihkom »Zaposlitve«,
ker pa sem moral vključiti zraven še zgodovino odjav in prijav, pa sem celotno operacijo in
izpis zgodovine prestavil v nov zavihek (slika 36). Na sliki vidimo gumba za
prijavo/odjavo delavca in izpis zgodovine prijav, ki prej ni bila mogoča.
26
Podatki, ki se glede na delodajalca ne spreminjajo
Trenutna stanja delavca pri
vseh delodajalcihAktualni datumi prijave/odjave
delavca pri trenutnem delodajalcu
Slika 36: Prijava delavca in izpis zgodovine
Ob odprtju okna, se najprej vsem poljem, ki so spustni seznami napolnijo podatki iz
podatkovne baze, po enakem principu kot zgoraj omenjene države pri dodajanju
delodajalca. Zatem se preberejo vsi podatki, stanja in dokumenti zaposlenega. (slika 37).
Slika 37: Branje podatkov in dokumentov
Vsako vnosno polje ima poimenovano svojo značko, ki se pri selekciji tabele iz
podatkovne baze sklada z imenom stolpca (slika 38). Vsebino kontrole z ujemajočim
imenom značke napolni s podatkom iz tabele napolni funkcija »nastaviText(kontrola,
StolpecTabele, vrednostIzTabele)«. Na primer, vnosno polje za tekst, kjer želimo, da se
27
prikazuje priimek zaposlenega, ima ime značke enako, kot pa je ime stolpca, v katerem je
priimek izbranega zaposlenega v podatkovni bazi.
Slika 38: branje in polnjenje osebnih podatkov iz baze
Dokumenti, pogodbe, zgodovina in opombe se iz baze polnijo na bolj preprost način. Za
vsako kategorijo posebej se kliče iz podatkovne baze svoj pogled, iz katerega se naredi
selekcija tako, da pogled vrne ustrezne dokumente za izbranega delavca. (slika 39). Pri
selekciji sem moral paziti, da sem za vsakega delavca prebral enako vrsto dokumentov za
vse tri delodajalce posebej, ter jih prikazoval v relevantnih zavihku.
Slika 39: Polnjenje opomb delavca za vse tri zavihke delodajalcev
Ko se vsi podatki preberejo in naložijo, lahko uporabnik operira z njimi. Podatke lahko
posodablja, briše in dodaja nove dokumente, prijavlja/odjavlja delavca in tiska obrazce na
podlagi podatkov izbranega delavca. Posodabljanje podatkov deluje po enakem principu,
28
ID
ID
kot pri začetnemu dodajanju zaposlenega v program. Pravzaprav se celo uporablja isto
okno. Ob kakršnikoli spremembi podatkov se polje obarva rdeče, in spodaj se pojavi gumb
»Posodobi«. Ob kliku na gumb se naposled posodobijo/dodajo podatki v podatkovno bazo
(glej slika 38). Urejanje dokumentov deluje malce drugače. Dokumenti se s selekcijo
pridobijo iz podatkovne baze in se nato napolnijo v pripravljeno podatkovno mrežo (angl.
»DataGrid«), ki ima dodane gumbe za spreminjanje ali brisanje dokumenta iz mreže in
posledično tudi iz podatkovne baze (slika 40).
Slika 40: Primer dokumentov zaposlenega
Dokumente se lahko v podatkovno bazo doda z določitvijo podatkov o dokumentu in
nalaganju dokumenta s »*.pdf« končnico iz računalnika z klikom na gumb z ikono »PDF
Adobe«. Ko je dokument pripravljen, se lahko doda v podatkovno bazo s pritiskom na
gumb »+ Dodaj«. Kliče se funkcija, ki podatkovni bazi doda parametre, ki predstavljajo
vse podatke o dokumentu, vključno z vsebino dokumenta (datoteko), in nato požene
proceduro, in ustvari nov vnos v dokumentih. Pri tem delu sem tabeli »Dokumenti« dodal
stolpec ključa delodajalca, ter spremenil proceduro da sprejme še dodaten parameter
29
Osebni
dokumenti
Nalaganje
dokumenta
Dodajanje
v bazo
»IDDelodajalci« (slika 41). Podobno sem priredil tudi proceduro za posodobitev željenega
dokumenta.
Slika 41: Sprememba procedure, ki doda dokument za delovanje z več delodajalci
Zatem je sledil zelo pomemben del, to je programiranje prijave delavca k delodajalcu in
beleženje zgodovine. Tukaj ne sme priti do napak. Ne sme se zgoditi, da bi bil delavec ob
istem času prijavljen pri dveh delodajalcih naenkrat. Ob izbiri, na novo dodanega, zavihka
»Prijave/Odjave«, se prikaže stran s kontrolami za prijavo in odjavo, ter podatkovna
mreža, ki prikazuje zgodovino prijav delavca pri trenutno izbranem delodajalcu (slika 42).
Slika 42:Zavihek za prijavo/odjavo ter prikaz zgodovine
Najprej se napolni spisek zgodovine zaposlenega, za vsakega delodajalca, iz podatkovne
baze (slika 43).
30
Dodan
parameter
Slika 43: Branje zgodovine iz baze
Procedura glede na parameter, ki določa zaposlenega in parameter, ki določa delodajalca.
Iz baze vrne spisek prijav in odjav zaposlenega, razporejen po datumih padajoče (slika 43).
Slika 44: Procedura "PreberiZgodovino"
Vnos v zgodovino se zgodi ob vsaki:
- Prijavi,
- Odjavi,
- Avtomatski odjavi,
- Adiciji delavca na projekt in
- Vrnitvi v nabor.
1.) PRIJAVA: Uporabnik lahko delavca ob kliku na gumb »Prijavi z dnem« prijavi z
dnem, določenim v vnosnem polju z datumom. Ob tem se zaposlenemu pobriše
datum odjave, posodobi se mu datum prijave na določen datum, stanje za izbranega
delodajalca se mu nastavi na »2«, kar pomeni, da je prijavljen, v zgodovino pa se
doda vnos prijave. Zatem se gumb »Prijavi z dnem« pri tem delodajalcu osenči,
gumb »Odjavi z dnem« pa se omogoči za pritisk. Pri ostalih dveh delodajalcih se
gumba nastavita ravno obratno, saj je sedaj mogoča prijava samo na druge
delodajalce, odjava pa na delodajalca, na katerem je prijavljen.
31
Zgodovina katerega delavca?
Pri katerem delodajalcu?
Če je delavec ob prijavi na delodajalca že prijavljen pri drugem, se izpiše
opozorilo. Ob potrditvi program, pred prijavo, delavca avtomatsko odjavi, kjer je
bil prej prijavljen, prav tako pa vnese z zgodovino vnos, da je bil delavec s tem
dnem pri tistem delodajalcu odjavljen. Stanje pri omenjenem delodajalcu pa se mu
nastavi na »1«, kar pomeni, da je odjavljen.
2.) ODJAVA: Uporabnik lahko delavca ob kliku na gumb »Odjavi z dnem« odjavi z
dnem, določenim v vnosnem polju z datumom. Ob tem se zaposlenemu zabeleži
datum odjave, stanje za izbranega delodajalca se mu nastavi na »1«, kar pomeni, da
je odjavljen, v zgodovino pa se doda vnos prijave. Zatem se gumbi »Odjavi z
dnem« pri vseh delodajalcih osenčijo, gumbi »Prijavi z dnem« pa se omogočijo.
3.) DODAJANJE V NABOR: Ko se uporabnik prvič doda v bazo preko programa,
dobi stanje pri vseh delodajalcih »0«, kar pomeni, da je delavec v naboru. Ob tem
se mu za vsakega delodajalca doda vnos v zgodovino.
Prikaz stanj in zgodovine se ob vsaki, zgoraj opisani akciji, osveži. Podatki se ponovno
preberejo. Logiko za prijavo/odjavo delavca pri delodajalcu MTD-bio lahko vidimo na
sliki spodaj (slika 45), pri čemer so spremenljivke:
- prijavljen : tipa bool. Zastavica, ki pove, ali zaposlen je prijavljen, ali ne.
- prijavljen_pri : tipa int. Število, ki pove, pri katerem (1- MTD-bio, 2- Pazmaks, 3-
Kooperanti) delodajalcu je delavec prijavljen.
- sql : tipa razreda SQL. Spremenljivka predstavlja vmesnik za uporabo povezave z
podatkovno bazo
- id : tipa int. To je id zaposlenega.
32
Slika 45: Logika prijave/odjave
Prototipi dveh funkcij uporabljenih v izseku kode (glej slika 45), sta prikazana na sliki
spodaj (slika 46).
Slika 46: Prototip funkcije "odjava" in "dodajZgodovino"
Funkcija »odjava« bazi poda še potrebne parametre bazi, nakar se požene procedura
»OdjaviZaposlenega« (priloga 3), ki zaposlenega, odjavi (t.j. posodobi podatke). Funkcija
»dodajZgodovino« prav tako bazi poda parametre, nakar požene na bazi proceduro
»DodajZgodovino« (priloga 4), ki v tabelo »ZgodovinaZaposleni« doda vnos o dejanju.
V oknu »Zaposleni« mi je pri uporabniškem vmesniku preostalo samo še to, da v vsakem
zavihku dodam gumbe za tiskanje obrazcev, ki so potrebni pri delodajalcu. Pri podjetju
33
Pazmaks so namreč nekateri obrazci drugačni, v drugem jeziku, nekaterih obrazcev se ne
potrebuje, nekateri obrazci so pa v uporabi samo pri tem podjetju (slika 47, 48, 49).
Slika 47: Obrazci za MTD-bio
Slika 48: Obrazci za Pazmaks
34
Slika 49: Obrazci za kooperante
Nazadnje sem moral še opraviti izpis seznama prijavljenih zaposlenih v določenem
obdobju. V začetnem oknu je pod spustni gumb možnost izpisa seznama zaposlenih, ki so
bili prijavljeni v določenem časovnem intervalu. To je pomembna funkcija, saj se seznam
uporablja za izračun plač konec meseca. Do sedaj je izpis deloval tako, da je lahko izpisal
seznam samo na podlagi aktualnega datuma prijave in odjave, saj beleženja prijav za nazaj
ni bilo. Sedaj pa je to mogoče, saj sem delovanje aplikacije in podatkovne baze nadgradil,
da deluje na podlagi zgodovine prijav delavcev. Naredil sem tri izbirne opcije, za vsakega
delodajalca, in vsaki dodal datuma začetka in konca intervala (slika 50).
Slika 50:izpis zaposlenih v časovnem intervalu
Program potem izpiše vse zaposlene, ki so v obsegu tega intervala bili prijavljeni. Glede na
datume prijav delavca v zgodovini, bo le-ta vključen na seznam v štirih situacijah:
- Datum prijave je nekje v intervalu
- Datum odjave je nekje v intervalu
- Datum prijave je pred intervalom, medtem ko je pripadajoči datum odjave za
intervalom
- Datum prijave je pred intervalom in nima pripadajočega datuma odjave (delavec je
še vedno prijavljen)
35
Zgoraj omenjene primere vključimo v algoritem, ki vključi na seznam vse delavce, ki so ne
neki točki znotraj intervala bili prijavljeni, ne glede na trajanje prijave.
Najprej sem za vsakega delodajalca kreiral pogled v bazi s podatki, ki jih podjetje pri
izpisu seznama za zaposlenega potrebuje. To vključuje nekaj osebnih podatkov in podatke
o zaposlitvi na delodajalcu, za katerega je pogled ustvarjen. Pogled za prikaz podatkov s
strani delodajalca Pazmaks je prikazan na sliki spodaj (slika 51).
Slika 51: Pogled za prikaz podatkov delavca z strani delodajalca Pazmaks
V programu sem s pomočjo teh pogledov sestavil poizvedbo (query), ki vrača podatke na
zgornji sliki samo za tiste zaposlene, ki ustrezajo enemu izmed štirih pogojev (opisano
zgoraj).
Poizvedbo selekcije (spremenljivka »query«) v programu sestavljam iz dveh ključnih
delov:
- Prvi del, ki pove kateri pogled bomo uporabili za izpis podatkov (odvisno od
delodajalca)
36
Slika 52: Prvi del poizvedbe (query)
- Drugi del, ki predstavlja pogoj, oz. vse ID šifre zaposlenih, katerih pripadajoče
vrstice v pogledu se naj izpišejo. Za pridobitev šifer zaposlenih sem napisal
algoritem (priloga 5), ki listo napolni s šiframi zaposlenih, ki so delali v časovnem
intervalu. Ko sem pridobil vse šifre, sem SQL pogoj (»WHERE«) zlepil z vsemi
šiframi liste. Ta pogoj sem dodal prvemu delu poizvedbe (spremenljivka »query«)
(slika 53).
Slika 53: Lepljenje vseh šifer zaposlenih v pogoj in adicija k poizvedbi
- Zatem sem samo še dobljeno poizvedbo sprožil na podatkovni bazi, in dobljeno
tabelo vpisal v Excel dokument, katerega sem ustvaril in v njega polnil podatke s
pomočjo za to vključene knjižnice za delo z »Microsoft Office« programi (slika
54).
Slika 54: Polnjenje excel datoteke z pridobljenimi podatki
- Rezultat, oz. primer izpisa v Excel datoteki vidimo na sliki spodaj (slika 55).
37
Adicija
pogoja k
Slika 55: Končni izpis zaposlenih, ki so delali med določenim časovnim intervalom
5 SKLEPOsebno se počutim po praktičnem izobraževanju odlično, saj mislim, da sem na njem
izkusil prav to, če ne več, čemur je namenjeno. Pridobil sem mnoge, meni, še kako zelo
potrebne in nujne izkušnje na področju računalništva. Dobil sem priložnost osvežiti znanja,
ki sem jih pridobil na fakulteti in jih v praksi aplicirati, vendar tudi na načine, ki so mi bili
popolnoma tuji. Pridobil sem nova znanja po-uporabe, nadgrajevanja tuje programske
kode, uporabe zunanjih knjižnic in metod za delo z različnimi zunanjimi programi (bralniki
pdf, orodja »Office«, podatkovna baza sql…). Nazadnje pa sem imel možnost tudi izkusiti
delo in sodelovanje v skupini, bodisi posvetovanje z sodelavcem, ki se bolj spozna na
delovanje podjetja, ali pa določitve specifikacij nalog z nadrejenimi in uporabniki
programa na firmi.
38
6 PRILOGE
39
Priloga 1:Obrazec z samodejno izpolnjenimi podatki
Priloga 2: Skripta za kreacijo tabele "Delodajalci"
40
Priloga 3: procedura "OdjaviZaposlenega"
Priloga 4: procedura "DodajZgodovino"
41
Priloga 5: algoritem, ki listo napolni z šiframi zaposlenih, ki so delali v časovnem intervalu
42