TeravC

From ICO wiki
Jump to navigationJump to search

Ülevaade

Üldine eesmärk. Luua programm, millega saaks mugavalt hallata autovaruosade müüki. Selle valdkonna valis välja Tarmo, kes samal elualal töötab. Teistel meeskonnaliikmetel olid samuti ärirakenduste ja laoprogrammide loomise ideed, aga valitud teema tundus kõige konkreetsem. Projekti juhiks määratigi Tarmo. Funktsionaalsused ise ei ole originaalsed, aga eesmärgiks on kirjutaja enda kasutuskogemusele tuginedes erinevate samalaadsete programmide parimate külgede kokku koondamine ja loomuilikut praktilise kogemuse saamine sellise rakenduse loomisel. Põhilised funktsioonid ja komponendid millele võiks tähelepanu pöörata oleks seotud selliste märksõnadega.

Klientide tellimused

  • kliendi tellimuse seisu näitamine (täidetud, järeltellimuses, täitmisel)

Arved

  • Kliendile arve koostamine ja saatmine.
  • Arvete koostamine vastavalt kliendile. Enda artiklite kõrval trükitakse arvel ka kliendi artiklinumbreid.
  • Hinnapakkumiste koostamine.
  • Hinna ja allahindlusprotsendi näitamine vastavalt kliendi id-le.
  • Võlgnevuse puhul näidatakse kliendi tellimuse sisestamisel hoiatust.

Artiklite andmebaas

  • Artikli otsimine numbri, osalise numbri, nimetuse või muude kriteeriumide järgi.
  • võrdlusnumbrite lisamine andmebaasi.
  • Pildi lisamine artiklile.
  • Tootja tehnilise info lingi lisamine artiklile
  • Artikli puhul saab vaadata nimekirja, millistele automudelitele ta sobib.

Tarnijatega seotu

  • Tarnija kontaktide lisamine ja kustutamine
  • Tarnijatele esitatud tellimuste oleku näitamine.
  • Lao täiendamisvajaduse üle arve pidamine.
  • Tarnijatelt tellitud osade nimekiri koos infoga, millal telliti, kellelt ja hinnatav saabumisaeg.
  • Laomiinimumide lisamine, muutmine ja kustutamine.

Võimalusi rakenduse täiustamiseks on, nagu näha, päris palju. Suure tõenäosusega ei jõua me neid kõiki realiseerida. Peamine oleks teha need osad, mida jõuame, nii, et hiljem oleks võimalus soovitavaid täiendusi lisada.

Analüüs

Põhiprotsessi kirjeldused

Allolev kirjeldus toob välja tegevused, mida loodav C# rakendus peaks toetama. Selle eesmärk on ühtlustada arusaama, millise funktsionaalsusega rakendus on ning mis eesmärki loodud funktsioonid täidavad.

