XML Product Import Guide

Created by Migration Bot, Modified on Fri, 23 Oct at 2:30 PM by Migration Bot

Originally written by John Hardwick, last updated Oct 24, 2023, on the Swan Retail knowledge base (FRS).


This document is based on SwanFRS release 1201

Overview

SwanFRS has an inbuilt product generation and maintenance routine however it is capable of import product data from third party applications. This document details how to import products generated in 3rd party applications and imported via an XML product structure.

Configuration

This section details how to configure SwanFRS to import XML data structures.

Application Parameters

Menu Location: System Admin > Admin > Set Up Location

To import XML product catalogues into SwanFRS it is necessary to set the following application parameters.

  •         CATALOGUE_ PATH

The path to a folder on the application server which will contain the XML data files prior to importing into SwanFRS

Suppliers

Menu Location: System Admin > Purchasing > Set Up Suppliers

Once the supplier has been created within SwanFRS it is necessary to build the link between the supplier as known by SwanFRS and that as referenced by the XML catalogue.

To begin this process, click the CATALOGUE IDS button.

This control needs to be built for all suppliers using the XML catalogue load procedure.

To enable the XML import routine to link the data to the correct supplier a cross reference is required.

Clicking the CATALOGUE IDS button for the selected supplier produces the following screen.

To create new link, click the NEW button which opens an insert panel where it is possible to define new entries.

To amend an existing record, click the pencil icon shown at the beginning of each row.  This opens the selected item for modification.

To confirm the change, click the tick icon to exit without saving the data select the cross icon.

Field

Comments

Catalogue ID

Specify the reference number used to identify the supplier within the XML catalogue.  Multiple references may be created where necessary.

Name

Specify the name of the supplier using this catalogue ID.

Debrand

Specify the de-branded name used when presenting the products at point of sale.

Active

Tick to indicate this relationship is currently active.

Set the untitled column to XML or XML, Internal.

  •         XML should be used when maintaining the product catalogue for this support entirely outside of SwanFRS.

  •      XML, Internal allows importing of catalogues but also enables the operator to maintain the catalogue including pricing within SwanFRS.

Catalogue Codes

The Supplier Catalogue Codes report may be used to list the Catalogue ID set against suppliers within the system listing data in either ID or Supplier Name sequence.

Promotions

To be able to sell from the catalogue and ensure the correct prices are charged it will be necessary to create at least one promotion.

A full explanation of how SwanFRS uses promotions is available in the Use of Promotions document.

To create a new or modify an existing promotion it is necessary to visit the ‘set up promotions’ option within the administration menu within SwanFRS.

The amendment screen is shown below –

Having made an alteration, to confirm the change, click the ACCEPT button to exit without saving the data select the CANCEL button.

If permission allows it is also possible to rebuild prices taking into consideration changes made to the promotion via the REFRESH PRICES button (this is only necessary when changes made are required immediately.  Generally, SwanFRS automatically rebuilds prices overnight therefore if the changes apply to a future date the system will manage the modifications without user intervention)

Field

Comments

Promotion Id

System generated.

Promotion Name

Specify the name given to this promotion.

Location

Not amendable

Effective Date

Specify the effective date for this promotion.  I.e., the date from which the prices linked to this promotion will become / became active.

Date End

Specify the date the promotion will end. 

Base Line Promotion

Specify if this promotion is a base line promotion (base line promotions do not have selling prices, they have cost and MRP only)

XML Structures

Naming Convention

SwanFRS does not impose a file name however care needs to be taken to ensure files are correctly managed. A file naming convention should be adopted to assist with this.  E.g., TITLE<date>.xml

Files pending processing need to have the .xml suffix

SwanFRS renames the file to .running whilst checking the data and then to .done once completed.

SwanFRS cannot change the suffix of a file if it already exists i.e., if the ABC.xml is processed and an ABC.done already exists then an error will be generated. 

This is unlikely in that SwanFRS changes the filename to ACB<date>T<Time> when running – for example ABC.xml would become ABC2009_05_31T15_34_15.running when processing.

There are several XML import structures available.

SKU Numbering

There are two methods of creating products (SKUs) for use within SwanFRS.

  •       Third party – imported via XML.

  •         In-application – created within SwanFRS

It is important to ensure that SKUs created within these separate processes do not conflict. 

The XML catalogue does not impose the A-B-C SKU structure and if using this method in partnership with the manual mode conflict should not occur.

If using a third-party and manual creation it is recommended that the catalogue ID for manual suppliers be set to at least 5000 to limit the potential for SKU conflict on the ‘A’ element of the code.

Products and Prices

This section details the loading of products (SKUs) and prices into SwanFRS from a third-party external source. XML schema for products and prices

When creating the XML catalogue, it is important that it adheres to a pre-specified schema. 

The schema must reside within the directory specified in Application Parameters. (Swan will provide XSD files on your request)

