POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

Similar documents
» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije

DB2 podatkovna baza v praksi

Sistemske zahteve za SAOP

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js)

Prirejanje in preverjanje tipov

Hitra rast hranjenih podatkov

sodobne poslovnoinformacijske rešitve Birokrat Kratka navodila za namestitev demo verzije programa Birokrat

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine

Q: Do You made a backup before upgrade? A: Only cowards make backups!

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA

Navodila za interaktivne naloge Bober

Transakcije v MariaDB/MySQL (transakcija A)

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov

Navodila za uporabo izdelkov programske opreme Microsoft

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK

Prometno načrtovanje xdsl

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool

Navodila za nastavitev varne povezave po protokolu SSH

RAZVOJ GENERATORJA POSLOVNIH SPLETNIH APLIKACIJ

SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

Strukturirani poizvedovalni jezik SQL

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x

Navodila za namestitev CREO 3.0 in Audax nastavitev

VISOKOŠOLSKI STROKOVNI ŠTUDIJ. Računalništvo in informacijske tehnologije POROČILO PRAKTIČNEGA IZOBRAŽEVANJA. HAKL IT, d.o.o.

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

PODATKOVNE BAZE NOSQL

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov

Aplikacija za podporo delovanja svetovalcev

TEHNIČNA DOKUMENTACIJA -URESK APRIL 2013

VISOKOŠOLSKI STROKOVNI ŠTUDIJ. Informatika in tehnologije komuniciranja. Sistemska podpora informatiki in tehnologijam komuniciranja

E R S Š G L J U B L J A N A Š O L S K O L E T O

Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode

VISOKOŠOLSKI STROKOVNI ŠTUDIJ RAČUNALNIŠTVO IN TEHNOLOGIJE KOMUNICIRANJA

DOKUMENTACIJA ZA POTRDITEV NAROČILA EANCOM ORDRSP D96A (EAN005) Version: 1.0 Draft

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA v Amis d.o.o., Maribor

Razširljiv nadzor velikih oblačnih sistemov

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi

Podatkovni model za celostno vodenje proizvodnje

BLUETOOTH KOMUNIKATOR ZA WINDOWS MOBILE 6.5

ZBIRNI IZKAZI IZRAČUNA EBITDA ZA HOTELE SKUPINE UNION HOTELI

Element Summary: Ref Tag Element Name Status Type Min/Max Usage UNB010 S001 SYNTAX IDENTIFIER

Reševanje časovno zahtevnih opravil z orodjem ORACLE

Razvoj spletne trgovine z vključitvijo naprednih storitev

Obravnava izjem (exception handling)

Spletna aplikacija za urejanje vadbenih programov v fitnesu

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF)

Andrej Jamšek. Namestitev programske opreme s poudarkom na tehnologiji MSI

Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server

Informacijski sistemi 2. faza Sistemska analiza. Franci Tajnik univ.dipl.ing.fizike, CISA, CISM

Osnovna navodila za uporabo programskega paketa V3.1 STEP 7 MicroWIN 32

ORGANIZIRANJE PRENOSA PODATKOV O EVIDENTIRANJU DELOVNEGA ASA ZA SISTEM KRMAR

SUBJECT CATEGORY-BASED ANALYSIS OF DESCRIPTORS OF SLOVENIAN PLANT SCIENCE DOCUMENTS IN THE AGRIS DATABASE IN THE PERIOD

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

SPLETNA REŠITEV ZA POTREBE DRUŠTVA UPOKOJENCEV

Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev

Razvoj aplikacij na platformi Google App Engine

OPTIMIRANJE IZPISOV V PROGRAMU CLICKTRANS

New Media & Language Technologies Jozef Stefan International Postgraduate School January Speech apps. Jerneja Žganec Gros

Spletni urejevalnik JSON datotek s podano vsebinsko shemo

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

Vmesnik za vodenje sistema Lego Mindstorms v razvojnem okolju Siemens Step7

Razvoj aplikacije Baliranje trave za mobilno platformo Android

Enterprise modelling with UML

Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto. Maturitetna seminarska naloga

Spletno luščenje podatkov z uporabo Pythona in knjižnice BeautifulSoup

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike

Učinkovita rešitev za izdelavo zaščitnih kopij z deduplikacijo in replikacijo

Časovno omejevanje dostopa do interneta

Univerza v Mariboru Fakulteta za organizacijske vede. Programska rešitev za grafično prikazovanje najema in rezervacij vozil

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja

Kosovnica. Marko Obid. Kosovnica. Marko Obid

Uvod v svetovni splet

Nataša Knez. Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze

Razvoj poslovne spletne skupnosti z orodjem Drupal

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku

Testiranje spletne aplikacije z orodji Selenium in Windmill

RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH

Predstavitev teksta v računalniku

SPLETNA APLIKACIJA ZA SPREMLJANJE PODATKOV O FILMIH

Pavle Gartner. Primerjava različnih rešitev za izvedbo spletne trgovine

Razširitve CMS z lastnimi moduli

Podatkovno procesiranje v relacijskih sistemih

Specification and Implementation of a Light-Weight Internet Content Delivery Platform

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku

Metodologija migracije iz Exchange v Office 365

Izdelava sistema za upravljanje sredstev

Sistem za dinamično upravljanje izgleda klienta IPTV

Aplikacija za prikaz prostorskih podatkov

Arhitektura oblaka Upravljanje v oblaku Delovanje v oblaku Arhitekturni okvir računalništva v oblaku

Transcription:

