Talupood: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 12: Line 12:


==XML==
==XML==
===Teema===
===XML===
<source lang="xml">
<?xml version="1.0" encoding="utf-8" ?>
<Ostukorvid>
  <Ostukorv Id="1">
    <Andmed>
      <Kuupäev>17.03.2017</Kuupäev>
      <Kasutaja Id="1" Külaline="false">
        <KasutajaNimi>Kalle</KasutajaNimi>
      </Kasutaja>
      <Aadress>Tallinn, Raja 4c</Aadress>
      <Telefon Tüüp="home">33333333</Telefon>
      <Soodustus></Soodustus>
      <ArveSaaja>Kalle</ArveSaaja>
      <ArveAadress>Tallinn, Raja 4c</ArveAadress>
      <Märkus>Lisa info tellimuse kohta</Märkus>
    </Andmed>
    <Tooted>
      <Toode Id="1" TooteNimi="Kartul">
        <Talu Id="1">
          <TaluNimi>Juhani</TaluNimi>
        </Talu>
        <TellitavKogus>10.5</TellitavKogus>
        <Yhik>kg</Yhik>
        <TooteYhikuHind>1.0</TooteYhikuHind>
      </Toode>
      <Toode Id="1" TooteNimi="Kartul">
        <Talu Id="1">
          <TaluNimi>Juhani</TaluNimi>
        </Talu>
        <TellitavKogus>10.5</TellitavKogus>
        <TooteYhikuHind>1.0</TooteYhikuHind>
        <Yhik>kg</Yhik>
      </Toode>
      <Toode Id="2" TooteNimi="Tomat">
        <Talu Id="1">
          <TaluNimi>Juhani</TaluNimi>
        </Talu>
        <TellitavKogus>1</TellitavKogus>
        <Yhik>tk</Yhik>
        <TooteYhikuHind>2.5</TooteYhikuHind>
      </Toode>
      <Toode Id="4" TooteNimi="Sibul">
        <Talu Id="3">
          <TaluNimi>Jaani</TaluNimi>
        </Talu>
        <TellitavKogus>2</TellitavKogus>
        <Yhik>kg</Yhik>
        <TooteYhikuHind>0.5</TooteYhikuHind>
      </Toode>
    </Tooted>
  </Ostukorv>
  <Ostukorv Id="2">
    <Andmed>
      <Kuupäev>18.03.2017</Kuupäev>
      <Kasutaja Id="1" Külaline="true">
        <KasutajaNimi>Peeter</KasutajaNimi>
      </Kasutaja>
      <Aadress>Tallinn, Raja 4c</Aadress>
      <Telefon Tüüp="work">555555555</Telefon>
      <Soodustus></Soodustus>
      <ArveSaaja>Peeter</ArveSaaja>
      <ArveAadress>Peetriküla</ArveAadress>
      <Märkus></Märkus>
    </Andmed>
    <Tooted>
      <Toode Id="2" TooteNimi="Tomat">
        <Talu Id="1">
          <TaluNimi>Juhani</TaluNimi>
        </Talu>
        <TellitavKogus>1</TellitavKogus>
        <Yhik>tk</Yhik>
        <TooteYhikuHind>2.5</TooteYhikuHind>
      </Toode>
    </Tooted>   
  </Ostukorv>
  <Ostukorv Id="3">
    <Andmed>
      <Kuupäev>18.03.2017</Kuupäev>
      <Kasutaja Id="2" Külaline="true">
        <KasutajaNimi>Malle</KasutajaNimi>
      </Kasutaja>
      <Aadress>Pärnu, Raja 4</Aadress>
      <Telefon Tüüp="home">555555555</Telefon>
      <Soodustus>0.1</Soodustus>
      <ArveSaaja>Malle</ArveSaaja>
      <ArveAadress>Pärnu, Raja 4</ArveAadress>
      <Märkus></Märkus>
    </Andmed>
    <Tooted>
      <Toode Id="1" TooteNimi="Kartul">
        <Talu Id="1">
          <TaluNimi>Juhani</TaluNimi>
        </Talu>
        <TellitavKogus>10.5</TellitavKogus>
        <Yhik>kg</Yhik>
        <TooteYhikuHind>1.0</TooteYhikuHind>
      </Toode>
      <Toode Id="4" TooteNimi="Sibul">
        <Talu Id="3">
          <TaluNimi>Jaani</TaluNimi>
        </Talu>
        <TellitavKogus>2</TellitavKogus>
        <Yhik>kg</Yhik>
        <TooteYhikuHind>0.5</TooteYhikuHind>
      </Toode>
          <Toode Id="5" TooteNimi="Liha">
        <Talu Id="1">
          <TaluNimi>Nöpri</TaluNimi>
        </Talu>
        <TellitavKogus>1</TellitavKogus>
        <Yhik>kg</Yhik>
        <TooteYhikuHind>2.5</TooteYhikuHind>
      </Toode>
    </Tooted>
  </Ostukorv>
