<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="ProgrammersReference.xslt"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ePocket.no/Handyman62/Api">
  <xs:element name="ChecklistList">
    <xs:annotation>
      <xs:documentation>Handyman Import: Cheklist definitions</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ChecklistType" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="HSChecklistTypeID" type="xs:integer" />
              <xs:element name="ChecklistTypeID">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="ChecklistTypeName">
                <xs:annotation>
                  <xs:documentation>Name of checklist type</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="50"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Description">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Document">
                <xs:simpleType>
                  <xs:annotation>
                    <xs:appinfo>0=No, 1=Declaration of conformacy is mandatory</xs:appinfo>
                  </xs:annotation>
                  <xs:restriction base="xs:integer">
                    <xs:enumeration value="0"/>
                    <xs:enumeration value="1"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="SignatureTextCustomer" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>Text to display on handlheld machine when customer signature is captured</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="SignatureTextUser" minOccurs="0" >
                <xs:annotation>
                  <xs:documentation>Text to display on handlheld machine when user signature is captured</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Locked" minOccurs="0">
                <xs:simpleType>
                  <xs:annotation>
                    <xs:appinfo>1 = Locked</xs:appinfo>
                    <xs:documentation>Changes to checklist definition cannot be done in Handyman</xs:documentation>
                  </xs:annotation>
                  <xs:restriction base="xs:integer">
                    <xs:enumeration value="0"/>
                    <xs:enumeration value="1"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="CopyRight" minOccurs="0">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Version" minOccurs="0" >
                <xs:annotation>
                  <xs:documentation>Version number for checklist definition</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="PrintFooter" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>Footer text to be displayed on checklist report in Handyman</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Deleted" minOccurs="0" >
                <xs:simpleType>
                  <xs:annotation>
                    <xs:appinfo>1=Delete</xs:appinfo>
                    <xs:documentation>Cheklist cannot be deleted if it has been used on an order. If deleted, any group connections will be deleted</xs:documentation>
                  </xs:annotation>
                  <xs:restriction base="xs:integer">
                    <xs:enumeration value="0"/>
                    <xs:enumeration value="1"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="AddToAllGroups" minOccurs="0">
                <xs:simpleType>
                  <xs:annotation>
                    <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                    <xs:documentation>If 1, the checklist will be added to all trade groups if not already added</xs:documentation>
                  </xs:annotation>
                  <xs:restriction base="xs:integer">
                    <xs:enumeration value="0"/>
                    <xs:enumeration value="1"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="GroupList" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>To add to specific groups, use this structure. Only valid trade groups will be accepted</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Group" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="HSGroupID" type="xs:integer" />
                          <xs:element name="GroupID" >
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="20"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="DeleteFromGroup" minOccurs="0">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>1=delete checklist from group</xs:appinfo>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Checklist">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Check" maxOccurs="unbounded">
					  <xs:annotation>
					    <xs:documentation>Individual checkpoint/question within a checklist</xs:documentation>
					  </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="ID">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>1 - 60</xs:appinfo>
                                <xs:documentation>OBS! No duplicate values allowed within same checklist</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:pattern value="[1-60]"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="Position">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>1 - 60</xs:appinfo>
                                <xs:documentation>
                                  Normally the same as ID. Used to visually rearrange cheklist items.
                                  OBS! No duplicate values allowed within same checklist
                                </xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:pattern value="[1-60]"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="Text">
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="255"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="Instructions">
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="255"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="Unit" >
                            <xs:annotation>
                              <xs:documentation>Unit for measuring value</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="10"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="DataType" minOccurs="0">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>
                                  0 = Heading
                                  1 = Not done/Done
                                  2 = Yes/No
                                  3 = OK/Discrepancy
                                  4 = Text field
                                  5 = Pick List
                                  6 = Numeric field
                                  7 = Date field
                                </xs:appinfo>
                                <xs:documentation>
                                  Specifies type of data-input. Default is 1 if not specified

                                  DataType 1,2,3 are radio button groups
                                </xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                                <xs:enumeration value="2"/>
                                <xs:enumeration value="3"/>
                                <xs:enumeration value="4"/>
                                <xs:enumeration value="5"/>
                                <xs:enumeration value="6"/>
                                <xs:enumeration value="7"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="Locked" minOccurs="0">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>1 = Locked</xs:appinfo>
                                <xs:documentation>Item cannot be changed or change position in checklist if set</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="ActivateGroupResponse" minOccurs="0">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>
                                  Only valid for items with DataType=1,2,3


                                  Datatype=1, 2=Done
                                  Datatype=2, 1=Yes, 2=No
                                  Datatype=3, 1=OK, 2=Discrepancy
                                </xs:appinfo>
                                <xs:documentation>Specifies which answer that will activate following subitem items.</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="1"/>
                                <xs:enumeration value="2"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="SubItem" minOccurs="0">
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>1 = Subitem</xs:appinfo>
                                <xs:documentation>Normally used on items following an item that specifies ActiveGroupResponse.</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="NumericMinimum" type="xs:float" minOccurs="0">
                            <xs:annotation>
                              <xs:appinfo>Default 0</xs:appinfo>
                              <xs:documentation>Specifies minimum input value for numeric fields (DataType=6)</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="NumericMaximum" type="xs:float" minOccurs="0">
                            <xs:annotation>
                              <xs:appinfo>Default 0</xs:appinfo>
                              <xs:documentation>Specifies maximum input value for numeric fields (DataType=6)</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="NumericInteger" minOccurs="0" >
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>
                                  0 = floating point field
                                  1 = Integer field
                                </xs:appinfo>
                                <xs:documentation>Specifies input type for numeric fields (DataType=6)</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="DateUseTime" minOccurs="0" >
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>
                                  0 = Date input
                                  1 = Date + time input
                                </xs:appinfo>
                                <xs:documentation>Specifies input type for date fields (DataType=7)</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="ListSelectionRequired" minOccurs="0" >
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>
                                  0 = Text input, list can be used
                                  1 = List selection is required
                                </xs:appinfo>
                                <xs:documentation>Specifies input type for pick list fields (DataType=5)</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="DependencyID" minOccurs="0" >
                            <xs:simpleType>
                              <xs:annotation>
                                <xs:appinfo>
                                  ID of pick list field in the checklist it is dependent on
                                </xs:appinfo>
                                <xs:documentation>Only valid for pick list fields. Can only refer to other pick list fields.</xs:documentation>
                              </xs:annotation>
                              <xs:restriction base="xs:integer">
                                <xs:enumeration value="0"/>
                                <xs:enumeration value="1"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="PickList" minOccurs="0" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>List of values connected to item (Only valid if DataType=5)</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                              <xs:sequence>
								<xs:element name="Value" maxOccurs="unbounded"  >
									<xs:annotation>
									<xs:appinfo>DependencyValue is defined as an optional attribute. datatype: string:255
									  A string matching the parent id can be specified for elemets that are to be filtered based on the dependent field value.
									</xs:appinfo>
									  <xs:documentation>1 - n Value elements required for item. 
									  DependencyValue is defined as an optional attribute. This is done to be backward compatible.
									  (Documented here until our viewing system template supports attributes properly)</xs:documentation>
									</xs:annotation>
									<xs:simpleType>
									  <xs:restriction base="xs:string">
										<xs:maxLength value="255"/>
									  </xs:restriction>
									  
 									<xs:attribute name="DependencyValue" type="xs:string"/>						
									</xs:simpleType>
								</xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>

                          <xs:element name="Rules">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Print">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                      <xs:documentation>Visible on regular checklist report</xs:documentation>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="CheckMaterialsHours">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="InputRequired">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="InfoRequired">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="InitialRegistrationRequied">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PrintOnDocument">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="Heading" type="xs:integer" minOccurs="0">
                                  <xs:annotation>
                                    <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    <xs:documentation>Not in use anymore, Use DataType = 0</xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="YesNo" type="xs:integer" minOccurs="0">
                                  <xs:annotation>
                                    <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    <xs:documentation>Not in use anymore, Use DataType = 2</xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="OrderDescriptionRequired">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="MeasuringValueRequired">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="DontPrintNotRelevant">
                                  <xs:simpleType>
                                    <xs:annotation>
                                      <xs:appinfo>0=No, 1=Yes</xs:appinfo>
                                      <xs:documentation>Supress printout for not relevant value</xs:documentation>
                                    </xs:annotation>
                                    <xs:restriction base="xs:integer">
                                      <xs:enumeration value="0"/>
                                      <xs:enumeration value="1"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>