//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2014.05.03 at 03:15:27 PM EDT 
//


package API.amazon.mws.xml.JAXB;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.datatype.XMLGregorianCalendar;


/**
 * <p>Java class for anonymous complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element ref="{}AmazonOrderID"/>
 *         &lt;element name="AmazonSessionID">
 *           &lt;simpleType>
 *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *               &lt;pattern value="\d{3}-\d{7}-\d{7}"/>
 *             &lt;/restriction>
 *           &lt;/simpleType>
 *         &lt;/element>
 *         &lt;element name="OrderDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
 *         &lt;element name="OrderPostedDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
 *         &lt;element name="CustomerOrderInfo" maxOccurs="10" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="Type" type="{}StringNotNull"/>
 *                   &lt;element name="Value" type="{}StringNotNull"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="BillingData">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="BuyerEmailAddress">
 *                     &lt;simpleType>
 *                       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
 *                         &lt;pattern value="[^@]+@[^@\.]+(\.[^@\.]+)+"/>
 *                       &lt;/restriction>
 *                     &lt;/simpleType>
 *                   &lt;/element>
 *                   &lt;element name="BuyerName" type="{}String"/>
 *                   &lt;element name="BuyerPhoneNumber" type="{}String"/>
 *                   &lt;element name="CreditCard" minOccurs="0">
 *                     &lt;complexType>
 *                       &lt;complexContent>
 *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                           &lt;sequence>
 *                             &lt;element name="Issuer">
 *                               &lt;simpleType>
 *                                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *                                   &lt;enumeration value="Visa"/>
 *                                   &lt;enumeration value="MasterCard"/>
 *                                   &lt;enumeration value="AmericanExpress"/>
 *                                   &lt;enumeration value="Discover"/>
 *                                   &lt;enumeration value="DinersClub"/>
 *                                   &lt;enumeration value="JCB"/>
 *                                   &lt;enumeration value="PrivateLabel"/>
 *                                   &lt;enumeration value="BankDebit"/>
 *                                   &lt;enumeration value="CarteBlanche"/>
 *                                   &lt;enumeration value="CarteBancaire"/>
 *                                   &lt;enumeration value="PaymentByInvoice"/>
 *                                   &lt;enumeration value="Laser"/>
 *                                   &lt;enumeration value="Switch"/>
 *                                   &lt;enumeration value="SVS"/>
 *                                   &lt;enumeration value="BordersECG"/>
 *                                   &lt;enumeration value="Other"/>
 *                                 &lt;/restriction>
 *                               &lt;/simpleType>
 *                             &lt;/element>
 *                             &lt;element name="Tail">
 *                               &lt;simpleType>
 *                                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *                                   &lt;pattern value="\d{4}"/>
 *                                 &lt;/restriction>
 *                               &lt;/simpleType>
 *                             &lt;/element>
 *                             &lt;element name="ExpirationDate" type="{http://www.w3.org/2001/XMLSchema}gYearMonth"/>
 *                           &lt;/sequence>
 *                         &lt;/restriction>
 *                       &lt;/complexContent>
 *                     &lt;/complexType>
 *                   &lt;/element>
 *                   &lt;element ref="{}Address" minOccurs="0"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="FulfillmentData">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element ref="{}FulfillmentMethod"/>
 *                   &lt;element ref="{}FulfillmentServiceLevel" minOccurs="0"/>
 *                   &lt;element ref="{}FulfillmentCenterID" minOccurs="0"/>
 *                   &lt;element ref="{}Address" minOccurs="0"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="Item" maxOccurs="unbounded">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element ref="{}AmazonOrderItemCode"/>
 *                   &lt;element ref="{}SKU"/>
 *                   &lt;element name="Title" type="{}LongString"/>
 *                   &lt;element name="CustomizationInfo" type="{}CustomizationInfoType" maxOccurs="unbounded" minOccurs="0"/>
 *                   &lt;element name="Quantity" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
 *                   &lt;element ref="{}ProductTaxCode"/>
 *                   &lt;element name="DeliveryStartDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *                   &lt;element name="DeliveryEndDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *                   &lt;element name="DeliveryTimeZone" type="{}StringNotNull" minOccurs="0"/>
 *                   &lt;element name="DeliveryInstructions" type="{}LongStringNotNull" minOccurs="0"/>
 *                   &lt;element name="ItemPrice" type="{}BuyerPrice"/>
 *                   &lt;element name="ItemFees" type="{}AmazonFees"/>
 *                   &lt;element name="ItemTaxData" type="{}TaxData" minOccurs="0"/>
 *                   &lt;element name="ShippingTaxData" type="{}TaxData" minOccurs="0"/>
 *                   &lt;element name="GiftWrapTaxData" type="{}TaxData" minOccurs="0"/>
 *                   &lt;element name="Promotion" type="{}PromotionDataType" maxOccurs="unbounded" minOccurs="0"/>
 *                   &lt;element name="GiftWrapLevel" type="{}StringNotNull" minOccurs="0"/>
 *                   &lt;element name="GiftMessageText" minOccurs="0">
 *                     &lt;simpleType>
 *                       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *                         &lt;maxLength value="500"/>
 *                       &lt;/restriction>
 *                     &lt;/simpleType>
 *                   &lt;/element>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "amazonOrderID",
    "amazonSessionID",
    "orderDate",
    "orderPostedDate",
    "customerOrderInfo",
    "billingData",
    "fulfillmentData",
    "item"
})
@XmlRootElement(name = "OrderReport")
public class OrderReport {

    @XmlElement(name = "AmazonOrderID", required = true)
    protected String amazonOrderID;
    @XmlElement(name = "AmazonSessionID", required = true)
    protected String amazonSessionID;
    @XmlElement(name = "OrderDate", required = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar orderDate;
    @XmlElement(name = "OrderPostedDate", required = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar orderPostedDate;
    @XmlElement(name = "CustomerOrderInfo")
    protected List<OrderReport.CustomerOrderInfo> customerOrderInfo;
    @XmlElement(name = "BillingData", required = true)
    protected OrderReport.BillingData billingData;
    @XmlElement(name = "FulfillmentData", required = true)
    protected OrderReport.FulfillmentData fulfillmentData;
    @XmlElement(name = "Item", required = true)
    protected List<OrderReport.Item> item;

    /**
     * Gets the value of the amazonOrderID property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getAmazonOrderID() {
        return amazonOrderID;
    }

    /**
     * Sets the value of the amazonOrderID property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setAmazonOrderID(String value) {
        this.amazonOrderID = value;
    }

    /**
     * Gets the value of the amazonSessionID property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getAmazonSessionID() {
        return amazonSessionID;
    }

    /**
     * Sets the value of the amazonSessionID property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setAmazonSessionID(String value) {
        this.amazonSessionID = value;
    }

    /**
     * Gets the value of the orderDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getOrderDate() {
        return orderDate;
    }

    /**
     * Sets the value of the orderDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setOrderDate(XMLGregorianCalendar value) {
        this.orderDate = value;
    }

    /**
     * Gets the value of the orderPostedDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getOrderPostedDate() {
        return orderPostedDate;
    }

    /**
     * Sets the value of the orderPostedDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setOrderPostedDate(XMLGregorianCalendar value) {
        this.orderPostedDate = value;
    }

    /**
     * Gets the value of the customerOrderInfo property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the customerOrderInfo property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getCustomerOrderInfo().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link OrderReport.CustomerOrderInfo }
     * 
     * 
     */
    public List<OrderReport.CustomerOrderInfo> getCustomerOrderInfo() {
        if (customerOrderInfo == null) {
            customerOrderInfo = new ArrayList<OrderReport.CustomerOrderInfo>();
        }
        return this.customerOrderInfo;
    }

    /**
     * Gets the value of the billingData property.
     * 
     * @return
     *     possible object is
     *     {@link OrderReport.BillingData }
     *     
     */
    public OrderReport.BillingData getBillingData() {
        return billingData;
    }

    /**
     * Sets the value of the billingData property.
     * 
     * @param value
     *     allowed object is
     *     {@link OrderReport.BillingData }
     *     
     */
    public void setBillingData(OrderReport.BillingData value) {
        this.billingData = value;
    }

    /**
     * Gets the value of the fulfillmentData property.
     * 
     * @return
     *     possible object is
     *     {@link OrderReport.FulfillmentData }
     *     
     */
    public OrderReport.FulfillmentData getFulfillmentData() {
        return fulfillmentData;
    }

    /**
     * Sets the value of the fulfillmentData property.
     * 
     * @param value
     *     allowed object is
     *     {@link OrderReport.FulfillmentData }
     *     
     */
    public void setFulfillmentData(OrderReport.FulfillmentData value) {
        this.fulfillmentData = value;
    }

    /**
     * Gets the value of the item property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the item property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getItem().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link OrderReport.Item }
     * 
     * 
     */
    public List<OrderReport.Item> getItem() {
        if (item == null) {
            item = new ArrayList<OrderReport.Item>();
        }
        return this.item;
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="BuyerEmailAddress">
     *           &lt;simpleType>
     *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}normalizedString">
     *               &lt;pattern value="[^@]+@[^@\.]+(\.[^@\.]+)+"/>
     *             &lt;/restriction>
     *           &lt;/simpleType>
     *         &lt;/element>
     *         &lt;element name="BuyerName" type="{}String"/>
     *         &lt;element name="BuyerPhoneNumber" type="{}String"/>
     *         &lt;element name="CreditCard" minOccurs="0">
     *           &lt;complexType>
     *             &lt;complexContent>
     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 &lt;sequence>
     *                   &lt;element name="Issuer">
     *                     &lt;simpleType>
     *                       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *                         &lt;enumeration value="Visa"/>
     *                         &lt;enumeration value="MasterCard"/>
     *                         &lt;enumeration value="AmericanExpress"/>
     *                         &lt;enumeration value="Discover"/>
     *                         &lt;enumeration value="DinersClub"/>
     *                         &lt;enumeration value="JCB"/>
     *                         &lt;enumeration value="PrivateLabel"/>
     *                         &lt;enumeration value="BankDebit"/>
     *                         &lt;enumeration value="CarteBlanche"/>
     *                         &lt;enumeration value="CarteBancaire"/>
     *                         &lt;enumeration value="PaymentByInvoice"/>
     *                         &lt;enumeration value="Laser"/>
     *                         &lt;enumeration value="Switch"/>
     *                         &lt;enumeration value="SVS"/>
     *                         &lt;enumeration value="BordersECG"/>
     *                         &lt;enumeration value="Other"/>
     *                       &lt;/restriction>
     *                     &lt;/simpleType>
     *                   &lt;/element>
     *                   &lt;element name="Tail">
     *                     &lt;simpleType>
     *                       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *                         &lt;pattern value="\d{4}"/>
     *                       &lt;/restriction>
     *                     &lt;/simpleType>
     *                   &lt;/element>
     *                   &lt;element name="ExpirationDate" type="{http://www.w3.org/2001/XMLSchema}gYearMonth"/>
     *                 &lt;/sequence>
     *               &lt;/restriction>
     *             &lt;/complexContent>
     *           &lt;/complexType>
     *         &lt;/element>
     *         &lt;element ref="{}Address" minOccurs="0"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "buyerEmailAddress",
        "buyerName",
        "buyerPhoneNumber",
        "creditCard",
        "address"
    })
    public static class BillingData {

        @XmlElement(name = "BuyerEmailAddress", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String buyerEmailAddress;
        @XmlElement(name = "BuyerName", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String buyerName;
        @XmlElement(name = "BuyerPhoneNumber", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String buyerPhoneNumber;
        @XmlElement(name = "CreditCard")
        protected OrderReport.BillingData.CreditCard creditCard;
        @XmlElement(name = "Address")
        protected AddressType address;

        /**
         * Gets the value of the buyerEmailAddress property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getBuyerEmailAddress() {
            return buyerEmailAddress;
        }

        /**
         * Sets the value of the buyerEmailAddress property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setBuyerEmailAddress(String value) {
            this.buyerEmailAddress = value;
        }

        /**
         * Gets the value of the buyerName property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getBuyerName() {
            return buyerName;
        }

        /**
         * Sets the value of the buyerName property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setBuyerName(String value) {
            this.buyerName = value;
        }

        /**
         * Gets the value of the buyerPhoneNumber property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getBuyerPhoneNumber() {
            return buyerPhoneNumber;
        }

        /**
         * Sets the value of the buyerPhoneNumber property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setBuyerPhoneNumber(String value) {
            this.buyerPhoneNumber = value;
        }

        /**
         * Gets the value of the creditCard property.
         * 
         * @return
         *     possible object is
         *     {@link OrderReport.BillingData.CreditCard }
         *     
         */
        public OrderReport.BillingData.CreditCard getCreditCard() {
            return creditCard;
        }

        /**
         * Sets the value of the creditCard property.
         * 
         * @param value
         *     allowed object is
         *     {@link OrderReport.BillingData.CreditCard }
         *     
         */
        public void setCreditCard(OrderReport.BillingData.CreditCard value) {
            this.creditCard = value;
        }

        /**
         * Gets the value of the address property.
         * 
         * @return
         *     possible object is
         *     {@link AddressType }
         *     
         */
        public AddressType getAddress() {
            return address;
        }

        /**
         * Sets the value of the address property.
         * 
         * @param value
         *     allowed object is
         *     {@link AddressType }
         *     
         */
        public void setAddress(AddressType value) {
            this.address = value;
        }


        /**
         * <p>Java class for anonymous complex type.
         * 
         * <p>The following schema fragment specifies the expected content contained within this class.
         * 
         * <pre>
         * &lt;complexType>
         *   &lt;complexContent>
         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
         *       &lt;sequence>
         *         &lt;element name="Issuer">
         *           &lt;simpleType>
         *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
         *               &lt;enumeration value="Visa"/>
         *               &lt;enumeration value="MasterCard"/>
         *               &lt;enumeration value="AmericanExpress"/>
         *               &lt;enumeration value="Discover"/>
         *               &lt;enumeration value="DinersClub"/>
         *               &lt;enumeration value="JCB"/>
         *               &lt;enumeration value="PrivateLabel"/>
         *               &lt;enumeration value="BankDebit"/>
         *               &lt;enumeration value="CarteBlanche"/>
         *               &lt;enumeration value="CarteBancaire"/>
         *               &lt;enumeration value="PaymentByInvoice"/>
         *               &lt;enumeration value="Laser"/>
         *               &lt;enumeration value="Switch"/>
         *               &lt;enumeration value="SVS"/>
         *               &lt;enumeration value="BordersECG"/>
         *               &lt;enumeration value="Other"/>
         *             &lt;/restriction>
         *           &lt;/simpleType>
         *         &lt;/element>
         *         &lt;element name="Tail">
         *           &lt;simpleType>
         *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
         *               &lt;pattern value="\d{4}"/>
         *             &lt;/restriction>
         *           &lt;/simpleType>
         *         &lt;/element>
         *         &lt;element name="ExpirationDate" type="{http://www.w3.org/2001/XMLSchema}gYearMonth"/>
         *       &lt;/sequence>
         *     &lt;/restriction>
         *   &lt;/complexContent>
         * &lt;/complexType>
         * </pre>
         * 
         * 
         */
        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "", propOrder = {
            "issuer",
            "tail",
            "expirationDate"
        })
        public static class CreditCard {

            @XmlElement(name = "Issuer", required = true)
            protected String issuer;
            @XmlElement(name = "Tail", required = true)
            protected String tail;
            @XmlElement(name = "ExpirationDate", required = true)
            @XmlSchemaType(name = "gYearMonth")
            protected XMLGregorianCalendar expirationDate;

            /**
             * Gets the value of the issuer property.
             * 
             * @return
             *     possible object is
             *     {@link String }
             *     
             */
            public String getIssuer() {
                return issuer;
            }

            /**
             * Sets the value of the issuer property.
             * 
             * @param value
             *     allowed object is
             *     {@link String }
             *     
             */
            public void setIssuer(String value) {
                this.issuer = value;
            }

            /**
             * Gets the value of the tail property.
             * 
             * @return
             *     possible object is
             *     {@link String }
             *     
             */
            public String getTail() {
                return tail;
            }

            /**
             * Sets the value of the tail property.
             * 
             * @param value
             *     allowed object is
             *     {@link String }
             *     
             */
            public void setTail(String value) {
                this.tail = value;
            }

            /**
             * Gets the value of the expirationDate property.
             * 
             * @return
             *     possible object is
             *     {@link XMLGregorianCalendar }
             *     
             */
            public XMLGregorianCalendar getExpirationDate() {
                return expirationDate;
            }

            /**
             * Sets the value of the expirationDate property.
             * 
             * @param value
             *     allowed object is
             *     {@link XMLGregorianCalendar }
             *     
             */
            public void setExpirationDate(XMLGregorianCalendar value) {
                this.expirationDate = value;
            }

        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="Type" type="{}StringNotNull"/>
     *         &lt;element name="Value" type="{}StringNotNull"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "type",
        "value"
    })
    public static class CustomerOrderInfo {

        @XmlElement(name = "Type", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String type;
        @XmlElement(name = "Value", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String value;

        /**
         * Gets the value of the type property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getType() {
            return type;
        }

        /**
         * Sets the value of the type property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setType(String value) {
            this.type = value;
        }

        /**
         * Gets the value of the value property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getValue() {
            return value;
        }

        /**
         * Sets the value of the value property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setValue(String value) {
            this.value = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element ref="{}FulfillmentMethod"/>
     *         &lt;element ref="{}FulfillmentServiceLevel" minOccurs="0"/>
     *         &lt;element ref="{}FulfillmentCenterID" minOccurs="0"/>
     *         &lt;element ref="{}Address" minOccurs="0"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "fulfillmentMethod",
        "fulfillmentServiceLevel",
        "fulfillmentCenterID",
        "address"
    })
    public static class FulfillmentData {

        @XmlElement(name = "FulfillmentMethod", required = true)
        protected String fulfillmentMethod;
        @XmlElement(name = "FulfillmentServiceLevel")
        protected String fulfillmentServiceLevel;
        @XmlElement(name = "FulfillmentCenterID")
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String fulfillmentCenterID;
        @XmlElement(name = "Address")
        protected AddressType address;

        /**
         * Gets the value of the fulfillmentMethod property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getFulfillmentMethod() {
            return fulfillmentMethod;
        }

        /**
         * Sets the value of the fulfillmentMethod property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setFulfillmentMethod(String value) {
            this.fulfillmentMethod = value;
        }

        /**
         * Gets the value of the fulfillmentServiceLevel property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getFulfillmentServiceLevel() {
            return fulfillmentServiceLevel;
        }

        /**
         * Sets the value of the fulfillmentServiceLevel property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setFulfillmentServiceLevel(String value) {
            this.fulfillmentServiceLevel = value;
        }

        /**
         * Gets the value of the fulfillmentCenterID property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getFulfillmentCenterID() {
            return fulfillmentCenterID;
        }

        /**
         * Sets the value of the fulfillmentCenterID property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setFulfillmentCenterID(String value) {
            this.fulfillmentCenterID = value;
        }

        /**
         * Gets the value of the address property.
         * 
         * @return
         *     possible object is
         *     {@link AddressType }
         *     
         */
        public AddressType getAddress() {
            return address;
        }

        /**
         * Sets the value of the address property.
         * 
         * @param value
         *     allowed object is
         *     {@link AddressType }
         *     
         */
        public void setAddress(AddressType value) {
            this.address = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element ref="{}AmazonOrderItemCode"/>
     *         &lt;element ref="{}SKU"/>
     *         &lt;element name="Title" type="{}LongString"/>
     *         &lt;element name="CustomizationInfo" type="{}CustomizationInfoType" maxOccurs="unbounded" minOccurs="0"/>
     *         &lt;element name="Quantity" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
     *         &lt;element ref="{}ProductTaxCode"/>
     *         &lt;element name="DeliveryStartDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
     *         &lt;element name="DeliveryEndDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
     *         &lt;element name="DeliveryTimeZone" type="{}StringNotNull" minOccurs="0"/>
     *         &lt;element name="DeliveryInstructions" type="{}LongStringNotNull" minOccurs="0"/>
     *         &lt;element name="ItemPrice" type="{}BuyerPrice"/>
     *         &lt;element name="ItemFees" type="{}AmazonFees"/>
     *         &lt;element name="ItemTaxData" type="{}TaxData" minOccurs="0"/>
     *         &lt;element name="ShippingTaxData" type="{}TaxData" minOccurs="0"/>
     *         &lt;element name="GiftWrapTaxData" type="{}TaxData" minOccurs="0"/>
     *         &lt;element name="Promotion" type="{}PromotionDataType" maxOccurs="unbounded" minOccurs="0"/>
     *         &lt;element name="GiftWrapLevel" type="{}StringNotNull" minOccurs="0"/>
     *         &lt;element name="GiftMessageText" minOccurs="0">
     *           &lt;simpleType>
     *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *               &lt;maxLength value="500"/>
     *             &lt;/restriction>
     *           &lt;/simpleType>
     *         &lt;/element>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "amazonOrderItemCode",
        "sku",
        "title",
        "customizationInfo",
        "quantity",
        "productTaxCode",
        "deliveryStartDate",
        "deliveryEndDate",
        "deliveryTimeZone",
        "deliveryInstructions",
        "itemPrice",
        "itemFees",
        "itemTaxData",
        "shippingTaxData",
        "giftWrapTaxData",
        "promotion",
        "giftWrapLevel",
        "giftMessageText"
    })
    public static class Item {

        @XmlElement(name = "AmazonOrderItemCode", required = true)
        protected String amazonOrderItemCode;
        @XmlElement(name = "SKU", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String sku;
        @XmlElement(name = "Title", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String title;
        @XmlElement(name = "CustomizationInfo")
        protected List<CustomizationInfoType> customizationInfo;
        @XmlElement(name = "Quantity", required = true)
        @XmlSchemaType(name = "positiveInteger")
        protected BigInteger quantity;
        @XmlElement(name = "ProductTaxCode", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String productTaxCode;
        @XmlElement(name = "DeliveryStartDate")
        @XmlSchemaType(name = "dateTime")
        protected XMLGregorianCalendar deliveryStartDate;
        @XmlElement(name = "DeliveryEndDate")
        @XmlSchemaType(name = "dateTime")
        protected XMLGregorianCalendar deliveryEndDate;
        @XmlElement(name = "DeliveryTimeZone")
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String deliveryTimeZone;
        @XmlElement(name = "DeliveryInstructions")
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String deliveryInstructions;
        @XmlElement(name = "ItemPrice", required = true)
        protected BuyerPrice itemPrice;
        @XmlElement(name = "ItemFees", required = true)
        protected AmazonFees itemFees;
        @XmlElement(name = "ItemTaxData")
        protected TaxData itemTaxData;
        @XmlElement(name = "ShippingTaxData")
        protected TaxData shippingTaxData;
        @XmlElement(name = "GiftWrapTaxData")
        protected TaxData giftWrapTaxData;
        @XmlElement(name = "Promotion")
        protected List<PromotionDataType> promotion;
        @XmlElement(name = "GiftWrapLevel")
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String giftWrapLevel;
        @XmlElement(name = "GiftMessageText")
        protected String giftMessageText;

        /**
         * Gets the value of the amazonOrderItemCode property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getAmazonOrderItemCode() {
            return amazonOrderItemCode;
        }

        /**
         * Sets the value of the amazonOrderItemCode property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setAmazonOrderItemCode(String value) {
            this.amazonOrderItemCode = value;
        }

        /**
         * Gets the value of the sku property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getSKU() {
            return sku;
        }

        /**
         * Sets the value of the sku property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setSKU(String value) {
            this.sku = value;
        }

        /**
         * Gets the value of the title property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getTitle() {
            return title;
        }

        /**
         * Sets the value of the title property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setTitle(String value) {
            this.title = value;
        }

        /**
         * Gets the value of the customizationInfo property.
         * 
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the customizationInfo property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getCustomizationInfo().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link CustomizationInfoType }
         * 
         * 
         */
        public List<CustomizationInfoType> getCustomizationInfo() {
            if (customizationInfo == null) {
                customizationInfo = new ArrayList<CustomizationInfoType>();
            }
            return this.customizationInfo;
        }

        /**
         * Gets the value of the quantity property.
         * 
         * @return
         *     possible object is
         *     {@link BigInteger }
         *     
         */
        public BigInteger getQuantity() {
            return quantity;
        }

        /**
         * Sets the value of the quantity property.
         * 
         * @param value
         *     allowed object is
         *     {@link BigInteger }
         *     
         */
        public void setQuantity(BigInteger value) {
            this.quantity = value;
        }

        /**
         * Gets the value of the productTaxCode property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getProductTaxCode() {
            return productTaxCode;
        }

        /**
         * Sets the value of the productTaxCode property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setProductTaxCode(String value) {
            this.productTaxCode = value;
        }

        /**
         * Gets the value of the deliveryStartDate property.
         * 
         * @return
         *     possible object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public XMLGregorianCalendar getDeliveryStartDate() {
            return deliveryStartDate;
        }

        /**
         * Sets the value of the deliveryStartDate property.
         * 
         * @param value
         *     allowed object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public void setDeliveryStartDate(XMLGregorianCalendar value) {
            this.deliveryStartDate = value;
        }

        /**
         * Gets the value of the deliveryEndDate property.
         * 
         * @return
         *     possible object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public XMLGregorianCalendar getDeliveryEndDate() {
            return deliveryEndDate;
        }

        /**
         * Sets the value of the deliveryEndDate property.
         * 
         * @param value
         *     allowed object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public void setDeliveryEndDate(XMLGregorianCalendar value) {
            this.deliveryEndDate = value;
        }

        /**
         * Gets the value of the deliveryTimeZone property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getDeliveryTimeZone() {
            return deliveryTimeZone;
        }

        /**
         * Sets the value of the deliveryTimeZone property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setDeliveryTimeZone(String value) {
            this.deliveryTimeZone = value;
        }

        /**
         * Gets the value of the deliveryInstructions property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getDeliveryInstructions() {
            return deliveryInstructions;
        }

        /**
         * Sets the value of the deliveryInstructions property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setDeliveryInstructions(String value) {
            this.deliveryInstructions = value;
        }

        /**
         * Gets the value of the itemPrice property.
         * 
         * @return
         *     possible object is
         *     {@link BuyerPrice }
         *     
         */
        public BuyerPrice getItemPrice() {
            return itemPrice;
        }

        /**
         * Sets the value of the itemPrice property.
         * 
         * @param value
         *     allowed object is
         *     {@link BuyerPrice }
         *     
         */
        public void setItemPrice(BuyerPrice value) {
            this.itemPrice = value;
        }

        /**
         * Gets the value of the itemFees property.
         * 
         * @return
         *     possible object is
         *     {@link AmazonFees }
         *     
         */
        public AmazonFees getItemFees() {
            return itemFees;
        }

        /**
         * Sets the value of the itemFees property.
         * 
         * @param value
         *     allowed object is
         *     {@link AmazonFees }
         *     
         */
        public void setItemFees(AmazonFees value) {
            this.itemFees = value;
        }

        /**
         * Gets the value of the itemTaxData property.
         * 
         * @return
         *     possible object is
         *     {@link TaxData }
         *     
         */
        public TaxData getItemTaxData() {
            return itemTaxData;
        }

        /**
         * Sets the value of the itemTaxData property.
         * 
         * @param value
         *     allowed object is
         *     {@link TaxData }
         *     
         */
        public void setItemTaxData(TaxData value) {
            this.itemTaxData = value;
        }

        /**
         * Gets the value of the shippingTaxData property.
         * 
         * @return
         *     possible object is
         *     {@link TaxData }
         *     
         */
        public TaxData getShippingTaxData() {
            return shippingTaxData;
        }

        /**
         * Sets the value of the shippingTaxData property.
         * 
         * @param value
         *     allowed object is
         *     {@link TaxData }
         *     
         */
        public void setShippingTaxData(TaxData value) {
            this.shippingTaxData = value;
        }

        /**
         * Gets the value of the giftWrapTaxData property.
         * 
         * @return
         *     possible object is
         *     {@link TaxData }
         *     
         */
        public TaxData getGiftWrapTaxData() {
            return giftWrapTaxData;
        }

        /**
         * Sets the value of the giftWrapTaxData property.
         * 
         * @param value
         *     allowed object is
         *     {@link TaxData }
         *     
         */
        public void setGiftWrapTaxData(TaxData value) {
            this.giftWrapTaxData = value;
        }

        /**
         * Gets the value of the promotion property.
         * 
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the promotion property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getPromotion().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link PromotionDataType }
         * 
         * 
         */
        public List<PromotionDataType> getPromotion() {
            if (promotion == null) {
                promotion = new ArrayList<PromotionDataType>();
            }
            return this.promotion;
        }

        /**
         * Gets the value of the giftWrapLevel property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getGiftWrapLevel() {
            return giftWrapLevel;
        }

        /**
         * Sets the value of the giftWrapLevel property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setGiftWrapLevel(String value) {
            this.giftWrapLevel = value;
        }

        /**
         * Gets the value of the giftMessageText property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getGiftMessageText() {
            return giftMessageText;
        }

        /**
         * Sets the value of the giftMessageText property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setGiftMessageText(String value) {
            this.giftMessageText = value;
        }

    }

}