VISOKOŠOLSKI ŠTUDIJSKI PROGRAM Računalništvo in informatika smer informatika POROČILO PRAKTIČNEGA IZOBRAŽEVANJA V Jamada d.o.o. Maribor Čas opravljanja od 09.10.2008 do 09.04.2009 Mentor v GD: Študent: E-pošta: Marko Požarnik jan.zorec@uni-mb.si Telefon 040 670 908

2

3

Kazalo 1 Opis gospodarske družbe in njenih produktov... 6 1.1 Opis podjetja Jamada d.o.o.... 6 1.2 Opis podjetja Datalab tehnologije d.d.... 7 1.3 Poslovni informacijski sistem Pantheon... 8 2 Opis praktičnega izobraževanja... 11 2.1 Microsoft SQL server 2000 in 2005... 11 2.2 T-SQL(Transact SQL)... 12 2.3 Ares... 13 3 Opis praktičnega izobraževanja... 17 3.1 Migracija Pantheon-a 5.5... 17 3.2 Razširitev postopka opomniki... 21 3.2.1 Pregled delovanja obstoječega postopka... 21 3.2.2 Zbiranje in analiza zahtev... 22 3.2.3. Implemntacija... 26 3.2.4 Testiranje in predaja postopka v uporabo... 28 4 Sklep... 29 5 Priloge... 30 5.1 Priloga A del programske kode postopka opomniki... 30 5.2 Priloga B primeri prožilcev za postopek opomniki... 33 4

UVOD Ta dokument vsebuje potek prakse v podjetju Jamada d.o.o. Podjetje se ukvarja z razvojem, implementacijo in prodajo poslovnega informacijskega sistema Pantheon. Moje delo v podjetju je bilo zelo zanimivo in dinamično. Večino časa sem delal migracije Pantheon-a iz verzije 5.0 na 5.5, saj je Datalab 31.3.2009 prenehal z razvojem in podporo za Pantheon 5.0. Zraven tega pa sem delal še na telefonski podpori, programiral razne aplikacije, oblikoval izpise in svetoval strankam. Zaradi raznolikosti dela sem pridobil zelo veliko izkušenj v zvezi s delom s strankami (zbiranje in analiza zahtev), razvojem programskih produktov in delovanjem, ter zaščito poslovnih informacijskih sistemov. Veliko izkušenj sem pridobil tudi s področja oddaljene pomoči (povezovanje preko VNC, VPN, ISL Light, RDC,..), saj je dosti dela potekalo na računalnikih/strežnikih od strank. 5

1 Opis gospodarske družbe in njenih produktov 1.1 Opis podjetja Jamada d.o.o. Jamada d.o.o. je podjetje, ki se ukvarja predvsem s trženjem, razvojem, vzdrževanjem in implementacijo poslovnega informacijskega sistema Pantheon. Ustanovljeno je bilo 30.06.2000 iz Datalab-ove poslovne enote Maribor. Sedež podjetja je v Mariboru. Leta 2005 sta bili ustanovljeni še dve sesterski podjetji v Srbiji, ter Bosni in Hercegovini. 12.10.2007 je podjetje kupilo 51% delež konkurečnega podjetja E-Pos rešitve d.o.o. in tako pridobilo še poslovne enote v Ljubljani in Kopru. 1.1.2008 pa je podjetje odprlo še poslovno enoto v Novem mestu. Slika 1: Logotip podjetja Jamada d.o.o. Poslovna enota v Mariboru trenutno redno zaposljuje 15 ljudi in tri študente. V ostalih poslovnih enotah in sestrskih podjetjih pa je redno zaposlenih še 12 ljudi. Slika 2: Struktura zaposlenih v podjetju Jamada d.o.o. in njeni podružnicah Filozofija podjetja je nudenje kakovostnih, individualno prilagojenih, inovativnih in zakonodajno ustreznih poslovno-informacijskih rešitvitev, pri čemer celetoten kolektiv strmi k učikovitemu in uspešnemu delovanju. 6

1.2 Opis podjetja Datalab tehnologije d.d. Datalab d.d. je vodilno slovensko podjetje, ki se ukvarja razvojem poslovnih informacijskih rešitev in nudi poslovne rešitve malim, ter srednje velikim podjetjem. Datalab d.o.o. je bil ustanovljen 3.9.1997 z namenom razvoja poslovnih informacijskih rešitev. Ustanovitelja sta bila Andrej Mertelj in Tomaž Teyrovsky. Leta 2000 so naredili partnerski program, ki je omogočil delitev dela med Datalab-om(razvoj in koordinacija) in partnerji(prodaja, vzdrževanje in implementacija). Podporne enote Datalab-a v Ljubljani, Mariboru in Kopru pa so pretvorili v samostojna podjetja, ki so bila lasti takratnih zaposlenih. 5.5.2003 je bilo ustanovljeno podjetje Datalab d.d., v kateri ima delež večina zaposlenih, ki je s 1.12.2003 prevzelo poslovanje Datalab d.o.o. Sedež podjetja je v Ljubljani, ima pa tudi hčerinska podjetja v Hrvaški, Bosni in Hercegovini, Srbiji, Črni Gori, Makedoniji, Bolgariji in Romuniji. Strategija podjetja: Datalab je usmerjen v razvoj poslovnih rešitev, ki so odprte, prilagodljive in zmogljive. Slika 3: Spletna stran podjetja Datalab d.d. 7

1.3 Poslovni informacijski sistem Pantheon Pantheon je poslovni informacijski sistem in spada med ERP (Enterprise resource planning) za majhna in srednje velika podjetja. Slika 4: Logotip programskega produkta Pantheon 5.5 Slika 5: Delovanje Pantheon-a znotraj podjetja Pantheon je razdeljen glede na svoje funcionalnosti na posamezne izpeljanke(slika 6): Pantheon RT(Retail) je namenjen blagajniškemu mestu (POS), Pantheon RE(Retail management) je namenjen vodenju maloprodaje in nadzor več blagajn RT, Pantheon LT(Light) je namenjen mikro trgovskim in storitvenim podjetjem (s.p. in d.o.o.). Vsebuje vse, kar potrebuje manjše podjetje za uspešno in ekonomično poslovanje, 8

