<?php

namespace Eurostop\Fulfilment;

class FulfilmentWebServiceInterfacePlugin extends \SoapClient
{

    /**
     * @var array $classmap The defined classes
     */
    private static $classmap = array (
      'CustomerAddress' => 'Eurostop\\Fulfilment\\CustomerAddress',
      'SubmittedCustomerAddress' => 'Eurostop\\Fulfilment\\SubmittedCustomerAddress',
      'SubmittedCustomer' => 'Eurostop\\Fulfilment\\SubmittedCustomer',
      'ArrayOfSubmittedCustomerAccount' => 'Eurostop\\Fulfilment\\ArrayOfSubmittedCustomerAccount',
      'SubmittedCustomerAccount' => 'Eurostop\\Fulfilment\\SubmittedCustomerAccount',
      'ArrayOfSubmittedCustomerAddress' => 'Eurostop\\Fulfilment\\ArrayOfSubmittedCustomerAddress',
      'ArrayOfSubmittedCustomerAttribute' => 'Eurostop\\Fulfilment\\ArrayOfSubmittedCustomerAttribute',
      'SubmittedCustomerAttribute' => 'Eurostop\\Fulfilment\\SubmittedCustomerAttribute',
      'CustomerOrder' => 'Eurostop\\Fulfilment\\CustomerOrder',
      'ArrayOfCustomerOrderLine' => 'Eurostop\\Fulfilment\\ArrayOfCustomerOrderLine',
      'CustomerOrderLine' => 'Eurostop\\Fulfilment\\CustomerOrderLine',
      'ArrayOfCustomerOrderFulfilmentPlan' => 'Eurostop\\Fulfilment\\ArrayOfCustomerOrderFulfilmentPlan',
      'CustomerOrderFulfilmentPlan' => 'Eurostop\\Fulfilment\\CustomerOrderFulfilmentPlan',
      'ArrayOfCustomerOrderFulfilmentPlanDetail' => 'Eurostop\\Fulfilment\\ArrayOfCustomerOrderFulfilmentPlanDetail',
      'CustomerOrderFulfilmentPlanDetail' => 'Eurostop\\Fulfilment\\CustomerOrderFulfilmentPlanDetail',
      'ArrayOfCustomerOrderShipment' => 'Eurostop\\Fulfilment\\ArrayOfCustomerOrderShipment',
      'CustomerOrderShipment' => 'Eurostop\\Fulfilment\\CustomerOrderShipment',
      'ArrayOfCustomerOrderShipmentDetail' => 'Eurostop\\Fulfilment\\ArrayOfCustomerOrderShipmentDetail',
      'CustomerOrderShipmentDetail' => 'Eurostop\\Fulfilment\\CustomerOrderShipmentDetail',
      'ArrayOfCustomerOrder' => 'Eurostop\\Fulfilment\\ArrayOfCustomerOrder',
      'SubmittedCustomerOrder' => 'Eurostop\\Fulfilment\\SubmittedCustomerOrder',
      'ArrayOfSubmittedCustomerOrderLine' => 'Eurostop\\Fulfilment\\ArrayOfSubmittedCustomerOrderLine',
      'SubmittedCustomerOrderLine' => 'Eurostop\\Fulfilment\\SubmittedCustomerOrderLine',
      'ArrayOfSubmittedCustomerOrder' => 'Eurostop\\Fulfilment\\ArrayOfSubmittedCustomerOrder',
      'DataRetrievalResultOfCustomerOrderO8iHhPEq' => 'Eurostop\\Fulfilment\\DataRetrievalResultOfCustomerOrderO8iHhPEq',
      'CodedRetrievedDataItemOfCustomerOrderDtoHay9ORuz' => 'Eurostop\\Fulfilment\\CodedRetrievedDataItemOfCustomerOrderDtoHay9ORuz',
      'RetrievedDataItemOfCustomerOrderDtoHay9ORuz' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerOrderDtoHay9ORuz',
      'RetrievedDataItemOfCustomerAddressDtoKJ8WzcEX' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerAddressDtoKJ8WzcEX',
      'RetrievedDataItemOfCustomerOrderLineDtoHay9ORuz' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerOrderLineDtoHay9ORuz',
      'RetrievedDataItemOfCustomerOrderFulfilmentPlanDtoHay9ORuz' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerOrderFulfilmentPlanDtoHay9ORuz',
      'RetrievedDataItemOfCustomerOrderFulfilmentPlanDetailDtoHay9ORuz' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerOrderFulfilmentPlanDetailDtoHay9ORuz',
      'RetrievedDataItemOfCustomerOrderShipmentDtoHay9ORuz' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerOrderShipmentDtoHay9ORuz',
      'RetrievedDataItemOfCustomerOrderShipmentDetailDtoHay9ORuz' => 'Eurostop\\Fulfilment\\RetrievedDataItemOfCustomerOrderShipmentDetailDtoHay9ORuz',
      'SubmittedDataItemOfSubmittedCustomerOrderDtoHay9ORuz' => 'Eurostop\\Fulfilment\\SubmittedDataItemOfSubmittedCustomerOrderDtoHay9ORuz',
      'SubmittedDataItemOfSubmittedCustomerAddressDtoKJ8WzcEX' => 'Eurostop\\Fulfilment\\SubmittedDataItemOfSubmittedCustomerAddressDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerDtoKJ8WzcEX' => 'Eurostop\\Fulfilment\\SubmittedDataItemOfSubmittedCustomerDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerAccountDtoKJ8WzcEX' => 'Eurostop\\Fulfilment\\SubmittedDataItemOfSubmittedCustomerAccountDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerAttributeDtoKJ8WzcEX' => 'Eurostop\\Fulfilment\\SubmittedDataItemOfSubmittedCustomerAttributeDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerOrderLineDtoHay9ORuz' => 'Eurostop\\Fulfilment\\SubmittedDataItemOfSubmittedCustomerOrderLineDtoHay9ORuz',
      'DataSubmissionResult' => 'Eurostop\\Fulfilment\\DataSubmissionResult',
      'ArrayOfValidationError' => 'Eurostop\\Fulfilment\\ArrayOfValidationError',
      'ValidationError' => 'Eurostop\\Fulfilment\\ValidationError',
      'ArrayOfDataProcessingResult' => 'Eurostop\\Fulfilment\\ArrayOfDataProcessingResult',
      'DataProcessingResult' => 'Eurostop\\Fulfilment\\DataProcessingResult',
      'ArrayOfDataProcessingStatus' => 'Eurostop\\Fulfilment\\ArrayOfDataProcessingStatus',
      'DataProcessingStatus' => 'Eurostop\\Fulfilment\\DataProcessingStatus',
      'GetCustomerOrdersByCreationDate' => 'Eurostop\\Fulfilment\\GetCustomerOrdersByCreationDate',
      'GetCustomerOrdersByCreationDateResponse' => 'Eurostop\\Fulfilment\\GetCustomerOrdersByCreationDateResponse',
      'GetCustomerOrdersByModifiedDate' => 'Eurostop\\Fulfilment\\GetCustomerOrdersByModifiedDate',
      'GetCustomerOrdersByModifiedDateResponse' => 'Eurostop\\Fulfilment\\GetCustomerOrdersByModifiedDateResponse',
      'GetCustomerOrderByIdentifier' => 'Eurostop\\Fulfilment\\GetCustomerOrderByIdentifier',
      'GetCustomerOrderByIdentifierResponse' => 'Eurostop\\Fulfilment\\GetCustomerOrderByIdentifierResponse',
      'GetCustomerOrdersByIdentifier' => 'Eurostop\\Fulfilment\\GetCustomerOrdersByIdentifier',
      'GetCustomerOrdersByIdentifierResponse' => 'Eurostop\\Fulfilment\\GetCustomerOrdersByIdentifierResponse',
      'SubmitCustomerOrder' => 'Eurostop\\Fulfilment\\SubmitCustomerOrder',
      'SubmitCustomerOrderResponse' => 'Eurostop\\Fulfilment\\SubmitCustomerOrderResponse',
      'SubmitCustomerOrders' => 'Eurostop\\Fulfilment\\SubmitCustomerOrders',
      'SubmitCustomerOrdersResponse' => 'Eurostop\\Fulfilment\\SubmitCustomerOrdersResponse',
      'FlagDataProcessingToRetryByReference' => 'Eurostop\\Fulfilment\\FlagDataProcessingToRetryByReference',
      'FlagDataProcessingToRetryByReferenceResponse' => 'Eurostop\\Fulfilment\\FlagDataProcessingToRetryByReferenceResponse',
      'FlagDataProcessingToRetryByToken' => 'Eurostop\\Fulfilment\\FlagDataProcessingToRetryByToken',
      'FlagDataProcessingToRetryByTokenResponse' => 'Eurostop\\Fulfilment\\FlagDataProcessingToRetryByTokenResponse',
      'RunDataProcessingByReference' => 'Eurostop\\Fulfilment\\RunDataProcessingByReference',
      'RunDataProcessingByReferenceResponse' => 'Eurostop\\Fulfilment\\RunDataProcessingByReferenceResponse',
      'RunDataProcessingByToken' => 'Eurostop\\Fulfilment\\RunDataProcessingByToken',
      'RunDataProcessingByTokenResponse' => 'Eurostop\\Fulfilment\\RunDataProcessingByTokenResponse',
    );