Müügi protsess

  1. Klient helistab või saadab emaili teel Müüjale tellimuse.
  2. Müüja avab uue Arve, valib Kliendi ja sisestab tellitud Artiklid koos kogustega
    1. Müüja valib tööriista-ribalt "Uus Arve", mille järel avaneb Arve sisestus-vorm koos Arve päise ning detailidega.
    2. "Arve Number" ja "Kuupäev" teksti kastid Arve päises täituvad automaatselt.
    3. Arve päises Müüja sisestab või valib "Kliendikood" combobox'ist või "Kliendinimi" combobox'ist vastava Kliendi.
    4. Peale Kliendi valimist muutub aktiivseks Arve detailide sektsiooni (Datagrid) esimese rea esimene väli: "Artikli Nr"
    5. Peale Artikli koodi sisestamist täitub automaatselt vastava rea "Nimetus" lahter, kogus üks, hind ja summa. Muutub aktiivseks "Kogus" lahter.
  3. Peale koguse uuendamist ja Enter klahvi vajutust, tekitatakse uus Artikli rida ...
  4. Müüja saab Artikli kohta andmbebaasist võrdlusnumbrite, nimetuse või muude kriteeriumide järgi infot otsida.
    1. sisestades Ctrl + Enter, hetkel mil kursor asub "Artikli Nr" väljal, avab Artikli Otsimise Akna.
    2. Artikli Otsimise Akna päises asub tekstikast ning kõrval luubi ikooniga "Otsing" nupp.
    3. Sisestades tekstikasti sõna või koodi ning vajutades "Otsing" nuppu või Enter klahvi, kuvatakse all Otsingutulemuste sektsioonis (Listbox) otsingutulemusi.
    4. Tehes topeltklõpsu vastava Listbox rea peal, või valides nooltega ning Enter vajutusega, kaob ära Artikli Otsimise Aken ning täidetakse ära automaatselt "Artikli Nr" väli.
  5. Müüja trükib välja pakkumise juhul kui reaalset müüki veel ei toimu.
    1. Müüja vajutab "Trüki Pakkumine" nuppu, misjärel vastav pakkumine saadetakse printimstööna eelseadistatud printerisse.
    2. Müüja vajutab "Saada Pakkumine" nuppu, misjärel avaneb MS Outlook aken koos Eeltäidetud e-mail tekstiga ning manuses oleva pakkumisega. Siht-aadress võetakse vastava Kliendi andmetest.
  6. Müüja suleb arve ja trükib välja. (Laoseisust arvatakse arvele kantud artiklid maha.)
    1. Müüja vajutab "Sulge Arve" nuppu
    2. "Sulge Arve" nupu vajutuse järel muutuvad kõik sisestamise väljad mitte-aktiivseks (disabled).
    3. Arve staatus muutub olekust "Avatud" olekusse "Suletud"
    4. Müüja vajutab "Trüki Arve" nuppu, misjärel Arve trükkimise käsk saadetakse eelseadistatud printerile.

Lao täiendamise protsess

  1. Ostujuht kontrollib iga päev lao täiendamise vajadust.
    1. Ostujuht valib Artiklid -> Täendamine, misjärel avaneb Lao Täiendamise aken.
    2. Lao Täiendamise Datagrid on järgneva struktuuriga: "Artikli Nr"; "Artikli nimetus"; "Miinimum kogus"; "Laoseis"; "Tellitav kogus"; "Tarnija"; "Tellitud kuupäeval"
    3. Näha on ainult neid artikleid, mille laoseis on väiksem kui määratud miinimumkogus.
  2. Igale täiendamisvajaduse nimekirjas olevale Artiklile valib ta Tarnija ja tellitava koguse
    1. "Tellitav kogus" tekstikast, kuhu Ostujuht sisestab tellitava koguse
    2. "Tarnija" combobox, kuskohast Ostujuht valib Tarnija
  3. Lao Täiendamise akna päisest valib Ostujuht Tarnija, kellele tellimus teha ning vajutab nuppu "Loo tellimus".
    1. Ostujuht valib raja, kuhu salvestada vastava tellimuse ekspordifail
    2. Täiendamise tabelis vastavate Artiklite "Tellitud kuupäeval" lahtritesse ilmub käesolev kuupäev
  4. Kauba lattu sissetulekul sisestab Ostujuht arvele võetud koguse ja hinna.
    1. Tarnija poolt saabub kaup
    2. Saabunud kaup (Artiklid) kontrollitakse saatelehe abil üle
    3. Ostujuht avab Artiklite Nimekirja
    4. Ostujuht lisab iga lattu tulnud Artikli koguse vastava Rea "Laoseis" väärtusele
    5. Peale laoseisu uuendamist rakendus kontrollib, kui uus laoseis > miinimumkogus, siis teeb tühjaks vastava Artikli "Tellitav kogus", "Tarnija" ja "Tellitud kuupäeval" lahtrid.

Funktsionaalsus

Hea ülevaate funktsionaalsusest annab plaanitav menüü struktuur: https://docs.google.com/drawings/d/1SaQAW99FBppKlZ5sTWAh8q-b-AMCoBtpIhLBYCS8K0c/edit?hl=en_US