A copy of a schema is shown below –,

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.torex.com/SwanFRS-POS/GenericProductCatalogue"
	xmlns="http://www.torex.com/SwanFRS-POS/GenericProductCatalogue"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xs:element name="Catalogues">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Catalogue" type="CatalogueType" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="specversion" type="xs:decimal" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="CatalogueType">
		<xs:sequence>
			<xs:element name="Range" type="RangeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Item" type="ItemType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="supplier" type="xs:string" use="required"/>
		<xs:attribute name="retailercode" type="xs:string" use="optional"/>
		<xs:attribute name="catname" type="xs:string" use="required"/>
		<xs:attribute name="version" type="xs:decimal" use="required"/>
		<xs:attribute name="catdesc" type="xs:string" use="required"/>
		<xs:attribute name="currency" type="xs:string" use="optional" default="GBP"/>
		<xs:attribute name="language" type="xs:string" use="optional" default="EN"/>
		<xs:attribute name="validfrom" type="xs:date" use="optional"/>
		<xs:attribute name="validto" type="xs:date" use="optional"/>
	</xs:complexType>

	<xs:complexType name="RangeType">
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="homedel" type="HomeDelType" use="optional"/>
	</xs:complexType>

	<xs:complexType name="ItemType">
		<xs:sequence>
			<xs:element name="OptionLink" type="OptionLinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="AvailableDate" type="xs:date" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsVisible" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="LongDescription" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="ImageUrl" type="ImageUrlType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="VideoUrl" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsViewOnly" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Keyword" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="CurrencyCost" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
			<xs:element name="HiddenCost" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
			<xs:element name="RelatedItems" type="RelatedItemsType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="SortNumber" type="xs:integer" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Pack" type="PackType" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="rangeid" type="xs:string" use="required"/>
		<xs:attribute name="retailercode" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc1" type="xs:string" use="optional"/>
		<xs:attribute name="retailerdesc2" type="xs:string" use="optional"/>
		<xs:attribute name="retailerdesc3" type="xs:string" use="optional"/>
		<xs:attribute name="barcode" type="xs:string" use="optional"/>
		<xs:attribute name="cost" type="xs:decimal" use="optional"/>
		<xs:attribute name="retail" type="xs:decimal" use="optional"/>
	<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.torex.com/SwanFRS-POS/GenericProductCatalogue"
	xmlns="http://www.torex.com/SwanFRS-POS/GenericProductCatalogue"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xs:element name="Catalogues">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Catalogue" type="CatalogueType" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="specversion" type="xs:decimal" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="CatalogueType">
		<xs:sequence>
			<xs:element name="Range" type="RangeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Item" type="ItemType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="supplier" type="xs:string" use="required"/>
		<xs:attribute name="retailercode" type="xs:string" use="optional"/>
		<xs:attribute name="catname" type="xs:string" use="required"/>
		<xs:attribute name="version" type="xs:decimal" use="required"/>
		<xs:attribute name="catdesc" type="xs:string" use="required"/>
		<xs:attribute name="currency" type="xs:string" use="optional" default="GBP"/>
		<xs:attribute name="language" type="xs:string" use="optional" default="EN"/>
		<xs:attribute name="validfrom" type="xs:date" use="optional"/>
		<xs:attribute name="validto" type="xs:date" use="optional"/>
	</xs:complexType>

	<xs:complexType name="RangeType">
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="homedel" type="HomeDelType" use="optional"/>
	</xs:complexType>

	<xs:complexType name="ItemType">
		<xs:sequence>
			<xs:element name="OptionLink" type="OptionLinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="AvailableDate" type="xs:date" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsVisible" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="LongDescription" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="ImageUrl" type="ImageUrlType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="VideoUrl" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsViewOnly" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Keyword" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="CurrencyCost" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
			<xs:element name="HiddenCost" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
			<xs:element name="RelatedItems" type="RelatedItemsType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="SortNumber" type="xs:integer" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Pack" type="PackType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="AlternativeRetailerCode" type="AlternativeRetailerCodeType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsSerialNumberEntryRequired" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="ShowPricesOnWeb" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="rangeid" type="xs:string" use="required"/>
		<xs:attribute name="retailercode" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc1" type="xs:string" use="optional"/>
		<xs:attribute name="retailerdesc2" type="xs:string" use="optional"/>
		<xs:attribute name="retailerdesc3" type="xs:string" use="optional"/>
		<xs:attribute name="barcode" type="xs:string" use="optional"/>
		<xs:attribute name="cost" type="xs:decimal" use="optional"/>
		<xs:attribute name="retail" type="xs:decimal" use="optional"/>
		<xs:attribute name="sell" type="xs:decimal" use="optional"/>
		<xs:attribute name="leadtime" type="xs:integer" use="optional"/>
		<xs:attribute name="class" type="xs:string" use="optional"/>
		<xs:attribute name="type" type="xs:string" use="optional"/>
		<xs:attribute name="specialorder" type="xs:boolean" use="optional"/>
		<xs:attribute name="reorderable" type="xs:boolean" use="optional"/>
		<xs:attribute name="minstocklevel" type="xs:integer" use="optional"/>
		<xs:attribute name="maxstocklevel" type="xs:integer" use="optional"/>
		<xs:attribute name="reorderqty" type="xs:integer" use="optional"/>
		<xs:attribute name="homedel" type="HomeDelType" use="optional"/>
		<xs:attribute name="part" type="xs:boolean" use="optional"/>
		<xs:attribute name="pieces" type="xs:integer" use="optional"/>
		<xs:attribute name="width" type="xs:decimal" use="optional"/>
		<xs:attribute name="height" type="xs:decimal" use="optional"/>
		<xs:attribute name="depth" type="xs:decimal" use="optional"/>
		<xs:attribute name="weight" type="xs:decimal" use="optional"/>
		<xs:attribute name="commissiongroup" type="character" use="optional"/>
		<xs:attribute name="incentivevalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="incentiveperc" type="xs:decimal" use="optional"/>
		<xs:attribute name="weborders" type="xs:boolean" use="optional"/>
		<xs:attribute name="tvindicator" type="xs:integer" use="optional"/>
		<xs:attribute name="discontinueddate" type="xs:date" use="optional"/>
		<xs:attribute name="reptier1" type="xs:string" use="optional"/>
		<xs:attribute name="reptier2" type="xs:string" use="optional"/>
		<xs:attribute name="reptier3" type="xs:string" use="optional"/>
		<xs:attribute name="reptier4" type="xs:string" use="optional"/>
		<xs:attribute name="reptier5" type="xs:string" use="optional"/>
		<xs:attribute name="reptier6" type="xs:string" use="optional"/>
		<xs:attribute name="custom1" type="xs:string" use="optional"/>
		<xs:attribute name="custom2" type="xs:string" use="optional"/>
		<xs:attribute name="custom3" type="xs:string" use="optional"/>
		<xs:attribute name="maskseparator" type="xs:string" use="optional" default="-"/>
	</xs:complexType>

	<xs:complexType name="OptionType">
		<xs:sequence>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="AlternativeQuestion" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="NonTextOptionType" type="NonTextOptionTypeType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Choice" type="ChoiceType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="istext" type="xs:boolean" use="optional"/>
		<xs:attribute name="affectcostflag" type="PriceAffectType" use="optional"/>
		<xs:attribute name="affectretailflag" type="PriceAffectType" use="optional"/>
		<xs:attribute name="affectsellflag" type="PriceAffectType" use="optional"/>
		<xs:attribute name="promptqty" type="QuantityPromptType" use="optional"/>
		<xs:attribute name="replaceprice" type="xs:boolean" use="optional"/>
		<xs:attribute name="expandchildoptionchoices" type="xs:boolean" use="optional"/>
	</xs:complexType>

	<xs:complexType name="ChoiceType">
		<xs:sequence>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="OptionLink" type="OptionLinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="ImageUrl" type="ImageUrlType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="optional"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="sequence" type="xs:integer" use="optional"/>
		<xs:attribute name="affectcostvalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="affectretailvalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="affectsellvalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="leadtime" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="-99"/>
					<xs:maxInclusive value="99"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="pricereference" type="xs:integer" use="optional" /> 
		<xs:attribute name="discontinueddate" type="xs:date" use="optional"/>
	</xs:complexType>

	<xs:complexType name="OptionLinkType">
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="sequence" type="xs:integer" use="optional"/>
	</xs:complexType>

	<xs:simpleType name="PriceAffectType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="V"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="QuantityPromptType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="C"/>
			<xs:enumeration value="Q"/>
			<xs:enumeration value="O"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="HomeDelType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Y"/>
			<xs:enumeration value="N"/>
			<xs:enumeration value="O"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="AttributeType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Name" type="xs:string" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:simpleType name="nonEmptyString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="character">
		<xs:restriction base="xs:string">
			<xs:length fixed="true" value="1" />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="ImageUrlType">
		<xs:simpleContent>
			<xs:extension base="nonEmptyString">
				<xs:attribute name="sequence" type="xs:integer" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:simpleType name="NonTextOptionTypeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Radio"/>
			<xs:enumeration value="Swatch"/>
			<xs:enumeration value="List"/>
			<xs:enumeration value="CheckBox"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="RelatedItemsType">
		<xs:sequence>
			<xs:element name="RetailerCode" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="RelationshipDescription" type="xs:string" use="required" />
	</xs:complexType>

	<xs:complexType name="PackType">
		<xs:sequence>
			<xs:element name="Size" type="xs:decimal" minOccurs="1" maxOccurs="1"/>
			<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="AlternativeRetailerCodeType">
		<xs:sequence>
			<xs:element name="RetailerCode" type="xs:string" minOccurs="1" maxOccurs="1"/>
			<xs:element name="Sequence" type="xs:integer" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>

Example

<?xml version="1.0" encoding="utf-8"?>
<Catalogues xmlns="http://www.torex.com/SwanFRS-POS/GenericProductCatalogue" specversion="2.1" >
<Catalogue  supplier="45" catname="Ultrasuites" version="2" catdesc="" > 
<Range id="20" desc="Inspiration Classic" retailerdesc="Inspiration" ></Range>
<Option id="2" desc="Cover Type" istext="0" affectsellflag="N" promptqty="O" >
<Choice  desc="Leather" sequence="1" leadtime="7" >
<OptionLink  id="3" sequence="1"></OptionLink>
 </Choice>