    /**
     * @param array $options A array of config values
     * @param string $wsdl The wsdl file to use
     */
    public function __construct(array $options = array(), $wsdl = null)
    {
      foreach (self::$classmap as $key => $value) {
        if (!isset($options['classmap'][$key])) {
          $options['classmap'][$key] = $value;
        }
      }
      $options = array_merge(array (
      'stream_context' => NULL,
      'features' => 1,
    ), $options);
      if (!$wsdl) {
        $wsdl = 'https://retailtest.trotters.co.uk:6500/e-interface/fulfilment?wsdl';
      }
      parent::__construct($wsdl, $options);
    }

    /**
     * @param GetCustomerOrdersByCreationDate $parameters
     * @return GetCustomerOrdersByCreationDateResponse
     */
    public function GetCustomerOrdersByCreationDate(GetCustomerOrdersByCreationDate $parameters)
    {
      return $this->__soapCall('GetCustomerOrdersByCreationDate', array($parameters));
    }

    /**
     * @param GetCustomerOrdersByModifiedDate $parameters
     * @return GetCustomerOrdersByModifiedDateResponse
     */
    public function GetCustomerOrdersByModifiedDate(GetCustomerOrdersByModifiedDate $parameters)
    {
      return $this->__soapCall('GetCustomerOrdersByModifiedDate', array($parameters));
    }

