Undress Gaver
From ICO wiki
Meeskond ja rollid
- Marko Koiduste - Projektijuht
- Jaanus Türnpuu
- Sergei Fatejev
- Kaspar Tilk
Idee
Kasutatav .NET tehnoloogia
C#, Entity Framework, Web-API, AngularJS klientrakenduse loomiseks
Analüüs
Rakenduse sisu
Rakenduses on olemas järgmised võimalused (Must have):
- 1.
- 2.
- 3.
Rakenduses võiksid olla lisavõimalused (Should have):
- 1.
- 2.
- 3.
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>