Undress Gaver

From ICO wiki
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 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>