    /**
     * @param GetCustomerOrderByIdentifier $parameters
     * @return GetCustomerOrderByIdentifierResponse
     */
    public function GetCustomerOrderByIdentifier(GetCustomerOrderByIdentifier $parameters)
    {
      return $this->__soapCall('GetCustomerOrderByIdentifier', array($parameters));
    }

    /**
     * @param GetCustomerOrdersByIdentifier $parameters
     * @return GetCustomerOrdersByIdentifierResponse
     */
    public function GetCustomerOrdersByIdentifier(GetCustomerOrdersByIdentifier $parameters)
    {
      return $this->__soapCall('GetCustomerOrdersByIdentifier', array($parameters));
    }

    /**
     * @param SubmitCustomerOrder $parameters
     * @return SubmitCustomerOrderResponse
     */
    public function SubmitCustomerOrder(SubmitCustomerOrder $parameters)
    {
      return $this->__soapCall('SubmitCustomerOrder', array($parameters));
    }

    /**
     * @param SubmitCustomerOrders $parameters
     * @return SubmitCustomerOrdersResponse
     */
    public function SubmitCustomerOrders(SubmitCustomerOrders $parameters)
    {
      return $this->__soapCall('SubmitCustomerOrders', array($parameters));
    }

    /**
     * @param FlagDataProcessingToRetryByReference $parameters
     * @return FlagDataProcessingToRetryByReferenceResponse
     */
    public function FlagDataProcessingToRetryByReference(FlagDataProcessingToRetryByReference $parameters)
    {
      return $this->__soapCall('FlagDataProcessingToRetryByReference', array($parameters));
    }

    /**
     * @param FlagDataProcessingToRetryByToken $parameters
     * @return FlagDataProcessingToRetryByTokenResponse
     */
    public function FlagDataProcessingToRetryByToken(FlagDataProcessingToRetryByToken $parameters)
    {
      return $this->__soapCall('FlagDataProcessingToRetryByToken', array($parameters));
    }

    /**
     * @param RunDataProcessingByReference $parameters
     * @return RunDataProcessingByReferenceResponse
     */
    public function RunDataProcessingByReference(RunDataProcessingByReference $parameters)
    {
      return $this->__soapCall('RunDataProcessingByReference', array($parameters));
    }

    /**
     * @param RunDataProcessingByToken $parameters
     * @return RunDataProcessingByTokenResponse
     */
    public function RunDataProcessingByToken(RunDataProcessingByToken $parameters)
    {
      return $this->__soapCall('RunDataProcessingByToken', array($parameters));
    }

}