</Ostukorvid>
===XML schema (XSD)===
<source lang="xml">
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Ostukorvid">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Ostukorv">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Andmed">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Kuupäev" type="xs:string" />
                    <xs:element name="Kasutaja">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="KasutajaNimi" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="Id" type="xs:int" use="required" />
                        <xs:attribute name="Külaline" type="xs:boolean" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Aadress" type="xs:string" />
                    <xs:element name="Telefon">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedInt">
                            <xs:attribute name="Tüüp" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Soodustus" />
                    <xs:element name="ArveSaaja" type="xs:string" />
                    <xs:element name="ArveAadress" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Tooted">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="Toode">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:choice maxOccurs="unbounded">
                            <xs:element name="Talu">
                              <xs:complexType>
                                <xs:sequence>
                                  <xs:element name="TaluNimi" type="xs:string" />
                                </xs:sequence>
                                <xs:attribute name="Id" type="xs:int" use="required" />
                              </xs:complexType>
                            </xs:element>
                            <xs:element name="TellitavKogus" type="xs:decimal" />
                            <xs:element name="Yhik" type="xs:string" />
                            <xs:element name="TooteYhikuHind" type="xs:decimal" />
                          </xs:choice>
                        </xs:sequence>
                        <xs:attribute name="Id" type="xs:int" use="required" />
                        <xs:attribute name="TooteNimi" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="Id" type="xs:int" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
===XSLT===
<source lang="xml">
<?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>
        <link href="mystyle.css" rel="stylesheet" type="text/css" />
      </head>
      <body>
        <xsl:for-each select="Ostukorvid/Ostukorv">
          <h1>
            Tellimus nr:
            <xsl:value-of select="@Id"/>
          </h1>
          <h3>
          <xsl:choose>
            <xsl:when test="Andmed/Kasutaja/@Külaline = 'true'">
              <xsl:text>KÜLALINE </xsl:text>
            </xsl:when>
            <xsl:when test="Andmed/Kasutaja/@Külaline = 'false'">
              <xsl:text>REG KASUTAJA </xsl:text>
            </xsl:when>
            <xsl:otherwise>
              <xsl:text>ADMIN</xsl:text>
            </xsl:otherwise>
          </xsl:choose>
          </h3>
          <br/>
          <table id="table1">
            <xsl:variable name="Tellija" select="Andmed/ArveSaaja"/>
            <xsl:variable name="Aadress" select="Andmed/ArveAadress"/>
            <xsl:variable name="Isik" select="Andmed/Kasutaja/KasutajaNimi"/>
            <xsl:variable name="Telefon" select="Andmed/Telefon"/>
            <tr>
              <td width="40%">
                Tellija:
              </td>
              <td>
                <xsl:value-of select="$Tellija"/>
              </td>
            </tr>
            <tr>
              <td>Aadress:</td>
              <td>
                <xsl:value-of select="$Aadress"/>
              </td>
            </tr>
            <tr>
              <td>Kontaktisik:</td>
              <td>
                <xsl:value-of select="$Isik"/>
                <xsl:text>, Tel:  </xsl:text>
                <xsl:value-of select="$Telefon"/>
              </td>
            </tr>
          </table>
          <h2></h2>
          <table>
            <!-- Temp Kogusumma arvutamiseks -->
            <xsl:variable name="Summa">
              <xsl:variable name="SummaTemp">
                <xsl:for-each select="Tooted/Toode">
                  <number>
                    <xsl:value-of select="TellitavKogus * TooteYhikuHind"/>
                  </number>
                </xsl:for-each>
              </xsl:variable>
              <xsl:value-of select="sum(msxsl:node-set($SummaTemp)/number)"/>
            </xsl:variable>
            <tr>
              <th colspan="7" bgcolor="#848484">Valitud tooted</th>
            </tr>
            <tr>
              <th>Nr</th>
              <th>Talu</th>
              <th>Kaup</th>
              <th>Ühik</th>
              <th>Kogus</th>
              <th>Hind</th>
              <th>Summa</th>
            </tr>
            <xsl:for-each select="Tooted/Toode">
              <xsl:sort select="Talu/TaluNimi"/>
              <tr>
                <td>
                  <xsl:value-of select="position()"/>
                </td>
                <td>
                  <xsl:value-of select="Talu/TaluNimi"/>
                </td>
                <td>
                  <xsl:value-of select="@TooteNimi"/>
                </td>
                <td>
                  <xsl:value-of select="Yhik"/>
                </td>
                <td>
                  <xsl:choose>
                    <xsl:when test="Yhik = 'kg'">
                      <xsl:value-of select="format-number(TellitavKogus, '0.00')"/>
                    </xsl:when>
                    <xsl:when test="Yhik = 'tk'">
                      <xsl:value-of select="format-number(TellitavKogus, '0')"/>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:value-of select="format-number(TellitavKogus, '0.00')"/>
                    </xsl:otherwise>
                  </xsl:choose>
                </td>
                <td>
                  <xsl:value-of select="format-number(TooteYhikuHind, '0.00')"/>                 
                </td>
                <td>
                  <xsl:value-of select="format-number(TellitavKogus * TooteYhikuHind, '0.00')"/>
                </td>
              </tr>
            </xsl:for-each>
            <tr>
              <td colspan="5" rowspan="4"  style="text-align:left;vertical-align:top" >Märkused:</td>
            </tr>
            <tr>
              <td>Summa</td>
              <td>
                <xsl:value-of select="format-number($Summa, '0.00')"/>
              </td>
            </tr>
            <tr>
              <td>20%:</td>
              <td>
                <xsl:value-of select="format-number($Summa * 0.2, '0.00')"/>
              </td>
            </tr>
            <tr>
              <td>Kokku:</td>
              <td>
                <xsl:value-of select="format-number($Summa * 1.2, '0.00')"/>
              </td>
            </tr>
          </table>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>


