<!--
   Tech Data Corporation
   XML Order Submit Message Guideline.
   https://tdxml.techdata.com:443/xmlservlet
   Version 1.3
   Date: 12/21/03      
  
   11/01/01 - ADDED the following optional elements and group to support Government Ordering functionality:
              ContactPhoneNbr
              OrderLevel   Allowable values include:
                  "EF" = Education (Student, Staff)    "EH" = Education (Higher)
                  "EL" = Education (K-12)              "ER" = Education (Erate)
                  "FE" = Federal                       "FG" = Federal GSA
                  "LO" = Local                         "ST" = State) 
              ShipmentType (RESERVED FOR FUTURE USE)
              EndUserCustomerNbr
              EndUserGroupCode
              EndUserInfo  (Group)

   02/24/02 - ADDED support for non-Tech Data part numbers. 
              Allowable "RefIDQual" values include:
                  "VP" = Vendor Part (Tech Data) number   
                  "BP" = Buyer Part number              
                  "MG" = Manufacturer Part number                       
                  "UP" = UPC number 

   05/13/02 - ADDED/EXTENDED the following elements to support Configuration functionality:
              
              OrderTypeCode:  Usage extended to include existing and new values as indicated below:
                  "BS" = Blind Ship (no Tech Data logo on box)
                  "DS" = Drop Ship 
                  "  " = Config use only

              SalesRequirementCode:  Usage extended to include existing and new values as indicated below:
                  "BK" = Ship available product, backorder remainder
                  "SC" = Ship complete
                  "SS" = Arrive complete (Config use only)
                  "P2" = Same day, allow partial shipment (Config use only)
                  "Z2" = Same day, ship complete (Config use only)
                  "Z1" = Same day, ship complete, same warehouse (Config use only)
                  "  " = Allow partial shipment (Config use only)

              ConfigInd:  Optional element. Required for Config orders. Allowable values include:
                  "Y" = Yes, is a Configuration order (Config use only)
                  "N" = No, is not a Configuration order (Config use only)

              OrderMessageHdr:  Optional element. Occurs 0 to 1 time.
                                Maximum length 55 characters.
                                Config use only. 

              OrderMessageLine:  Optional element. Occurs 0 to 14 times, one occurance per order line. 
                                 Maximum length 55 characters. 
                                 Config use only.                                   

              ConfigHandlingCode:  Optional element. Occurs 0 to 1 time per order line. 
                                   Describes the item's usage within the configuration. 
                                   Required for Config orders. 
                                   Config use only. 
                                   Allowable values include:
                  "A" = Associate
                  "C" = Component
	          "M" = Master
                  "P" = Pick Ship (no extra services)
                  "R" = Routing
                  "X" = Pick Ship (special handling)
              
              AggregationCode:  RESERVED FOR FUTURE USE. Optional element. Occurs 0 or 1 time per order line. 
                                Maximum length 30 characters. Config use only.

   08/07/02 - ADDED SAWS (Sequential Automated Warehouse Sourcing) functionality. 
              Allows intelligent, automatic warehouse assignment if a warehouse (WhseCode) is not specified. 
              WhseCode is now an optional element.

   03/23/03 - ADDED  OrigCustPOLineNbr:  Optional element. Occurs 0 to 1 time per order line. 
                                         Represents the customer's original, Purchase Order, line number. 
                                         Maximum length 11 characters.

   04/18/03 - CHANGED  Messages (Notes) can be used with all XML orders. Their usage is are no longer restricted 
                       to Configuration orders. An order can have up to 15 Messages in any combination of Header 
                       and Line messages.

                       OrderMessageHdrType:  Optional element. Occurs 0 to 1 time. Can only be used if at least 
                                             1 occurrence of OrderMessageHdr data is present.

                       OrderMessageHdr:  Optional element. Occurs 0 to 15 times.
                                         Maximum length 55 characters.
                                         No longer restricted to Config use. 

                       OrderMessageLine:  Optional element. Occurs 0 to 15 times. 
                                          Maximum length 55 characters. 
                                          No longer restricted to Config use. 

   07/02/03 - ADDED  PromoAcceptInd:  Optional element. Occurs 0 or 1 times per order line. 
		      Allowable values include:
                  		"Y" = Yes -  promotions will be accepted for this order line.
                  		"N" = No - promotions will not be accepted for this order line. 

   08/20/03 - ADDED the following optional group:
			CreditCardInfo 

   12/21/03 - Added ResponseVersion: Optional element for specifying the Response DTD version. 

		- TransControlID element is no longer optional. 
                                          
-->

<!ELEMENT XML_Order_Submit (
	Header ,
	Detail ,
	Summary ) >