<Choice  desc="Fabric" sequence="2" leadtime="14" >
<OptionLink  id="11" sequence="2"></OptionLink>
 </Choice>
<Choice  desc="Special Order" sequence="3" leadtime="21" >
<OptionLink  id="19" sequence="1"></OptionLink>
 </Choice>
</Option>
<Option id="13" desc="Extra Scatters" istext="0" affectsellflag="V" promptqty="O" >
<Choice  desc="Not Required" sequence="1" >
 </Choice>
<Choice  desc="2 Cushions" sequence="2" affectcostvalue="10" affectsellvalue="25" >
 </Choice>
<Choice  desc="3 Cushions" sequence="3" affectcostvalue="20" affectsellvalue="50" >
 </Choice>
</Option>
<Option id="14" desc="Feet Type" istext="0" affectsellflag="V" promptqty="O" >
<Choice  desc="Wood Effect" sequence="1" affectcostvalue="0" affectsellvalue="0" >
 </Choice>
<Choice  desc="Solid Wood" sequence="2" affectcostvalue="3" affectsellvalue="10" >
 </Choice>
<Choice  desc="Metal Glider" sequence="3" affectcostvalue="4" affectsellvalue="15" >
 </Choice>
<Choice  desc="Metail Bun" sequence="4" affectcostvalue="5" affectsellvalue="20" >
 </Choice>
</Option>
<Option id="16" desc="Recliner" istext="0" affectsellflag="V" promptqty="O" >
<Choice  desc="Not Required" sequence="1" >
 </Choice>
<Choice  desc="Left" sequence="2" affectcostvalue="25" affectsellvalue="50" >
<OptionLink  id="17" sequence="1"></OptionLink>
 </Choice>
<Choice  desc="Right" sequence="2" affectcostvalue="25" affectsellvalue="50" >
<OptionLink  id="17" sequence="1"></OptionLink>
 </Choice>
<Choice  desc="Dual" sequence="4" affectcostvalue="50" affectsellvalue="100" >
<OptionLink  id="17" sequence="1"></OptionLink>
 </Choice>
</Option>
<Item retailercode="45-20-5" AlternativeCode="INSP5CGP----" desc="5 Seater Corner Group" rangeid="20" code="Xcg" retailerdesc1="5 Seater Corner Group" cost="430" retail="865" sell="1385.1" leadtime="42" class="1" type="L001" reorderable="1" homedel="Y" pieces="3" width="200" height="100" depth="300" weight="5" weborders="0" >
<OptionLink  id="2" sequence="1"></OptionLink>
<OptionLink  id="13" sequence="2"></OptionLink>
<OptionLink  id="14" sequence="3"></OptionLink>
<OptionLink  id="16" sequence="4"></OptionLink>
<LongDescription><![CDATA[Rolling out the red carpet, so to speak, with classic elements including a curvaceous camelback profile, pleated roll arms and scrolled, exposed frame, the luxuriously oversized Winnsboro chair lets you bring home the royal treatment well within budget. The style is clearly inspired by yesteryear, but the feel is modern comfort at its best. Masterful mix of designer back pillows in lieu of a traditional cushion is wonderfully indulgent.  ]]></LongDescription>
<ImageUrl sequence ="1">image1.png</ImageUrl>
<ImageUrl sequence ="100">image100.png</ImageUrl>
<Pack> <Size>102</Size> <Description>pallet</Description> </Pack>
 </Item>
</Catalogue>
</Catalogues>

Schema Content

The following section detail the elements required when importing the XML product catalogue.

Ranges (Range Type)

This section repeats for each range within the catalogue.

	<xs:complexType name="RangeType">
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="homedel" type="HomeDelType" use="optional"/>
	</xs:complexType>

Item

Description

Optional

id

A unique within supplier reference (numeric) for the range specified

desc

The name or title of the range (design or collection) 

retailerdesc

The de-branded name of the range

homedel

Not currently used – indicates if the range is a direct home delivery

Options will be Y / N / O

Products (Item Type)

This section repeats for each product within the range.

	<xs:complexType name="ItemType">
		<xs:sequence>
			<xs:element name="OptionLink" type="OptionLinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="AvailableDate" type="xs:date" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsVisible" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="LongDescription" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="ImageUrl" type="ImageUrlType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="VideoUrl" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="IsViewOnly" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Keyword" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="CurrencyCost" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
			<xs:element name="HiddenCost" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
			<xs:element name="RelatedItems" type="RelatedItemsType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="SortNumber" type="xs:integer" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Pack" type="PackType" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="rangeid" type="xs:string" use="required"/>
		<xs:attribute name="retailercode" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc1" type="xs:string" use="optional"/>
		<xs:attribute name="retailerdesc2" type="xs:string" use="optional"/>
		<xs:attribute name="retailerdesc3" type="xs:string" use="optional"/>
		<xs:attribute name="barcode" type="xs:string" use="optional"/>
		<xs:attribute name="cost" type="xs:decimal" use="optional"/>
		<xs:attribute name="retail" type="xs:decimal" use="optional"/>
		<xs:attribute name="sell" type="xs:decimal" use="optional"/>
		<xs:attribute name="leadtime" type="xs:integer" use="optional"/>
		<xs:attribute name="class" type="xs:string" use="optional"/>
		<xs:attribute name="type" type="xs:string" use="optional"/>
		<xs:attribute name="specialorder" type="xs:boolean" use="optional"/>
		<xs:attribute name="reorderable" type="xs:boolean" use="optional"/>
		<xs:attribute name="minstocklevel" type="xs:integer" use="optional"/>
		<xs:attribute name="maxstocklevel" type="xs:integer" use="optional"/>
		<xs:attribute name="reorderqty" type="xs:integer" use="optional"/>
		<xs:attribute name="homedel" type="HomeDelType" use="optional"/>
		<xs:attribute name="part" type="xs:boolean" use="optional"/>
		<xs:attribute name="pieces" type="xs:integer" use="optional"/>
		<xs:attribute name="width" type="xs:decimal" use="optional"/>
		<xs:attribute name="height" type="xs:decimal" use="optional"/>
		<xs:attribute name="depth" type="xs:decimal" use="optional"/>
		<xs:attribute name="weight" type="xs:decimal" use="optional"/>
		<xs:attribute name="commissiongroup" type="xs:string" use="optional"/>
		<xs:attribute name="incentivevalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="incentiveperc" type="xs:decimal" use="optional"/>
		<xs:attribute name="weborders" type="xs:boolean" use="optional"/>
		<xs:attribute name="tvindicator" type="xs:integer" use="optional"/>
		<xs:attribute name="discontinueddate" type="xs:date" use="optional"/>
		<xs:attribute name="reptier1" type="xs:string" use="optional"/>
		<xs:attribute name="reptier2" type="xs:string" use="optional"/>
		<xs:attribute name="reptier3" type="xs:string" use="optional"/>
		<xs:attribute name="reptier4" type="xs:string" use="optional"/>
		<xs:attribute name="reptier5" type="xs:string" use="optional"/>
		<xs:attribute name="reptier6" type="xs:string" use="optional"/>
		<xs:attribute name="custom1" type="xs:string" use="optional"/>
		<xs:attribute name="custom2" type="xs:string" use="optional"/>
		<xs:attribute name="custom3" type="xs:string" use="optional"/>
		<xs:attribute name="maskseparator" type="xs:string" use="optional" default="-"/>
	</xs:complexType>

The following sections are repeating items within the SKU and require multiple tags – see Example for details.

Item

Description

Optional

OptionLink