Pantheon SE (Small Enterprise) je namenjen manjšim in srednje velikim podjetjem, ki želijo programsko podpreti svoje poslovne procese. Podprti poslovni procesi: blagovno poslovanje, računovodstvo in finance, kadri, plače ali enostavno proizvodnjo, Pantheon GE (Government) je namenjen organizacijam in podjetjem iz javnega sektorja. Po osnovnih funkcionalnostih je enak Pantheon SE s razliko v kadrovskem delu in posebnih evidencah, Pantheon ME (Medium Enterprise) je namenjen podjetjem, ki imajo zahtevo po zelo zmogljivem poslovnem informacijskem sistemu. Podprti procesi: kot pri Pantheon-u SE z dodatnimi funkcionalnostmi za mednarodno poslovanje, ter poslovno analitiko za vodilne kadre, Pantheon MF (ManuFacturing) je poslovni informacijski sistem za večja proizvodna podjetja. Podpirti procesi: kot pri Pantheon ME z dodatnimi funkcionalnostmi, s katerimi podjetja učinkovito planirajo, vodijo in analizirajo svojo proizvodnjo. Slika 6: Izpeljanke Pantheon-a 9

Deluje pod operacijskima sistemoma Windows(Vista, XP, 2000, 98, ME, 95) in Linux, ter na podatkovnih strežnikih Oracle in Microsoft SQL(Microsoft DataBase Engine 2000, Microsoft SQL server 2000, Microsoft SQL server 2005). Pantheon deluje na principu odjemalec/strežnik(slika 7). Slika 7: Arhiterktura Pantheon-a Pantheon-ova podatkovna struktura je javno dostopna, zato številni neodvisni razvijalci ponujajo rešitve, ki ga uporabljajo kot temelj. Rešitve segajo od dodatnih modulov, namenjenim določenim področjem dela v podjetju (npr. črtna koda, spremljanje delovnega časa, optimizacija proizvodnje, arhivski in sporočilni sistemi, projektno vodenje, ) do specializiranih rešitev za posamezne gospodarske panoge (npr. računovodje, optiki, prevozniki,..). 10

2 Opis praktičnega izobraževanja 2.1 Microsoft SQL server 2000 in 2005 MS SQL server je sistem za upravljanje relacijske podatkovne baze, ki ga je izdelal Microsoft leta 1989. Primarna poizvedovalna jezika sta ANSI SQL in T-SQL. Namenjen je predvsem manjšim in srednje velikim bazam. Microsoft SQL server 2005 je izšel oktobra 2005. Njegova glavna novost je podpora XML podatkom v povezavi s relacijskimi podatkovnimi bazami. Vsebuje pa tudi nekatere nove storitve kot so naprimer: reporting sevices, OLAP services, integration services, podpora za podatkovno rudarjenje,... V času opravljanja prakse sem večino delal z verzijo SQL server 2005 in uporabljal predvsem T-SQL poizvedovalni jezik.v času opravljanja prakse sem imel veliko dela tudi s instalacijo in nastavitvijo SQL 2005 serverja, saj je Microsoft 30.6.2009 ukinil podpora za SQL server 2000. Slika 8: Arhitektura SQL server 2005 11

2.2 T-SQL(Transact SQL) T-SQL je poizvedovalni jezik za Microsoft SQL podatkovne baze in je nadgradnja SQL poizvedovalnega jezika. T-SQL omogoča sestavljanje kompleksnejših poizvedb. Glavna prednost T-SQL-a je, da omogoča dejansko programiranje v samem SQL-u. Nekater glavne novosti, ki jih uvaja T-SQL so: Control-of-flow: sem spadajo ključne beside: IF in ELSE (omogočata pogojno izvajanje), BEGIN in END (označujeta začetek in konec bloka), WAITFOR(počaka z izvjanjem ukaza za določen podan čas ali določen čas dneva), RETURN(vrne vrednost spremenljivke iz procedure ali funkcije), ter WHILE, BREAK in CONTINUE (omogočajo izvajanje zank). lokalne spremenljivke: se imenujejo tako, ker so lokalne skripti v kateri se izvajajo. Deklariranje spremenljivk: DECLARE @imespremenljivke tipspremenljivke. Prirejanje vrednosti spremenljivkam: SET @imespremenljivke = vrednost. izboljšana UPDATE in DELETE ukaza, katerima so omogočene združitve (JOIN). dodatne pomožne funkcije: getdate(), raiseerror(), substring(), Primer Flow control in lokalnih spremenljivk (zanka od 1 do 10 izpiše ali je števec večji ali manjši od 5): DECLARE @i integer SET @i = 1 WHILE i <= 10 BEGIN IF (i < 5) BEGIN PRINT Stevec je manjsi od 5. END ELSE BEGIN PRINT Stevec je večji ali enak 5. END SET @i = @i +1 END 12

2.3 Ares Večino programiranja v času prakse sem opravljal v razvojnem okolju ARES, ki je nov modul znotraj programskega paketa Pantheon 5.5. Osnovi namen ARES-a je, da omogoča nadgrajevanje in prilagajanje Pantheon-a specifičnim potrebam in zahtevam strank. Ares je zelo zmogljivo orodje, s pomočjo katerega je mogoče dostopati do posameznih delov Pantheon-a, jih uporabiti v svojih funkcijah ali dopolnjevati, izvajati SQL poizvedbe, uvažati ali izvažati podatke,... Slika 9: Razvojno okolje ARES Razvojno okolje ARES sestavljajo: urejevalnik kode, za urejanje programske kode ARES modulov urejevalnik obrazcev (Form Designer), za grafično urejanje obrazcev ARES modulov paleto komponent za vizualno delo z obrazci (Component Palette) 13