=Retsensioonid=
=Retsensioonid=
==XML==

Revision as of 08:58, 20 March 2017

Meeskond

Mihkel Matson
Taavi Tilk

Idee

Jätkame C# aines alustatud ideed, milleks oli talutoodete tellimise keskkond (sarnane epoele). Idee täpsemalt on pakkuda kvaliteetseid ja värskeid talude saadusi otse tootjalt läbi selleks ettenähtud veebirakenduse. Klient saab veebilehel valida tooteid, vormistada tellimusi ning talunik omalt poolt hallata tooteid, tellimusi ja kliente.


Projekt

XML

Teema

XML

<source lang="xml"> <?xml version="1.0" encoding="utf-8" ?> <Ostukorvid>

 <Ostukorv Id="1">
   <Andmed>
     <Kuupäev>17.03.2017</Kuupäev>
     <Kasutaja Id="1" Külaline="false">
       <KasutajaNimi>Kalle</KasutajaNimi>
     </Kasutaja>
     <Aadress>Tallinn, Raja 4c</Aadress>
     <Telefon Tüüp="home">33333333</Telefon>
     <Soodustus></Soodustus>
     <ArveSaaja>Kalle</ArveSaaja>
     <ArveAadress>Tallinn, Raja 4c</ArveAadress>
     <Märkus>Lisa info tellimuse kohta</Märkus>
   </Andmed>
   <Tooted>
     <Toode Id="1" TooteNimi="Kartul">
       <Talu Id="1">
         <TaluNimi>Juhani</TaluNimi>
       </Talu>
       <TellitavKogus>10.5</TellitavKogus>
       <Yhik>kg</Yhik>
       <TooteYhikuHind>1.0</TooteYhikuHind>
     </Toode>
     <Toode Id="1" TooteNimi="Kartul">
       <Talu Id="1">
         <TaluNimi>Juhani</TaluNimi>
       </Talu>
       <TellitavKogus>10.5</TellitavKogus>
       <TooteYhikuHind>1.0</TooteYhikuHind>
       <Yhik>kg</Yhik>
     </Toode>
     <Toode Id="2" TooteNimi="Tomat">
       <Talu Id="1">
         <TaluNimi>Juhani</TaluNimi>
       </Talu>
       <TellitavKogus>1</TellitavKogus>
       <Yhik>tk</Yhik>
       <TooteYhikuHind>2.5</TooteYhikuHind>
     </Toode>
     <Toode Id="4" TooteNimi="Sibul">
       <Talu Id="3">
         <TaluNimi>Jaani</TaluNimi>
       </Talu>
       <TellitavKogus>2</TellitavKogus>
       <Yhik>kg</Yhik>
       <TooteYhikuHind>0.5</TooteYhikuHind>
     </Toode>
   </Tooted>
 </Ostukorv>
 <Ostukorv Id="2">
   <Andmed>
     <Kuupäev>18.03.2017</Kuupäev>
     <Kasutaja Id="1" Külaline="true">
       <KasutajaNimi>Peeter</KasutajaNimi>
     </Kasutaja>
     <Aadress>Tallinn, Raja 4c</Aadress>
     <Telefon Tüüp="work">555555555</Telefon>
     <Soodustus></Soodustus>
     <ArveSaaja>Peeter</ArveSaaja>
     <ArveAadress>Peetriküla</ArveAadress>
     <Märkus></Märkus>
   </Andmed>
   <Tooted>
     <Toode Id="2" TooteNimi="Tomat">
       <Talu Id="1">
         <TaluNimi>Juhani</TaluNimi>
       </Talu>
       <TellitavKogus>1</TellitavKogus>
       <Yhik>tk</Yhik>
       <TooteYhikuHind>2.5</TooteYhikuHind>
     </Toode>
   </Tooted>    
 </Ostukorv>
 <Ostukorv Id="3">
   <Andmed>
     <Kuupäev>18.03.2017</Kuupäev>
     <Kasutaja Id="2" Külaline="true">
       <KasutajaNimi>Malle</KasutajaNimi>
     </Kasutaja>
     <Aadress>Pärnu, Raja 4</Aadress>
     <Telefon Tüüp="home">555555555</Telefon>
     <Soodustus>0.1</Soodustus>
     <ArveSaaja>Malle</ArveSaaja>
     <ArveAadress>Pärnu, Raja 4</ArveAadress>
     <Märkus></Märkus>
   </Andmed>
   <Tooted>
     <Toode Id="1" TooteNimi="Kartul">
       <Talu Id="1">
         <TaluNimi>Juhani</TaluNimi>
       </Talu>
       <TellitavKogus>10.5</TellitavKogus>
       <Yhik>kg</Yhik>
       <TooteYhikuHind>1.0</TooteYhikuHind>
     </Toode>
     <Toode Id="4" TooteNimi="Sibul">
       <Talu Id="3">
         <TaluNimi>Jaani</TaluNimi>
       </Talu>
       <TellitavKogus>2</TellitavKogus>
       <Yhik>kg</Yhik>
       <TooteYhikuHind>0.5</TooteYhikuHind>
     </Toode>
         <Toode Id="5" TooteNimi="Liha">
       <Talu Id="1">
         <TaluNimi>Nöpri</TaluNimi>
       </Talu>
       <TellitavKogus>1</TellitavKogus>
       <Yhik>kg</Yhik>
       <TooteYhikuHind>2.5</TooteYhikuHind>
     </Toode>
   </Tooted>
 </Ostukorv>