Not currently used

<xs:complexType name="OptionLinkType">
	<xs:attribute name="id" type="xs:string" use="required"/>
	<xs:attribute name="sequence" type="xs:integer" use="optional"/>
</xs:complexType>

AvailableDate

The date available

IsVisible

Set to 1 if this item is to be visible on a linked website

LongDescription

Optional extra narrative used on the web and in information boxes within SwanFRS

ImageURL

Image paths associated with the product

<xs:complexType name="ImageUrlType">
	<xs:simpleContent>
		<xs:extension base="xs:string">
			<xs:attribute name="sequence" type="xs:integer" use="optional"/>
		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

VideoURL

Not currently used in SwanFRS

IsViewOnly

Set to 1 if this item can be seen but not ordered via a linked website

Keyword

A list of keywords used on the website for this item.

Attribute

A linked attribute for this SKU

<xs:complexType name="AttributeType">
	<xs:simpleContent>
		<xs:extension base="xs:string">
			<xs:attribute name="Name" type="xs:string" />
		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

CurrencyCost

The cost of the SKU in the supplier’s currency where applicable

RelatedItems

Not currently used.

<xs:complexType name="RelatedItemsType">
	<xs:sequence>
		<xs:element name="RetailerCode" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="RelationshipDescription" type="xs:string" />
</xs:complexType>

SortNumber

Not currently used.

Pack

The pack size and type for this item.

<xs:complexType name="PackType">
	<xs:sequence>
		<xs:element name="Size" type="xs:decimal" minOccurs="1" maxOccurs="1"/>
		<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1"/>
	</xs:sequence>
</xs:complexType>

The following tags relate to the base SKU.

Item

Description

Optional

code

The supplier’s code – manufacturers part/item number

desc

The description of the item

rangeid

The reference linking the item within the range

retailercode

The SwanFRS SKU Code

This must be unique across the whole of the SwanFRS database

retailerdesc1

Description line 1

If not set, then <desc> will be used as the first description element in SwanFRS

retailerdesc2

Description line 2

retailerdesc3

Description line 3

barcode

The supplier’s barcode

cost

The cost price to the retailer of the item

If measured the cost entered should be per unit of width i.e., £10 for a 3m wide item would equate to £30 per m sold at point of sale

Costs should be in base currency. (Supplier currency settings are ignored)

retail

The MRP / RRP price

If measured the MRP entered should be per unit of width i.e., £10 for a 3m wide item would equate to £30 per m sold at point of sale

MRPs should be in base currency. (Supplier currency settings are ignored)

sell

The price the item will be sold for at point of sale

If measured the price entered should be per unit of width i.e., £10 for a 3m wide item would equate to £30 per m sold at point of sale

Sell prices should be in base currency. (Supplier currency settings are ignored)

leadtime

The number of days it takes from ordering to supplier delivery of the item

class

Not currently supported by SwanFRS

type

The product group the item will be part of (must be a valid product group known to SwanFRS)

specialorder

Not currently supported by SwanFRS

reorderable

0 or 1 – set to 1 if this item is to be monitored within the ‘purchase order optimisation’ process

Will default to 0 if not populated

minstocklevel

Minimum stock level

maxstocklevel

Maximum stock level

reorderqty

Standard re-order pack quantity

homedel

Not currently operational

Options will be Y / N / O

part

0 or 1 – set to 1 if the item is to be considered a part and therefore only saleable if the user has the SELL_PARTS privilege.

pieces

The number of boxes / pieces this item is shipped in (whole numbers greater than 0)

Will default to 1 if not provided

width

The width of the item (in millimetres or inches)

For measured products, set this to -1 to indicate the item is a custom fit carpet.

height

The height of the item (in millimetres or inches)

Where set this cannot be zero.

depth

The depth of the item (in millimetres or inches)

Where set this cannot be zero.

weight

The weight of the item

Where set this cannot be zero.

commissiongroup

The commission grouping for this item

incentivevalue

Not currently supported by SwanFRS

weborders

0 or 1 – Indicates that this item can be sold through the SwanFRS web service interface.

Will default to 0 if not provided.

tvindicator

Indicates the TV licensing category for this item.

discontinueddate

The date this item will cease to be available.

reptier1

Reporting tier level 1 code

reptier2

Reporting tier level 2 code

reptier3

Reporting tier level 3 code

reptier4

Reporting tier level 4 code

reptier5

Reporting tier level 5 code

reptier6

Reporting tier level 6 code

custom1

Not currently supported by SwanFRS

custom2

Not currently supported by SwanFRS

custom3

Not currently supported by SwanFRS

maskseparator

Not currently supported by SwanFRS

Options Header (Option Type)

This section repeats for each option (question) within the catalogue.

<xs:complexType name="OptionType">
		<xs:sequence>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="AlternativeQuestion" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="NonTextOptionType" type="NonTextOptionTypeType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="Choice" type="ChoiceType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="istext" type="xs:boolean" use="optional"/>
		<xs:attribute name="affectcostflag" type="PriceAffectType" use="optional"/>
		<xs:attribute name="affectretailflag" type="PriceAffectType" use="optional"/>
		<xs:attribute name="affectsellflag" type="PriceAffectType" use="optional"/>
		<xs:attribute name="promptqty" type="QuantityPromptType" use="optional"/>
		<xs:attribute name="replaceprice" type="xs:boolean" use="optional"/>
		<xs:attribute name="expandchildoptionchoices" type="xs:boolean" use="optional"/>
	</xs:complexType>

Item

Description

Optional

id

The unique within catalogue supplier numeric code for the option (question)

desc

The description of the option

retailerdesc

An alternative description

istext

0 = this is a drop-down list (default if not provided)

1 = this is a text box list requiring manual answers

affectcostflag

Not currently supported by SwanFRS

N = not price affecting

V = value uplift

P = percentage uplift

R = replacement cost – No longer supported

affectretailflag

Not currently supported by SwanFRS

N = not price affecting

V = value uplift

P = percentage uplift

R = replacement cost – No longer supported

affectsellflag

N = not price affecting (default if not provided)

V = value uplift

P = percentage uplift

R = replacement costs/prices – No longer supported

promptqty

O = no quantity (default if not provided)

Q = enter a quantity (decimal)

C = choose answer from drop down – whole integer in range 0 to 10.

replaceprice

Used to indicate replacement pricing.  If a replacement priced option is encountered, the choice replaces the base price of the item if the current base price is of lower value.  Where a replacement price is lower than the current base price of an item then the price stated (using the affectcostvalue, affectsellvalue & affectretailvalue attributes against the choice) becomes an uplift price (value or percentage dependent upon affectsellflag attribute) and adds to the overall value of the item

1 = this option is price REPLACING dependant on the conditions outlined above

0 = this option is not price replacing

Option answers (Choice Type)

This section repeats for each option choice (answer) within the catalogue.

	<xs:complexType name="ChoiceType">
		<xs:sequence>
			<xs:element name="Attribute" type="AttributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="OptionLink" type="OptionLinkType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="optional"/>
		<xs:attribute name="desc" type="xs:string" use="required"/>
		<xs:attribute name="retailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="sequence" type="xs:integer" use="optional"/>
		<xs:attribute name="affectcostvalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="affectretailvalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="affectsellvalue" type="xs:decimal" use="optional"/>

		<xs:attribute name="leadtime" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="-99"/>
					<xs:maxInclusive value="99"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>

		<xs:attribute name="pricereference" type="xs:integer" use="optional" /> 
		<xs:attribute name="discontinueddate" type="xs:date" use="optional"/>
	</xs:complexType>