urejevalnik lastnosti objektov (Object Inspector) drevesni prikaz strukture obrazca (Form Tree) in drevesni prikaz strukture modulov (Project Tree) Osnovni del Aresa predstavlja razvojno okolje (IDE), v katerem se sestavlja programska koda, urejajo obrazci (forme) in uporabljajo drugi moduli, jedro samega izvajanja pa predstavlja prevajalnik pascalske kode. Zaradi specifičnih potreb in poenostavljenega dela s podatkovno bazo je možno poleg pascalske kode uporabiti tudi drugačne tipe modulov, ki so namenjeni konkretnim nalogam. S pomočjo teh modulov je zagotovljena poenostavljeno kompatibilnost s starimi SQLi(razvojno okolje v Pantheonu 5.0) procedurami. Tipi modulov so: SQL modul namenjen delu z bazo (izvajanje SQL kode) print modul za delo z izpisi Preview/Edit modul za delo s prikazom/urejanjem podatkov Import/Export modul za poenostavljano uvažanje / izvažanje podatkov VBA script modul za delo z Basic in JavaScript jezikom Ares zraven standardnih Pascalskih gradnikov in funkcij vsebuje tudi lastne, ki so jih razvili na Datalab-u, za lažji razvoj lastnih Pantheon-ovih postopkov: funkcije in procedure: dlfinddocument prikaz dokumenta z določenim ključem, dlfindownerform pridobivanje gradnikov z nadrejene forme, gradniki: dllookupcombobox spustni meni, dldataset podatkovni nabor, dltdlcxnumberedit vnosno polje za števila, Ares.Variables: spremenljvke v Ares-u, katerih glavna prednost v primerjavi s Pascalskimi je, da jim ni potrebno določiti tipa (integer, string, datetime,..), ampak se tip določiti samodejno glede na tip vrednosti, ki se priredi dani spremenljivki. Tako se je lahko ena spremenljivka naprej uporabila za shranjevanje znakovnih vrednosti nato za shranjevanje številskih vrednosti. 14

2.4 Fast report Fast report je program, ki je vgrajen v Pantheon 5.5. in je namenjen oblikovanju izpisov. Razdeljen je na tri dele:»code«: namenjen je urejanju Pascalske, C++, Basic ali JScript programske kode,»data«: namenjen je izdelavi, urejanju SQL poizvedb, ki se kasneje uporabljajo na izpisih, za pridobivanje podatkov iz podatkovne baze,»report designer«: namenjen je grafičnemu urejanju izpisov. Slika 10: Program Fast report Nekateri gradniki izpisov, ki sem jih v času najpogosteje uporabljal: Header/footer band: polji, katerih vsebina se prikaže v glavi/nogi strani 15

Master dataa band: katere vsebina se izpiše le enkrat, najpogosteje se uporablja kot naslovna vrstica podatkovnih vrstic Detail data band: vsebina se izpiše za vsak zapis iz določenega podatkovnega nabora enkrat Text object: se uporablja za izpis statičnega teksta, vrednosti iz podatkovnega nabora System object: se uporablja za izpis sistemskih vrednosti, kot so datum,čas, številka strani, številka vrstice, 16

3 Opis praktičnega izobraževanja 3.1 Migracija Pantheon-a 5.5 Ker je s 31.3.2009 Datalab prenehal z vgrajevanjem zakonskih sprememb, novosti in popravkov v Pantheon 5.0, je bilo večina mojega dela na praksi povezanega z migracijami Pantheon-a iz verzije 5.0 na verzijo 5.5. Tako so uporabnik, ki še niso prešli na Pantheon 5.5 imeli dve možnoti: migracijo izvedejo sami ali pa smo jim migracijo izvedli programerji na Jamadi Migracija je postopek nadgradnje, ki se od postopka običajne nadgradnje razlikuje v tem, da spremeni strukturo podatkovne baze, prevede oblike izpisov v drugačni zapis in uredi referenčno integriteto. Migracija ne migrira v celoti SQL-I postopkov, zato je potrebno te ročno prepisati na ARES. Migracija se ne izvaja direktno v programu Pantheon 5.0, ampak je za to potreben samostojni program dlmigration55. Slika 11: Prijava v program dlmigration 17

Slika 12: Prikaz nastavitev programa dlmigration Pred izvajanjem migracije se je obvezno morala izdelati kopija vseh podatkovnih baz z ukazom: Backup database jamadabaza to disk='c:\temp\jamada130309.bak' Baze, ki se ne uporabljajo več, so se morale izbrisati, kar se je naredilo s ukazom: Drop database jamadaold 18

