Undress Gaver

From ICO wiki
Revision as of 22:07, 20 March 2016 by Ktilk (talk | contribs) (→‎XML osa)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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>