For ‘istext’ options no answer (choices) should be defined.

Item

Description

Optional

code

alphanumeric code representing this answer

desc

Description of the answer (drop down or text entry field title)

retailerdesc

Alternative description

sequence

Sequence reference

If provided this will control the sequence that answers/choices are presented during product specification.

affectcostvalue

Value to affect cost price (use of value depends on option setting)

affectretailvalue

Value to affect retail price (use of value depends on option setting)

affectsellvalue

Value to affect selling price (use of value depends on option setting)

leadtime

The lead time adjustment for this answer (range -99 to +99)

Option lead times cannot cause the SKU lead time to go negative.

pricereference

Used for replacement pricing and indicates the reference table used to hold the replacement prices for the chosen item and choice combination.

discontinueddate

The date this choice will cease to be available.

Option link (Option Link Type)

Used when an answer has a further question or if the item has an option (list of options).

	<xs:complexType name="OptionLinkType">
		<xs:attribute name="id" type="xs:string" use="required"/>
		<xs:attribute name="sequence" type="xs:integer" use="optional"/>
	</xs:complexType>

Item

Description

Optional

id

Reference linking to an option header id

sequence

Sequence reference

If provided this will control the sequence that options are presented during product specification.

It is important that the element is defined before it is referenced in the XML load file – e.g., the option must be specified before it can be referenced at item level. XML catalogues should be structured so that all ranges are defined first, followed by all options, with the item appearing at the end of the catalogue.

Options (and the choices) do not need to be included in the XML file if they have previously been loaded into the SwanFRS database – e.g., an OptionLink element against an Item can reference an Option ID that is not in this individual catalogue if the option has previously been added to the database on previous catalogue loads.

The catalogue once ready for loading should be saved in the specified directory and have a .xml suffix. (File name is user definable) once processed the suffix will change to. done.

The XML need not contain a full list of choices to questions.  If a choice has been previously sent via an XML and is not contained within a later XML, the option choice will remain available at point of ordering.  To remove an option choice the item must have a ‘discontinued date’ set.

Discontinuation of products can be controlled via a ‘radio button’ at time of load or by providing the DiscontinuedDate attribute against the item. To discontinue a product, it can be omitted from the XML and the discontinue option selected, or alternatively the Item can be included but DiscontinuedDate provided.

It is important that when revising already known products that they retain the same SKU reference otherwise the load process will create a second product rather than replacing the originals definition.

Blocked Options

It is possible to block certain answers to questions for specific products within SwanFRS.  This is achieved via an XML load file

XML Schema for Blocked Options

The XSD for blocked options

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.Micros.com/SwanFRS/BlockedChoices"
	xmlns="http://www.Micros.com/SwanFRS/BlockedChoices"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xs:element name="BlockedChoices">
		<xs:complexType >
			<xs:sequence>
				<xs:element name="BlockedChoice" type="BlockedChoiceType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="BlockedChoiceType">
		<xs:attribute name="itemretailercode" type="xs:string" use="required"/>
		<xs:attribute name="optionid" type="xs:string" use="required"/>
		<xs:attribute name="choicedesc" type="xs:string" use="required"/>
		<xs:attribute name="choiceretailerdesc" type="xs:string" use="optional"/>
		<xs:attribute name="isblocked" type="xs:boolean" use="required"/>
	</xs:complexType>
</xs:schema>

Example of XML

<?xml version="1.0" encoding="utf-8" ?> 
<BlockedChoices xmlns="http://www.Micros.com/SwanFRS/BlockedChoices">
	<BlockedChoice itemretailercode="866-0905-949" optionid="51" choicedesc="Brown Textured" isblocked="1"></BlockedChoice>
	<BlockedChoice itemretailercode="866-0905-949" optionid="302" choicedesc="Premium Fiber" isblocked="1"></BlockedChoice>
	<BlockedChoice itemretailercode="866-0905-950" optionid="52" choicedesc="Green" isblocked="1"></BlockedChoice>
	<BlockedChoice itemretailercode="866-0905-950" optionid="1" choicedesc="Grade C" isblocked="1"></BlockedChoice>
</BlockedChoices>

Definition of the settings at line level.

Item

Description

Optional

itemretailercode

Set to the SKU of the SwanFRS code you wish to limit the possible answers for.

optionid

Set to the ‘option code’ specified for the question you wish to block answers to.

choicedesc

Set to the description of the answer you wish to block.

Choiceretailerdesc

The retailer’s description of the option

isblocked

Set to 1 to stop the operator from being able to choose (view) this answer when building the SKU

Set to 0 when reverting a previous block

The 0 option is only required when an answer has been previously blocked as the system assumes all answers are possible for all SKUs unless instructed otherwise.

Default Options

It is possible to set a default offering for certain answers to questions for specific products within SwanFRS.  This is achieved via an XML load file

XML Schema for Default Options

The XSD for default options

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.Micros.com/SwanFRS/DefaultChoices"
	xmlns="http://www.Micros.com/SwanFRS/DefaultChoices"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xs:element name="DefaultChoices">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="DefaultChoice" type="DefaultChoiceType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="DefaultChoiceType">
		<xs:attribute name="itemretailercode" type="xs:string" use="required"/>
		<xs:attribute name="optionid" type="xs:string" use="required"/>
		<xs:attribute name="choicedesc" type="xs:string" use="optional"/>
		<xs:attribute name="choiceretailerdesc" type="xs:string" use="optional"/>
	</xs:complexType>
</xs:schema>

Example of XML

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

<DefaultChoices xmlns="http://www.Micros.com/SwanFRS/DefaultChoices">
	<DefaultChoice itemretailercode="866-0905-949" optionid="301" choicedesc="Fabric Down"></DefaultChoice>
	<DefaultChoice itemretailercode="866-0905-949" optionid="302" choicedesc="Luxury Down"></DefaultChoice>
	<DefaultChoice itemretailercode="866-0905-950" optionid="301" choicedesc="Luxury Down"></DefaultChoice>
	<DefaultChoice itemretailercode="866-0905-950" optionid="1" choicedesc="Grade B"></DefaultChoice>
</DefaultChoices>

Definition of the settings at line level.

Item

Description

Optional

itemretailercode

Set to the SKU of the SwanFRS code you wish to set a default answer for.

optionid

Set to the ‘option code’ specified for the question you wish to create a default answer to.

choicedesc

Set to the description of the answer you wish to be the default. 

Not providing this element turns off the default choice for the SKU/Option

Should the optionid have a previous default it will be replaced with the new setting.

Choiceretailerdesc

The retailer’s description

Replacement Pricing

It is possible to instruct SwanFRS to replace the ‘base’ selling price of a product dependent upon the answer given to a question.  It is possible to define this to occur several times within the product whilst the composition of the item is being specified.

XML Schema for Replacement Prices

The XSD for replacement prices

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.Micros.com/SwanFRS/ReplacementPrices"
	xmlns="http://www.Micros.com/SwanFRS/ReplacementPrices"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xs:element name="ReplacementPrices">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ReplacementPrice" type="ReplacementPriceType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="ReplacementPriceType">
		<xs:attribute name="itemretailercode" type="xs:string" use="required"/>
		<xs:attribute name="optionid" type="xs:string" use="optional"/>
		<xs:attribute name="pricereference" type="xs:integer" use="required"/>
		<xs:attribute name="costvalue" type="xs:decimal" use="required"/>
		<xs:attribute name="retailvalue" type="xs:decimal" use="optional"/>
		<xs:attribute name="sellvalue" type="xs:decimal" use="required"/>
	</xs:complexType>
</xs:schema>

Example of XML

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

