
package cz.moneta.test.dsl.cebia.iva;

import java.math.BigDecimal;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlSchemaType;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;
import cz.moneta.test.dsl.cebia.serialization.arrays.ArrayOfstring;


/**
 * <p>Java class for WSValuationRequest complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="WSValuationRequest"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="VehicleId" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *         &lt;element name="RegistrationDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/&gt;
 *         &lt;element name="ValuationDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/&gt;
 *         &lt;element name="OptionalEquipment" type="{http://schemas.microsoft.com/2003/10/Serialization/Arrays}ArrayOfstring" minOccurs="0"/&gt;
 *         &lt;element name="ExtraEquipmentPrice" type="{http://www.w3.org/2001/XMLSchema}decimal" minOccurs="0"/&gt;
 *         &lt;element name="Mileage" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "WSValuationRequest", propOrder = {
    "vehicleId",
    "registrationDate",
    "valuationDate",
    "optionalEquipment",
    "extraEquipmentPrice",
    "mileage"
})
public class WSValuationRequest {

    @XmlElement(name = "VehicleId", nillable = true)
    protected String vehicleId;
    @XmlElement(name = "RegistrationDate", nillable = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar registrationDate;
    @XmlElement(name = "ValuationDate", nillable = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar valuationDate;
    @XmlElement(name = "OptionalEquipment", nillable = true)
    protected ArrayOfstring optionalEquipment;
    @XmlElement(name = "ExtraEquipmentPrice", nillable = true)
    protected BigDecimal extraEquipmentPrice;
    @XmlElement(name = "Mileage", nillable = true)
    protected Integer mileage;

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

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

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

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

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

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

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

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

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

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

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

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

    public WSValuationRequest withVehicleId(String value) {
        setVehicleId(value);
        return this;
    }

    public WSValuationRequest withRegistrationDate(XMLGregorianCalendar value) {
        setRegistrationDate(value);
        return this;
    }

    public WSValuationRequest withValuationDate(XMLGregorianCalendar value) {
        setValuationDate(value);
        return this;
    }

    public WSValuationRequest withOptionalEquipment(ArrayOfstring value) {
        setOptionalEquipment(value);
        return this;
    }

    public WSValuationRequest withExtraEquipmentPrice(BigDecimal value) {
        setExtraEquipmentPrice(value);
        return this;
    }

    public WSValuationRequest withMileage(Integer value) {
        setMileage(value);
        return this;
    }

}