Pred migracijo se je morala nadgraditi baza Pantheona 5.0 na zadnjo razpložljivo verzijo (build). Po končani migraciji baze je bilo potrebno namestiti zagonsko datoteko za Pantheon 5.5. Nato je bilo potrebno narediti migracijo izpisov, kar je v bistvu pomenilo popravljanje oblike in Visual Basic programske kode izpisov. Večina tega dela je zajemalo popravljanje velikosti polj, saj se je nekaterim atributom povečalo število znakov in so zato bili prikazani na izpisu napačno. Na izpisih je bilo potrebno popraviti SQLexpression ukaze, ki so služili za izpis podatkov, ki niso bili na originalnih podatkovnih naborih izpisov. Primer SQLexpression-a na izpisu 5.0: SQLexp(select datum from narocpoz where kljuc= +qreportizpis. kljuc + )] Primer popravljenega SQLexpression-a na izpisu 5.5: [SQLexp( select addate from the_orderitem where ackey = +VarToStr(<qreportizpis. ackey >)+ )] V kolikor je stranka imela tudi lastne SQLi postopke potem je bilo potrebno migrirati tudi te postopke. Migracija postopkov je vsebovala: popravljanje obrazcev(popravljanje oblike, zamenjava napačnih gradnikov), popravljanje programske kode(zamenjava SQL kode z Pascal-sko kodo), ter prilagajanje delovanja postopka Pantheonu 5.5. Pomembno pri tem delu je bilo poznavanje dela vsakega od postopkov, ki se je migriral, da se je lahko prilagodil delovanju Pantheon-a 5.5. Tako sem s migracijami postopkov spoznal številne različne rešitve, ki so omogočale strankam delo s Pantheon-om in tudi optimizirale delo, ki ga opravljajo. Pred uporabo Pantheon-a 5.5 je bilo potrebno skupaj s stranko določiti nekatere nastavitve, ki jih ni bilo v Pantheon-u 5.0, so pa v Pantheon-u 5.5 in so potrebne za normalno delovanje Pantheona 5.5. Datalab je to delo olajšal s Post migration wizard-om. Ta je bil razdeljen na dele: podatki o podetju: tukaj je bilo po potrebi spremeniti oz. popraviti podatke o matičnem podjetju nastavitev administratorjev: tu je bilo potrebno nastaviti kateri uporabniki bodo administratorji in/ali računovodje. Ti vlogi v Pantheon-u 5.0 nista bili ločeni, 19

pregled referenčne integritete: tu so se izpisali zapisi iz tabel Pantheon-a, ki niso ustrezali pogojem popolnosti referenčne integritete. Te podatke je bilo potrebno ročno popraviti ali izbrisati s SQL ukazi, nov format tečajne liste: Pantheon 5.0 je imel za vsako banko le en (enotni) tečaj. V verziji 5.5 sta enotnemu - srednjemu tečaju dodana še nakupni in prodajni tečaj. Tako je bilo potrebno za vsako banko, ki jo je imel uporabnik v bazi izbrati tečaje, ki se bodo uporabljali uporabniki in kontaktne osebe: uporabniki so bili v podatkovni bazi shranjeni kot subjekt(ime in priimek skupaj). V verziji 5.5. pa so zaradi boljšega pregleda uporabnikov dodali še atributa za ime in priimek, kamor je bilo potrebno vnesti podatke. Slika 13: Post migration wizard - uporabniki in kontaktne osebe 20

3.2 Razširitev postopka opomniki 3.2.1 Pregled delovanja obstoječega postopka V času opravljanje prakse je bil največji projekt, ki sem ga izdelal razširitev Pantheon-ovega modula opomniki, za potrebe nekega mariborskega proizvodnega podjetja. Pantheon-ovi opomniki so v osnovi omogočali samo ročno kreiranje, kar pomeni, da je uporanik sam moral kreirati opomnik na sledeč način: izbrati je potrebno katerim uporabnikom se bo opomnik prikazal, vnesti naslov opomnika, izbrati in nastaviti način prikazovanja opomnika: ob zagonu (opomnik se prikaže uporabnikom ob naslednjem zagonu), periodično (nastaviti je potrebno začetek prikazovanja, enoto in čas periode. Opomnik se nato prikazuje od izbranega začetka za izbrano periodo do preklica opomnika), določen čas in datum(opomnik se prikaže enkrat na čas in datum, ki ga izbere uporabnik) ali vsakega v mesecu (opomnik se prikaže na dan, ki ga izbere uporabnik vsak mesec), in vnesti tekst opavila. Slika 14: Keiranje opomnikov v Pantheonu 21

Opomnik se je nato prikazal izbranim uporabnikom ob izbranem času. Opomnik se prikaže v obliki prikaznega okna v desnem zgonjem kotu glavnega okna Pantheon-a. Če uporabnik klikne na prikazno okno opomnika se odpre novo okno s podrobnosti opomnika. Tu ima uporabnik možnost odgovoiti avtorju opomnika ali pa opomnik preusmeriti na druge uporabnike. Slika 15: Prikaz opomnika 3.2.2 Zbiranje in analiza zahtev Stranka je želela, da bi se opomniki kreirali avtomatsko, kar pomeni da bi se tekst opomnika generiral avtomatsko, za določene izbrane dogodke v Pantheon-u. Do zahteve za izdelavo postopka je prišlo, zaradi občasnih neskladnosti med naročili. plani, delovnimi nalogi in fakturami pri stranki. V osnovi je bil njihov glavni problem, da so bili proizvodnja, računovodstvo in marketing na različnih lokacijah in je večkart prišlo do neskladnosti predvsem pri naročilih. Tipična primera, ki jih ga je stranka povedala na sestanku sta bili: v marketingu podjetje prejme naročilo nekega izdelka npr. 10 kosov. Delavec v marketingu je vnesel podatke o naročilo v Pantheon in je nato moral poklicati ali kako drugače obvestiti delavca v proizvodnji, da ima novo naročilo. Stranka je zato želela, da se za vsako novo naročilo avtomatsko kreiral opmnik, ki bi se ob vsakem naročilu prikazalo dalvacu v proizvodnji. Tako delvcu v proizvodnji več ne bi bilo potrebno klicati delavca v proizvodnji in mu sporočiti, da je dobil novo naročilo. 22

