<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="QMSQuote">
		<xs:annotation>
			<xs:documentation>Defines Quote Message Standard Schema Version 1.5.
CONDITIONS OF USE
The contributing authors of this document waive all and any rights to the intellectual property including copyright, moral and other rights of this document. This document is developed through voluntary contributing authorship and is intended for use in the public domain (specifically, but without limitation, organisations in the pertinent industry) to describe the exchange of information pertaining to commercial transactions relating to the quoting and invoicing of vehicle repairs. Whilst the nature of the information content exchanged may be commercially sensitive (and that information's security is the responsibility of the transacting parties) the structure of the exchange document describes information of common knowledge in the pertinent industries and is not, in itself, of any commercial value.

DISCLAIMER
Responsibility for all outcomes due to the use of this document in describing information content lies solely with the user. Use of the document is strictly on the basis that no intellectual property ownership is claimed.  We make no representations as to the fitness for any purpose and will not be liable for any use or misuse of the XML Schema definition and further XML Schema documents.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Message">
					<xs:annotation>
						<xs:documentation>Message control information</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="SchemaVersion" type="xs:string">
								<xs:annotation>
									<xs:documentation>Schema used to generate and therefore validate this message.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="MessageType">
								<xs:annotation>
									<xs:documentation>Quote or Invoice.</xs:documentation>
								</xs:annotation>
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="Invoice"/>
										<xs:enumeration value="Quote"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="SenderApplication">
								<xs:annotation>
									<xs:documentation>Application name and version which generated this message.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Name" type="xs:string"/>
										<xs:element name="Version" type="xs:string"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="IntendedRecipient">
								<xs:annotation>
									<xs:documentation>Identifies message recipient. As this may be a clearing house do not use this to identify the Insurer. Use InsurerBrand / BrandId.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Organisation" type="Organisation"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="SentDateTime">
								<xs:annotation>
									<xs:documentation>dd-mm-yyyy hh:mm:ss</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Repairer">
					<xs:annotation>
						<xs:documentation>Repairer identification.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="InsurersRepairerId" type="xs:string"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Vehicle">
					<xs:annotation>
						<xs:documentation>Vehicle details</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Registration">
								<xs:annotation>
									<xs:documentation>Rego number and state.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="RegistrationNumber" type="xs:string"/>
										<xs:element name="RegistrationState" minOccurs="0">
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:enumeration value="NSW"/>
													<xs:enumeration value="VIC"/>
													<xs:enumeration value="QLD"/>
													<xs:enumeration value="WA"/>
													<xs:enumeration value="SA"/>
													<xs:enumeration value="NT"/>
													<xs:enumeration value="ACT"/>
													<xs:enumeration value="TAS"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Vin" type="xs:string"/>
							<xs:element name="Make" type="xs:string"/>
							<xs:element name="Model" type="xs:string"/>
							<xs:element name="ModelSeries" type="xs:string" minOccurs="0"/>
							<xs:element name="ManufMonthYear" type="xs:string"/>
							<xs:element name="BodyStyle" type="xs:string"/>
							<xs:element name="Colour" type="xs:string"/>
							<xs:element name="Odometer" type="xs:unsignedLong"/>
							<xs:element name="Transmission">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="Automatic"/>
										<xs:enumeration value="Manual"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="PaintGroup" type="xs:string" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Claim">
					<xs:annotation>
						<xs:documentation>Insurer's claim information</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:choice>
								<xs:annotation>
									<xs:documentation>Supply the insurer claim number or insurer job number or both. Assumes that in any case the registration is provided.</xs:documentation>
								</xs:annotation>
								<xs:element name="ClaimNumber"/>
								<xs:element name="InsurerJobNumber"/>
								<xs:sequence>
									<xs:element name="ClaimNumber"/>
									<xs:element name="InsurerJobNumber"/>
								</xs:sequence>
							</xs:choice>
							<xs:element name="InsurerBrand">
								<xs:annotation>
									<xs:documentation>Insurance brand name.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Quote">
					<xs:annotation>
						<xs:documentation>Repairer's quote details</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="QuoteNumber"/>
							<xs:element name="QuoteRevision">
								<xs:annotation>
									<xs:documentation>The quote revision is incremented by the quote package with each re-transmission.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="QuoteDate">
								<xs:annotation>
									<xs:documentation>dd-mm-yyyy</xs:documentation>
								</xs:annotation>
							</xs:element>
							
							
							<xs:element name="QuoteTime" type="xs:time" minOccurs="0">
								<xs:annotation>
									<xs:documentation>hh:mm:ss</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Contact" type="Contact"/>
							<xs:element name="Rates">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Paint">
											<xs:complexType>
												<xs:choice>
													<xs:annotation>
														<xs:documentation>one of...</xs:documentation>
													</xs:annotation>
													<xs:sequence maxOccurs="unbounded">
														<xs:annotation>
															<xs:documentation>one or more...</xs:documentation>
														</xs:annotation>
														<xs:element name="PaintGroup" type="xs:string"/>
														<xs:element name="Rate" type="xs:decimal"/>
													</xs:sequence>
													<xs:element name="GeneralRate" type="xs:decimal"/>
												</xs:choice>
											</xs:complexType>
										</xs:element>
										<xs:element name="RemoveReplace" type="xs:decimal"/>
										<xs:element name="Repair" type="xs:decimal"/>
										<xs:element name="Mechanical" type="xs:decimal"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Items">
								<xs:complexType>
									<xs:sequence maxOccurs="unbounded">
										<xs:element name="Item">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="ItemNumber" type="xs:unsignedInt"/>
													<xs:element name="ItemCode" type="xs:string" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Quote package code for reference</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Description" type="xs:string"/>
													<xs:choice>
														<xs:annotation>
															<xs:documentation>one of...</xs:documentation>
														</xs:annotation>
														<xs:element name="Labour">
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="RateType">
																		<xs:annotation>
																			<xs:documentation>Paint, Repair, RemoveReplace, Mechanical, Other</xs:documentation>
																		</xs:annotation>
																		<xs:simpleType>
																			<xs:restriction base="xs:string">
																				<xs:enumeration value="Paint"/>
																				<xs:enumeration value="Repair"/>
																				<xs:enumeration value="RemoveReplace"/>
																				<xs:enumeration value="Mechanical"/>
																				<xs:enumeration value="Other"/>
																			</xs:restriction>
																		</xs:simpleType>
																	</xs:element>
																	<xs:element name="PaintGroup" type="xs:string" minOccurs="0">
																		<xs:annotation>
																			<xs:documentation>Where item is paint labour (use same groups as in rates)</xs:documentation>
																		</xs:annotation>
																	</xs:element>
																	<xs:element name="Hours" type="xs:decimal"/>
																	<xs:element name="ItemRate" type="xs:decimal"/>
																	<xs:element name="BlendFlag" type="xs:boolean" minOccurs="0">
																		<xs:annotation>
																			<xs:documentation>Indicates lesser work effort on paint labour</xs:documentation>
																		</xs:annotation>
																	</xs:element>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
														<xs:element name="Parts">
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="PartNumber" type="xs:string" minOccurs="0"/>
																	<xs:element name="Qty" type="xs:decimal"/>
																	<xs:element name="UnitPrice" type="xs:decimal"/>
																	<xs:element name="QtyTotalNett" type="xs:decimal">
																		<xs:annotation>
																			<xs:documentation>Qty * UnitPrice</xs:documentation>
																		</xs:annotation>
																	</xs:element>
																	<xs:element name="Markup" type="xs:decimal" minOccurs="0"/>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
														<xs:element name="Miscellaneous">
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="Qty" type="xs:decimal"/>
																	<xs:element name="UnitPrice" type="xs:decimal"/>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
														<xs:element name="Sublet">
															<xs:annotation>
																<xs:documentation>Third party work</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:choice minOccurs="0">
																		<xs:annotation>
																			<xs:documentation>one of...</xs:documentation>
																		</xs:annotation>
																		<xs:element name="SubletOrg" type="Organisation"/>
																		<xs:element name="SubletFlag" type="xs:boolean"/>
																	</xs:choice>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
													</xs:choice>
													<xs:element name="LineTotalNett" type="xs:decimal"/>
													<xs:element name="PartSource" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Original, Used, Alternate, Other</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="Original"/>
																<xs:enumeration value="Used"/>
																<xs:enumeration value="Alternate"/>
																<xs:enumeration value="Other"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="ReportOnly" type="xs:boolean" minOccurs="0">
														<xs:annotation>
															<xs:documentation>If set, line item is not included in total (bookmarks potential repair items).</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="ItemState" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Indicate with: Changed, Added or Deleted</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="Changed"/>
																<xs:enumeration value="Added"/>
																<xs:enumeration value="Deleted"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="QuoteTotal">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ExTax">
											<xs:annotation>
												<xs:documentation>Nett - DiscountAmt</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence>
													<xs:element name="NettTotal" type="xs:decimal">
														<xs:annotation>
															<xs:documentation>Ex-tax sum of  line items</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="DiscountAmt" type="xs:decimal">
														<xs:annotation>
															<xs:documentation>Discount amount to apply to whole quote</xs:documentation>
														</xs:annotation>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="Tax" type="xs:decimal">
											<xs:annotation>
												<xs:documentation>GST on ExTax amount</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="IncTax" type="xs:decimal">
											<xs:annotation>
												<xs:documentation>ExTax + Tax</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="EstStartDate" minOccurs="0">
								<xs:annotation>
									<xs:documentation>dd-mm-yyyy</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="EstEndDate" minOccurs="0">
								<xs:annotation>
									<xs:documentation>dd-mm-yyyy</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Comments" type="xs:string" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Invoice" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Invoice details when this message type=Invoice</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Biller">
								<xs:annotation>
									<xs:documentation>Repairer who is billing</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Organisation" type="Organisation"/>
										<xs:element name="Contact" type="Contact"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="InvoiceNumber"/>
							<xs:element name="InvoiceDate">
								<xs:annotation>
									<xs:documentation>dd-mm-yyyy</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="InvoiceTime" type="xs:time" minOccurs="0">
								<xs:annotation>
									<xs:documentation>hh:mm:ss</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="InvoiceTotal">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ExTax">
											<xs:annotation>
												<xs:documentation>Nett - (DiscountAmt + CollectedExcess + OwnerContribution)</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence>
													<xs:element name="NettTotal" type="xs:decimal">
														<xs:annotation>
															<xs:documentation>Ex-tax sum of  line items</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="DiscountAmt" type="xs:decimal">
														<xs:annotation>
															<xs:documentation>Discount amount to apply to whole invoice</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="CollectedExcess" type="xs:decimal">
														<xs:annotation>
															<xs:documentation>Excess amount collected from driver / owner</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="OwnerContribution" type="xs:decimal" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Contribution amount collected from driver / owner</xs:documentation>
														</xs:annotation>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="Tax" type="xs:decimal">
											<xs:annotation>
												<xs:documentation>GST on ExTax amount</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="IncTax" type="xs:decimal">
											<xs:annotation>
												<xs:documentation>ExTax + Tax</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="Address">
		<xs:annotation>
			<xs:documentation>Address definition</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice>
				<xs:element name="SimpleAddress">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="AddressLine1"/>
							<xs:element name="AddressLine2"/>
							<xs:element name="AddressLine3" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="ComplexAddress">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="CareOfRecipient" minOccurs="0"/>
							<xs:element name="ApartmentUnit" minOccurs="0"/>
							<xs:element name="BuildingLevel" minOccurs="0"/>
							<xs:element name="BuildingName" minOccurs="0"/>
							<xs:element name="StreetNumber"/>
							<xs:element name="StreetName"/>
							<xs:element name="StreetType"/>
							<xs:element name="PostalName" minOccurs="0"/>
							<xs:element name="SuburbLocation"/>
							<xs:element name="State"/>
							<xs:element name="Postcode"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Person">
		<xs:annotation>
			<xs:documentation>Person definition</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Salutation" type="xs:string" minOccurs="0"/>
			<xs:element name="FirstName" type="xs:string"/>
			<xs:element name="MiddleNames" type="xs:string" minOccurs="0"/>
			<xs:element name="LastName" type="xs:string"/>
			<xs:element name="PreferredName" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Organisation">
		<xs:annotation>
			<xs:documentation>Organisation definition</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="OrganisationName"/>
			<xs:element name="TradingName"/>
			<xs:element name="ABN"/>
			<xs:choice minOccurs="0">
				<xs:element name="ARBN"/>
				<xs:element name="ACN"/>
			</xs:choice>
			<xs:element name="Address" type="Address" minOccurs="0"/>
			<xs:element name="ContactDetail" type="ContactDetail" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ContactDetail">
		<xs:annotation>
			<xs:documentation>Contact details definition</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="PhoneBH"/>
			<xs:element name="PhoneAH" minOccurs="0"/>
			<xs:element name="PhoneMobile" minOccurs="0"/>
			<xs:element name="Facsimile" minOccurs="0"/>
			<xs:element name="Email" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Contact">
		<xs:annotation>
			<xs:documentation>Contact including person, address and contact details</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Person" type="Person"/>
			<xs:element name="Address" type="Address" minOccurs="0"/>
			<xs:element name="ContactDetail" type="ContactDetail" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
