<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2012 rel. 2 (http://www.altova.com) by Alin Pop (Zendor GSI Commerce) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:complexType name="extendedAttributes">
		<xs:annotation>
			<xs:documentation>Encapsulates the customizable section of the message.
It enables additional details to be added to the given message.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="attribute" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>It holds the actual attribute value.

Allowable Values: Text string
Required: Yes
Max length: 200
Default Value: blank
Restrictions: N/A</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="name" use="required">
								<xs:annotation>
									<xs:documentation>Attribute title

Allowable Values: Text string
Required: Yes
Max length: 30
Default Value: blank
Restrictions: Yes</xs:documentation>
								</xs:annotation>
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="30"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="vendorOrder">
		<xs:complexType>
			<xs:all>
				<xs:element name="vendorOrderId" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Purchase order identifier in the client's or third party system. If provided, Radial's systems would feed it back to your system in the goods receipt interface (GR) @see /vendorOrderReceipt/vendorOrderId</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="poNumber">
					<xs:annotation>
						<xs:documentation>Purchase order reference. It's the PO reference provided to the supplier. It should be printed on the delivery note received from the supplier. It must be unique across all existing/new generated purchase orders.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:pattern value="[0-9a-zA-Z\-_]{1,15}"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="distributionCentre" type="xs:string" default="GSIUK01"
					minOccurs="0">
					<xs:annotation>
						<xs:documentation>Distribution centre code. Radial's warehouse that is going to receive the delivery.

It will be provided by Radial's team at the time of implementation.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="catalogId" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Catalogue identifier. In use when the client runs multiple brands under a single implementation (instance).

Legacy - no longer supported.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="clientId" type="xs:string">
					<xs:annotation>
						<xs:documentation>Radial's internal client identifier.
It will be provided by Radial's team at the time of implementation.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="vendorId" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Vendor identifier</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="carrierName" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Carrier name that will delivery the PO if known</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="shipDate" type="xs:date" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Shipping date. I.e. Expected format: YYYY-mm-dd</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="expectedDeliveryDate" type="xs:date" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Date when the PO is expected to be delivered to the warehouse.  Expected format: YYYY-mm-dd</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="countryOfOrigin" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Two letter country codes as per ISO 3166-1 alpha-2</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="shipToAddress" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Radial's warehouse address. It will be provided at the time of implementation.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="companyName" type="xs:string" minOccurs="0"/>
							<xs:element name="address1" type="xs:string"/>
							<xs:element name="address2" type="xs:string" minOccurs="0"/>
							<xs:element name="city" type="xs:string"/>
							<xs:element name="zip" type="xs:string">
								<xs:annotation>
									<xs:documentation>Postcode</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="state" type="xs:string" minOccurs="0">
								<xs:annotation>
									<xs:documentation>County / state / regoin</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="country" type="xs:string">
								<xs:annotation>
									<xs:documentation>Two letter country codes as per ISO 3166-1 alpha-2</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="shipFromAddress" minOccurs="0">
					<xs:annotation>
						<xs:documentation>The address where the PO is shipped from.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="companyName" type="xs:string" minOccurs="0"/>
							<xs:element name="address1" type="xs:string"/>
							<xs:element name="address2" type="xs:string" minOccurs="0"/>
							<xs:element name="city" type="xs:string"/>
							<xs:element name="zip" type="xs:string"/>
							<xs:element name="state" type="xs:string" minOccurs="0">
								<xs:annotation>
									<xs:documentation>County / state / regoin</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="country" type="xs:string">
								<xs:annotation>
									<xs:documentation>Two letter country codes as per ISO 3166-1 alpha-2</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="lines">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="line" maxOccurs="unbounded">
								<xs:complexType>
									<xs:all>
										<xs:element name="lineId" type="xs:string" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Third party system line identifier e.g. ERP line ID. If it's provided, then it would be present in the export to client ERP system on goods receipt feed (@see GR interface /vendorOrderReceipt/lines/line/lineId).
It's handy on ERP system to match back the goods receipt line against the original PO line ID.
</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="lineNumber" type="xs:integer">
											<xs:annotation>
												<xs:documentation>Sequence number of the line within then purchase order.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="productName" type="xs:string"
											minOccurs="0">
											<xs:annotation>
												<xs:documentation>If not provided the product catalogue value will be used.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="altSku" type="xs:string" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Alternative SKU. It would help operation to identify the product during the receiving process.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="sku" type="xs:string">
											<xs:annotation>
												<xs:documentation>Client's unique SKU. Prerequisite the SKU to be already in Radial's catalogue. The SKU should be sent first in the catalogue interface. Please refer to CAT interface.

The same SKU across multiple PO lines is not allowed.

Failure to provide a valid SKU, the PO would be rejected and may experience a delay in receiving the stock in the warehouse.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="qty">
											<xs:annotation>
												<xs:documentation>Expected quantity. Only values greater than 0.</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:positiveInteger">
												<xs:minInclusive value="1"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="qtyUom" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Quantity unit of measurement that the quantity values are in.
Default value is "unit"</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
												<xs:maxLength value="8"/>
												<xs:enumeration value="unit"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="isCancelled" type="xs:boolean"
											minOccurs="0">
											<xs:annotation>
												<xs:documentation>Accepts values "true" and "false" only.
The default value is "false".
If value "true" is given, then the entire purchase order line is cancelled, regardless the number of units given in the quantity field.

This should be used only in conjunction with action UPDATE if intended to perform full line level cancellation.

If intended to just lower the order line quantity e.g. from value 3 to value 2, then this field should be false.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="countryOfOrigin" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Two-letter country codes as per ISO 3166-1 alpha-2.

This is an optional field, however, it becomes mandatory if we run a bonded warehouse for you.

If provided, the value must be a valid country code. It accepts only two characters length.</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
												<xs:maxLength value="2"/>
												<xs:minLength value="2"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="extendedAttributes"
											type="extendedAttributes" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Encapsulates purchase order line level customizable section.

It enables additional details to be added to the given purchase order line.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element minOccurs="0" name="batchNumber">
											<xs:annotation>
												<xs:documentation>Optional.
Max length: 15 characters
It provides additional level of tracking/allocation for item inventory in the wharehouse management system.</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
												<xs:maxLength value="15"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element minOccurs="0" name="manufacturedDateAndTime"
											type="xs:dateTime">
											<xs:annotation>
												<xs:documentation>Optional
Type date and time: Example: 2020-01-31T09:32:17+01:00
Manufacture date to be applied to all stock received against this line. 
It may use it to determine stock consume priority date for allocation purposes.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element minOccurs="0" name="expireDateAndTime"
											type="xs:dateTime">
											<xs:annotation>
												<xs:documentation>Optional
Type date and time: Example: 2020-01-31T09:32:17+01:00
Product expiration date and time to be applied to all stock received against this line. 
It may use it to determine stock consume priority date for allocation purposes.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element minOccurs="0" name="ilpnReference">
											<xs:annotation>
												<xs:documentation>
													Inbound License Plate reference. Should be unique across all Purchase orders/ASNs. Value mapped in this field is expected to be available as a barcode in the case/pallet etc.</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:maxLength value="50"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
									</xs:all>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="lpnReceivingRequired" type="xs:boolean" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Flag to enable ILPN level receiving. If true, then ilpnReference is mandatory in all PO/ASN lines.
							Accepted values: true / false
							Default value: false</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="partnerQueryContact" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Partner's contact person/details in case Radial's operation would need to make enquiries with regards to given purchase order.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:maxLength value="50"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="messageId" type="xs:long" minOccurs="0">
					<xs:annotation>
						<xs:documentation>The transaction's unique tracking ID from sender’s side that is unique across all transmissions including other interfaces.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="actionType" minOccurs="0">
					<xs:annotation>
						<xs:documentation>The action type to be applied to the given purchase order (PO).

The following list of actions are supported:

NEW - create a new purchase order if the PO doesn't exist already. If not provided, this is the default value. If action NEW provided and the PO already exists, the message will be rejected.

UPDATE - It performs purchase order updates with the given PO information. Initial order lines have to be bridged in, otherwise, it won't work. The update request is possible up to the point the first item has been received against the PO (operational processes have been kicked off in the warehouse for the given PO). After this point the purchase order ls locked from any updates.

CANCEL - it performs a full purchase order cancellation subject the purchase order is in a valid state. E.g. the are no items received against it and has not been canceled or completed already.

COMPLETE - Similar to action CANCEL but it locks the purchase order from any further stock booking and changes.

Further validations are performed against actions UPDATE, CANCEL, and COMPLETE in conjunction with the message ID. The message ID of an action update, cancellation or complete request cannot be less than the message ID received with the action NEW. This is to ensure the correct version of the purchase order is stored in Radial's systems.

Note if the purchase order has been fully received then it is automatically set to status-completed and no further updates are allowed</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="NEW"/>
							<xs:enumeration value="UPDATE"/>
							<xs:enumeration value="CANCEL"/>
							<xs:enumeration value="COMPLETE"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="extendedAttributes" type="extendedAttributes" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Encapsulates purchase order header customizable section.

It enables additional details to be added to the given purchase order.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:all>
		</xs:complexType>
	</xs:element>
</xs:schema>