za določeno naročilo, ki je že bilo predano proizvodnji se naprimer spremeni rok dobave, naslovnik naročila ali naročena količina. Delavec v marketing je nato moral za vsako spremembo na naročilu klicati delvca v proizvodnji in mu sporočiti, da ima na določenem naročilu spremembo. Zato je stranka želela, da se tudi za vsako spremembo na naročilu avtomatsko kreira opomnik, v katerem so podatki kdo in kdaj je spremnenil katere atribute na katerem dokumentu. Ena izmed glavnih zahtev za opomnike je tudi bila, kreiranje predlog po katerih se kreirajo opomniki. Kar pomeni, da se ustvari predloga kateri določimo kriterije glede na katere se ob kreiranju dokumenta ustvarijo opomniki(npr. kreiranje opomnikov samo za dokumente, katerih kupec je iz Maribora). Pantheon-ovi opomniki pravtako niso omogočali kronologije opomnikov pregleda zaporedja odgovorov za opomnike, kar pa je bilo za stranko zelo pomebno, saj je bilo iz tega razvidno kdo od zaposlenih je odgovoril na kateri opomnik. Zaradi kompleksnosti Pantheona je bilo na sestanku tudi potrebno določiti nad katerimi deli Pantheona oz. nad katerimi vrstami dokumenta in za katere attribute se bodo opomniki kreirali. Polj. Pog. Nazaj Polj. Pog. dod. poz. br. poz. br. gl. Spremembe glav a Spremembe pozicija Identi - - - - - Knjigovodska v rsta, glavna enota mere,dav ek - Izdaja + + + + + Dobavnica, Za plačilo, prejemnik, kupec količina, cena, R1 %(anrebate1), R2 %,R3 % Prev zem + + + + + Prevezm, Za plačilo, Dobavitelj, prevoznik količina, cena, R1 %(anrebate1), R2 %,R3 % Naročila kup. + + + + + datum,za plačilo,naročnik, prevoznik količina, cena, R1 %(anrebate1), R2 %,R3 % Plani + + + + + - - DN + + + + + Status,datum planirana količina Naročila dob. + + + + + + (uporabnik sam doda atrbute v + postopku: Šifrsant polj-opomniki) Slika 16: Seznam vrst dokumentov na kterih je možno kreirati opomnike Zaradi obsežnosti projekta in lažje implementacije je bilo potrebno izdelati tudi diagram primerov uporabe (iz njega so razvidne funkcionalnosti postopka slika 17) in 23

entiteno-relacijski model(slika 18), na katerem so prikazane Pantheon-ove in dodatno definirane uporabniške tabele in povezave med njimi, ki se uporabljajo v postopku opomniki. Slika 17: Diagram primerov uporabe za postopek opomniki 24

Slika 18: E-R model za postopek opomniki Ker je postopek raziširitev Pantheon-ovega postopka opomniki je bilo najprej potrebno pregledati in analizirati delovanje originalnega postopka. Opis delovanja opomnikov: uporabnik kreira opomnik iz glavnega menija ob kliku čarovniki in nato dalje na kreiraj opravilo. V oknu za kreiranje opomnikov vnese komu se bo opomnik prikazal, naslov in tekst opravila, 25

Pantheon s pomočjo procedure, ki se proži ob vsaki transakciji preveri ali je v tabeli tpa_todo shranjem kakšen opomnik, ki ga je potrebno za prijavljenega uporabnika prikazati, če je tak opomnik obstajal se je le-ta prikazal v novem oknu, ki se je pojavilo v desnem zgornjem delu glavnega okna Pantheon-a v primer, da je uporabnik kliknil na to okno se je odprlo okno s podrobnostmi opomnika, kjer je lahko uporabnik tudi odgovoril avtorju opomnika ali pa opomnik posredoval drugemu uporabniku. Za potrebe stranke je bilo v okviru projekta uporabna le logika, ki je skrbela za prikaz opomnika, vključno s tabelama programskih uporabnikov in opomnikov, ter forma, ki je prikazovala opomnike. 3.2.3. Implemntacija V okviru projekta je bilo potrebno izdelati novo formo za keiranje opomnikov, saj obsoječa Pantheon-ova forma ni imela kontrolnikov, ki so bili potrebni za uspešno izdelavo projekta(izbor načina in kriterijev za avtomatsko kreiranje opravil). Na origianalni formi je tudi bil zelo nepregleden kontrolnik na katerem so se izbirale osebe katerim se bo opomnik prikazal. Na opomniku je bilo tudi potrebno prikazati oz. skriti kontrolnike v odvisnosti iz katerega vrsta dokumentov se je postopek za kreiranje opomnikov zagnal programska koda priloga A. 26

Največji izziv projekta je bil način kako avtomatsko kreirati opomnike. Po posvetu s višjim programerjem v podjetju, ki je tudi bil odgovorna oseba projekta, sma ugotovila, da je edini možen način kreiranje opomnikov s pomočjo prožilcev(trigger). Ker še nisem imel dosti opravka s prožilci, sem moral najprej pogledati kaj so in kako delajo prožilci. Tako sem ugotovil, da je prožilec funkcija, ki je vezana na določeno tabelo in se izvede ob dodajanju, brisanju, ali spremembi podatkov v tabeli na katero je vezan prožilec. Tako je bilo za vsako tabelo, na katero so bili vezani opomniki narediti tri prožilce(dodajanje, brisanje in urejanje podatkov). Tako je bilo skupno narejenih 18 prožilcev (glej prilogo B). Za funcionalnost kronologija opomnikov je bilo potrebno izdelati formo, kjer je bila prikazana kronologija. Težava se je pojavila, ker je vsak opomnik imel shranjene informacije o opomniku, ki je bil kreiran oz. je nastal kot kot odgovor trenutnega opomnika. Tako je bilo potrebno napisati še funcijo, ki je s pomočjo rekurzije pregledala in izpisala vse starše in otroke danega opomnika. Ta modul se je vezal na Pantheon-ovo formo za prikaz podrobnosti 27

