INVENTORY MANAGER

Et .NET prosjekt

Dokumentet inneholder en brukermanul for å illustrerer hvordan programmet er ment å brukes. Brukermanualen prøver å vise frem alle brukersenarior og bilder av forkjellige deler av programmet. Videre presenterer dokumentet en gorv teksnisk oversikt for hvordan programmet henger sammen.


Innholdsliste

Innholdsliste

Hva er Inventory Manager?

Brukermanual

Registrer varer

Importer

Legg til et produkt

Eksporter til Excel

Finn og rediger produkt

Teknisk struktur

Inventory Manager benytter .im

Hva som er bra og velskrevet og som skal betraktes som eksempel på god kode og design

Snarveier

Tittel

Import veiviser

ShowProduct.cs

Finn og rediger produkt

Tråder

Begrunnelse for noen viktige valg som er gjort

Filer VS Database


Hva er Inventory Manager?

Inventory Manager er et enkelt program for lagervaretelling. Den benytter en strekkodeleser for å identifisere varer. Ved å skanne et produkt øker den lagervarebeholdningen for dette produktet. I tilfeller hvor produkter kommer i ekser, holder det med å skanne D-pak nummeret på esken. Inventory Manager kan benyttes i de fleste virksomheter, foreløpig støtter den import av lagervaredagboken til Asko og forventes å støtte andre kataloger i CSV format. Etter endt varetelling kan resultatet eksporteres til Excel som vil gi en full oversikt over lagerstatus. Inventory Manager er utviklet i forbindelse med faget .NET ved Høgskolen i Østfold og i samarbeid med Studentsamskipnaden i Østfold kantine drift.


Brukermanual

Registrer varer

Før vi kan starte å registrere varer må en strekkodeleser kobles til. Til Inventory Manager er det anbefalt å benytte en USB leser ettersom det er enkelt å koble til og ta i bruk. Test at USB leseren fungerer ved å åpne notepad eller et annet tekstredigerings program. Plasser markøren i feltet klar for å skrive.

Skann deretter en strekkode med leseren. Dersom den returnerer nummere for strekkoden er USB leseren installert. Dersom det ikke kommer nummer etter skannet kode, prøv å ta ut USB kontakten og plugg den inn på nytt. Dersom strekkodeleseren fortsatt ikke fungerer henvises det til brukermanualen for installasjon av USB strekkodeleseren.

Etter fullført installasjon og testing av strekkodeleseren er vi klare til å ta i bruk programmet. Etter at Inventory Manager har startet opp, plasser markøren i tekstfeltet.

Bruk strekkodeleseren for å skanne et produkt. Dersom produktet er registrert økes vareantallet. Avhengig om produktet ble skannet med et f-pak nummer, eller d-pak nummer økes antallet deretter. Ved skanning av f-pak økes antallet med enn, og dersom et d-pak nummer skannes, øker antallet med antall varer i pakningen. Oppdatert informasjon om siste skannet vare vises i informasjonsfeltet under.

Informasjonsfeltet om produktet presenterer varenummer, varenavn, leverandør og antall ganger varen er opptelt. Man kan manuelt justere varetellingen ved å benytte piltastene på feltet for antall, eller manuelt skrive inn antallet. Det er anbefalt å ligge unna denne funksjonaliteten og skanne alle varer manuelt for å være helt sikker på at varen er riktig opptelt.

Importer

Ved oppstart av programmet er det anbefalt å starte med importering av produkter for å etablere et datagrunnlag. Start ved å gå til Handlinger -> Importer -> CSV.

Naviger frem til en lagervarebok i CSV format. I vårt eksempel heter denne filen LVB331.csv

Nå starter CSV Import veiviseren. Den søker automatisk gjennom CSV filen etter hvilke kolonner og datastruktur den har. Du ser nå et koblingsskjema hvor du selv må kontrollere at feltet for varenummer stemmer med CSV filen sin kolonne med varenummer.

Veiviseren prøver å tilpasse disse valgene automatisk, men det er sterkt anbefalt og se nøye over disse feltene for å unngå feil i programmet. Etter at feltene er koblet sammen kan vi starte med å konvertere filen til vårt ønsket format. Trykk på knappen konverter. Nå leser den gjennom filen og konverterer CSV filen til produkter. Når den er ferdig med konvertering starter den automatisk å emigrerer våre nye produkter med våre eksisterende.

Til slutt vises en dialogboks med status for importeringen.

NB: Dette kan ta lang tid.

Legg til et produkt

For å lege til et nytt produkt, gå på Handlinger -> Legg til et produkt.

I det neste skjermbildet må man fylle ut varenummer, varenavn, leverandør, type, pris, mva, d-pak, f-pak og antall i d-pak.

Alle feltene my fylles ut. Når du står i ønsket felt for å fylle inn informasjon endres beskrivelsen i venstre vindu til å forklare feltet du befinner deg i. Om produktet du registrerer ikke har d-pak nummer må man allikevel fylle ut dette feltet med f-pak nummer og sette antall d-pak til 1. Når all informasjon er fylt ut er man klar til å klikke på lagre eller presse enter. Dersom du har glemt å fylle ut noen av feltene blir feltet eller skrevet feil, varsles dette ved å gjøre feltet rødt.