</Ostukorvid>

XML schema (XSD)

<source lang="xml"> <?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name="Ostukorvid">
   <xs:complexType>
     <xs:sequence>
       <xs:element maxOccurs="unbounded" name="Ostukorv">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Andmed">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="Kuupäev" type="xs:string" />
                   <xs:element name="Kasutaja">
                     <xs:complexType>
                       <xs:sequence>
                         <xs:element name="KasutajaNimi" type="xs:string" />
                       </xs:sequence>
                       <xs:attribute name="Id" type="xs:int" use="required" />
                       <xs:attribute name="Külaline" type="xs:boolean" use="required" />
                     </xs:complexType>
                   </xs:element>
                   <xs:element name="Aadress" type="xs:string" />
                   <xs:element name="Telefon">
                     <xs:complexType>
                       <xs:simpleContent>
                         <xs:extension base="xs:unsignedInt">
                           <xs:attribute name="Tüüp" type="xs:string" use="required" />
                         </xs:extension>
                       </xs:simpleContent>
                     </xs:complexType>
                   </xs:element>
                   <xs:element name="Soodustus" />
                   <xs:element name="ArveSaaja" type="xs:string" />
                   <xs:element name="ArveAadress" type="xs:string" />
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
             <xs:element name="Tooted">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element maxOccurs="unbounded" name="Toode">
                     <xs:complexType>
                       <xs:sequence>
                         <xs:choice maxOccurs="unbounded">
                           <xs:element name="Talu">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element name="TaluNimi" type="xs:string" />
                               </xs:sequence>
                               <xs:attribute name="Id" type="xs:int" use="required" />
                             </xs:complexType>
                           </xs:element>
                           <xs:element name="TellitavKogus" type="xs:decimal" />
                           <xs:element name="Yhik" type="xs:string" />
                           <xs:element name="TooteYhikuHind" type="xs:decimal" />
                         </xs:choice>
                       </xs:sequence>
                       <xs:attribute name="Id" type="xs:int" use="required" />
                       <xs:attribute name="TooteNimi" type="xs:string" use="required" />
                     </xs:complexType>
                   </xs:element>
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
           </xs:sequence>
           <xs:attribute name="Id" type="xs:int" use="required" />
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