opomnika, zato je bilo potrebno integrirati na to formo še gumb s katerim se je zaganjal modul za izpis kronologije opomnika. 3.2.4 Testiranje in predaja postopka v uporabo Po dokončanju projekta je bilo potrebno postopek tudi temeljito stestirati, kar pa je vzelo precej časa, saj se je šele v tej fazi pokazalo veliko število napak in napačnega delovanja. Večino napak se je pojavilo v prožilcih. Tako je bilo potrebno dodati še nekaj kontrol in nekaj manjših dodelav na formi postopka. Po končanem projektu, je bilo potrebno napisati še navodila za uporabo postopka. Delovanje postopka sem moral tudi prikazati na zadnjem sestanku pri stranki, kjer se je postopek tudi namestil na njihov strežnik. Stranki je se še predala dokumentacija in navodila za uporabo. Projekt je tako bil zaključen v okviru časovniih in denarnih omejitev. 28

4 Sklep V okviru prakse na podjetju Jamada, sem pridobil veliko izkušenj z razvojem aplikacij, delom s strankami in izkušenj z delovanjem podjetij, ter procesi, ki potekajo znotraj podjetja (proizvodnja, skladiščenje, vrednotenje zalog, prodaja, ). Nekaj pomembnih izkušenj sem pridobil tudi v zvezi s računovodstvom (obračuni plač, bilance, knjiženje, ). Pri svojem delu sem dobro spoznal SQL, programski jezik Pascal, načrtovanje in izdelavo aplikacij. Delo na Jamadi mi je bilo zelo všeč, saj sem pridobil zelo veliko življenskih izkušenj, izkušenj v zvezi s delom v kolektivu in strokovnih izkušenj. Delo je bilo zelo razgibano, zanimivo in polno novih izkušenj, za kar sem podjetju Jamada zelo hvaležen, da mi je omogočilo opravljanje prakse pri njih. 29

5 Priloge 5.1 Priloga A del programske kode postopka opomniki //del progamske kode, ki prikaže oz. skrije kontrolnike forme, glede na vstro dokumenta od koder se je postopek opomniki zagnal dlcxlabeleddbdateedit2.visible:=false; tbpodrobnosti.refresh; tbizbirapod.refresh; if(tbsporocila.fieldbyname('acobject').asstring ='TSifMS') then dlcxdbcheckbox1.visible:=false; dlcxdbcheckbox2.visible:=false; dlcxdbcheckbox3.visible:=false; dlcxlabeleddbtextedit1.visible:=false; dlcxlabeleddbtextedit5.visible:=false; end; if(ownerform.classname='tsifms') then //šifrant identov ares.variables['tkljuc']:=tdldataset(ownerform.findcomponent('tbms')).fieldbyname('acident').asstring; ares.variables['formaid1']:= 'TSifMS'; end; if(ownerform.classname='tprometizddob') then //blago->izdaja ares.variables['tkljuc']:=tdldataset(ownerform.findcomponent('tbprometizdaja')).fieldbyname('ackey').asstrin g; 30

ares.variables['formaid1']:= 'TPrometIzdDob'; end; if(ownerform.classname='thfproiz') then //delovni nalogi ares.variables['tkljuc']:=getkeyfromkeyview(tdlcxlabeleddbtextedit(ownerform.findcomponent('fkljuc')). text); ares.variables['formaid1']:= 'HeProiz'; end; if(ownerform.classname='tprometpredob') then //blago->prevzem ares.variables['tkljuc']:=tdldataset(ownerform.findcomponent('tbprometprevzem')).fieldbyname('ackey').asst ring; ares.variables['formaid1']:= 'TPrometPreDob'; end; if(ownerform.classname='tfplan') then //plani ares.variables['tkljuc']:=getkeyfromkeyview(tdlcxlabeleddbtextedit(ownerform.findcomponent('pplan')). text); ares.variables['formaid1']:= 'TFPlan'; end; if(ownerform.classname='tnaroc') then //narocila ares.variables['tkljuc']:=tdldataset(ownerform.findcomponent('tbnaroc')).fieldbyname('ackey').asstring; ares.variables['formaid1']:= 'Naroc'; end; if(ownerform.classname='tnarocdob') then //narocila dobaviteljem 31

ares.variables['tkljuc']:=tdldataset(ownerform.findcomponent('tbnarocdob')).fieldbyname('ackey').asstring; ares.variables['formaid1']:= 'TNarocDob'; end; if(tbpodrobnosti.fieldbyname('spremembapolj').asstring='t') then cxgrid4.visible:=true; tbizbirapod.refresh; end; if(tbpodrobnosti.fieldbyname('spremembapolj').asstring='f') then cxgrid4.visible:=false; tbizbirapod.refresh; end; if(tbsporocila.fieldbyname('acobject').asstring='tfplan') then dlcxdbcheckbox5.visible:=false; end; if((dbgetintvalue('select count(anid) from tpa_todo where _opomnik='+'''t'''+''))<>0) then tbdelavec.parambyname('idspor').asinteger := tbsporocila.fieldbyname('anid').asinteger; tbdelavec.refresh; tbdelavecizbran.refresh; end; 32