<!ELEMENT Header (
	UserName ,
	Password ,
	TransSetIDCode , 
	TransControlID ,
	ResponseVersion? ,
	PurposeCode ,
	OrderTypeCode ,
	PONbr ,
	(EntityIDCode , CurrencyCode)? ,
	RefNbrs+ , 
	SalesRequirementCode ,
	ActionCode ,
	Amt? , 
	DateTimeQual ,
	Date ,
	Name ,
	AddrInfo , 
	CityName ,
	StateProvinceCode ,
	PostalCode , 
	CountryCode ,
	ContactFunctionCode ,
	ContactName ,
	ContactPhoneNbr? ,
	OrderLevel? ,
	ShipmentType? ,
	ConfigInd? , 
	OrderMessageHdrType? , 
	OrderMessageHdr* ,
	EndUserCustomerNbr? ,
	EndUserGroupCode? ,
	EndUserInfo? ,
	CreditCardInfo? ) >

<!-- Segment -->
<!ELEMENT UserName (#PCDATA) >
<!ELEMENT Password (#PCDATA) >

<!-- ST Segment -->
<!ELEMENT TransSetIDCode (#PCDATA) >
<!ELEMENT TransControlID (#PCDATA) >
<!ELEMENT ResponseVersion (#PCDATA) >

<!-- BEG Segment -->
<!ELEMENT PurposeCode (#PCDATA) >
<!ELEMENT OrderTypeCode (#PCDATA) >
<!ELEMENT PONbr (#PCDATA) >

<!-- CUR Segment -->
<!ELEMENT EntityIDCode (#PCDATA) >
<!ELEMENT CurrencyCode (#PCDATA) >

<!-- REF Segment -->
<!ELEMENT RefNbrs ( (RefIDQual ,  RefID) ) >

<!ELEMENT RefIDQual (#PCDATA) >
<!ELEMENT RefID (#PCDATA) >

<!-- CSH Segment -->
<!ELEMENT SalesRequirementCode (#PCDATA) >
<!ELEMENT ActionCode (#PCDATA) >
<!ELEMENT Amt (#PCDATA) >

<!-- DTM Segment -->
<!ELEMENT DateTimeQual (#PCDATA) >
<!ELEMENT Date (#PCDATA) >

<!-- N1 Segment -->
<!ELEMENT Name (#PCDATA) >

<!-- N3 Segment -->
<!ELEMENT AddrInfo (  Addr+ ) >

<!ELEMENT Addr (#PCDATA) >

<!-- N4 Segment -->
<!ELEMENT CityName (#PCDATA) >
<!ELEMENT StateProvinceCode (#PCDATA) >
<!ELEMENT PostalCode (#PCDATA) >
<!ELEMENT CountryCode (#PCDATA) >

<!-- PER Segment -->
<!ELEMENT ContactFunctionCode (#PCDATA) >
<!ELEMENT ContactName (#PCDATA) >
<!ELEMENT ContactPhoneNbr (#PCDATA) >
<!ELEMENT OrderLevel (#PCDATA) >
<!ELEMENT ShipmentType (#PCDATA) >
<!ELEMENT ConfigInd (#PCDATA) >
<!ELEMENT OrderMessageHdrType (#PCDATA) >
<!ELEMENT OrderMessageHdr (#PCDATA) >
<!ELEMENT EndUserCustomerNbr (#PCDATA) > 
<!ELEMENT EndUserGroupCode (#PCDATA) >

<!ELEMENT EndUserInfo (
	EuiGovAgency ,
	EuiGovCabinetLevel ,
	EuiContractNbr ,
	EuiContractType ,
	EuiOrderPriority ,
	EuiMarketType ,
	EuiContactName ,
	EuiPhoneNbr ,
	EuiFaxNbr , 
	EuiName ,
	EuiAddr1 , 
	EuiAddr2 , 
	EuiAddr3 ,
	EuiCityName , 
	EuiStateProvinceCode ,
	EuiPostalCode , 
	EuiCountryCode , 
	EuiSicCode ,
	EuiOrderPromoType , 
	EuiEndUserLicenseNbr , 
	EuiEndUserPODate , 
	EuiEndUserRef1 , 
	EuiEndUserRef2 ,
	EuiEndUserRef3 ,
	EuiInstallName , 
	EuiDropShipType , 
	EuiContactEmailAddr1 ,
	EuiContactEmailAddr2  ) >

<!-- End User Information Segment -->
<!ELEMENT EuiGovAgency (#PCDATA) >
<!ELEMENT EuiGovCabinetLevel (#PCDATA) >
<!ELEMENT EuiContractNbr (#PCDATA) >
<!ELEMENT EuiContractType (#PCDATA) >
<!ELEMENT EuiOrderPriority (#PCDATA) >
<!ELEMENT EuiMarketType (#PCDATA) >
<!ELEMENT EuiContactName (#PCDATA) >
<!ELEMENT EuiPhoneNbr (#PCDATA) >
<!ELEMENT EuiFaxNbr (#PCDATA) >
<!ELEMENT EuiName (#PCDATA) >
<!ELEMENT EuiAddr1 (#PCDATA) >
<!ELEMENT EuiAddr2 (#PCDATA) >
<!ELEMENT EuiAddr3 (#PCDATA) >
<!ELEMENT EuiCityName (#PCDATA) >
<!ELEMENT EuiStateProvinceCode (#PCDATA) >
<!ELEMENT EuiPostalCode (#PCDATA) >
<!ELEMENT EuiCountryCode (#PCDATA) >
<!ELEMENT EuiSicCode (#PCDATA) >
<!ELEMENT EuiOrderPromoType (#PCDATA) >
<!ELEMENT EuiEndUserLicenseNbr (#PCDATA) >
<!ELEMENT EuiEndUserPODate (#PCDATA) >
<!ELEMENT EuiEndUserRef1 (#PCDATA) >
<!ELEMENT EuiEndUserRef2 (#PCDATA) >
<!ELEMENT EuiEndUserRef3 (#PCDATA) >
<!ELEMENT EuiInstallName (#PCDATA) >
<!ELEMENT EuiDropShipType (#PCDATA) >
<!ELEMENT EuiContactEmailAddr1 (#PCDATA) >
<!ELEMENT EuiContactEmailAddr2 (#PCDATA) >

<!ELEMENT CreditCardInfo (
	CCNbr? ,
	CCExpiryDate? ,
	CCHolderName? ,	
	CCTypeCode? ,
	CCVerifyNumber? ,
	CCHolderCompany? ,		
	CCBillToAddr1? ,
	CCBillToAddr2? ,
	CCBillToAddr3? ,
	CCBillToCity? ,
	CCBillToStateProvinceCode? ,
	CCBillToPostalCode? ,
	CCContactPhoneNbr? ,
	CCContactPhoneExt? ,
	CCPCardPOSCode? ,		
	CCUseSoldToAddrInd? ,
	CCSaveCCInfo? ) >
			
<!-- Credit Card Segment -->
<!ELEMENT 	CCNbr (#PCDATA) >
<!ELEMENT 	CCExpiryDate (#PCDATA) >
<!ELEMENT	CCHolderName (#PCDATA) >
<!ELEMENT 	CCTypeCode (#PCDATA) >
<!ELEMENT 	CCVerifyNumber (#PCDATA) >
<!ELEMENT 	CCHolderCompany (#PCDATA) >
<!ELEMENT 	CCBillToAddr1 (#PCDATA) >
<!ELEMENT 	CCBillToAddr2 (#PCDATA) >
<!ELEMENT 	CCBillToAddr3 (#PCDATA) >
<!ELEMENT 	CCBillToCity (#PCDATA) >
<!ELEMENT 	CCBillToStateProvinceCode (#PCDATA) >
<!ELEMENT 	CCBillToPostalCode (#PCDATA) >
<!ELEMENT 	CCContactPhoneNbr (#PCDATA) >
<!ELEMENT 	CCContactPhoneExt (#PCDATA) >
<!ELEMENT 	CCPCardPOSCode (#PCDATA) >
<!ELEMENT 	CCUseSoldToAddrInd (#PCDATA) >
<!ELEMENT 	CCSaveCCInfo (#PCDATA) >


<!ELEMENT Detail (
	LineInfo+ ) >

<!ELEMENT LineInfo (
	AssignedID ,
	OrigCustPOLineNbr? ,
	QtyOrdered ,
	UnitOfMeasureCode ,
	UnitPrice ,
	BasisOfUnitMeasureCode ,  
	ProductIDQual ,
	ProductID ,
	WhseCode? ,
	RoutingSeqCode , 
	IDCodeQual ,
	IDCode,
	ConfigHandlingCode?,
	PromoAcceptInd? ,
	OrderMessageLine*, 
	AggregationCode? ) >

<!-- PO1 Segment -->
<!ELEMENT AssignedID (#PCDATA) >
<!ELEMENT OrigCustPOLineNbr (#PCDATA) >
<!ELEMENT QtyOrdered (#PCDATA) >
<!ELEMENT UnitOfMeasureCode (#PCDATA) >
<!ELEMENT UnitPrice (#PCDATA) >
<!ELEMENT BasisOfUnitMeasureCode (#PCDATA) >
<!ELEMENT ProductIDQual (#PCDATA) >
<!ELEMENT ProductID (#PCDATA) >
<!ELEMENT WhseCode (#PCDATA) >

<!-- TD5 Segment -->
<!ELEMENT RoutingSeqCode (#PCDATA) >
<!ELEMENT IDCodeQual (#PCDATA) >
<!ELEMENT IDCode (#PCDATA) >

<!ELEMENT ConfigHandlingCode (#PCDATA) >
<!ELEMENT PromoAcceptInd (#PCDATA) >

<!ELEMENT OrderMessageLine (#PCDATA) >
<!ELEMENT AggregationCode (#PCDATA) >

<!ELEMENT Summary (
	NbrOfSegments ,
	AmtQualCode ,
	MonetaryAmt ) >

<!-- CTT Segment -->
<!ELEMENT NbrOfSegments (#PCDATA) >

<!-- AMT Segment -->
<!ELEMENT AmtQualCode (#PCDATA) >
<!ELEMENT MonetaryAmt (#PCDATA) >