</xs:schema>

XSLT

<source lang="xml"> <?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>
       <link href="mystyle.css" rel="stylesheet" type="text/css" />
     </head>
     <body>
       <xsl:for-each select="Ostukorvid/Ostukorv">

Tellimus nr: <xsl:value-of select="@Id"/>

<xsl:choose> <xsl:when test="Andmed/Kasutaja/@Külaline = 'true'"> <xsl:text>KÜLALINE </xsl:text> </xsl:when> <xsl:when test="Andmed/Kasutaja/@Külaline = 'false'"> <xsl:text>REG KASUTAJA </xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>ADMIN</xsl:text> </xsl:otherwise> </xsl:choose>

         


<xsl:variable name="Tellija" select="Andmed/ArveSaaja"/> <xsl:variable name="Aadress" select="Andmed/ArveAadress"/> <xsl:variable name="Isik" select="Andmed/Kasutaja/KasutajaNimi"/> <xsl:variable name="Telefon" select="Andmed/Telefon"/>
               Tellija:
               <xsl:value-of select="$Tellija"/>
Aadress:
               <xsl:value-of select="$Aadress"/>
Kontaktisik:
               <xsl:value-of select="$Isik"/>
               <xsl:text>, Tel:  </xsl:text>
               <xsl:value-of select="$Telefon"/>

<xsl:variable name="Summa"> <xsl:variable name="SummaTemp"> <xsl:for-each select="Tooted/Toode"> <number> <xsl:value-of select="TellitavKogus * TooteYhikuHind"/> </number> </xsl:for-each> </xsl:variable> <xsl:value-of select="sum(msxsl:node-set($SummaTemp)/number)"/> </xsl:variable> <xsl:for-each select="Tooted/Toode"> <xsl:sort select="Talu/TaluNimi"/> </xsl:for-each>
Valitud tooted
Nr Talu Kaup Ühik Kogus Hind Summa
                 <xsl:value-of select="position()"/>
                 <xsl:value-of select="Talu/TaluNimi"/>
                 <xsl:value-of select="@TooteNimi"/>
                 <xsl:value-of select="Yhik"/>
                 <xsl:choose>
                   <xsl:when test="Yhik = 'kg'">
                     <xsl:value-of select="format-number(TellitavKogus, '0.00')"/>
                   </xsl:when>
                   <xsl:when test="Yhik = 'tk'">
                     <xsl:value-of select="format-number(TellitavKogus, '0')"/>
                   </xsl:when>
                   <xsl:otherwise>
                     <xsl:value-of select="format-number(TellitavKogus, '0.00')"/>
                   </xsl:otherwise>
                 </xsl:choose>
                 <xsl:value-of select="format-number(TooteYhikuHind, '0.00')"/>                  
                 <xsl:value-of select="format-number(TellitavKogus * TooteYhikuHind, '0.00')"/>
Märkused:
Summa
               <xsl:value-of select="format-number($Summa, '0.00')"/>
20%:
               <xsl:value-of select="format-number($Summa * 0.2, '0.00')"/>
Kokku:
               <xsl:value-of select="format-number($Summa * 1.2, '0.00')"/>


       </xsl:for-each>
     </body>
   </html>
 </xsl:template>

</xsl:stylesheet>


Retsensioonid