end; 5.2 Priloga B primeri prožilcev za postopek opomniki alter trigger _dodajanjepozicije on the_moveitem for insert as declare @iz varchar(4000) declare @izp varchar(4000) set @izp='dodana pozicija '+(select top 1 cast(anno as varchar) from inserted)+' na dokumentu '+ (select top 1 ackey from inserted)+' (spremenil: '+(select cast(acuserid as varchar(2)) from tpa_user where anuserid=(select top 1 anuserchg from inserted)) +' na datum: '+(select CONVERT (VARCHAR, getdate(),20))+') ' if((select top 1 isnull(iddokument,'') from _podrobnostiopomnik where iddokument in(select top 1 ackey from inserted))<>'') if((select top 1 dodajanje from _podrobnostiopomnik where iddokument in(select top 1 ackey from inserted))='t' ) set @iz=((select top 1 actask from tpa_todo where ackey = (select top 1 ackey from inserted) and _opomnik='t' ))+@izp+char(13) update tpa_todo set acactive='t',actask=@iz where ackey = (select top 1 ackey from inserted) and _opomnik='t' end end end go 33

alter trigger _brisanjepozicije on the_moveitem for delete as declare @iz varchar(4000) declare @izp varchar(4000) set @izp='izbrisana pozicija '+(select top 1 cast(anno as varchar) from deleted)+' na dokumentu '+ (select top 1 ackey from deleted)+' (spremenil: '+(select top 1 cast(acuserid as varchar(2)) from tpa_user where anuserid=(select top 1 anuserchg from deleted)) +' na datum: '+(select CONVERT (VARCHAR, getdate(),20))+') ' if((select top 1 isnull(iddokument,'') from _podrobnostiopomnik where iddokument in(select top 1 ackey from deleted))<>'') if((select top 1 brisanjepoz from _podrobnostiopomnik where iddokument in(select top 1 ackey from deleted))='t' ) set @iz=((select top 1 actask from tpa_todo where ackey = (select top 1 ackey from deleted) and _opomnik='t'))+@izp+char(13) update tpa_todo set acactive='t',actask=@iz where ackey = (select top 1 ackey from deleted) and _opomnik='t' end end end go alter trigger _brisanjedokumenta on the_move for delete 34

as declare @iz varchar(4000) declare @izp varchar(4000) set @izp='izbrisan dokument '+ (select top 1 ackey from deleted)+' (spremenil: '+(select top 1 cast(acuserid as varchar(2)) from tpa_user where anuserid=(select top 1 anuserchg from deleted)) +' na datum: '+(select CONVERT (VARCHAR, getdate(),20))+') ' if((select top 1 isnull(iddokument,'') from _podrobnostiopomnik where iddokument in(select top 1 ackey from deleted))<>'') if((select top 1 brisanjedokument from _podrobnostiopomnik where iddokument in(select top 1 ackey from deleted))='t' ) set @iz=((select top 1 actask from tpa_todo where ackey = (select top 1 ackey from deleted)and _opomnik='t'))+@izp+ (select top 1 ackey from deleted)+char(13) update tpa_todo set acactive='t',actask=@iz where ackey = (select top 1 ackey from deleted)and _opomnik='t' end end end go alter trigger _SpremebaPoljPozicij on the_moveitem AFTER UPDATE as declare @ime_old varchar(50) declare @ime_new varchar(50) declare @sql nvarchar(500) 35

declare @sql1 nvarchar(500) declare @izp varchar(4000) declare @prev varchar(1) declare @nazivup varchar(50) declare @iz varchar(4000) set @prev='f' set @izp='sprememba polj na poziciji '+(select top 1 cast(anno as varchar) from deleted)+' (spremenil: '+(select top 1 cast(acuserid as varchar(2)) from tpa_user where anuserid=(select top 1 anuserchg from deleted)) +' na datum: '+(select CONVERT (VARCHAR, getdate(),20))+') ' if((select top 1 isnull(iddokument,'') from _podrobnostiopomnik where iddokument in(select top 1 ackey from inserted))<>'') if((select spremembapolj from _podrobnostiopomnik where iddokument in(select top 1 ackey from inserted))='t' ) if exists (select * from tempdb..sysobjects where name='##tempinserted') drop table ##tempinserted end select top 1 * into ##tempinserted from inserted if exists (select * from tempdb..sysobjects where name='##tempdeleted') drop table ##tempdeleted end select top 1 * into ##tempdeleted from deleted 36

-- update tpa_todo set actask=actask+char(13) where ackey = (select ackey from inserted) declare c cursor for select v.element, v.elementnaziv from _vmesna v, _podrobnostiopomniksprememba p where v.idelement=p.idelement and p.tip='p' and v.izbira='t' and v.idopomnik=(select top 1 idopomnik from _podrobnostiopomnik where iddokument=(select top 1 ackey from ##tempinserted)) declare @naziv varchar(50) open c fetch next from c into @naziv,@nazivup while @@fetch_status=0 set @sql='select @ime_old_out ='+ @naziv +' from ##tempinserted' exec sp_executesql @sql, N'@ime_old_OUT varchar(50) output', @ime_old_out = @ime_old output set @sql1='select @ime_new_out ='+ @naziv +' from ##tempdeleted' exec sp_executesql @sql1, N'@ime_new_OUT varchar(50) output', @ime_new_out = @ime_new output if (@ime_old<>@ime_new) set @izp=@izp+@nazivup+', ' set @prev='t' end; fetch next from c into @naziv,@nazivup end close c deallocate c set @izp=@izp+' na dokumentu ' 37

if(@prev='t') set @iz=((select top 1 actask from tpa_todo where ackey = (select top 1 ackey from ##tempinserted)and _opomnik='t'))+@izp+ (select top 1 ackey from inserted)+char(13) update tpa_todo set acactive='t',actask=@iz where ackey = (select top 1 ackey from inserted)and _opomnik='t' end; end; end; end; 38