Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 1 av 35
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 2 av 35
1 Forord Denne produktdokumentasjonen er tiltenkt de som skal vedlikeholde, videreutvikle og
oppdatere dette logistikksystemet. Produktdokumentasjonen vil gi en dypere beskrivelse av
systemet. Denne rapporten er primært skrevet for utviklere og datakyndige. Derfor vil den
inneholde en del tekniske ord og uttrykk. Man bør, til en viss grad, ha kjennskap til disse for
å få fullt utbytte av rapporten.
Dokumentet er optimalisert for papirutskrift.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 3 av 35
2 Innholdsfortegnelse
1 Forord ............................................................................................................................................................. 2
2 Innholdsfortegnelse ........................................................................................................................................ 3
3 Innledning....................................................................................................................................................... 6
3.1 Om bedriften .......................................................................................................................................... 6
3.2 Dagens situasjon .................................................................................................................................... 6
3.3 Mål ......................................................................................................................................................... 6
3.4 Konklusjon ............................................................................................................................................ 6
4 Teknologier .................................................................................................................................................... 7
4.1 Rammebetingelser ................................................................................................................................. 7
4.2 Utviklingsmiljø ...................................................................................................................................... 7
4.3 Nettlesere ............................................................................................................................................... 7
4.4 Beskrivelse av teknologier ..................................................................................................................... 8
4.4.1 ASP.NET 4.0 ................................................................................................................................ 8
4.4.2 C# .................................................................................................................................................. 8
4.4.3 CSS ............................................................................................................................................... 8
4.4.4 LINQ ............................................................................................................................................. 8
4.4.5 ASP.NET AJAX Control Toolkit ................................................................................................. 8
4.4.6 JavaScript ...................................................................................................................................... 8
4.4.7 MS SQL ........................................................................................................................................ 9
5 Datastrukturer og oppbygging ........................................................................................................................ 9
5.1 Arkitektur .............................................................................................................................................. 9
5.2 Databasestruktur .................................................................................................................................... 9
5.3 Tabellforklaring ................................................................................................................................... 10
5.3.1 Accessories ................................................................................................................................. 10
5.3.2 Countries ..................................................................................................................................... 10
5.3.3 Customers ................................................................................................................................... 10
5.3.4 Errors .......................................................................................................................................... 11
5.3.5 Models ........................................................................................................................................ 11
5.3.6 OrderAccessories ........................................................................................................................ 11
5.3.7 Orders ......................................................................................................................................... 11
5.3.8 PostalPlaces ................................................................................................................................ 11
5.3.9 PostalPlacesDK ........................................................................................................................... 11
5.3.10 PostalPlacesSE ............................................................................................................................ 11
5.3.11 RMAHistories ............................................................................................................................. 11
5.3.12 RMARequestLists ....................................................................................................................... 11
5.3.13 SerialNumberHistories ................................................................................................................ 12
5.3.14 TerminalGroups .......................................................................................................................... 12
5.3.15 Terminals .................................................................................................................................... 12
5.3.16 UploadDates................................................................................................................................ 12
5.3.17 Users ........................................................................................................................................... 12
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 4 av 35
6 Beskrivelse av lagerstyringsystemet ............................................................................................................. 12
6.1 Generell beskrivelse ............................................................................................................................ 12
6.2 Navigasjonsmodell .............................................................................................................................. 13
6.3 Login ................................................................................................................................................... 14
6.4 Country selection ................................................................................................................................. 14
6.5 Index .................................................................................................................................................... 15
6.6 Production............................................................................................................................................ 16
6.7 In Production ....................................................................................................................................... 18
6.8 Defect .................................................................................................................................................. 19
6.8.1 Add terminal ............................................................................................................................... 19
6.8.2 Send terminal .............................................................................................................................. 20
6.8.3 Recieved terminal ....................................................................................................................... 22
6.9 Info ...................................................................................................................................................... 23
6.10 Admin .................................................................................................................................................. 23
6.10.1 Admin – Terminals ..................................................................................................................... 23
6.10.2 Admin – Customers .................................................................................................................... 24
6.10.3 Admin – Users ............................................................................................................................ 24
7 Produktets oppbygging og virkemåte ........................................................................................................... 25
7.1 Brukergrensesnitt ................................................................................................................................. 25
7.2 Mappestruktur ...................................................................................................................................... 26
7.3 Filstruktur i mappene ........................................................................................................................... 26
7.3.1 BLL ............................................................................................................................................. 26
7.3.2 DAL ............................................................................................................................................ 26
7.3.3 Model .......................................................................................................................................... 27
7.3.4 PayEx .......................................................................................................................................... 27
8 Sikkerhet....................................................................................................................................................... 28
8.1 Sikkerhet i system ................................................................................................................................ 28
9 Krav til miljø ................................................................................................................................................ 29
9.1 Krav til server ...................................................................................................................................... 29
10 Fremtidige utvidelser og forbedringer ..................................................................................................... 29
10.1 Mulige utvidelser i fremtiden .............................................................................................................. 29
10.1.1 Redigere/slette/legge inn nye verdier i Accessories-tabellen ...................................................... 29
10.1.2 Redigere/slette/legge inn nye verdier i Models-tabellen ............................................................. 29
10.1.3 Redigere/slette/legge inn nye verdier i Countries-tabellen ......................................................... 29
10.1.4 Redigere/slette/legge inn nye verdier i Errors-tabellen ............................................................... 29
10.1.5 Endre alle mulige verdier til en terminal ..................................................................................... 29
10.1.6 Vise alle terminaler ..................................................................................................................... 29
10.1.7 Logg ............................................................................................................................................ 30
10.1.8 Endring av viktige e-postadresser ............................................................................................... 30
10.1.9 Endre passord .............................................................................................................................. 30
10.1.10 Åpne pakkseddel i eget vindu ................................................................................................. 30
10.1.11 Lage applikasjonen i flere språk ............................................................................................. 30
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 5 av 35
10.1.12 Koble seg til et faktureringssystem, PBA ............................................................................... 30
10.1.13 Oppsett for testterminaler ....................................................................................................... 30
10.1.14 Rapporter ................................................................................................................................ 30
10.1.15 Eksportere data fra database ................................................................................................... 31
10.1.16 Automatisk utregning av terminalens alder ............................................................................ 31
10.1.17 Discarded ................................................................................................................................ 31
10.1.18 Lagre og vise brukere per land ............................................................................................... 31
11 Kildehenvisninger .................................................................................................................................... 32
11.1 Internett................................................................................................................................................ 32
11.2 Bøker ................................................................................................................................................... 32
12 Vedlegg .................................................................................................................................................... 32
12.1 Vedlegg 1 - Excel import (Kode) ........................................................................................................ 32
12.2 Vedlegg 2 - GridView Binding ............................................................................................................ 35
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 6 av 35
3 Innledning
3.1 Om bedriften
//Dette prosjektet handler om å designe og utvikle et logistikksystem for PayEx.
Bedriften er en av Nordens fremste eksperter på betalinger, og har omlag seks hundre
ansatte. Hovedkontoret til bedriften befinner seg i Stockholm, men de har i tillegg en
avdeling i Oslo. Siden starten i 1972 har de utviklet en solid kompetanse på områder som
betalingsløsninger for internett, mobil og fysisk handel, rating/fakturering, faktura og
reskontro håndtering, inkasso og kredittadministrasjon.
3.2 Dagens situasjon
PayEx har en god del forskjellig betalingsterminaler i omløp. Med betalingsterminaler mener
vi terminaler hvor man bruker bankkortet til å betale for varer og tjenester i for eksempel en
butikk eller forening. Disse terminalene er det ikke så lett å holde oversikten over. Det
håndteres i dag via Excel. Dette systemet er rett og slett ikke godt nok. Det er uoversiktlig og
det tar lang tid å finne ut hvor terminalene befinner seg til enhver tid. De trenger et system
som følger hver terminal sitt livsløp.
3.3 Mål
Målet med oppgaven er å utvikle et online logistikksystem for håndtering av
betalingsterminaler. Disse betalingsterminalene er hos kunder rundt om i hele Norden, pluss
at det er nye og brukte terminaler på lager og til reparasjon. Systemet må stille store krav til
gode logiske løsninger og høy brukervennlighet. Programmet er lagd slik at en person fra
PayEx lett kan sette seg inn i funksjonene, uten videre bruk for opplæring. Likevel blir det
lagt ved en brukermanual slik at andre personer kan få en forståelse av prosessen.
3.4 Konklusjon
Vi mener dette systemet vil være til stor hjelp for de ansatte hos PayEx. Det vil lette
arbeidsdagen ved å sørge for mindre frustrasjon når de skal finne ut hvor en terminal
befinner seg. Videre vil det forenkle prosessen med kundebehandling, da de enkelt kan søke
seg til en kunde og finne tilhørende terminaler. Systemet gjør det også lett å forsende
terminaler til reparasjon.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 7 av 35
4 Teknologier
4.1 Rammebetingelser
Arbeidsgiver hadde ingen betingelser for valg av teknologi. Det ble opp til gruppen vår å
avgjøre. I begynnelsen hadde vi planer om å bruke Java som programmeringsspråk, sammen
med Eclipse som utviklingsverktøy. Dette fordi Java er godt utbredt i bransjen, og gjør
jobben enkel med å distribuere applikasjonen. Jobben vår i dette prosjektet er å fokusere på
brukergrensesnitt og gjøre det lett for PayEx å kunne ta i bruk programmet. Dermed flyttet vi
oss over til nettskyene, og kikket etter en løsning som ikke innebærer installasjon for kunden
sin del. Valget falt da på å utvikle prosjektet i ASP.NET. Utviklingsprogrammet Visual Studio
gjør det lettere for oss å distribuere applikasjonen på web, og den gjør det lettvint å designe
utseendet på applikasjonen. Vi mener derfor .NET vil gjøre det enklere for oss å tilfredsstille
kundens behov gjennom brukergrensesnitt og tilgjengelighet. Dette rammeverket
inneholder mange ferdige komponenter, som gjør det tidsbesparende for oss. .NET har også
implementasjon for AJAX, hvilket betyr at sidene hele tiden slipper å ta en Postback, og gjør i
stedet en Callback. Dette vil gjøre sidene mer dynamisk og sørge for bedre flyt. Vi vil også ta i
bruk LINQ, som er en rimelig ny databasespørring-teknologi fra Microsoft. Denne funksjonen
er også godt implementert i .NET. Én person på gruppen har tidligere brukt ASP.NET, så vi
følte oss trygge på at med dette i bakhånd vil vi kunne få prosjektet i land.
4.2 Utviklingsmiljø
Fordi valget falt på ASP.NET, valgte vi Visual Studio 2010 Ultimate som utviklingsprogram. Vi
benytter oss av siste versjon av ASP.NET, som er 4.0. Visual Studio inneholder alle
nødvendige verktøy vi trenger for å utvikle applikasjonen, og valget var dermed enkelt.
4.3 Nettlesere
ASP.NET har automatisk syntaks for XHTML, noe som sørger for riktig visning i alle de store
nettleserne. Dermed vil vår applikasjon fungere optimalt uansett hva slags nettleser
brukerne av systemet innehar (forutsatt at nettleseren følger reglene til W3.org).
Denne applikasjonen skal altså brukes av datakyndige, som jobber daglig jobber foran PC-
skjermen. Dermed er det rimelig å anta at disse PC-skjermene er store, og har god
oppløsning. Derfor har vi valgt å gå for en minimum oppløsning på <OPPLØSNING>1200 x
1024<OPPLØSNING> piksler. Systemet fungerer også ved mindre oppløsninger, men det blir
da noe scrolling begge veier.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 8 av 35
4.4 Beskrivelse av teknologier
4.4.1 ASP.NET 4.0
ASP.NET gjør det raskere og enklere for oss å lage webapplikasjoner sammenlignet med for
eksempel PHP. Grunnet til det er fordi i ASP.NET finnes mange ferdige komponenter og
kontroller som ofte brukes på websider. Disse generer automatisk XHTML og JavaScript
kode. Den første ASP.NET kom i 2002, og 12. april 2010 kom versjon 4.0.
4.4.2 C#
C# er programmeringsspråk som vi har brukt sammen med ASP.NET for å utvikle websidene.
C# kan man si er en blanding av Java og C++. Kodefilene vi generer i Visual Studio har fil-
endelsene .cs, som står for C Sharp. Her ligger altså C# kodingen. Vi kunne valgt å bruke
Visual Basic. Det er et lignende programmeringsspråk, men ettersom C# ligner Java, følte vi
dette ville være et beste for oss. Java har vi jobbet med i tidligere fag. C# har også en større
markedsandel kontra Visual Basic.
4.4.3 CSS
CSS står for Cascading Style Sheets, og er en fil som bestemmer det grafiske utseendet til
web-applikasjonen. Dette stilarket gjør det det enkelt for oss som utviklere å forandre på
brukergrensesnittet med minimal koding, samt at det gjør all kodingen mer ryddig og
oversiktlig.
4.4.4 LINQ
LINQ (Language Integrated Query) er laget Microsoft, og er intergrert i .NET-plattformen.
LINQ gjør det enkelt å foreta databasespørringer med lettvint og intelligent syntaks. Denne
teknologien gjør det enkelt for oss å snakke med databasen, og er et språk som er utbredt i
bransjen.
4.4.5 ASP.NET AJAX Control Toolkit
AJAX (Asynchronous JavaScript and XML) er i bunn og grunn en ny bruk av JavaScript som er
innebygd i en kontroll. ASP.NET AJAX Control Toolkit er en open-source tilleggskontroll i
Visual Studio. Den inneholder en rekke AJAX kontroller.
4.4.6 JavaScript
JavaScript lastes sammen med websiden, og utføres hos klienten (C# utføres på serveren).
JavaScript hjelper oss å lage websidene mer dynamisk. Vi har brukt JavaScript sammen med
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 9 av 35
GridView for at brukerne lett skal kunne se hva og hvor mange av en artikkel som skal være
med i en ny bestilling/utsendelse.
4.4.7 MS SQL
MS SQL er Microsoft sin selvutviklede SQL Server. Det er integrert styring mot denne i blant
annet Microsoft-produktet Visual Studio. Vi har brukt Microsoft SQL Server 2008 R2 i dette
prosjektet, til å lagre databasen.
5 Datastrukturer og oppbygging
5.1 Arkitektur
Figur 5.1.1 viser hvordan web-applikasjonen henger sammen. Dette er et standard oppsett.
5.2 Databasestruktur
Alle redigerbare data blir lagret i en Microsoft SQL Server-database. Databasen er bygget
opp av 17 tabeller. Figur 5.2.1 viser oppsettet. Hver enkelt tabell vil bli beskrevet under
punkt 5.3. Databasen ligger i mappen AppData. Figuren under viser hvordan databasen er
satt sammen.
Figur 5.1.1 Arkitektur
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 10 av 35
Figur 5.2.1 Datastruktur
5.3 Tabellforklaring
5.3.1 Accessories
Accessories inneholder opplysninger om forskjellige accessories som kan sendes ut til kunde.
Det være seg COMPORT-kabel, PSU, Chiprens og lignende. Disse blir lagret med en navn, pris
og vekt.
5.3.2 Countries
Countries inneholder enkelt nok en oversikt over forskjellige land som brukes i systemet. Lagringen
skjer med navn på landet. Denne tabellen er for å ha mulighet til å skille oppsettet i web-
applikasjonen basert på hvilket land man befinner seg i. Dermed vil kun det norske kunderegisteret
vises med en norsk Session-variabel (Norsk bruker av systemet).
5.3.3 Customers
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 11 av 35
I Customers-tabellen lagres all nødvendig informasjon om hver enkelt kunde PayEx leverer terminaler
til. Her lagres mange opplysninger, som merchant ID, baxnummer, organisasjonsnummer, navn på
butikk, navn på kontaktperson, telefonnummer, e-post, faksnummer, adresse, faktureringsadresse,
postnummer og til slutt hvilket land kunden tilhører. Sistnevnte lagers som en int-verdi, som peker
på Countries-tabellen.
5.3.4 Errors
Errors inneholder alle slags mulige feilmeldinger en terminal kan ha. Disse lagres med feilbeskrivelse.
5.3.5 Models
Models inneholder de forskjellige navnene en terminal kan ha. Det kan Flexi Nordic, GPA og lignende.
Dette for å kunne vise hvilken terminaltype en kunde har, vil ha eller kan få. Terminals peker på
ModelID.
5.3.6 OrderAccessories
OrderAccessories er til for å kunne se hva slags tilbehør en kunde har bestilt. Denne kobles sammen
med en OrderID som inneholder flere nødvendige opplysninger om ordren, og AccessoryID for å se
hva slags tilbehør dette er. I tillegg lagres pris og antall. Denne peker på Orders, og har en peker til
Accessories.
5.3.7 Orders
Orders inneholder en OrderID og informasjon om ordren. CustomerID viser hvilken kunde dette
gjelder, TerminalID viser eventuelt hvilken terminal som er sent, Trackingnumber viser Posten sitt
sporingsnummer, og DateSent er datoen denne forsendelsen ble gjort. I tillegg sjekkes det om det
finnes noen identiske OrderID i OrderAccessories, for å se om det er bestilt tilbehør.
5.3.8 PostalPlaces
PostalPlaces inneholder alle postnummer og poststeder i Norge, sortert på PostalNumber og
PostalPlace.
5.3.9 PostalPlacesDK
PostalPlaces inneholder alle postnummer og poststeder i Danmark, sortert på PostalNumber og
PostalPlace.
5.3.10 PostalPlacesSE
PostalPlaces inneholder alle postnummer og poststeder i Sverige, sortert på PostalNumber og
PostalPlace.
5.3.11 RMAHistories
RMAHistories inneholder en historikk på forsendelser av terminaler til reparasjon. Disse er sortert
sammen på RMA nummer. PedID, ErrorID, DateSent og DateRecieved viser nødvendig informasjon
for å vite en terminal sin feilmelding, samt når den ble sendt og om den er mottatt etter reparasjon.
5.3.12 RMARequestLists
RMARequestLists inneholder en samling over terminaler som venter på RMA nummer fra
reparasjonsfirma. Disse terminalene er altså på lageret til PayEx og venter på å bli sendt til
reparasjon. Terminalene som er skannet til sending på samme tidspunkt, blir lagret under en
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 12 av 35
felles ListNumber som brukeren skriver på pappesken disse terminalene legges oppi. Her
lagres også PedID, og DateSent viser datoen RMA-forespørselen ble foretatt.
5.3.13 SerialNumberHistories
SerialNumberHistories inneholder en oversikt over hvilken gammel pedID en terminal
hadde. Denne lagres som OriginalPedID, mens den nye pedID blir lagret som NewPedID.
Utover dette lagres også datoen serienummerskiftet ble utført. I tillegg har hvert
tabellobjekt i denne tabellen en egen ID.
5.3.14 TerminalGroups
TerminalGroups inneholder alle forskjellige grupperinger en terminal kan ha i sitt livsløp. For
eksempel kan dette være om den er registrert som defekt, som ny, eller som kassert for å
nevne noen. Disse dataene blir lagret som TerminalGroupID og TerminalGroupName.
5.3.15 Terminals
Terminals inneholder mye informasjon om hver enkelt terminal. Dette for å kunne håndtere
lagerlogistikken slik at vi nøyaktig kan følge livsløpet til hver eneste terminal. Dette er selve
kjernetabellen i systemet. Her et mange pekere til andre tabeller. Disse tabellene er Models,
Countries, TerminalGroups, Orders, Errors og RMARequestLists.
5.3.16 UploadDates
UploadDates inneholder de siste datoene for import av data til databasen via Excel. Dette for
å kunne holde styr på tabellversjoner, så de ansatte enkelt kan se om en tabell må lastes opp
på nytt med oppdatert informasjon (hvis endringer har forekommet siden forrige
opplastning).
5.3.17 Users
Users inneholder alle brukerdata. Det vil si påloggingsinformasjon og rettighetsstyringer for
de som skal bruke applikasjonen. Hvis Type er ”Admin”, får brukeren opp en
Administrasjons-fane i applikasjonen. Passord blir kryptert.
6 Beskrivelse av lagerstyringsystemet
6.1 Generell beskrivelse
Denne web-applikasjonen er kun til bruk for ansatte hos PayEx. Administrator velger selv
hvilke personer han/hun ønsker å inkludere i systemet. Brukerne av systemet kan søke opp
kunder, se hvilke terminaler disse har, sende dem nye terminaler og/eller tilbehør, legge til
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 13 av 35
nye terminaler i databasen, registrere terminaler som defekte, og sende disse samlet til
reparasjon. Administratorer kan legge til/redigere/fjerne brukere av systemet og importere
diverse data fra Excel. Administratorer har også tilgang til de samme funksjonene som de
vanlige brukerne.
6.2 Navigasjonsmodell
Figur 6.2.1 viser flyten i lagerstyringssystemet. Man kan enkelt velge en ny fane uten å måtte
gå tilbake eller lukke en annen. Systemet oppfører seg som en skrivebordsapplikasjon ved at
verdier skrevet i en fane blir ikke borte om man klikker seg til en annen fane. Kun ved pedID
søk vil siden gjøre en postback, og ellers ved enkelte andre knappetrykk som ikke er
faneknapper.
Figur 6.2.1 Navigasjonmodell
LoginCountry selection
Index
Production Customer search
Send new
Register defect
Edit customerIn ProductionInsert
temrinal
Defect
Register
Send/Recieve
Info
Admin
Customer
Customers Import
Postal places Import
User
Add
Edit/Delete
Show all
Terminal Import
Terminal search
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 14 av 35
6.3 Login
Figur 6.3.1 Login
Det første brukeren møter er en logg inn side hvor brukeren må skrive inn tildelt brukernavn
og passord. Dette blir så sjekket med databasen før brukeren eventuelt kan fortsette. Øvre
del av siden (headeren) er fast plassert gjennom hele applikasjonen. Headeren er på denne
siden strippet, for å unngå å gi en uautorisert bruker unødvendig informasjon.
6.4 Country selection
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 15 av 35
Figur 6.4.1 Country Selection
Figur 6.4.1 viser oversikten for country selection. Her må brukeren velge hvilket land
han/hun operer fra. Deretter navigerer siden til selve lagerstyringssystemet. Når brukeren
velger land, opprettes det en sessionvariabel som inneholder dette valget. Denne variabelen
brukes senere i applikasjonen for å vise kun relevant informasjon i henhold til hvor man
befinner seg.
Videre er det her også en samlet oversikt over antall terminaler i hvert land.
I tillegg har man fått opp noen flere funksjoner i headeren. Nå kan bruker søke etter
terminal ved hjelp av en pedID. Brukeren ser også brukernavnet sitt og rettigheten denne
har. Rent teknisk er det brukt ASP.Net sin funksjon LoginView for å vise denne
informasjonen. På login-siden settes brukernavnet ved hjelp av en metode som heter
FormsAuthentication. Denne metoden tar et brukernavn som innparameter.
6.5 Index
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 16 av 35
Figur 6.5.1 Index
Her vises hovedsiden brukeren skal jobbe i. Her brukes ASP.NET AJAX Control Toolkit sin
kontroller ’TabContainer’. Denne gjør at man kan klikke seg mellom fanene uten bruk av
postback. Det er to TabContainer-kontroller. Er man administrator brukes den andre
TabContaineren for å vise et faneoppsett i Admin-fanen.
6.6 Production
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 17 av 35
Figur 6.6.1 Production
Production-fanen er hvor brukeren kan søke opp kunder i systemet. Søket blir begrenset til
hvilket land bruker har valgt. Søker bruker etter et butikknavn, og det finnes flere med dette
navnet, vil det genereres en GridView som gir brukeren en oversikt med kolonnene
butikknavn, merchant ID, organisasjonsnummer og baxnummer. Videre er det laget en
funksjon for sortering av denne GridView-tabellen ved å trykke på kolonneoverskriftene. Er
resultatet av søket flere enn 45, vil det automatisk bli opprettet en sidevelgerfunksjon, slik at
vinduet ikke blir altfor langt.
Når man trykker på select-knappen (som er en linkButton), hentes det et Customer-objekt
fra databasen som tar MerchantID som innparameter. Dette Customer-objektet inneholder
all kundeinformasjon som deretter legges i tekstfeltene i det nye panelet som dukker opp.
Dette panelet er en en ASP:Panel, som vi styrer visningen av ved hjelp av True og False-
statements.
Nå vises det også en ny GridView med oversikt over hvilke terminaler denne kunden har hos
seg. Disse kan så registreres Defect om kunden har sendt den inn (dette kan også gjøres
under Defect-fanen, se punk 6.8.1).
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 18 av 35
Nederst på denne siden finner du knappen ”Send new”, som åpner et nytt panel på siden
med valg for å sende terminal og/eller tilbehør. Tilbehøret genereres dynamisk ut i fra hva
som ligger i Accessories-tabellen. Denne informasjonen legges i en GridView med to ekstra
kolonner som består av CheckBox og TextBox. TextBox er i utgangspunktet satt til Disabled,
men så fort man trykker på en CheckBox, vil tekstboksen som befinner seg på samme linje bli
satt til Enabled. Alle tekstboksene har en utgangspunktverdi på ”1”, som brukeren kan endre
etter behov. Det er brukt JavaScript for å Enable/Disable tekstboksene, for å unngå bruk av
postback, og dermed gjøre siden mer smidig. Denne funksjonen har vi kalt
’ChangeQuantityEnable’. Den ligger i MasterPage.Master, men kalles på i index.aspx.cs,
under gvCustomers_SendNew_Accessories sin OnRowDataBound eventhandler.
Når man var valgt eventuelt tilbehør, skrevet inn sporingsnummer, og eventuelt en pedID,
kan man sende bestillingen. Denne sendes til [email protected], som tar seg av
faktureringen. Her brukes MailMessage-funksjonen som også er innebygget i ASP.NET. For å
sende denne e-posten må man ha en SMTP-server. For dette hovedprosjektet har vi brukt
Høgskolen i Oslo sin server. I web.config under <system.net>, ligger informasjon for å sette
opp koblingen. Her må det skrives hostname, portnummer, brukernavn og passord, og
eventuelle andre betingelser som for eksempel bruk av SSL.
6.7 In Production
In Production er hvor logistikkføringen av nye- og service-terminaler. Her kan man legge inn
terminaler på lageret. Når man trykker ”New Terminal”, åpnes et panel, som inneholder
blant annet en ASP:ListBox. Denne listboksen genereres ved knappeklikket, og henter de
forskjellige modellnavn som ligger i Models-tabellen.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 19 av 35
Figur 6.6.1 In Production
Det er også en tekstboks hvor man må velge produksjonsdato. Dette lagres med måned og
år, ikke dag. Når man trykker på tekstboksen, åpnes det et kalendervindu. Dette er en
funksjon i AJAX Control Kit. Det fungerer slik at kalenderfunksjonen assosieres med en
tekstboks, hvor datoen blir nedskrevet, og vi henter input fra tekstboksfeltet.
<bilde av kalenderfunksjon>
I code-behind til innsettingsmetoden sjekkes det på Session-variabelen ”Country”, og
terminalen blir lagret med til det landet brukeren har valgt.
6.8 Defect
Figur 6.8.1 Defect
I Defect-fanen har man tre knapper å velge mellom. Legge til defekte terminal, sende
defekte terminaler og motta reparerte terminaler.
6.8.1 Add terminal
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 20 av 35
Figur 6.7.1.1 Defect - Add terminal
Trykker man på ’Add terminal’, vil en GridView med oversikt over registrerte, defekte
terminaler i systemet bli opprettet. Disse terminalene vises basert på hvilket land man har
valgt. Det er også en ASP:DropDownList som viser alle feilmeldingene en terminal kan ha.
Denne er laget slik at den setter sammen ’ErrorID’ og ’Description’ slik at det vises en errorID
først, etterfulgt av et kolon og beskrivelsen til slutt. Dermed er det lettere for bruker å lete
seg frem til riktig feilmelding.
GridView oppdateres automatisk etter at ny defekt terminal er registrert.
6.8.2 Send terminal
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 21 av 35
Figur 6.7.2.1 Defect - Send terminal
Send terminal er stedet for å skanne en gruppe terminaler som skal sendes i samme
forsendelse til reparasjon. Den inneholder en teller som gir brukeren en enkel oversikt over
hvor mange terminaler som er skannet. Tekstboksen brukeren skanner til, inneholder en
OnTextedChanged event som kjører en funksjon i bakgrunn så fort fokus er borte fra
tekstboksen. Bruker kan da trykke på tab-knappen
(tastaturet) eller bruke musa og klikke utenfor
tekstboksen for å kjøre funksjonen. Så fort første
terminal er skannet, lages det en GridView som
inneholder pedID og errorID for hver terminal. Denne
informasjonen lagres midlertidig en ViewState, og settes
til slutt inn i databasen når bruker trykker ’Send RMA
Reqeust’.
Ved trykk på ’Send RMA Request’-knappen, sendes det
også automatisk en e-post til reparasjonsavdelingen (for
øyeblikket [email protected]) som må sende tilbake et
RMA-nummer før disse kan sendes. Terminalene blir
imens lagret i en liste, hvor listenummer automatisk blir
valgt (av en metode i DAL) og bruker må skrive dette på pappesken for midlertidig lagring.
Figur 6.7.2.2 Defect - Send terminal
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 22 av 35
Nederst på denne siden er knappen ’Send package’. Ved trykk på denne vil det bli generert
verdier til en DropDownList som inneholder listenummer som er tatt i bruk. Videre skriver
man inn tilsendt RMA-nummer. Deretter må man trykke på ’Send’, for så å trykke på ’Print’
slik at man blir sendt til en ny side hvor forsendelsesinformasjonen er tilrettelagt for utskrift.
Brukeren må da ta i bruk nettleseren sin ’Skriv ut’-funksjon.
Figur 6.7.2.3 Defect - Package note
6.8.3 Recieved terminal
Figur 6.7.3.1 Defect - Recieved terminal
Recieved terminal inneholder en tekstboks hvor bruker kan søke etter RMA-nummer. Finner
systemet RMA-nummeret blir det vist et panel som inneholder metoder for å tildele en ny
pedID til den gamle pedID’en. Den gamle terminal-objektet i databasen vil da bli markert
som ’History’, mens den nye pedID vil legges til et helt nytt terminal-objekt i databasen, og
bli markert som ’Service’. Etter hvert som brukeren lagrer nye pedID’er, vil listeboksen som
inneholder alle pedID til valgt RMA minke. Det vil si, listboksen regeneres etter hver gang
bruker trykker på ’Save’, slik at den alltid kun inneholder pedID som ikke er tildelt ny pedID.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 23 av 35
6.9 Info
Inneholder kun kortfattet informasjon om bruk av applikasjonen.
6.10 Admin
Admin-fanen er kun synlig hvis man er logget inn som Admin. Dette testes ved sjekk av
Session-variabelen ”Admin”. Admin-fanen inneholder flere underfaner.
6.10.1 Admin – Terminals
I denne fanen er det en funksjon for å importere terminaldata fra et Excel-dokument.
Figur 6.9.1.1 Admin - Terminals
Det første denne funksjonen gjør er å laste .xlsx-filen til server. Dermed kan vi lese fra den,
og sette all data inn i tabellen Terminals. For å laste opp alle data bruker vi en
OleDbConnection, OleDbDataReader og SqlBulkCopy for å legge inn dataene. Vi bruker
SqlBulkCopy for det er den raskeste opplastningsmetoden for Excel.
Hvis opplastningen er vellykket, legges det også inn en opplastningsdato i UploadDates-
tabellen. Denne vises deretter på web-siden, så admin har kontroll over nødvendighet for
oppdatering av data.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 24 av 35
6.10.2 Admin – Customers
De samme funksjonene ligger under fanen Customers, for å laste opp til tabellen Customers.
Her er det i tillegg også opplastningsfunksjon for å legge inn postnummer og poststeder i
hvert land sine respektive PostalPlaces-tabeller. Hvilken tabell det lastes opp til styres av
Session-variabelen ”Country”.
6.10.3 Admin – Users
Her er stedet for å redigere, legge til og vise brukere av systemet. ’Show all users’-knappen
åpner et panel som inneholder en GridView for visning av alle registrerte brukere.
Figuer 6.9.3.1 Admin - Users
Fieldset ”Add user” inneholder metode for å legge til bruker. Her genereres det automatisk
et passord, basert på en algoritme vi har laget. Denne algoritmen plukker tilfeldige tall og
bokstaver i intervallene 0-9, a-z og A-Z. Passordlengde blir 8 tegn, som vi har satt til et
minimum. Denne algoritmen ligger i Security-klassen. GridView’en som inneholder alle
brukerne blir automatisk oppdatert etter innsetting av ny bruker.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 25 av 35
I fieldset ”Edit user” får man slettet og redigert en bruker. Prøver man å slette, får man opp
et spørsmål om man er virkelig sikker på slettingen før programmet foretar seg noe. Dermed
unngår man uheldig sletting. Se figur 6.9.3.3.
7 Produktets oppbygging og virkemåte
7.1 Brukergrensesnitt
Programkoden og designet av systemet er skilt fra hverandre. Dette gjør det til en smal sak å
gjøre endringer på det visuelle designet uten å oppdatere programkoden. Utseende av
forskjellige funksjoner gjøres hovedsakelig i .css-filen (default.css).
Alle skjermbildene i web-applikasjonen har det samme designet. Det er alltid en fast meny
øverst, som inneholder en link til countrySelection.aspx, navn på innlogget bruker og
søkefelt for terminaler. Dette er satt opp som en Master Page. Content Page-siden
index.aspx har en rekke faner slik at brukeren til enhver tid har tilgang til alle funksjoner.
Brukergrensesnittet er bygd opp på en slik måte at det skal være mest mulig behagelig og
brukervennlig for brukerne. Vi har valgt en hvit bakgrunn som gir god kontrast med andre,
mørke farger. Tekstfargen er svart, og tabeller har en ”PayEx”-grønn bakgrunn i headeren.
Videre har vi tilbakemeldingsbokser, som enten har rød, rød-oransje, eller grønn farge. Ikke
sterke farger for å skremme brukerne, men behagelige og hensiktsmessige farger som gjør at
brukerne lett skjønner hva slags tilbakemelding det er, kun basert på fargen. Disse
meldingsboksene er lagt i Paneler, som skjules og vises etter behov.
Designet er minimalistisk, med kun rette kanter. Dette er for å gjøre det enklest mulig, og
skape minst mulig misforståelser og frustrasjon hos brukerne.
Figur 7.1.1 Message box Figur 7.1.2 Message box Figur 7.1.3 Message box
Figur 6.9.3.2 Admin - Users - Edit Figur 6.9.3.3 Admin - Users - Delete
Figur 6.7.2.3 Defect - Package note Figur 7.1.1 Message box
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 26 av 35
7.2 Mappestruktur
Web-applikasjonen vår er bygd opp med følgende mapper.
Figur 7.2.1 Mappestruktur
7.3 Filstruktur i mappene
7.3.1 BLL
BLL er mellomlaget for PayEx-mappen og DAL-mappen. Her kan man kjøre tester på innkommende
verdier før de sendes videre til DAL. Vi har valgt i dette prosjektet å kjøre disse testene i PayEx-
mappen. Vi bruker kun BLL som et mellomlag.
Figur 7.3.1.1 BLL
7.3.2 DAL
DAL er mappen som snakker direkte med databasen gjennom metoder. Her foregår alt av innsetting,
sletting, oppdatering og lignende.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 27 av 35
Figur 7.3.2.1 DAL
7.3.3 Model
Model har get- og set-metoder for alle radene i hver tabell som er i databasen.
Figur 7.3.3.1 Model
7.3.4 PayEx
Payex inneholder alle filene som styrer designet på siden. I tillegg har hver .aspx-fil en .aspx.cs-fil,
som styrer sidens funksjoner. I App_Data ligger databasen sammen med en mappe som heter Excel.
Denne mappen brukes til midlertidig lagring av Excel-filer ved import av data. Img-mappen
inneholder alle bildene denne siden bruker. Default.css er stilarket til web-siden.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 28 av 35
Figur 7.3.4.1 PayEx-mappen
8 Sikkerhet
8.1 Sikkerhet i system
ASP har innebygde sikkerhetsaspekter. For eksempel har de sikret alle kontrollene for SQL-
injections (asp:TexBox, asp:GridView, asp:ListView, etc.). I systemet vårt lagres det aldri
betalingsinformasjon, så vi er ikke fullt sårbare for angrep fra hackere sånt sett. Likevel,
passord blir kryptert før det lagres i databasen. Til dette bruker vi en SHA512 algoritme, som
må betegnes som en svært vanskelig algoritme å hacke. Videre er det kun administratorer
som har tilgang til å redigere brukere av applikasjonen, og tilgang til å redigere merchant ID,
baxnummer og organisasjonsnummer hos kunder. Også opplastning av Excel-filer til server
er det kun admin som kan gjøre.
Sikkerhetslagring av alle data gjøres hos servertilbyder, og det er noe vi ikke trenger å ta
hensyn til, verken vi utviklere eller oppdragsgiver.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 29 av 35
9 Krav til miljø
9.1 Krav til server
For at applikasjonen skal kunne kjøres på en server kreves:
- MSSQL server
- Microsoft .NET Framework 4.0
10 Fremtidige utvidelser og forbedringer
10.1 Mulige utvidelser i fremtiden
Etter å ha jobbet med dette prosjektet, ser vi det er flere funksjoner som kan være svært
nyttig å implementere i applikasjonen. Disse implementeringene vil sørge for bedre flyt og
større oversikt for brukerne, spesielt administratorer.
10.1.1 Redigere/slette/legge inn nye verdier i Accessories-tabellen
En admin-funksjon for å kunne endre, slette eller legge til mer tilbehør i Accessories. Bør
opprette en ny fane under Admin-fanen, gjerne med navn Accessories.
10.1.2 Redigere/slette/legge inn nye verdier i Models-tabellen
En admin-funksjon for å kunne endre, slette eller legge til flere modelltyper av terminaler
(med tilhørende pris og vekt). Denne funksjonen bør legges under Terminals-fanen.
10.1.3 Redigere/slette/legge inn nye verdier i Countries-tabellen
I tilfelle PayEx utvider til flere land, bør det være en funksjon på Admin-sidene for å legge inn
flere land i Countries. Denne funksjonen må også inneholde en metode for å oppdatere
designet på countrySelection.aspx, og legge til et flagg til i headeren.
10.1.4 Redigere/slette/legge inn nye verdier i Errors-tabellen
Admin bør ha mulighet til å redigere feilmeldingslisten. Anbefaler å legge til en Error-fane i
admin-delen.
10.1.5 Endre alle mulige verdier til en terminal
Admin bør også kunne endre en terminal sine opplysninger, i tilfelle det er lagret feil.
10.1.6 Vise alle terminaler
Bør være en funksjon som viser alle terminaler som er registrert på systemet. Videre bør
disse kunne sorteres på forskjellige verdier. Kanskje ha en DropDownList som bestemmer
sorteringen ut i fra for eksempel land, slik at man slipper å klikke seg til
countrySelection.aspx for så å gå tilbake.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 30 av 35
10.1.7 Logg
Dette bør være en hovedprioritet. Viktige endringer av verdier i databasen bør loggføres, slik
at admin kan se hvem som har gjort hva. På denne måten kan man kjappere finne en
eventuell feilkilde ved å henvende seg til den personen som utførte operasjonen.
10.1.8 Endring av viktige e-postadresser
Admin bør kunne ha mulighet til å endre viktige e-postadresser. Slik som adressen til
faktureringsavdelingen, reparasjonsavdelingen og lignende. Dette er adresser som
antakeligvis endres en gang i blant.
10.1.9 Endre passord
Bruker og admin bør ha mulighet til å endre/gjenopprette passord. Slik systemet er nå, må
man slette en bruker, for deretter å legge den inn på ny.
10.1.10 Åpne pakkseddel i eget vindu
Ved å åpne pakkseddelen i et eget vindu slipper man postback på siden som oppstår når
man trykker på tilbake-knappen i nettleseren. Ergo mer dynamisk nettside.
10.1.11 Lage applikasjonen i flere språk
Har ikke sett hvor mye jobb dette er å implementere, men det kan så klart være en mulighet
i fremtiden.
10.1.12 Koble seg til et faktureringssystem, PBA
PayEx har et eget faktureringssystem som kalles PBA. Det vil spare arbeid i noen ledd om
dette kan kobles til og sendes automatisk. Dette vil fungere ved å eksportere
ordreinformasjon til en excel-fil, som i sin tur importeres av faktureringsprogrammet til
PayEx.
10.1.13 Oppsett for testterminaler
PayEx ønsket et eget oppsett med egen database for håndtering av testterminaler. Vi rakk
kun å lage databasen, og litt på koding, men dette er altså uferdig. Vises ikke på den kjørbare
siden, fordi fanen er satt til skjult.
10.1.14 Rapporter
Det bør være hensiktsmessig å kunne hente ut forskjellige rapporter. For eksempel en liste
over alle nye terminaler, alle terminaler hos én kunde, alle terminaler hos én butikkjede, alle
terminaler registrert siste måned, også videre… Foreslår å legge alle rapportuthentinger i en
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 31 av 35
egen fane kalt Reports. Videre kan det også være lettvint å legge til rapport-knapper i
forskjellige faner hvor det logisk hører til.
10.1.15 Eksportere data fra database
Det kan være nyttig for PayEx å kunne hente ut all informasjon fra deler av databasen, for så
å importere disse andre steder. PayEx må velge hvordan dette formatet skal være, og dette
kan ordnes. For eksempel å eksportere informasjon til en excel-fil.
10.1.16 Automatisk utregning av terminalens alder
Når PayEx får tilbake en terminal fra kunde, som kunde sier er ødelagt, gjelder en 6
måneders reklamasjon. Hvis disse 6 månedene er passert, bør brukerne av systemet få
melding om at kunden må kjøpe en ny terminal, i stedet for at de sier de gratis skal sende
kunden en ny (da er de allerede bundet til å gjøre det). Dette bør det komme beskjed rett
etter terminalen skannes eller velges, og før brukerne trykker på knappen for å registrere
den som defekt.
Videre er det også 5 års levetid på terminalene, så dette bør også sjekkes slik at hvis en 5 år
gammel terminal tilbakekommer, skal den kasseres.
Siste funksjon som også bør tilkomme, er en sjekk på hvor lang tid det har gått siden en
terminal er sendt til reparasjon. Først skal det sendes et varsel etter 25 dager. Videre en ny
varsel etter 35 dager som minner om at det har gått for lang tid.
10.1.17 Discarded
Bør ha mulighet til å registrere en terminal som ødelagt. Det vil si en terminal som ikke skal
være i bruk lenger. Forslag: Opprette en Discarded-fane hvor bruker kan skanne inn en
terminal, og registrere den som ødelagt. Videre ha en oversikt over alle slike terminaler i en
GridView.
10.1.18 Lagre og vise brukere per land
Slik systemet er i dag, lagres alle brukere uten noe skille på tilhørighet til land. Denne
funksjonen innebærer en modifikasjon av den originale innsettingsmetoden av bruker. Det
er opprettet en Country-rad i tabellen Users, det er dermed tilrettelagt for denne utvidelsen.
Da bør det også være en funksjon som skiller visningen av brukere per land. Det er ikke
nødvendig at en administrator i Norge skal se alle brukere fra Sverige.
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 32 av 35
11 Kildehenvisninger
11.1 Internett
www.asp.net
www.msdn.microsoft.com/library/
www.codeproject.com
http://stackoverflow.com
www.eggheadcafe.com
11.2 Bøker
Troelsen, A. (2010). Pro C# 2010 and the .NET 4 Platform, Fifth Edition. USA: Apress.
Gunnerseon, E. (2000). A Programmer’s Introduction to C#. USA: Apress.
12 Vedlegg
12.1 Vedlegg 1 - Excel import (Kode)
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 33 av 35
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 34 av 35
Produktdokumentasjon Prosjekt nr. 2011 – 16 PayEx Logistics
Side 35 av 35
12.2 Vedlegg 2 - GridView Binding