Artiklid

Must have
  1. Artikli lisamine artiklite andmebaasi
  2. artikli hinna ja lattu sisse tulnud koguse sisestamine.
  3. artikli kustutamine
  4. artikli nimetuse muutmine
  5. artiklile miinimumkoguse määramine
  6. artikli laokoguse vaatamine.
  7. artiklile miinimumkoguse määramine laos.
  8. võimalus alla miinimumkoguse vähenenud artiklite nimekirja esitamiseks ehk täiendamisvajaduse näitamine.
Nice to have
  1. Artiklite hinna arvestamin keskmise, FIFO, või LIFO meetodil.
  2. Artiklile peaks saama lisada võrdlusnumbreid ja neid ka ära kustutada. Näiteks:

meie laoartikli nr on 123456, sellele vastavad Volvo nr23434; Scania nr 45454, Boschi nr 0454533345 jne

  1. artikli otsimine: nimetuse, võrdlusnumbri, laonumbri järgi

Artiklite täiendamisvajaduse nimekiri

Must have
  1. Nimekirjas näidatakse, ühes tulbas artikli laoseisu ja teises temale omistatud miinimumkogust, mis peaks laos olema.
  2. Artikli koguse suurenemisel üle miinimumkoguse (tuli lattu uuesti juurde), kaob antud artikkel täiendamisvajaduse nimekirjast
  3. Artiklile saab juurde kirjutada tarnija nime ja siis tarnijate järgi nimekirja näitek tekstifaili eksportida, et tarnijale tellimus esitada.
  4. Need artiklid, mis on tarnijalt tellitud, saab märkida tellituks.
  5. Tellitud artiklile saab nimekirja juurde lisada tarnija nime, tellitud koguse, eeldatava saabumisaja
Nice to have
  1. Veel tellimata artiklile võiks vaikimisi pakkuda tarnijaks seda, kelle käest viimati teda osteti.
  2. Kui artikkel ei ole näiteks aasta jooksul või muu pikema perioodi sees enne viimast mahakandmist liikunud, võiks näidata hoiatust, et võibolla ei ole seda enam vaja peale tellida.

Arved

Must have
  1. vastava kliendi allahindluse arvestamine lisatavatele artiklitele
  2. iseenesest mõistetavalt koguste järgi summade arvutamine
  3. laoseisust arvutatakse maha arvele pandud kogus
Nice to have
  1. kliendinumbri järgi kliendiandmetest arve koostamine (kliendi, nimi, aadress, talle antud maksetähtaeg jne)
  2. kui meie artiklite andmebaasis on olemas valitud artiklitele vastavad kliendi enda artiklinumbrid, siis koos meie numbritega kanda arvele ka kliendi numbrid. Nii on kliendil mugavam meie kaupa arvele võtta.
  3. kui arvele sisestatud artikli laoseis on väiksem sisestatud kogusest, ilmub selle kohta teade või muu märguanne, näiteks rida värvitakse punaseks ja pannakse reale ainult saadaolev kogus vms.
  4. Kui kliendil on võlgnevusi, siis ilmub kliendi numbri sisestamisel arve koostamisel hoiatus.
  5. kliendile saadetakse e-mailile tellimuse kinnitus
  6. teksitfaili kujul saadud kliendi tellimuse importimine ja arvele kandmine. Näiteks klient saadab tekstifaili sisuga
  • kliendi artiklinr 1, kogus
  • klielndi artiklinr 2, kogus

Kontaktid

Must have
  1. Tarnija või kliendi lisamine ja kustutamine nimekirja

Milliste osade realiseerimine võib osutuda problemaatiliseks

Üritasime hetketeadmistest lähtuvalt võimalikult objektiivselt analüüsida eri komponentide teostamise raskusastet. Leidsime, et kõik mis võib olla seotud arvete reporteerimise, e-mailile saatmise või dokumendi pdf kujule viimisega, samuti võimalusega trükkida välja arve kliendi artiklinumbritega võib osutuda mõnevõrra keerulisemaks. Sellest tulenevalt ka põhjus, miks antud komponendid on nice to have listis kuid võimaluse korral soovime nimetatud funtsionaalsuse kindlasti realiseerida.

