Undress Gaver: Difference between revisions
From ICO wiki
Jump to navigationJump to search
| Line 34: | Line 34: | ||
== XML osa == | == 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 Fail === | ||
<pre> | <pre> | ||
Revision as of 21:07, 20 March 2016
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>