<ReplacementPrices xmlns="http://www.Micros.com/SwanFRS/ReplacementPrices">
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="10" costvalue="1000" sellvalue="1334"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="20" costvalue="1100" sellvalue="1400"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="30" costvalue="1200" sellvalue="1534"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="40" costvalue="1300" sellvalue="1800"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="35" costvalue="1500" sellvalue="2000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="10" costvalue="1100" sellvalue="1434"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="20" costvalue="2000" sellvalue="2000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="30" costvalue="3000" sellvalue="3000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="40" costvalue="4000" sellvalue="4000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="35" costvalue="5000" sellvalue="5000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="10" costvalue="600" sellvalue="600"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="20" costvalue="1000" sellvalue="1200"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="30" costvalue="1100" sellvalue="1300"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="40" costvalue="1200" sellvalue="1400"></ReplacementPrice>
</ReplacementPrices>

Definition of the settings at line level.

Item

Description

Optional

itemretailercode

Set to the SKU of the SwanFRS code you wish to set a default answer for.

Optionid

If an item and option combination have a different replacement price value than all other option occurrences for this item, an individual set of prices can be provided. For example, encountering Optionid 1000 within Item 866-0905-951 could turn off replacement pricing (so set costvalue and sellvalue to 0)  

pricereference

Define a code (numeric only) which will be used as option choices within the catalogue when seeking a replacement price.

This price reference should be held within the <pricereference> element of the option choice in the main product catalogue XML file.

costvalue

The replacement cost price of the item with the chosen option answer.

Retailvalue

The replacement retail price of the item.

sellvalue

The replacement selling price of the item when the replacement answer is chosen.

Example of a product XML containing a replacement option

<Option id="6" desc="Fabric" retailerdesc="Fabric" affectsellflag="N" replaceprice=”1”>
	<Choice desc="Grades COM/D/E" pricereference="1"><OptionLink id="51"></OptionLink></Choice>
	<Choice desc="Grades F/G pricereference ="2"><OptionLink id="52"></OptionLink></Choice>
	<Choice desc="Grades H/I" pricereference ="3"><OptionLink id="53"></OptionLink></Choice>
	<Choice desc="Grades J/K" pricereference ="4"><OptionLink id="54"></OptionLink></Choice>
	<Choice desc="Grades L/N" pricereference ="5"><OptionLink id="55"></OptionLink></Choice>
	<Choice desc="Grade P" pricereference ="6"><OptionLink id="56"></OptionLink></Choice>
<Choice desc="Grades R/T" pricereference ="7"><OptionLink id="57"></OptionLink></Choice>
	<Choice desc="Grade U" pricereference ="8"><OptionLink id="58"></OptionLink></Choice>
	<Choice desc="Grade V" pricereference ="9"><OptionLink id="59"></OptionLink></Choice>
	<Choice desc="Grade W" pricereference ="10"><OptionLink id="60"></OptionLink></Choice>
</Option>
<Option id="50" desc="Wood Trim" affectsellflag="V">
	<Choice code="047" desc="Gold" affectcostvalue="0" affectsellvalue="0"></Choice>	
	<Choice code="058" desc="Signature" affectcostvalue="0" affectsellvalue="0"></Choice>
	<Choice code="068" desc="Craftsman Oak" affectcostvalue="0" affectsellvalue="0"></Choice>
	<Choice code="114" desc="Ebony" affectcostvalue="75" affectsellvalue="185"></Choice>
	<Choice code="981" desc="Old Continent Gold" affectcostvalue="170" affectsellvalue="425"></Choice>
	<Choice code="983" desc="Old Continent with Ivory" affectcostvalue="170" affectsellvalue="425"></Choice>
	<Choice code="988" desc="Tortoise" affectcostvalue="170" affectsellvalue="425"></Choice>
</Option>

Option id 50 is a standard Price Uplift option (affectsellflag = V), and so the affectcostvalue and affectsellvalue attributes of the choices will uplift the items base price accordingly.

Option id 6 is a Price Replacement option (replaceprice=”1”), and so the pricereference attribute contains a Price Reference. Using the previous sample PriceReplacement xml, if I sell SKU 9-1-130 and option 1 (Fabric) is encountered, selecting Grades F/G will see a price reference = 2, and therefore will set the base price as $300. However, if I sell SKU 9-4-890 and I select Grades F/G, price reference still = 2 but for this SKU it will lead to a base price of $400.

Note the product XML does not contain the replacement price grid.

Explanation of Replacement Pricing

An item is selected, and the system begins to request the answers to a series of questions. 

At this stage, the following is displayed.

Line

Option

MRP

Base price

Qty

Option price

Price

Cumulative price

1

SKU – base item

£10.00

£10.00

1

£10.00

£10.00

2

Regular option (uplift flat rate of £3.00)

2

£3.00

£6.00

£16.00

3

Regular option (percentage uplift of 10%)

£1.00

£1.00

£17.00

When a replacement option is encountered is details will change to that shown below –

Line

Option

MRP

Base price

Qty

Option price

Price

Cumulative price

1

SKU – base item

£10.00

£10.00

1

£50.00

2

Regular option (uplift flat rate of £3.00)

2

£3.00

£6.00

£56.00

3

Regular option (percentage uplift of 10%)

£5.00

£5.00

£61.00

4

Replacement option

£50.00

£50.00

£61.00

If a replacement option is met which is less than the prevailing base price the option settings are examined. (Line 5 of the examples below)

If the option is set to not price affecting, then the option answer becomes a zero priced option as in the example below

Line

Option

MRP

Base price

Qty

Option price

Price

Cumulative price

1

SKU – base item

£10.00

£10.00

1

£50.00

2

Regular option (uplift flat rate of £3.00)

2

£3.00

£6.00

£56.00

3

Regular option (percentage uplift of 10%)

£5.00

£5.00

£61.00

4

Replacement option

£50.00

£50.00

£50.00

£61.00

5

Replacement option

£45.00

£0.00

£0.00

£61.00

If the option is a percentage or value uplift option, the cost/sell price assigned to the answer will be added to the product.  In the example below the option has a 10% uplift of base price.

Line

Option

MRP

Base price

Qty

Option price

Price

Cumulative price

1

SKU – base item

£10.00

£10.00

1

£50.00

2

Regular option (uplift flat rate of £3.00)

2

£3.00

£6.00

£56.00

3

Regular option (percentage uplift of 10%)

£5.00

£5.00

£61.00

4

Replacement option

£50.00

£50.00

£50.00

£61.00

5

Replacement option

£45.00

£5.00

£5.00

£66.00

As options are completed the routine may need to redisplay to accommodate changes to prices in respect of the new ‘replacement’ options and the impact this has on percentage uplift options.

Example of linking

SKU X-X-X - Option 1234 – replacement

Answer A – reference 1

Answer B – reference 2

Answer C – reference 40

Answer D – reference 2

Price control

SKU X-X-X

Reference 1

$500.00

Reference 2

$1000.00

Reference 40

$2000.00

If answer A is chosen, the product value is $500.00

If answer B or D is chosen, the price is $1000.00

If answer C is chosen, the price is $2000.00

Promotion Control for options

SwanFRS always suggests the newest active promotion at time of sale. 

The logic flow below indicates the checking sequence used by SwanFRS to ensure the most recent promotion is used to present values to the operator.

1st pass

Find all CURRENT promotions for the selected SKU

If the promotion is branch specific and not for the operators branch it is ignored

If the promotion is for the operator’s branch it will be used

If branch specific promotions will be used in preference to company wide promotions

2nd pass

Sequence branch specific promotions first

