Undress Gaver: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Sfatejev (talk | contribs)
Sfatejev (talk | contribs)
 
(9 intermediate revisions by 3 users not shown)
Line 2: Line 2:


[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]
== Lähtekood ==
Projekti koodi saab tõmmata [https://onedrive.live.com/redir?resid=79A919EABB58BA61!2954&authkey=!ANvsHS04l8PHgnU&ithint=file%2crar siit]
== Meeskond ja rollid ==
== Meeskond ja rollid ==


Line 16: Line 19:


== Analüüs ==
== Analüüs ==
On olemas mitmed laod. Inimesed näevad lao hetkeseisu, saavad tellida neile sobivaid tooteid, peale tellimist saavad automaatselt arvet. Meie laos hoitakse erinevaid tooteid, mis on hoitud kategooriate kaupa. Meie kliendid saavad teha meie süsteemis kasutajaid, erinevate rollidega, hallata neid, muuta andmeid. Igal meie töötajal on erinevate õigustega kasutaja, olenevalt tööpositsioonist. Kõikidest tellimustest ja kasutajategevustest on olemas ajalugu (logid), mille alusel saavad kliendid näha kõige populaarsemaid tooteid ning ka töötajad saaksid prognoosida, mis tooteid oleks vaja rohkem tellida ning milliseid vähem.
 
Rühma projektiks on lüüa laohaldussüsteem, mida on võimalik erinevatele ladudele rakendada st tehakse mitmeid üldistusi. Kliendid saavad näha laoseisu ning peale sobivate toodete tellimist saavad nad automaatselt genereeritud arve. Laos olevad tooted on jaotatud kategooriate kaupa. Rakenduse kasutajatele on võimalik määrata erinevaid rolle, rollid on seotud õigustega - näiteks admin saab hallata kõiki kasutajaid, muuta nende andmeid ning süsteemi uusi kasutajaid lisata. Tavakasutaja saab aga ainult tellimusi vormistada. Olulisel kohal on ka logifailid, proovime logides hoida kõiki kasutajate ja lao haldusega seotud toiminguid - uute kasutajate loomisi, andmete muutmisi jne. Toodete logid on olulised, et saaks prognoosida, millist kaupa tellida .. kõige aktiivsemad/tellitumad kaubad proovime välja tuua, et oleks kohe näha, mille järgi turul suur nõudlus on.


== Rakenduse sisu ==
== Rakenduse sisu ==
Line 29: Line 33:
*6. Kauba nimekiri erinevates ladudes
*6. Kauba nimekiri erinevates ladudes
*7. Tehtud tellimuste vaatamine
*7. Tehtud tellimuste vaatamine
*8. Toodetele CRUD


'''Rakenduses võiksid olla lisavõimalused (Could have):'''
'''Rakenduses võiksid olla lisavõimalused (Could have):'''
Line 395: Line 400:
</xsl:stylesheet>
</xsl:stylesheet>
</pre>
</pre>
[[File:XsltPilt.png]]
== Logi ==
*20.03 - Lehe loomine ja XML osa esitamine

Latest revision as of 23:57, 9 June 2016

Lähtekood

Projekti koodi saab tõmmata siit

Meeskond ja rollid

  • Marko Koiduste - Projektijuht
  • Jaanus Türnpuu
  • Sergei Fatejev
  • Kaspar Tilk

Idee

Plaan on luua laohaldussüsteem, kus inimesed saaksid esitada tellimusi.

Kasutatav .NET tehnoloogia

C#, Entity Framework, Web-API, AngularJS klientrakenduse loomiseks

Analüüs

Rühma projektiks on lüüa laohaldussüsteem, mida on võimalik erinevatele ladudele rakendada st tehakse mitmeid üldistusi. Kliendid saavad näha laoseisu ning peale sobivate toodete tellimist saavad nad automaatselt genereeritud arve. Laos olevad tooted on jaotatud kategooriate kaupa. Rakenduse kasutajatele on võimalik määrata erinevaid rolle, rollid on seotud õigustega - näiteks admin saab hallata kõiki kasutajaid, muuta nende andmeid ning süsteemi uusi kasutajaid lisata. Tavakasutaja saab aga ainult tellimusi vormistada. Olulisel kohal on ka logifailid, proovime logides hoida kõiki kasutajate ja lao haldusega seotud toiminguid - uute kasutajate loomisi, andmete muutmisi jne. Toodete logid on olulised, et saaks prognoosida, millist kaupa tellida .. kõige aktiivsemad/tellitumad kaubad proovime välja tuua, et oleks kohe näha, mille järgi turul suur nõudlus on.

Rakenduse sisu

Rakenduses on olemas järgmised võimalused (Must have):

  • 1. Kasutajate registreerimise süsteem
  • 2. Kasutajate haldussüsteem
  • 3. Sisse logimine
  • 4. Laoseisu jälgimine
  • 5. Kaupade tellimine
  • 6. Kauba nimekiri erinevates ladudes
  • 7. Tehtud tellimuste vaatamine
  • 8. Toodetele CRUD

Rakenduses võiksid olla lisavõimalused (Could have):

  • 1. Tehtud tellimuste muutmine
  • 2. Laoseisu analüüs - prognoosid
  • 3. Populaarseimate toodete list

Andmebaasiskeem

XML osa

XML-is hoitakse infot arvete kohta. Arvel on muuhulgas arve number, koostaja, tellija, tellitud tooted koos hindadega, arve koostanud ettevõtte juriidiline info, kuupäevad jne. XSLT-fail loob etteantud XML-failist arved, mida ka inimene suudab lugeda ja mõista.

XML Fail

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="Arved.xslt" ?>
<arved>
  <arve number="1337420" kuupäev="20.03.2016">
    <koostaja eesnimi="Kaspar" perenimi="Tilk">
      <kontaktandmed>
        <kontakt väärtus="kaspar.tilk" tüüp="Skype"/>
        <kontakt väärtus="53542343" tüüp="telefon"/>
      </kontaktandmed>
    </koostaja>
    <tellija eesnimi="Mait" perenimi="Poska"/>
    <tarneviis nimetus="kuller">
      <tarnija nimi="DPD"/>
    </tarneviis>
    <tellitudTooted>
      <toode nimi="banaan" kogus="2" ühik="kg" kategooria="puuvili" aktiivne="true">
        <tavahind väärtus="2" valuuta="€"/>
        <soodushind väärtus="1.50" valuuta="€"/>
        <kirjeldus><![CDATA[toores banaan]]></kirjeldus>
      </toode>
      <toode nimi="õun" kogus="3" ühik="kg" kategooria="puuvili" aktiivne="true">
        <tavahind väärtus="1" valuuta="€"/>
        <soodushind väärtus="0.50" valuuta="€"/>
        <kirjeldus><![CDATA[hapu õun]]></kirjeldus>
      </toode>
    </tellitudTooted>
    <käibemaksumäär väärtus="0%"/>
    <summad>
      <käibemaksuta väärtus="3" valuuta="€"/>
      <käibemaksuga väärtus="3" valuuta="€"/>
    </summad>
    <juriidilineInfo ettevõtteNimi="OÜ Puuvili" registrikood="420666" aadress="Keki tn, Keila">
      <pangakontod>
        <pangakonto pangaNimi="Swedbank" kontonr="EE12345678"/>
        <pangakonto pangaNimi="SEB" kontonr="EE87654321"/>
      </pangakontod>
      <kontaktandmed>
        <kontakt väärtus="puu@vili.ee" tüüp="E-mail"/>
        <kontakt väärtus="531337" tüüp="Telefon"/>
      </kontaktandmed>
    </juriidilineInfo>
    <lisainfo><![CDATA[Täname tellimuse eest!]]></lisainfo>
    <tähtaeg kuupäev="21.03.2016"/>
  </arve>

  <arve number="1337420" kuupäev="20.03.2016">
    <koostaja eesnimi="Kaspar" perenimi="Tilk">
      <kontaktandmed>
        <kontakt väärtus="kaspar.tilk" tüüp="Skype"/>
        <kontakt väärtus="53542343" tüüp="Telefon"/>
      </kontaktandmed>
    </koostaja>
    <tellija eesnimi="Andres" perenimi="Käver"/>
    <tarneviis nimetus="kuller">
      <tarnija nimi="DPD"/>
    </tarneviis>
    <tellitudTooted>
      <toode nimi="banaan" kogus="2" ühik="kg" kategooria="puuvili" aktiivne="true">
        <tavahind väärtus="2" valuuta="€"/>
        <soodushind väärtus="1.50" valuuta="€"/>
        <kirjeldus><![CDATA[toores banaan]]></kirjeldus>
      </toode>
      <toode nimi="õun" kogus="3" ühik="kg" kategooria="puuvili" aktiivne="true">
        <tavahind väärtus="1" valuuta="€"/>
        <soodushind väärtus="0.50" valuuta="€"/>
        <kirjeldus><![CDATA[hapu õun]]></kirjeldus>
      </toode>
    </tellitudTooted>
    <käibemaksumäär väärtus="0%"/>
    <summad>
      <käibemaksuta väärtus="3" valuuta="€"/>
      <käibemaksuga väärtus="3" valuuta="€"/>
    </summad>
    <juriidilineInfo ettevõtteNimi="OÜ Puuvili" registrikood="420666" aadress="Keki tn, Keila">
      <pangakontod>
        <pangakonto pangaNimi="Swedbank" kontonr="EE12345678"/>
        <pangakonto pangaNimi="SEB" kontonr="EE87654321"/>
      </pangakontod>
      <kontaktandmed>
        <kontakt väärtus="puu@vili.ee" tüüp="E-mail"/>
        <kontakt väärtus="531337" tüüp="telefon"/>
      </kontaktandmed>
    </juriidilineInfo>
    <lisainfo><![CDATA[Täname tellimuse eest!]]></lisainfo>
    <tähtaeg kuupäev="21.03.2016"/>
  </arve>
</arved>

XML Skeemifail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="arved">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="128" name="arve">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="koostaja">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="kontaktandmed">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="16" name="kontakt">
                            <xs:complexType>
                              <xs:attribute name="väärtus" type="xs:string" use="required" />
                              <xs:attribute name="tüüp" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="eesnimi" type="xs:string" use="required" />
                  <xs:attribute name="perenimi" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="tellija">
                <xs:complexType>
                  <xs:attribute name="eesnimi" type="xs:string" use="required" />
                  <xs:attribute name="perenimi" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="tarneviis">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="tarnija">
                      <xs:complexType>
                        <xs:attribute name="nimi" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="nimetus" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="tellitudTooted">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="128" name="toode">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="tavahind">
                            <xs:complexType>
                              <xs:attribute name="väärtus" type="xs:decimal" use="required" />
                              <xs:attribute name="valuuta" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="soodushind">
                            <xs:complexType>
                              <xs:attribute name="väärtus" type="xs:decimal" />
                              <xs:attribute name="valuuta" type="xs:string" />
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="kirjeldus" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="nimi" type="xs:string" use="required" />
                        <xs:attribute name="kogus" type="xs:unsignedByte" use="required" />
                        <xs:attribute name="ühik" type="xs:string" use="required" />
                        <xs:attribute name="kategooria" type="xs:string" />
                        <xs:attribute name="aktiivne" type="xs:boolean" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="käibemaksumäär">
                <xs:complexType>
                  <xs:attribute name="väärtus" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="summad">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="käibemaksuta">
                      <xs:complexType>
                        <xs:attribute name="väärtus" type="xs:decimal" use="required" />
                        <xs:attribute name="valuuta" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="käibemaksuga">
                      <xs:complexType>
                        <xs:attribute name="väärtus" type="xs:decimal" use="required" />
                        <xs:attribute name="valuuta" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="juriidilineInfo">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="pangakontod">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="32" name="pangakonto">
                            <xs:complexType>
                              <xs:attribute name="pangaNimi" type="xs:string" use="required" />
                              <xs:attribute name="kontonr" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="kontaktandmed">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="32" name="kontakt">
                            <xs:complexType>
                              <xs:attribute name="väärtus" type="xs:string" use="required" />
                              <xs:attribute name="tüüp" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="ettevõtteNimi" type="xs:string" use="required" />
                  <xs:attribute name="registrikood" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="aadress" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="lisainfo" type="xs:string" />
              <xs:element name="tähtaeg">
                <xs:complexType>
                  <xs:attribute name="kuupäev" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="number" type="xs:unsignedInt" use="required" />
            <xs:attribute name="kuupäev" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
          <title>Arved</title>
        </head>
        <body>
          <xsl:for-each select="/arved/arve">
            <div>
              <p>
                <b>Arve nr <xsl:value-of select="@number"/></b> Koostatud <xsl:value-of select="@kuupäev"/>
              </p>
              <p>
                Koostaja: <xsl:value-of select="koostaja/@eesnimi"/><xsl:value-of select="koostaja/@perenimi"/>
                <ul>
                  <xsl:for-each select="./koostaja/kontaktandmed/kontakt">
                    <li>
                      <xsl:value-of select="@tüüp"/>: <xsl:value-of select="@väärtus"/>
                    </li>
                  </xsl:for-each>
                </ul>
              </p>
              <p>
                Tellija: <xsl:value-of select="./tellija/@eesnimi"/> <xsl:value-of select="./tellija/@perenimi"/>
              </p>
              <table border="1" cellpadding="4" cellspacing="0">
                <tr>
                  <th>Toote nimetus</th>
                  <th>Kogus</th>
                  <th>Ühik</th>
                  <th>Hind</th>
                </tr>
                <xsl:for-each select="./tellitudTooted/toode">
                  <tr align="center">
                    <td>
                      <xsl:value-of select="@nimi"/>
                    </td>
                    <td>
                      <xsl:value-of select="@kogus"/>
                    </td>
                    <td>
                      <xsl:value-of select="@ühik"/>
                    </td>
                    <td>
                      <xsl:value-of select="./tavahind/@väärtus"/><xsl:value-of select="./tavahind/@valuuta"/>
                    </td>
                  </tr>
                </xsl:for-each>
                <tr>
                  <td colspan="3" align="right">
                    Summa käibemaksuta:
                  </td>
                  <td colspan="1" align="center">
                    <xsl:value-of select="./summad/käibemaksuta/@väärtus"/><xsl:value-of select="./summad/käibemaksuta/@valuuta"/>
                  </td>
                </tr>
                <tr>
                  <td colspan="3" align="right">
                    Käibemaksumäär:
                  </td>
                  <td colspan="1" align="center">
                    <xsl:value-of select="./käibemaksumäär/@väärtus"/>
                  </td>
                </tr>
                <tr>
                  <td colspan="3" align="right">
                    <b>Summa käibemaksuga:</b>
                  </td>
                  <td colspan="1" align="center">
                    <b><xsl:value-of select="./summad/käibemaksuga/@väärtus"/><xsl:value-of select="./summad/käibemaksuga/@valuuta"/></b>
                  </td>
                </tr>
              </table>
              <p>
                <b>Juriidiline info</b>
                <xsl:variable name="info" select="./juriidilineInfo"/>
                <br/>
                Ettevõte: <xsl:value-of select="$info/@ettevõtteNimi"/>
                <br/>
                Aadress: <xsl:value-of select="$info/@aadress"/>
                <br/>
                Registrikood: <xsl:value-of select="$info/@registrikood"/>
                <br/>
                <xsl:for-each select="$info/pangakontod/pangakonto">
                  <xsl:value-of select="@pangaNimi"/>: <xsl:value-of select="@kontonr"/>
                  <br/>
                </xsl:for-each>
                <xsl:for-each select="$info/kontaktandmed/kontakt">
                  <xsl:value-of select="@tüüp"/>: <xsl:value-of select="@väärtus"/>
                  <br/>
                </xsl:for-each>
              </p>
              <p>
                Maksetähtaeg: <b>
                  <xsl:value-of select="./tähtaeg/@kuupäev"/>
                </b>
                <br/>
                <xsl:value-of select="./lisainfo"/>
              </p>
            </div>
          </xsl:for-each>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

Logi

  • 20.03 - Lehe loomine ja XML osa esitamine