Andmemudel

Vaata ka andmebaasi dokumentatsiooni: File:Teravc andmebaas.pdf
Kogu andmebaas (CREATE): teravc_db.sql

Prototüüp

31.10.2011 - Faas 1: Sobivate kasutajaliidese teekide valik

Võiks kaaluda WPF Ribbon ja Avalondock teekide kasutamist.

17.11.2011 - Faas2

  • Teostatud laias laastus:
    • Menüü kondikava
    • Artiklite nimekiri
    • Uue artikli lisamine
    • Olemasoleva artikli muutmine (vajab debugimist)

26.11.2011 Prototüüp

Prototüübi testimiseks tuleks paigaldada testitavasse arvutisse SQL Express 2008 (http://www.microsoft.com/download/en/details.aspx?id=1695) ja luua uus andmebaas nimega "teravc". Seejärel sisse lugeda alltoodud SQL laused. (vt. SQL express andmebaasi loomine)

09.12.2011 Lõpp-produkt

Testimiseks tuleks paigaldada testitavasse arvutisse SQL Express 2008 (http://www.microsoft.com/download/en/details.aspx?id=1695) ja luua uus andmebaas nimega "teravc". Seejärel sisse lugeda alltoodud SQL laused. (vt. SQL express andmebaasi loomine)


TODO
  • Arvete nimekirjast arve valimine ja muutmine
  • Arve printimine ilma arve numbrit sisestamata
BUGid
  • One-Click installeriga installides pole CrystalReports *.rpt failid ja Help.chm kätte saadavad. (Tuleb luua installer millega võimalik kontrollida failide paigutamist)

10.12.2011 Lõpp-produkt

Ressursid

GUI

Andmebaas

Versioonihaldus

Help rakenduses ja kasutusjuhend

PDF genereerimine ja printimine

Retsensioonid

Analüüsi retsensioon

Analüüs on põhjalik. Projekt ja idee äärmiselt ambitsioonikas ning mahukas töö poolest. Meeskonnale tahame soovitada, et nad ei püüaks väga põhjalikku ja paljude funktsionaalsustega rakendust tegema hakata, sest sel juhul võib projekt kasvada mahult üle pea.

Praeguses seisus tundub, et tegu on ühe kasutaja desktop rakendusega, mis kasutab MS SQL Management Studio Express 2008 andmebaasi. Kindlasti tasuks laoprogrammi puhul mõelda mitme töökoha võimalusele.

Andmebaasi kirjeldus oleks võinud juba olemas olla, kuna see on väga oluline osa rakendusest. Võib välja lugeda, et sisuliselt hallatakse nii kliente, tarnijaid, artikleid kui ka arveid. Artiklite täiendamisvajaduste nimekiri on ilmselt standardpäring artiklite andmetest. Eraldi tabelit või staatust tal vist olema ei peaks. Kindlasti tuleks läbi mõelda milliseid andmeid arhiveeritakse ja varundatakse.

Kliendihaldust plaanitakse ilmselt ise teha (analüüsis Kontaktide osa). Samas võiks mõelda tulevikus sellele, et kliendihaldusprogramme on päris mitmeid ja võiks olla mingi moodus enamlevinud rakendustega seda ühildada. Muidu võib juhtuda, et lisaks laorakendusele tuleb teha ka kliendihaldusrakendus, mis oma mahult on samuti piisavalt suur. Laoarvestuses on LIFO kasutamisest praegusel ajal praktikas loobutud, seega soovitame selle osa rakendusest välja jätta. Tundub, et meeskond on oma rakenduse üle põhjalikult mõtelnud ja on tugevalt motiveeritud, et töö tähtajaks valmis saada. Loodame, et projekt õnnestub ja ka meil on sellest mõndagi õppida.

Meeskond LeemurDotNet