Sequence using the effective date, place in descending date order i.e., the latest start date first

If more than one promotion has the same start date, then use the load date to sequence using load date sequence with the newest load date first.

If no current promotions are available find any suitable standard promotions – i.e., base line promotions

                The same sequencing applies.

E.g.

Promotion

Effective Date

Load date

End date

A

01/01/09

12/12/08

05/01/09

B

04/01/09

13/12/08

05/01/09

C

04/01/09

14/12/08

06/01/09

D

03/01/09

15/12/08

06/01/09

  •          On 02/01/09 the system would only offer promotion A

  •        On 05/01/09 the system would offer C then B then D then A

  •         On 06/01/09 the system would offer promotion C then D

If the operator has sufficient privilege, they can change the suggested promotion changing to another from the drop-down list.

Once the promotion has been established SwanFRS will attempt to use matching option prices for the chosen promotion.

Due to the methodologies employed with XML import it is possible to have a promotion with no option prices linked to it.

In these circumstances SwanFRS will take option pricing from the ‘base line promotion’ only – it will not attempt to obtain a price from any other current promotion in the system.

To present this another way – the option price presented at time of product specification will be that set against the promotion, failing this, the price will be from the base line promotion.

This logic only applies to promotions created via XML import – promotions generated via the third party import do not offer the potential for missing option prices in that the import from a third party forces a full send of all options with every supplier.

Product Sets

It is possible to load product sets into the application via XML (and / or via manual set up within the application)

XML Schema for Blocked Options

The XSD for blocked options

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.Micros.com/SwanFRS/FurnitureSets"
	xmlns="http://www.Micros.com/SwanFRS/FurnitureSets"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xs:element name="FurnitureSets">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="FurnitureSet" type="FurnitureSetType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="FurnitureSetType">
		<xs:sequence>
			<xs:element name="Component" type="ComponentType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="itemretailercode" type="xs:string" use="required"/>
		<xs:attribute name="fixedprice" type="xs:boolean" use="optional" default="0"/>
	</xs:complexType>

	<xs:complexType name="ComponentType">
		<xs:attribute name="itemretailercode" type="xs:string" use="required"/>
		<xs:attribute name="quantity" type="xs:integer" use="required"/>
	</xs:complexType>
</xs:schema>

Example of XML

<?xml version="1.0" encoding ="utf-8" ?>
<FurnitureSets xmlns="http://www.Micros.com/SwanFRS/FurnitureSets">
<FurnitureSet itemretailercode="862-36792-227" fixedprice="1">
<Component itemretailercode="862-36792-227-1" quantity="1"/>
<Component itemretailercode="862-36792-227-2" quantity="1"/>
</FurnitureSet>
<FurnitureSet itemretailercode="862-41219-435" fixedprice="1">
<Component itemretailercode="862-41219-435-1" quantity="1"/>
<Component itemretailercode="862-41219-435-2" quantity="1"/>
<Component itemretailercode="862-41219-435-3" quantity="1"/>
<Component itemretailercode="862-41219-435-4" quantity="1"/>
</FurnitureSet>
</FurnitureSets>

Definition of the settings at set level.

Item

Description

Optional

Furnitureset itemretailercode

Set to the SKU of the product set

Fixedprice

Set to 1 for fixed prices, 0 for interactive pricing

Definition of the settings at component level.

Item

Description

Optional

Component itemretailercode

Set to the SKU of the item or component of the set

quantity

The number of units of this item within the set

Loading XML into SwanFRS

XML load Screen

Via the products menu within the administration section of SwanFRS it is possible to load an XML data file.

Selecting the option produces the following screen –

Mode Options

There are three modes of operation each building on the previous.  It is not necessary to run all three in that the second option performs the tasks of the first option plus a data check.  The third option checks the structure, data and loads the XML into the database.

Option

Comments

Verify structure

This option checks the XML against the ‘standard’ schema to ensure it adheres to the rule and regulations of a product catalogue load.

This option does not require the promotion to be specified.

Verify structure & data

In addition to checking the XML structure this option also checks the contents of the data file for validity and reports on what would have happened if the data had been applied to the existing database.

This option enables the choice of a promotion from the drop-down list.

Verify structure, data, and update

This option checks the catalogue structure and data content and applies the data to the database, assuming the XML and its contents pass the verification processes.

This option enables the setting of promotion and offers the choice of discontinuing ranges/items missing from the catalogue.

Upload Type

There are four XML structures.  This element of the load process allows the operator to tell the system which format of XML is being processed and therefore which schema to check the structure against.  It is not possible to mix structures in a single load file.

Option

Comments

Ranges, products, options, and prices

The data file specified contains a product catalogue (items options and prices)

Default option choices

The data file contains a series of default settings for options.

Blocked option choices

The load file specified contains blocked option data.

Replacement prices

The load file contains replacement prices for use within the product specification processes.

Product sets

The load file contains information re the formulation of a product set.

Control Options

Option

Comments

Always Calculate and Overwrite Selling Prices

Ticking this box instructs SwanFRS to calculate selling prices for SKUs within the Catalogue where the selling price is omitted from the load data.

The formula for calculation of the selling price is set against the supplier’s catalogue ID.

This option only applies when loading Ranges, Products, Options and Prices catalogues.

Location

This option is not available when using the verify structure only option or when loading default or blocked option XMLs.

When available this option allows the operator to specify which location the prices within the XML are to be applied to.

If the operator has the POWER_USER privilege all locations will be listed.

If the operator has CHANGE_LOCATION_ALL, then all locations within the company will be visible.

If the operator has CHANGE_LOCATION_BA, then only locations within the operator’s BA will be visible.

If the operator as none of the above, then they will only be able to select their own location.

Selecting ‘all locations’ effectively creates prices for all locations listed.

If not selecting ‘all locations’, then it is only possible to update a single location at a time.

Selling promotion

This option is not available when using the verify structure only option or when loading default or blocked option XMLs.

The routine will only display promotions available for the selected location.  If ‘all locations’ are selected, then only company wide promotions will be shown.

Choose the selling promotion the catalogue contents are to be linked to. 

The promotion chosen will then be updated and prices loaded or replaced, as necessary.

If the promotion is active today and prices are to change today, then it will be necessary to run a ‘refresh prices’ option once the catalogue has been processed (either via set up promotions or via the catalogue search/search stock page within sales)

Discontinue missing ranges within suppliers

Only required when operating with verify and update and with an XML product/price catalogue.

When selected the routine will discontinue all products that exist against ranges not identified in this XML file (within the same supplier).  I.e., If range 1 was included in the <range> section of the XML file but range 2 was not, the whole of range 2 would be discontinued.

Discontinue missing items within supplier range

Only required when operating with verify and update and with an XML product/price catalogue.

When selected the routine will discontinue all products not present within the XML load file which are linked to a supplier range contained within it.  I.e., if range 1 contained only 40% of the products in it and no items from range 2 (and no reference to range 2 in the <range> section), the routine would discontinue 60% of range 1 but leave range 2 unaffected.

Discontinue missing options within the vendor

Only required when operating within verify and update and with an XML product/price catalogue.

When selected the routine will discontinue all options within the vendor that are not present within the XML load. This option allows a clean-up of old options questions.

Ticking does not discontinue option answers.  To remove an answer include it in the option list setting a discontinue date of today.  This instructs the system that this answer is no longer to be offered as a choice at time of product specification.

Price / Cost Control

SwanFRS can manage multiple cost/selling prices for different locations on a day.  This is documented in the Use of Promotions guide.