Eksporter til Excel

For å eksporterer varetellingen til Excel ved å gå til Handlinger -> Exporter -> Excel.

Ved eksport hentes alle produktene som er opptelt under varetellingen og listes i Excel. Her presenteres en oversikt med varenummer, leverandør, varenavn, antall varer som er opptelt, MVA, pris pr pakke, pris med MVA, sum pris uten MVA og sum pris med MVA.

Pris /m MVA, sum pris uten MVA, SUM pris med MVA er felter som inneholder formler basert på de andre feltene. Dette gjør oppsettet mer dynamisk og enklere å endre på verdier i ettertid.

Finn og rediger produkt

Finn og rediger produkt gjør det mulig å lete etter eksisterende produkter og gjøre endringer til produkter. For å søke eller redigere et produkt gå til Handlinger -> Finn og rediger et produkt.

For å søke etter et produkt kan man søke direkte på Varenummer eller søke på Varenavn og Leverandør. Søket fungerer ved å skrive inn ønsket søkestreng etterfulgt av å trykke på Enter tasten eller ved å klikke på knappen søk.

Resultatene listes opp i en liste med Varenummer, Varenavn og Leverandør. Dobbel klikk på et av resultatene for å redigere et produkt.

For å avslutte etter at alle nødvendige endringer er gjennomført, klikk på Lagre endringer eller presse enter.


Teknisk struktur

En kort innføring i hvordan Inventory Manager er strukturert og hva som skjer på baksiden. InventoryManager.cs er hovedskjermbilde for applikasjonen. InventoryManager.cs er ansvarlig for å holde orden på hvilken fil som er åpen og har en instans av Core.cs. Core.cs står for kjernefunksjonaliteten til programmet. Det innebærer å holde orden på alle produktene, oppdatere produkter, lagre produkter til fil samt laste inn produkter fra fil.

Core.cs benytter seg av MyProducts.cs, Serializer.cs og ikke minst Product.cs. MyProduct.cs er en klasse som strukturerer alle produktene som skal lagres. Selve lagringen skjer i Serializer.cs hvor instansen av MyProduct blir lagret til fil og lest fra fil. Product.cs representerer et produkt og inneholder data som beskriver et typisk produkt i vårt program.

LoadScreen.cs er en usercontroll InventoryManager benytter for å indikere at programmet jobber med å utføre en oppgave. Denne blir som regel brukt når programmet forventes å bruke lengere tid.

ProductSearch.cs gjør det mulig å søke på varenummer eller varenavn og leverandør. Etter gjennomført søk kan man dobbeltklikke på et av resultatene for å starte ShowProduct.cs. Når man sender med Product i ShowProduct.cs laster den inn detaljene til product og starter redigering. Dersom man ikke sender med Product vil ShowProduct.cs legge til nytt product i stedet for å lagre endringer til et eksisterende.

ImportProducts.cs er et eget skjema for importering av produkter fra lagervaredagbøker. Foreløpig støtter dette bare importering av CSV filer.

Inventory Manager benytter .im

Program.cs er den første filen som kjøres under oppstart av programmet. Denne er modifisert til å ta i mot argumenter. Dersom den mottar et argument, skal den sende med den første delen av argumentet videre til InventoryManager. Når vi prøver å åpne en fil med Inventory Manager blir filstien til valgfil sendt som første argument.

Under setup registreres .im filer til å åpnes med Inventory Manager. På denne måten blir dette arbeidsfiler for programmet og vi kan jobbe opp mot disse.

Fore å registrere at .im filer skal åpnes med Inventory Manager må vi legge til filtyper i installeren. Figuren under viser hvordan vi har registrert at im filer skal åpnes med Inventory Manager.


Hva som er bra og velskrevet og som skal betraktes som eksempel på god kode og design

Snarveier

I menyvalget er det laget snarveier for de mest brukte operasjoner. Snarveiene er opprettet etter Microsoft sine keyboard guidelines.

Se følgende link for guidelines:

http://msdn.microsoft.com/en-us/library/ms971323.aspx#atg_keyboardshortcuts_assigning_shortcut_keys 

En liste over snarveier:

Åpne varetelling

Ctrl+O

Lagre

Ctrl+S

Lagre som

Ctrl+Shift+S

Legg til et produkt

Ctrl+N

Finn og rediger produkt

Ctrl+F

Tittel

Under redigering av filer illustreres åpen fil med filbane i tittelen. Dersom det er gjort endringer til filen uten at de siste endringene er lagret, vises dette med en stjerne på slutten av filstien.

Dersom man prøver å avslutte programmet med ulagrede endringer vil dette varsles med en meldingsboks som gir det muligheten til å avbryte avslutning eller fortsette å avslutte programmet uten å lagre de siste endringene.

Import veiviser

Import veiviseren leser den første linjen i utvalg CSV fil og lager en liste over alle kolonene. Disse kolonene blir presentert i et nedtrekksliste hvor man skal kombinere riktig felt med riktig kolone. Dette gjør import av produkter fleksibelt og enkelt å ha med å gjøre.

Dersom CSV filen inneholder feil vil den varsle dette med følgende feilmelding. Den prøver allikevel å importere resterende resultater.

ShowProduct.cs

Skjemaet har gjenbruk og brukes til å legge til nye produkter, samt vise eksisterende produkter og gjøre endringer. Skjemaet markerer hvilket felt som er i bruk med en gul farge og til høyre presenteres informasjon om valg felt.

Bilde illustrerer valgt felt for leverandør og en oppdater beskrivelse av feltet. Dersom noen av feltene ikke er fylt ut eller inneholder feil format blir feltet hvor feilen oppsto marker rødt.

Alle feltene i skjemaet får satt eventen Enter til inp_heilight. Denne metoden er gjenerell for skjemaet og alle tekstboksene benytter metoden for å oppnå en markerende effekt.

Finn og rediger produkt

Skjema for finn og rediger produkt gjør det mulig å søke direkte på varenummer, eller varenavn og leverandør. Ved søk på varenummer og det kun listes med ett resultat, åpner produktvisningen seg automatisk. Dersom det skulle eksistere to eller flere produkter med samme varenummer, listes disse opp som et vanlig søk. Dersom varenummer er spesifisert prøver programmet å søke på varenummere. Dersom den ikke finner noen resultater for varenummer, prøver den å gjøre et søk på varenavn kombinert med leverandør. Resultatet er begrenset til å vise maks 250 produkter. Dette er strategisk for ytelse og brukeren har ikke behov for å presenteres med over 250 resultater.

Bevegelige skjemaer

Alle skjemaene er opptimalisert for å bevege rundt og utvides der det er hensiktsmessig.

Legg til produkter er det eneste skjema som er låst fast til sine fastsatte mål. Dette fordi det ikke har noen hensikt å utvide dette skjema og det blir mindre oversiktlig dersom man skulle prøve å utvide det. Alle skjemaer som åpnes opp ved bruk av ShowDialog er satt til å åpne sentrert, over det forrige skjema. Produkt søk skjema som benytter seg av Show, fungerer det ikke å sentrere på det forrige skjema, i stedet sentreres det på skjermen. Grunnet en større diskusjon på hvor vidt en bruker velger å utvide eller forholdeseg til slik skjema opprinnelig presenteres, er det valg å legge inn en overaskelse dersom man prøver å maksimere ProductSearch.

Tråder

Programmet benytter seg av selvstendige tråder for større operasjoner. Eksempel på slike operasjoner er importering av større mengde data og eksport av resultater til Excel. Det er ugunstig for tyngre oppgaver å kjøre i hoved tråden, noe som forårsaker at resten av programmet henger seg og man opplever at programmet fryser og i noen tilfeller (ikke svarer).

Under utvikling har er det enkelte ting som kunne vært gjort grundigere. Dette gjelder riktig implementering av Serilizable i Product.cs. Konsistent navngivning, utgangspunktet for prosjektet er Engelsk navnsetting, men klassen Product.cs inneholder en del norske ord og betegnelser.

Lokal database for å øke hastigheten på programmet. Denne vil erstatte det nåværende filsystemet, men filsystemet vil fortsatt være et supplement for datautveksling mellom lager og andre systemer som kjører Inventory Manager.

En felles oppslagsdatabase. Alle registrerte produkter lagres i en fellestjeneste for produktredigering. Under oppslag av produkt, dersom produktet ikke eksisterer i internt utvalg skal den sjekke med en fellestjeneste før den foreslår å registrere produktet selv. Alle instanser av Inventory Manager vil bidra med informasjon dersom kunden har samtykket til dette under kommende menyvalg innstillinger.

Enkelte skjemaer kan logisk kode separeres fra GUI. Skjemaet InventoryManager.cs er et godt eksempel på logisk kode separert fra GUI, hvor alle logiskeoperasjoner skjer ved bruk av Core.cs. Dessverre har ikke alle skjemaene like god standard som InventoryManager.cs.


Begrunnelse for noen viktige valg som er gjort

Filer VS Database

Inventory Manager benytter filer for å lagre og vedlikeholde informasjon. På denne måten er det uavhengig av en kjørende database eller tilkobling til internett. Ved distribusjon slipper man å tenkte på andre databaser og programmet kan fungere selvstendig. Enkelt å installere og ta i bruk Inventory Manager. Dette fungerer optimal med mindre mengder data og dersom Inventory Manager skal håndtere større mengder data er det selvfølgelig gunstig å behandle disse dataene med en database.

CultureInfo

Når vi konverterer fra tekst til tall, har vi forskjellige oppfatninger i verden på hvordan tall skal presenteres og tolkes. I Norge brukker vi 2,5 og i andre land som feks England bruker de 2.5. Under testing klarte ikke programmet å oppdage at maskinen var norsk og at den skulle konvertere 2,5 riktig. For å løse dette er programmet manuelt overstyrt under oppstart av programmet.

På denne måten fungerer programmet optimal for alle norske brukere, men dersom noen andre land prøver å ta i bruk programmet blir det feil tolking av kommaseparerte verdier.