When importing data via an XML catalogue it is necessary to link the catalogue to a promotion to enable SwanFRS to ensure the correct prices are charged for the appropriate location/product/date combination.  This is achieved at time of importing the XML.

When the XML is to be loaded, the selection of a promotion is required.  The routine will then create a pricing record for each product in the XML load file and associate it with the selected promotion.  The effective dates are taken from the promotion set up.

It is therefore possible to load one XML file into several promotions and to pre-load prices which will not become effective until the system data reaches the start date of the promotion.

If the promotion chosen is a ‘base line’ promotion the routine will only generate cost and MRP records. 

If the promotion chose is not a base line, then cost, selling and MRP prices will be created.

If a price already exists for the product within the chosen promotion, it will be overwritten by the prices contained within the XML.

It is therefore important to ensure the XML load file contains the correct prices for the chosen promotion.

Processing the XML

Catalogue Loads

Having selected the PROCESS button, the routine will ‘crunch’ the selected XML load file.

Where a problem has been found with the load file a warning message will be displayed, like that shown below –

To view the details of the error, click the link on the screen.

Successful processing produces the following type of message.

Clicking the here option produces an audit screen like that shown below

There is no undo facility with XML catalogue loading therefore it is important to ensure you have checked the content of the load file and are happy re the changes to be made by reviewing the audit produced.

Blocked Option Load

To process an XML containing blocked options the screen option selection should appear like that shown below.

Processing the data file will produce an audit report and warning message as per the XML catalogue load.

Clicking the highlighter hyperlink opens the audit log where details of the load may be viewed.

Default Option Load

To process an XML containing blocked options the screen option selection should appear like that shown below.

Processing the data file will produce an audit report and warning message as per the XML catalogue load.

Clicking the highlighter hyperlink opens the audit log where details of the load may be viewed.

Replacement Prices Load

Replacement options require the ‘replacement’ choice setting (replaceprice=”R”)

<Option id="1" desc="Fabric Base Unit Grade" affectsellflag="R">
	<Choice desc="Grade A" affectcostvalue="10">

The second step is to import the replacement prices XML, when importing replacement prices, the load screen will appear like that shown below.

Loading replacement prices requires the specification of a promotion to link the prices to.

Processing the data file will produce an audit report and warning message as per the XML catalogue load.

Clicking the highlighted hyperlink opens the audit log where details of the load may be viewed.

Product Sets Load

Product sets may be loaded / amended via the XML 

Loading replacement prices requires the specification of a promotion to link the prices to.

Processing the data file will produce an audit report and warning message as per the XML catalogue load.

Clicking the highlighter hyperlink opens the audit log where details of the load may be viewed.

Audit

To view the audit produced, click the audit trail / here hyperlink. This will open a window like the page below

Audits are saved in the designated XML folder with a <XML load filename>.log. to ensure your disk does not fill with audit logs these files may be removed

Sales Order Screen

Basic Options

When adding products during sales order/internal order entry process the screen will –

  •    Default to the specified option choice where set.

  •   Omit from the drop down list any blocked options.

  •  Redisplay the base price when a chosen answer causes the base selling price of an item to be replaced.

To cater for replacement price elements within an option structure the price presentation has changed slightly.

Option

Comments

Previous price

This column may not display if your system has MRP turned off, likewise the title of the column will be as per set in your application parameters.

Where set the column will show the price of the unit/option which may be used as a guide showing the client the value of saving being achieved when compared to the price being charged. 

Base price

The base price is always present for the first line of a product and will also show when a ‘replacement’ item has been chosen within the options list.

If the answer to an option is not ‘flagged’ as a replacement price this column will be blank. 

Quantity

When showing the base line, the quantity will default to 1.

Where an option requires entry of a quantity then the user will be invited to either enter a quantity or to choose a value in the 0 to 9 drop down list.

Option price

Where set the system will request a price for the option from the operator.  This column refers to the unit price of the option and may be multiplied by the quantity thus showing to actual price in the price column.

Price

The price column shows the actual price to be charged for the item for the stated promotion.

If the option is not price affecting this column will be blank.

Where there is an option quantity this column shows the total option price.

If the replacement price exceeds the prevailing price prior to the selection the routine will show the replacement value in the price column. (only one replacement price will appear per SKU – i.e., the more expensive option answer flagged as a replacement)

Cumulative price

The cumulative price is effectively the running total of the item at that stage of the product specification.

In the example below the completed list shows how the cumulative price is affected by option prices.  Also note the change in lead time and the expansion of the screen to accommodate the extra options available because of making selections.

Blocked Options

Importing an XML with a blocked option results in the system omitting the option from the drop-down list offered to the operator.

Option list shown with all options available.

Same product shown with the E7– Snowdrop option blocked

XML load file

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

<BlockedChoices xmlns="http://www.Micros.com/SwanFRS/BlockedChoices">
	<BlockedChoice itemretailercode="866-0905-949" optionid="51" choicedesc="Brown Textured" isblocked="1"></BlockedChoice>
</BlockedChoices>

Default Options

Importing an XML with a default option results in the system preselecting the option before the operator is invited to alter the specification.

Please note there are no restrictions on the operator re changing the default option.  If a default option causes a further question the screen will redisplay now showing the additional choice which will require a selection to be made.

Option list shown with no default option choices.

Same product shown at the same stage of product specification but this time with default options pre-set.

XML load file

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

<DefaultChoices xmlns="http://www.Micros.com/SwanFRS/DefaultChoices">
	<DefaultChoice itemretailercode="866-0905-949" optionid="301" choicedesc="Fabric Down"></DefaultChoice>
	<DefaultChoice itemretailercode="866-0905-949" optionid="302" choicedesc="Luxury Down"></DefaultChoice>
</DefaultChoices>

Replacement Pricing

Price replacement XML loads become active once the operator has selected the answer to a question predefined as affecting the base price of a product.

When selected the base price for the item is £1334.00

Once an answer to a ‘replacement’ priced option has been selected the routine will replace the ‘base price’ of the item.

In the example above ‘Grade B’ causes the item to change from £1334.00 to £1400.00.

Having answered additional questions we reach the ‘fabric back grade’ this is also a replacement price, having chosen a ‘Grade C’ fabric this again causes the base price to change in that the price for a grade C is higher than a grade B.

The base price for the item does not change but the cumulative price now reflects the higher price for the grade C fabric.

In the example below Grade D was selected for the ‘fabric base unit grade’ this caused the item to be £1800.00 when the ‘fabric back grade’ was selected this resulted in a replacement charge of £1534.00.  Since this is less than the current prevailing base price it effectively has no impact on the price of the item.

XML load file

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

<ReplacementPrices xmlns="http://www.Micros.com/SwanFRS/ReplacementPrices">
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="10" costvalue="1000" sellvalue="1334"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="20" costvalue="1100" sellvalue="1400"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="30" costvalue="1200" sellvalue="1534"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="40" costvalue="1300" sellvalue="1800"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-949" pricereference="35" costvalue="1500" sellvalue="2000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="10" costvalue="1100" sellvalue="1434"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="20" costvalue="2000" sellvalue="2000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="30" costvalue="3000" sellvalue="3000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="40" costvalue="4000" sellvalue="4000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-950" pricereference="35" costvalue="5000" sellvalue="5000"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="10" costvalue="600" sellvalue="600"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="20" costvalue="1000" sellvalue="1200"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="30" costvalue="1100" sellvalue="1300"></ReplacementPrice>
	<ReplacementPrice itemretailercode="866-0905-951" pricereference="40" costvalue="1200" sellvalue="1400"></ReplacementPrice>
</ReplacementPrices>10">

 

Files from the Confluence page

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article