Overview
  • Package
  • Class
  • Tree
  • Todo

Packages

  • AddonValue
    • Interfaces
  • AdminHttpViewControllers
  • ApiV2Controllers
  • Authentication
    • Collections
    • Entities
    • Factories
    • Interfaces
    • Strategies
  • Category
    • Collections
    • Entities
    • Factories
    • Interfaces
    • Providers
    • Repositories
    • Storages
  • Customer
    • Address
    • Country
    • CountryZone
    • Interfaces
    • Storages
    • Validation
    • ValueObjects
  • Email
    • Collections
    • Entities
    • Exceptions
    • Interfaces
    • Repository
    • ValueObjects
  • Extensions
    • Customers
    • Emails
    • Geschaeftskundenversand
    • Helpers
    • Invoices
    • Orders
    • ParcelShopFinder
    • QuickEdit
    • Serializers
    • Templates
  • Geschaeftskundenversand
    • Exceptions
  • Http
    • Collections
    • Exceptions
    • Factories
    • Interfaces
    • ValueObjects
  • HttpViewControllers
  • InfoBox
    • Collections
    • Entities
    • Factories
    • Interfaces
    • Repositories
  • Invoice
    • Interfaces
    • ValueObjects
  • Loaders
    • CrossCuttingLoader
    • GXCoreLoader
    • Interfaces
  • Modules
    • Collections
    • Controllers
    • Interfaces
  • Order
    • Collections
    • Entities
    • Factories
    • Interfaces
    • Repositories
    • Storages
    • ValueObjects
  • OrderStatus
    • Collections
    • Entities
    • Exceptions
    • Factories
    • Interfaces
    • Repositories
  • Precheck
  • Product
    • Collections
    • Entities
    • Factories
    • Interfaces
    • Providers
    • Repositories
    • Storages
  • ProductModule
    • Collections
    • Deleter
    • Entities
    • Factories
    • Interface
    • Interfaces
    • Reader
    • Repositories
    • Writer
  • QuickEdit
    • Interfaces
    • Repositories
  • Shared
    • ClassFinder
    • Exceptions
    • FileSystem
    • Interfaces
    • Storage
    • Types
  • SharedShoppingCart
    • Interfaces
  • Slider
    • Collections
    • Entities
    • Factories
    • Interfaces
    • Repositories
    • Storages
  • Statistics
    • Interfaces
  • UserConfiguration
    • Interfaces
    • Repository
  • VersionInfo
    • Factories
    • Reader
    • ValueObjects

Classes

  • AbstractAddonValueServiceFactory
  • AbstractAddonValueStorage
  • AbstractApiV2Controller
  • AbstractCategoryServiceFactory
  • AbstractCollection
  • AbstractCreateAccountProcess
  • AbstractCustomerFactory
  • AbstractCustomerServiceFactory
  • AbstractFileStorage
  • AbstractHttpContextFactory
  • AbstractHttpViewControllerRegistryFactory
  • AbstractImagesApiV2Controller
  • AbstractInvoiceServiceFactory
  • AbstractJsonSerializer
  • AbstractModuleCenterModule
  • AbstractModuleCenterModuleController
  • AbstractOrderServiceFactory
  • AbstractProductAttributeServiceFactory
  • AbstractProductServiceFactory
  • AbstractSliderServiceFactory
  • AbstractVersionInfoItem
  • AbstractVersionInfoReader
  • AddonValueService
  • AddonValueServiceFactory
  • AddonValueStorageFactory
  • AddressBlock
  • AddressBookService
  • AddressClass
  • AddressesApiV2Controller
  • AddressFormatProvider
  • AddressFormatsApiV2Controller
  • AddressJsonSerializer
  • AdminFavoritesAjaxController
  • AdminHttpViewController
  • AdminInfoBoxAjaxController
  • AdminLayoutHttpControllerResponse
  • AdminPageHttpControllerResponse
  • AfterbuyAjaxController
  • AfterbuyModuleCenterModule
  • AfterbuyModuleCenterModuleController
  • AmazonAdvPaymentsModuleCenterModuleController
  • Asset
  • AssetCollection
  • AttachmentCollection
  • AttachmentName
  • AttachmentPath
  • AttachmentsApiV2Controller
  • AttachmentsHandler
  • AuthFactory
  • AuthService
  • AuthSettings
  • AuthStrategyCollection
  • BoolType
  • BrickfoxModuleCenterModule
  • BrickfoxModuleCenterModuleController
  • CacheTokenHelper
  • CartController
  • CartDropdownController
  • CartShippingCostsController
  • CategoriesApiV2Controller
  • Category
  • CategoryAddonValueStorage
  • CategoryFactory
  • CategoryIconsApiV2Controller
  • CategoryImagesApiV2Controller
  • CategoryJsonSerializer
  • CategoryListItem
  • CategoryListItemCollection
  • CategoryListItemJsonSerializer
  • CategoryListProvider
  • CategoryListProviderFactory
  • CategoryObjectService
  • CategoryReadService
  • CategoryRepository
  • CategoryRepositoryDeleter
  • CategoryRepositoryReader
  • CategoryRepositoryWriter
  • CategoryServiceFactory
  • CategorySettings
  • CategorySettingsRepository
  • CategorySettingsRepositoryReader
  • CategorySettingsRepositoryWriter
  • CategoryWriteService
  • CheckQuantityController
  • CheckStatusController
  • ClassFinder
  • ColorHelper
  • ContactCollection
  • ContactName
  • ContactType
  • ContentNavigationCollection
  • CookieBarController
  • CountriesApiV2Controller
  • CountryJsonSerializer
  • CountryService
  • CreateAccountProcess
  • CreateGuestController
  • CreateRegistreeController
  • CrossCuttingLoader
  • CurrencyCode
  • Customer
  • CustomerAccountInputValidator
  • CustomerAdditionalAddressInfo
  • CustomerAddonValueStorage
  • CustomerAddress
  • CustomerAddressDeleter
  • CustomerAddressInputValidator
  • CustomerAddressReader
  • CustomerAddressRepository
  • CustomerAddressWriter
  • CustomerB2BStatus
  • CustomerCallNumber
  • CustomerCity
  • CustomerCompany
  • CustomerCountry
  • CustomerCountryIso2
  • CustomerCountryIso3
  • CustomerCountryName
  • CustomerCountryReader
  • CustomerCountryRepository
  • CustomerCountryZone
  • CustomerCountryZoneIsoCode
  • CustomerCountryZoneName
  • CustomerCountryZoneReader
  • CustomerCountryZoneRepository
  • CustomerDateOfBirth
  • CustomerDeleter
  • CustomerEmail
  • CustomerFactory
  • CustomerFirstname
  • CustomerGender
  • CustomerHashedPassword
  • CustomerHouseNumber
  • CustomerInputToCollectionTransformer
  • CustomerInputValidator
  • CustomerInputValidatorSettings
  • CustomerJsonSerializer
  • CustomerLastname
  • CustomerLoginController
  • CustomerMemo
  • CustomerMemoCollection
  • CustomerNumber
  • CustomerPassword
  • CustomerPostcode
  • CustomerReader
  • CustomerReadService
  • CustomerRegistrationInputValidatorService
  • CustomerRepository
  • CustomersApiV2Controller
  • CustomerService
  • CustomerServiceFactory
  • CustomerServiceSettings
  • CustomerStatusHelper
  • CustomerStatusInformation
  • CustomerStatusProvider
  • CustomerStreet
  • CustomerSuburb
  • CustomerVatNumber
  • CustomerWriter
  • CustomerWriteService
  • DashboardController
  • DataTableColumn
  • DataTableColumnCollection
  • DataTableColumnType
  • DataTableHelper
  • DecimalType
  • DefaultApiV2Controller
  • DefaultTemplateSettings
  • DocumentFileStorage
  • DynamicShopMessagesController
  • EditableCollection
  • EditableKeyValueCollection
  • EkomiModuleCenterModule
  • EkomiModuleCenterModuleController
  • Email
  • EmailAddress
  • EmailAttachment
  • EmailCollection
  • EmailContact
  • EmailContent
  • EmailDeleter
  • EmailFactory
  • EmailJsonSerializer
  • EmailParser
  • EmailReader
  • EmailRepository
  • EmailsApiV2Controller
  • EmailsController
  • EmailService
  • EmailStringType
  • EmailSubject
  • EmailWriter
  • EmbeddedModuleController
  • EmptyCurrencyCode
  • EmptyDateTime
  • EmptyLanguageCode
  • EmptyProductImage
  • EnvCategoryServiceSettings
  • EnvInvoiceServiceSettings
  • EnvironmentClassFinderSettings
  • EnvironmentHttpContextFactory
  • EnvironmentHttpViewControllerRegistryFactory
  • EnvProductImageFileStorageSettings
  • EnvSlideImageFileStorageSettings
  • ExistingDirectory
  • ExistingFile
  • ExtraContentController
  • FileDownloadInformation
  • FilenameStringType
  • FilesystemHelper
  • FilterController
  • FindologicModuleCenterModule
  • FindologicModuleCenterModuleController
  • GeschaeftskundenversandConfigurationStorage
  • GeschaeftskundenversandController
  • GeschaeftskundenversandLogger
  • GeschaeftskundenversandModuleCenterModule
  • GeschaeftskundenversandModuleCenterModuleController
  • GeschaeftskundenversandProduct
  • GeschaeftskundenversandShipment
  • GeschaeftskundenversandSoapAdapter
  • GoogleAdwordConversionModuleCenterModule
  • GoogleAdwordConversionModuleCenterModuleController
  • GXCoreLoader
  • GXCoreLoaderSettings
  • GXEngineOrder
  • GXEngineProduct
  • HeidelpayModuleCenterModuleController
  • HermesModuleCenterModule
  • HermesModuleCenterModuleController
  • HttpApiV2Controller
  • HttpContext
  • HttpContextReader
  • HttpControllerResponse
  • HttpDispatcher
  • HttpResponseProcessor
  • HttpService
  • HttpServiceFactory
  • HttpViewController
  • HttpViewControllerFactory
  • HttpViewControllerRegistry
  • IdCollection
  • IdType
  • IloxxModuleCenterModule
  • IloxxModuleCenterModuleController
  • ImageFileStorage
  • ImageProcessingController
  • ImageRequestController
  • InfoBoxFactory
  • InfoBoxMessage
  • InfoBoxMessageCollection
  • InfoBoxRepository
  • InfoBoxRepositoryDeleter
  • InfoBoxRepositoryReader
  • InfoBoxRepositoryWriter
  • InfoBoxService
  • IntrashipModuleCenterModule
  • IntrashipModuleCenterModuleController
  • IntType
  • InvoiceActions
  • InvoiceArchiveReadService
  • InvoiceArchiveWriteService
  • InvoiceFileEntitler
  • InvoiceInformation
  • InvoiceListGenerator
  • InvoiceListItem
  • InvoiceListItemCollection
  • InvoiceRepository
  • InvoiceServiceFactory
  • InvoicesModalsAjaxController
  • InvoicesOverviewAjaxController
  • InvoicesOverviewColumns
  • InvoicesOverviewController
  • InvoicesOverviewTooltips
  • ItRechtModuleCenterModule
  • ItRechtModuleCenterModuleController
  • JanolawModuleCenterModule
  • JanolawModuleCenterModuleController
  • JsConfigurationController
  • JSEngineConfiguration
  • JsonHttpControllerResponse
  • JsTranslationsController
  • KeyValueCollection
  • KlarnaModuleCenterModuleController
  • LanguageCode
  • LanguageHelper
  • LanguageProvider
  • LawsController
  • LegacyProductImageProcessing
  • LettrModuleCenterModule
  • LettrModuleCenterModuleController
  • LiveSearchController
  • MagnalisterModuleCenterModule
  • MagnalisterModuleCenterModuleController
  • MailbeezModuleCenterModule
  • MailbeezModuleCenterModuleController
  • MailerAdapter
  • MaxFileSizeController
  • Md5Strategy
  • MediafinanzModuleCenterModule
  • MediafinanzModuleCenterModuleController
  • ModuleCenterController
  • ModuleCenterModuleCollection
  • ModuleTitleProvider
  • NewAttributesController
  • NewsletterLinkModuleCenterModule
  • NewsletterLinkModuleCenterModuleController
  • NonEmptyStringType
  • OrderActions
  • OrderAddonValueStorage
  • OrderAddressBlock
  • OrderFactory
  • OrderItem
  • OrderItemAddonValueStorage
  • OrderItemAttribute
  • OrderItemAttributeCollection
  • OrderItemAttributeFactory
  • OrderItemAttributeRepository
  • OrderItemAttributeRepositoryDeleter
  • OrderItemAttributeRepositoryFactory
  • OrderItemAttributeRepositoryReader
  • OrderItemAttributeRepositoryWriter
  • OrderItemCollection
  • OrderItemDownloadInformation
  • OrderItemDownloadInformationCollection
  • OrderItemFactory
  • OrderItemProperty
  • OrderItemPropertyFactory
  • OrderItemPropertyRepository
  • OrderItemPropertyRepositoryDeleter
  • OrderItemPropertyRepositoryReader
  • OrderItemPropertyRepositoryWriter
  • OrderItemRepository
  • OrderItemRepositoryDeleter
  • OrderItemRepositoryReader
  • OrderItemRepositoryWriter
  • OrderJsonSerializer
  • OrderListGenerator
  • OrderListItem
  • OrderListItemCollection
  • OrderListItemJsonSerializer
  • OrderObjectService
  • OrderPaymentType
  • OrderReadService
  • OrderRepository
  • OrderRepositoryDeleter
  • OrderRepositoryReader
  • OrderRepositoryWriter
  • OrdersApiV2Controller
  • OrderServiceFactory
  • OrderServiceSettings
  • OrderShippingType
  • OrdersHistoryApiV2Controller
  • OrdersItemsApiV2Controller
  • OrdersItemsAttributesApiV2Controller
  • OrdersModalsAjaxController
  • OrdersOverviewAjaxController
  • OrdersOverviewColumns
  • OrdersOverviewController
  • OrdersOverviewTooltips
  • OrderStatus
  • OrderStatusCollection
  • OrderStatusDeleter
  • OrderStatusesApiV2Controller
  • OrderStatusFactory
  • OrderStatusHistoryListItem
  • OrderStatusHistoryListItemCollection
  • OrderStatusHistoryStorage
  • OrderStatusReader
  • OrderStatusRepository
  • OrderStatusService
  • OrderStatusServiceFactory
  • OrderStatusStyles
  • OrderStatusWriter
  • OrdersTotalsApiV2Controller
  • OrderTooltipController
  • OrderTotal
  • OrderTotalCollection
  • OrderTotalFactory
  • OrderTotalRepository
  • OrderTotalRepositoryDeleter
  • OrderTotalRepositoryReader
  • OrderTotalRepositoryWriter
  • OrderTrackingInformationCollection
  • OrderWriteService
  • PackedDownloadController
  • ParcelShopFinder
  • ParcelshopfinderController
  • ParcelShopFinderLogger
  • ParcelshopfinderModuleCenterModule
  • ParcelshopfinderModuleCenterModuleController
  • PasswordEncryptionSettings
  • PasswordHashStrategy
  • PathType
  • PaymentTitleProvider
  • PayOneModuleCenterModuleController
  • PayPalConfigurationController
  • PayPalController
  • PaypalNGModuleCenterModuleController
  • PostfinderModuleCenterModule
  • PostfinderModuleCenterModuleController
  • Precheck
  • ProductAddonValueStorage
  • ProductAttribute
  • ProductAttributeCollection
  • ProductAttributeFactory
  • ProductAttributeObjectService
  • ProductAttributeRepository
  • ProductAttributeRepositoryDeleter
  • ProductAttributeRepositoryReader
  • ProductAttributeRepositoryWriter
  • ProductAttributeService
  • ProductAttributeServiceFactory
  • ProductAttributesModuleCenterModule
  • ProductAttributesModuleCenterModuleController
  • ProductCategoryLinker
  • ProductFactory
  • ProductImage
  • ProductImageCollection
  • ProductImageContainer
  • ProductImageContainerRepository
  • ProductImageFileStorage
  • ProductImagesApiV2Controller
  • ProductJsonSerializer
  • ProductListItem
  • ProductListItemCollection
  • ProductListItemJsonSerializer
  • ProductListProvider
  • ProductListProviderFactory
  • ProductObjectService
  • ProductPermissionSetter
  • ProductQuestionController
  • ProductReadService
  • ProductRepository
  • ProductRepositoryDeleter
  • ProductRepositoryReader
  • ProductRepositoryWriter
  • ProductsApiV2Controller
  • ProductServiceFactory
  • ProductSettings
  • ProductSettingsRepository
  • ProductSettingsRepositoryReader
  • ProductSettingsRepositoryWriter
  • ProductsLinksApiV2Controller
  • ProductWriteService
  • ProtectedShopsModuleCenterModule
  • ProtectedShopsModuleCenterModuleController
  • QuickEditDocuments
  • QuickEditOverviewAjaxController
  • QuickEditOverviewColumns
  • QuickEditOverviewController
  • QuickEditOverviewTooltips
  • QuickEditProductGraduatedPricesReader
  • QuickEditProductGraduatedPricesRepository
  • QuickEditProductListItem
  • QuickEditProductPropertiesAjaxController
  • QuickEditProductPropertiesListItem
  • QuickEditProductPropertiesReader
  • QuickEditProductPropertiesRepository
  • QuickEditProductPropertiesWriter
  • QuickEditProductSpecialPriceListItem
  • QuickEditProductSpecialPricesReader
  • QuickEditProductSpecialPricesRepository
  • QuickEditProductSpecialPricesWriter
  • QuickEditPropertiesOverviewColumns
  • QuickEditPropertiesTooltips
  • QuickEditService
  • QuickEditServiceFactory
  • QuickEditSpecialPricesAjaxController
  • QuickEditSpecialPricesOverviewColumns
  • QuickEditSpecialPriceTooltips
  • RedirectHttpControllerResponse
  • SessionTimeoutAjaxController
  • SharedShoppingCartConfigurationController
  • SharedShoppingCartController
  • SharedShoppingCartDeleter
  • SharedShoppingCartModuleCenterModule
  • SharedShoppingCartModuleCenterModuleController
  • SharedShoppingCartReader
  • SharedShoppingCartRepository
  • SharedShoppingCartService
  • SharedShoppingCartSettings
  • SharedShoppingCartWriter
  • ShipcloudController
  • ShipcloudModuleCenterModule
  • ShipcloudModuleCenterModuleController
  • ShippingTitleProvider
  • ShopInformationApiV2Controller
  • ShopKeyController
  • Slide
  • SlideCollection
  • SlideImage
  • SlideImageArea
  • SlideImageAreaCollection
  • SlideImageAreaRepository
  • SlideImageAreaRepositoryDeleter
  • SlideImageAreaRepositoryReader
  • SlideImageAreaRepositoryWriter
  • SlideImageCollection
  • SlideImageFileStorage
  • SlideImageRepository
  • SlideImageRepositoryDeleter
  • SlideImageRepositoryReader
  • SlideImageRepositoryWriter
  • Slider
  • SliderAssignmentRepository
  • SliderCollection
  • SlideRepository
  • SlideRepositoryDeleter
  • SlideRepositoryReader
  • SlideRepositoryWriter
  • SliderJsonSerializer
  • SliderReadService
  • SliderRepository
  • SliderRepositoryDeleter
  • SliderRepositoryReader
  • SliderRepositoryWriter
  • SlidersDetailsAjaxController
  • SlidersDetailsController
  • SliderServiceFactory
  • SlidersOverviewAjaxController
  • SlidersOverviewController
  • SliderWriteService
  • StaticCrossCuttingLoader
  • StaticGXCoreLoader
  • StatisticsService
  • StoredCategory
  • StoredOrderItem
  • StoredOrderItemAttribute
  • StoredOrderItemAttributeCollection
  • StoredOrderItemCollection
  • StoredOrderItemProperty
  • StoredOrderTotal
  • StoredOrderTotalCollection
  • StoredProduct
  • StoredProductAttribute
  • StoredProductAttributeCollection
  • StringCollection
  • StringHelper
  • StringType
  • StyleEdit3AuthenticationController
  • TaxClassesApiV2Controller
  • TaxRatesApiV2Controller
  • TaxZonesApiV2Controller
  • TemplateConfigurationController
  • TrustedShopsModuleCenterModule
  • TrustedShopsModuleCenterModuleController
  • UnknownCustomerCountry
  • UploadedFile
  • UrlRewrite
  • UrlRewriteCollection
  • UrlRewriteStorage
  • UserConfigurationController
  • UserConfigurationReader
  • UserConfigurationService
  • UserConfigurationWriter
  • UsernamePasswordCredentials
  • VatNumberValidator
  • VersionInfoController
  • VersionInfoDatabaseItem
  • VersionInfoDatabaseReader
  • VersionInfoFileItem
  • VersionInfoFileReader
  • VersionInfoItemFactory
  • VersionInfoRepository
  • VersionInfoService
  • VersionInfoServiceFactory
  • WishListController
  • WritableDirectory
  • WritableFile
  • YategoModuleCenterModule
  • YategoModuleCenterModuleController
  • YoochooseModuleCenterModule
  • YoochooseModuleCenterModuleController
  • ZoneJsonSerializer
  • ZonesApiV2Controller

Interfaces

  • AddonValueContainerInterface
  • AddonValueServiceInterface
  • AddonValueStorageFactoryInterface
  • AddressBlockInterface
  • AddressBookServiceInterface
  • AddressClassInterface
  • AddressFormatProviderInterface
  • AdminStatusOnlyInterface
  • AssetCollectionInterface
  • AssetInterface
  • AttachmentCollectionInterface
  • AttachmentNameInterface
  • AttachmentPathInterface
  • AttachmentsHandlerInterface
  • AuthCredentialsInterface
  • AuthFactoryInterface
  • AuthServiceInterface
  • AuthSettingsInterface
  • AuthStrategyInterface
  • CacheTokenHelperInterface
  • CategoryFactoryInterface
  • CategoryInterface
  • CategoryListProviderFactoryInterface
  • CategoryListProviderInterface
  • CategoryObjectServiceInterface
  • CategoryReadServiceInterface
  • CategoryRepositoryDeleterInterface
  • CategoryRepositoryInterface
  • CategoryRepositoryReaderInterface
  • CategoryRepositoryWriterInterface
  • CategoryServiceSettingsInterface
  • CategorySettingsInterface
  • CategorySettingsRepositoryInterface
  • CategorySettingsRepositoryReaderInterface
  • CategorySettingsRepositoryWriterInterface
  • CategoryWriteServiceInterface
  • ClassFinderInterface
  • ClassFinderSettingsInterface
  • ContactCollectionInterface
  • ContactNameInterface
  • ContactTypeInterface
  • ContentNavigationCollectionInterface
  • ContentViewInterface
  • CountryServiceInterface
  • CrossCuttingLoaderInterface
  • CrossCuttingObjectInterface
  • CustomerAccountInputValidatorInterface
  • CustomerAdditionalAddressInfoInterface
  • CustomerAddressDeleterInterface
  • CustomerAddressInputValidatorInterface
  • CustomerAddressInterface
  • CustomerAddressReaderInterface
  • CustomerAddressRepositoryInterface
  • CustomerAddressWriterInterface
  • CustomerB2BStatusInterface
  • CustomerCallNumberInterface
  • CustomerCityInterface
  • CustomerCompanyInterface
  • CustomerCountryInterface
  • CustomerCountryIso2Interface
  • CustomerCountryIso3Interface
  • CustomerCountryNameInterface
  • CustomerCountryReaderInterface
  • CustomerCountryRepositoryInterface
  • CustomerCountryZoneInterface
  • CustomerCountryZoneIsoCodeInterface
  • CustomerCountryZoneNameInterface
  • CustomerCountryZoneReaderInterface
  • CustomerCountryZoneRepositoryInterface
  • CustomerDeleterInterface
  • CustomerEmailInterface
  • CustomerFirstnameInterface
  • CustomerGenderInterface
  • CustomerHouseNumberInterface
  • CustomerInputValidatorInterface
  • CustomerInputValidatorSettingsInterface
  • CustomerInterface
  • CustomerLastnameInterface
  • CustomerNumberInterface
  • CustomerPasswordInterface
  • CustomerPostcodeInterface
  • CustomerReaderInterface
  • CustomerReadServiceInterface
  • CustomerRegistrationInputValidatorServiceInterface
  • CustomerRepositoryInterface
  • CustomerServiceInterface
  • CustomerServiceSettingsInterface
  • CustomerStatusHelperInterface
  • CustomerStatusProviderInterface
  • CustomerStreetInterface
  • CustomerSuburbInterface
  • CustomerVatNumberInterface
  • CustomerWriterInterface
  • CustomerWriteServiceInterface
  • EmailAddressInterface
  • EmailAttachmentInterface
  • EmailCollectionInterface
  • EmailContactInterface
  • EmailContentInterface
  • EmailDeleterInterface
  • EmailFactoryInterface
  • EmailInterface
  • EmailReaderInterface
  • EmailRepositoryInterface
  • EmailServiceInterface
  • EmailSubjectInterface
  • EmailWriterInterface
  • FilesystemHelperInterface
  • GXCoreLoaderInterface
  • GXCoreLoaderSettingsInterface
  • HttpContextInterface
  • HttpContextReaderInterface
  • HttpControllerResponseInterface
  • HttpDispatcherInterface
  • HttpResponseProcessorInterface
  • HttpServiceFactoryInterface
  • HttpServiceInterface
  • HttpViewControllerFactoryInterface
  • HttpViewControllerInterface
  • HttpViewControllerRegistryInterface
  • IdInterface
  • InfoBoxFactoryInterface
  • InfoBoxMessageInterface
  • InfoBoxRepositoryDeleterInterface
  • InfoBoxRepositoryInterface
  • InfoBoxRepositoryReaderInterface
  • InfoBoxRepositoryWriterInterface
  • InfoBoxServiceInterface
  • InvoiceArchiveReadServiceInterface
  • InvoiceArchiveWriteServiceInterface
  • InvoiceFileEntitlerInterface
  • InvoiceListGeneratorInterface
  • InvoiceRepositoryInterface
  • InvoiceServiceSettingsInterface
  • LanguageHelperInterface
  • LanguageProviderInterface
  • MailerAdapterInterface
  • ModuleCenterModuleCollectionInterface
  • ModuleCenterModuleInterface
  • OrderFactoryInterface
  • OrderInterface
  • OrderItemAttributeFactoryInterface
  • OrderItemAttributeInterface
  • OrderItemAttributeRepositoryDeleterInterface
  • OrderItemAttributeRepositoryFactoryInterface
  • OrderItemAttributeRepositoryInterface
  • OrderItemAttributeRepositoryReaderInterface
  • OrderItemAttributeRepositoryWriterInterface
  • OrderItemFactoryInterface
  • OrderItemInterface
  • OrderItemPropertyFactoryInterface
  • OrderItemPropertyRepositoryDeleterInterface
  • OrderItemPropertyRepositoryReaderInterface
  • OrderItemPropertyRepositoryWriterInterface
  • OrderItemRepositoryDeleterInterface
  • OrderItemRepositoryInterface
  • OrderItemRepositoryReaderInterface
  • OrderItemRepositoryWriterInterface
  • OrderListGeneratorInterface
  • OrderObjectServiceInterface
  • OrderPaymentTypeInterface
  • OrderReadServiceInterface
  • OrderRepositoryDeleterInterface
  • OrderRepositoryInterface
  • OrderRepositoryReaderInterface
  • OrderRepositoryWriterInterface
  • OrderServiceSettingsInterface
  • OrderShippingTypeInterface
  • OrderStatusDeleterInterface
  • OrderStatusFactoryInterface
  • OrderStatusHistoryReaderInterface
  • OrderStatusHistoryWriterInterface
  • OrderStatusInterface
  • OrderStatusReaderInterface
  • OrderStatusRepositoryInterface
  • OrderStatusServiceFactoryInterface
  • OrderStatusServiceInterface
  • OrderStatusWriterInterface
  • OrderTotalFactoryInterface
  • OrderTotalInterface
  • OrderTotalRepositoryDeleterInterface
  • OrderTotalRepositoryInterface
  • OrderTotalRepositoryReaderInterface
  • OrderTotalRepositoryWriterInterface
  • OrderWriteServiceInterface
  • ProductAttributeFactoryInterface
  • ProductAttributeInterface
  • ProductAttributeObjectServiceInterface
  • ProductAttributeRepositoryDeleterInterface
  • ProductAttributeRepositoryInterface
  • ProductAttributeRepositoryReaderInterface
  • ProductAttributeRepositoryWriterInterface
  • ProductAttributeServiceInterface
  • ProductCategoryLinkerInterface
  • ProductFactoryInterface
  • ProductImageContainerInterface
  • ProductImageContainerRepositoryInterface
  • ProductImageInterface
  • ProductImagePathsSettingsInterface
  • ProductImageProcessingInterface
  • ProductInterface
  • ProductListProviderFactoryInterface
  • ProductListProviderInterface
  • ProductObjectServiceInterface
  • ProductPermissionSetterInterface
  • ProductReadServiceInterface
  • ProductRepositoryDeleterInterface
  • ProductRepositoryInterface
  • ProductRepositoryReaderInterface
  • ProductRepositoryWriterInterface
  • ProductSettingsInterface
  • ProductSettingsRepositoryInterface
  • ProductSettingsRepositoryReaderInterface
  • ProductSettingsRepositoryWriterInterface
  • ProductWriteServiceInterface
  • QuickEditDocumentsInterface
  • QuickEditOverviewColumnsInterface
  • QuickEditOverviewTooltipsInterface
  • QuickEditProductGraduatedPricesReaderInterface
  • QuickEditProductGraduatedPricesRepositoryInterface
  • QuickEditProductPropertiesReaderInterface
  • QuickEditProductPropertiesRepositoryInterface
  • QuickEditProductPropertiesWriterInterface
  • QuickEditProductSpecialPricesReaderInterface
  • QuickEditProductSpecialPricesRepositoryInterface
  • QuickEditProductSpecialPricesWriterInterface
  • QuickEditPropertiesOverviewColumnsInterface
  • QuickEditPropertiesTooltipsInterface
  • QuickEditServiceFactoryInterface
  • QuickEditServiceInterface
  • QuickEditSpecialPricesOverviewColumnsInterface
  • QuickEditSpecialPriceTooltipsInterface
  • SerializerInterface
  • SharedShoppingCartDeleterInterface
  • SharedShoppingCartReaderInterface
  • SharedShoppingCartRepositoryInterface
  • SharedShoppingCartServiceInterface
  • SharedShoppingCartSettingsInterface
  • SharedShoppingCartWriterInterface
  • SlideImageAreaInterface
  • SlideImageAreaRepositoryDeleterInterface
  • SlideImageAreaRepositoryInterface
  • SlideImageAreaRepositoryReaderInterface
  • SlideImageAreaRepositoryWriterInterface
  • SlideImageInterface
  • SlideImagePathsSettingsInterface
  • SlideImageRepositoryDeleterInterface
  • SlideImageRepositoryInterface
  • SlideImageRepositoryReaderInterface
  • SlideImageRepositoryWriterInterface
  • SlideInterface
  • SliderAssignmentRepositoryInterface
  • SlideRepositoryDeleterInterface
  • SlideRepositoryInterface
  • SlideRepositoryReaderInterface
  • SlideRepositoryWriterInterface
  • SliderInterface
  • SliderReadServiceInterface
  • SliderRepositoryDeleterInterface
  • SliderRepositoryInterface
  • SliderRepositoryReaderInterface
  • SliderRepositoryWriterInterface
  • SliderWriteServiceInterface
  • StatisticsServiceInterface
  • StoredCategoryInterface
  • StoredOrderItemAttributeInterface
  • StoredOrderItemInterface
  • StoredOrderTotalInterface
  • StoredProductAttributeInterface
  • StoredProductInterface
  • StringHelperInterface
  • UrlKeywordsRepairerInterface
  • UserConfigurationReaderInterface
  • UserConfigurationServiceInterface
  • UserConfigurationWriterInterface
  • VatNumberValidatorInterface
  • VersionInfoItemInterface

Exceptions

  • AjaxException
  • AttachmentNotFoundException
  • FileNotFoundException
  • GeschaeftskundenversandProductException
  • GeschaeftskundenversandShipmentException
  • GeschaeftskundenversandShipmentInvalidExportTypeException
  • GeschaeftskundenversandShipmentInvalidTermsOfTradeException
  • GeschaeftskundenversandSoapAdapterCigCredentialsMissingException
  • GeschaeftskundenversandSoapAdapterException
  • GeschaeftskundenversandSoapAdapterServiceUnavailableException
  • HttpApiV2Exception
  • InvalidCustomerDataException
  • InvalidEkpFormatException
  • InvalidGKVAttendanceFormatException
  • InvalidGKVProductTypeException
  • MissingControllerNameException
  • OrderStatusIdExistsException
  • OrderStatusIdNotExistsException
  • OrderStatusNotFoundException
  • UnknownEnvironmentException
   1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64   65   66   67   68   69   70   71   72   73   74   75   76   77   78   79   80   81   82   83   84   85   86   87   88   89   90   91   92   93   94   95   96   97   98   99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200  201  202  203  204  205  206  207  208  209  210  211  212  213  214  215  216  217  218  219  220  221  222  223  224  225  226  227  228  229  230  231  232  233  234  235  236  237  238  239  240  241  242  243  244  245  246  247  248  249  250  251  252  253  254  255  256  257  258  259  260  261  262  263  264  265  266  267  268  269  270  271  272  273  274  275  276  277  278  279  280  281  282  283  284  285  286  287  288  289  290  291  292  293  294  295  296  297  298  299  300  301  302  303  304  305  306  307  308  309  310  311  312  313  314  315  316  317  318  319  320  321  322  323  324  325  326  327  328  329  330  331  332  333  334  335  336  337  338  339  340  341  342  343  344  345  346  347  348  349  350  351  352  353  354  355  356  357  358  359  360  361  362  363  364  365  366  367  368  369  370  371  372  373  374  375  376  377  378  379  380  381  382  383  384  385  386  387  388  389  390  391  392  393  394  395  396  397  398  399  400  401  402  403  404  405  406  407  408  409  410  411  412  413  414  415  416  417  418  419  420  421  422  423  424  425  426  427  428  429  430  431  432  433  434  435  436  437  438  439  440  441  442  443  444  445  446  447  448  449  450  451  452  453  454  455  456  457  458  459  460  461  462  463  464  465  466  467  468  469  470  471  472  473  474  475  476  477  478  479  480  481  482  483  484  485  486  487  488  489  490  491  492  493  494  495  496  497  498  499  500  501  502  503  504  505  506  507  508  509  510  511  512  513  514  515  516  517  518  519  520  521  522  523  524  525  526  527  528  529  530  531  532  533  534  535  536  537  538  539  540  541  542  543  544  545  546  547  548  549  550  551  552  553  554  555  556  557  558  559  560  561  562  563  564  565  566  567  568  569  570  571  572  573  574  575  576  577  578  579  580  581  582  583  584  585  586  587  588  589  590  591  592  593  594  595  596  597  598  599  600  601  602  603  604  605  606  607  608  609  610  611  612  613  614  615  616  617  618  619  620  621  622  623  624  625  626  627  628  629  630  631  632  633  634  635  636  637  638  639  640  641  642  643  644  645  646  647  648  649  650  651  652  653  654  655  656  657  658  659  660  661  662  663  664  665  666  667  668  669  670  671  672  673  674  675  676  677  678  679  680  681  682  683  684  685  686  687  688  689  690  691  692  693  694  695  696  697  698  699  700  701  702  703  704  705  706  707  708  709  710  711  712  713  714  715  716  717  718  719  720  721  722  723  724  725  726  727  728  729  730  731  732  733  734  735  736  737  738  739  740  741  742  743  744  745  746  747  748  749  750  751  752  753  754  755  756  757  758  759  760  761  762  763  764  765  766  767  768  769  770  771  772  773  774  775  776  777  778  779  780  781  782  783  784  785  786  787  788  789  790  791  792  793  794  795  796  797  798  799  800  801  802  803  804  805  806  807  808  809  810  811  812  813  814  815  816  817  818  819  820  821  822  823  824  825  826  827  828  829  830  831  832  833  834  835  836  837  838  839  840  841  842  843  844  845  846  847  848  849  850  851  852  853  854  855  856  857  858  859  860  861  862  863  864  865  866  867  868  869  870  871  872  873  874  875  876  877  878  879  880  881  882  883  884  885  886  887  888  889  890  891  892  893  894  895  896  897  898  899  900  901  902  903  904  905  906  907  908  909  910  911  912  913  914  915  916  917  918  919  920  921  922  923  924  925  926  927  928  929  930  931  932  933  934  935  936  937  938  939  940  941  942  943  944  945  946  947  948  949  950  951  952  953  954  955  956  957  958  959  960  961  962  963  964  965  966  967  968  969  970  971  972  973  974  975  976  977  978  979  980  981  982  983  984  985  986  987  988  989  990  991  992  993  994  995  996  997  998  999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 
<?php
/* --------------------------------------------------------------
    GeschaeftskundenversandShipment.inc.php 2017-04-06
    Gambio GmbH
    http://www.gambio.de
    Copyright (c) 2017 Gambio GmbH
    Released under the GNU General Public License (Version 2)
    [http://www.gnu.org/licenses/gpl-2.0.html]
    --------------------------------------------------------------
*/

/**
 * Class GeschaeftskundenversandShipment
 *
 * @category   System
 * @package    Extensions
 * @subpackage Geschaeftskundenversand
 */
class GeschaeftskundenversandShipment
{
    protected $ekp;
    protected $shipmentData;
    
    
    /**
     * GeschaeftskundenversandShipment constructor.
     *
     * @param $ekp
     *
     * @throws Exception
     */
    public function __construct($ekp)
    {
        if(preg_match('/^\d{10}$/', $ekp) !== 1)
        {
            throw new Exception('invalid EKP format - must be 10 digits');
        }
        $this->ekp = $ekp;

        $this->shipmentData = [
            'Version' => [
                'majorRelease' => (string)GeschaeftskundenversandConfigurationStorage::MAJOR_VERSION,
                'minorRelease' => (string)GeschaeftskundenversandConfigurationStorage::MINOR_VERSION,
            ],
            'ShipmentOrder' => [
                'sequenceNumber' => '1',
                'Shipment' => [
                    'ShipmentDetails' => [
                        'product'       => '',
                        'accountNumber' => '', // Abrechnungsnummer = EKP + Verfahren + Teilnahme // aka account number
                        'shipmentDate'  => date('Y-m-d'),
                        'ShipmentItem'  => [
                            'weightInKG' => '0.100',
                            # 'lengthInCM' => '42', // optional
                            # 'widthInCM'  => '23', // optional
                            # 'heightInCM' => '17', // optional
                        ],
                        'customerReference'           => '', // optional
                        # 'returnShipmentAccountNumber' => '', // optional
                        # 'returnShipmentReference'     => '', // optional
                        'Service' => [],
                        #'Service' => [
                        #   'DayOfDelivery' => [
                        #       '_'       => '',
                        #       'active'  => '0', // 0|1
                        #       'details' => 'yyyy-mm-dd',
                        #   ],
                        #   'DeliveryTimeframe' => [ // <DeliveryTimeframe active="1" type="10001200" />
                        #       '_'       => '',
                        #       'active'  => '0', // 0|1
                        #       'type'    => '10001200', // 10001200|12001400|14001600|16001800|18002000|19002100
                        #   ],
                        #   'IndividualSenderRequirement' => [
                        #       '_'       => '',
                        #       'active'  => '0', // 0|1
                        #       'details' => 'lorem ipsum', // string 1..250
                        #   ],
                        #   'ShipmentHandling' => [
                        #       '_'       => '',
                        #       'active'  => '0',
                        #       'type'    => 'a' // a|b|c|d|e, cf. https://entwickler.dhl.de/group/ep/wsapis/geschaeftskundenversand/operationen/createshipmentorder/ioreference
                        #   ],
                        #   'Endorsement' => [
                        #       '_'       => '',
                        #       'active'  => '0',
                        #       'type'    => 'SOZU', // SOZU|ZWZU|IMMEDIATE|AFTER_DEADLINE|ABANDONMENT
                        #   ],
                        #   'VisualCheckOfAge' => [
                        #       '_'       => '',
                        #       'active'  => '0',
                        #       'type'    => 'A16', // A16|A18
                        #   ],
                        #   'PreferredLocation' => [
                        #       '_'       => '',
                        #       'active'  => '0',
                        #       'details' => 'Hundehütte', // string 1..100
                        #   ],
                        #   'PreferredNeighbour' => [
                        #       '_'       => '',
                        #       'active'  => '0',
                        #       '...'     => '...', // ??? not documented
                        #   ],
                        #   'GoGreen'        => ['_' => '', 'active' => '0', ],
                        #   'Perishables'    => ['_' => '', 'active' => '0', ],
                        #   'Personally'     => ['_' => '', 'active' => '0', ],
                        #   'ReturnReceipt'  => ['_' => '', 'active' => '0', ],
                        #   'Premium'        => ['_' => '', 'active' => '0', ],
                        #   'CashOnDelivery' => [
                        #       '_'               => '',
                        #       'active'          => '0',
                        #       'codAmount'       => '0.00',
                        #   ],
                        #   'AdditionalInsurance' => [
                        #       '_'               => '',
                        #       'active'          => '0',
                        #       'insuranceAmount' => '0.00',
                        #   ],
                        #   'BulkyGoods' => [
                        #       '_'               => '',
                        #       'active'          => '0',
                        #   ],
                        #],
                        #'Notification' => [ // optional
                        #   'recipientEmailAddress' => 'foo@bar.example.invalid',
                        #],
                        #'BankData' => [ // optional, e.g. for CoD
                        #   'accountOwner'     => '', // string 1..80
                        #   'bankName'         => '', // string 1..80
                        #   'iban'             => '', // string 1..34
                        #   'note1'            => '', // string 1..35, optional
                        #   'note2'            => '', // string 1..35, optional
                        #   'bic'              => '', // string 1..11, optional
                        #   'accountreference' => '', // string 1..35, optional
                        #],
                    ], // ShipmentDetails
                    'Shipper' => [
                        'Name' => [
                            'name1' => '', // 1..50, name
                            # 'name2' => '', // 1..50, optional, company
                            # 'name3' => '', // 1..50, optional, company
                        ],
                        'Address' => [
                            'streetName'      => '', // 1..35
                            'streetNumber'    => '', // 1..5
                            # 'addressAddition' => '', // 1..35, optional
                            'zip'             => '', // 1..10
                            'city'            => '', // 1..35
                            'Origin'          => [
                                # 'country'        => '', // 1..30, optional
                                'countryISOCode' => '', // 2, ISO Code
                                # 'state'          => '', // 1..30, optional
                            ],
                        ],
                        'Communication' => [ // required!
                            # 'phone'         => '', // 1..20, optional
                            # 'email'         => '', // 1..50, optional
                            # 'contactPerson' => '', // 1..50, optional
                        ],
                    ],
                    'Receiver' => [
                        'name1' => '', // 1..50
                        'Communication' => [ // required
                            # 'phone'         => '', // 1..20, optional
                            # 'email'         => '', // 1..50, optional
                            # 'contactPerson' => '', // 1..50, optional
                        ],
                        'Address' => [
                            # 'name2'                  => '', // 1..50, optional
                            # 'name3'                  => '', // 1..50, optional
                            'streetName'             => '', // 1..35
                            'streetNumber'           => '', // 1..5
                            # 'addressAddition'        => '', // 1..35, optional
                            # 'dispatchingInformation' => '', // 1..35, optional
                            'zip'                    => '', // 1..10
                            'city'                   => '', // 1..35
                            'Origin'                 => [ // optional
                                # 'country'        => '', // 1..30
                                # 'countryISOCode' => '', // required
                                # 'state'          => '', // optional
                            ],
                        ],
                        # 'Packstation' => [
                        #   'postNumber'        => '', // 1..10, optional if e-mail/mobile phone number given
                        #   'packstationNumber' => '', // 3, required
                        #   'zip'               => '', // 1..10
                        #   'city'              => '', // 1..35
                        #   'Origin'            => [
                        #       'country'        => '', // 1..30, optional
                        #       'countryISOCode' => '', // 2, required
                        #       'state'          => '', // 1..30, optional
                        #   ],
                        # ],
                        # 'Postfiliale' => [
                        #   'postfilialNumber' => '', // 3
                        #   'postNumber'       => '', // 1..10
                        #   'zip'              => '', // 1..10
                        #   'city'             => '', // 1..35
                        #   'Origin'           => [
                        #       'country'        => '', // 1..30, optional
                        #       'countryISOCode' => '', // 2, required
                        #       'state'          => '', // 1..30
                        #   ],
                        # ],
                        # 'ParcelShop' => [
                        #   'parcelShopNumber' => '', // 3
                        #   'streetName'       => '', // 1..35, optional
                        #   'streetNumber'     => '', // 1..5, optional
                        #   'zip'              => '', // 1..10, required
                        #   'city'             => '', // 1..35, required
                        #   'Origin'           => [
                        #       'country'        => '', // 1..30, optional
                        #       'countryISOCode' => '', // 2
                        #       'state'          => '', // 1..30
                        #   ],
                        # ],
                    ],
                    # 'ReturnReceiver' => [
                    #   'Name' => [
                    #       'name1' => '', // 1..50, optional
                    #       'name2' => '', // 1..50, required
                    #       'name3' => '', // 1..50, required
                    #   ],
                    #   'Address' => [
                    #       'streetName'             => '', // 1..35
                    #       'streetNumber'           => '', // 1..5
                    #       'addressAddition'        => '', // 1..35, optional
                    #       'dispatchingInformation' => '', // 1..35, optional
                    #       'zip'                    => '', // 1..5
                    #       'city'                   => '', // 1..35
                    #       'Origin'                 => [
                    #           'country'        => '', // 1..30, optional
                    #           'countryISOCode' => '', // 2
                    #           'state'          => '', // 1..30
                    #       ],
                    #   ],
                    #   'Communication' => [
                    #       'phone'         => '', // 1..20, optional
                    #       'email'         => '', // 1..50, optional
                    #       'contactPerson' => '', // 1..50, optional
                    #   ],
                    # ],
                    # 'ExportDocument' => [
                    #   'invoiceNumber'              => '', // 1..35, optional
                    #   'exportType'                 => '', // OTHER|PRESENT|COMMERCIAL_SAMPLE|DOCUMENT|RETURN_OF_GOODS, required if non-EU
                    #   'exportTypeDescription'      => '', // 1..256, optional; required for exportType OTHER
                    #   'termsOfTrade'               => '', // DDP|DXV|DDU|DDX, optional (incoterms code)
                    #   'placeOfCommital'            => '', // 1..35
                    #   'additionalFee'              => '', // decimal
                    #   'permitNumber'               => '', // 1..10, optional
                    #   'attestationNumber'          => '', // 1..35, optional
                    #   'WithElectronicExportNtfctn' => [ // optional
                    #       '_'      => '',
                    #       'active' => '0', // 0|1
                    #   ],
                    #   'ExportDocPosition' => [ // multiple child elements for intl, one for EU
                    #       'description'         => '', // 1..256
                    #       'countryCodeOrigin'   => '', // 2, ISO code
                    #       'customsTariffNumber' => '', // 1..10
                    #       'amount'              => '', // int, quantity
                    #       'netWeightKG'         => '', // dec
                    #       'customsValue'        => '', // dec
                    #   ],
                    # ],
                ],
            ],
            'PrintOnlyIfCodeable' => ['_' => '', 'active' => '0' ],
            'labelResponseType'   => 'URL', // URL|B64
        ];
    }

    public function toArray()
    {
        return $this->shipmentData;
    }

    public function setProduct(GeschaeftskundenversandProduct $product)
    {
        $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['product'] = $product->getApiProductCode();
        $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['accountNumber'] = sprintf('%s%s%s',
            $this->ekp,
            $product->getProcedure(),
            $product->getAttendance());
    }

    public function setShipmentDate($date)
    {
        $shipmentDateTime = new DateTime($date);
        $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['shipmentDate'] = $shipmentDateTime->format('Y-m-d');
    }

    public function setWeight($weight)
    {
        $weight = max((double)$weight, 0.1);
        $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['ShipmentItem']['weightInKG'] = sprintf('%.3f', $weight);
    }

    public function setCustomerReference($customerReference)
    {
        $customerReference = mb_substr($customerReference, 0, 35);
        $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['customerReference'] = $customerReference;
    }

    public function setNotification($emailAddress)
    {
        $emailAddress = mb_substr($emailAddress, 0, 50);
        if(!empty($emailAddress))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Notification'] = [ 'recipientEmailAddress' => $emailAddress ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Notification']);
        }
    }

    public function setBankData($accountOwner, $bankName, $iban, $note1 = '', $note2 = '', $bic = '', $accountreference = '')
    {
        $accountOwner     = mb_substr($accountOwner,     0, 80);
        $bankName         = mb_substr($bankName,         0, 80);
        $iban             = mb_substr($iban,             0, 34);
        $note1            = mb_substr($note1,            0, 35);
        $note2            = mb_substr($note2,            0, 35);
        $bic              = mb_substr($bic,              0, 11);
        $accountreference = mb_substr($accountreference, 0, 35);
        $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['BankData'] = [
            'accountOwner'     => $accountOwner,
            'bankName'         => $bankName,
            'iban'             => $iban,
            'note1'            => $note1,
            'note2'            => $note2,
            'bic'              => $bic,
            'accountreference' => $accountreference,
        ];
    }

    public function setServiceDayOfDelivery($date = '')
    {
        try
        {
            $dateTime = new DateTime($date);
            $date     = $dateTime->format('Y-m-d');
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['DayOfDelivery'] = [
                '_'       => '',
                'active'  => '1',
                'details' => $date,
            ];
        }
        catch(Exception $e)
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['DayOfDelivery']);
        }
    }

    public function setServiceDeliveryTimeframe($timeframe = '')
    {
        $allowedTimeframes = [ '10001200', '12001400', '14001600', '16001800', '18002000', '19002100' ];
        if(in_array($timeframe, $allowedTimeframes))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['DeliveryTimeframe'] = [
                '_'      => '',
                'active' => '1',
                'type'   => $timeframe,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['DeliveryTimeframe']);
        }
    }

    public function setServiceIndividualSenderRequirement($requirementText = '')
    {
        $requirementText = trim($requirementText);
        if(!empty($requirementText))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['IndividualSenderRequirement'] = [
                '_'       => '',
                'active'  => '1',
                'details' => $requirementText,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['IndividualSenderRequirement']);
        }
    }

    public function setServiceShipmentHandling($type = '')
    {
        if(in_array($type, ['a', 'b', 'c', 'd', 'e']))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['ShipmentHandling'] = [
                '_'       => '',
                'active'  => '1',
                'type'    => $type,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['ShipmentHandling']);
        }
    }

    public function setServiceEndorsement($type = '')
    {
        $type = strtoupper((string)$type);
        if(in_array($type, ['SOZU', 'ZWZU', 'IMMEDIATE', 'AFTER_DEADLINE', 'ABANDONMENT']))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Endorsement'] = [
                '_'       => '',
                'active'  => '1',
                'type'    => $type,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Endorsement']);
        }
    }

    public function setServiceVisualCheckOfAge($type = '')
    {
        if(in_array($type, ['A16', 'A18']))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['VisualCheckOfAge'] = [
                '_'       => '',
                'active'  => '1',
                'type'    => $type
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['VisualCheckOfAge']);
        }
    }

    public function setServicePreferredLocation($location = '')
    {
        $location = mb_substr(trim($location), 0, 100);
        if(!empty($location))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredLocation'] = [
                '_'       => '',
                'active'  => '1',
                'details' => $location,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredLocation']);
        }
    }

    public function setServiceGoGreen($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['GoGreen'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['GoGreen']);
        }
    }

    public function setServicePerishables($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Perishables'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Perishables']);
        }
    }

    public function setServicePersonally($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Personally'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Personally']);
        }
    }

    public function setServiceReturnReceipt($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['ReturnReceipt'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['ReturnReceipt']);
        }
    }

    public function setServicePremium($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Premium'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['Premium']);
        }
    }

    public function setServiceBulkyGoods($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['BulkyGoods'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['BulkyGoods']);
        }
    }

    public function setServiceCashOnDelivery($codAmount = 0, $addFee = false)
    {
        $codAmount = (double)$codAmount;
        if($codAmount > 0)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['CashOnDelivery'] = [
                '_'         => '',
                'active'    => '1',
                'codAmount' => number_format($codAmount, 2, '.', ''),
                'addFee'    => (bool)$addFee ? '1' : '0',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['CashOnDelivery']);
        }
    }

    public function setServiceAdditionalInsurance($insuranceAmount = 0)
    {
        $insuranceAmount = (double)$insuranceAmount;
        if($insuranceAmount > 0)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['AdditionalInsurance'] = [
                '_'         => '',
                'active'    => '1',
                'insuranceAmount' => number_format($insuranceAmount, 2, '.', ''),
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['AdditionalInsurance']);
        }
    }

    public function setServicePreferredNeighbour($details = '')
    {
        $details = mb_substr((string)$details, 0, 100);
        if(!empty($details))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredNeighbour'] = [
                '_' => '',
                'active' => '1',
                'details' => $details,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredNeighbour']);
        }
    }

    public function setServiceNamedPersonOnly($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['NamedPersonOnly'] = [
                '_' => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['NamedPersonOnly']);
        }
    }

    public function setServiceIdentCheck($surname = '', $givenName = '', $dateOfBirth = '', $minimumAge = '')
    {
        $surname = mb_substr((string)$surname, 0, 255);
        if(!empty($surname))
        {
            $givenName = mb_substr((string)$givenName, 0, 255);
            $dateOfBirth = (new DateTime($dateOfBirth))->format('Y-m-d');
            $minimumAge = in_array($minimumAge, ['', 'A16', 'A18']) ? $minimumAge : '';
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['IdentCheck'] = [
                'active' => '1',
                'Ident'  => [
                    'surname'     => $surname,
                    'givenName'   => $givenName,
                    'dateOfBirth' => $dateOfBirth,
                    'minimumAge'  => $minimumAge,
                ],
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['IdentCheck']);
        }
    }

    public function setServicePreferredDay($preferredDay = '')
    {
        if(!empty($preferredDay))
        {
            $preferredDay = (new DateTime($preferredDay))->format('Y-m-d');
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredDay'] = [
                '_' => '',
                'active' => '1',
                'details' => $preferredDay,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredDay']);
        }
    }

    public function setServicePreferredTime($preferredTime = 0)
    {
        $timeFrames = [ '10001200', '12001400', '14001600', '16001800', '18002000', '19002100' ];
        if(!empty($preferredTime) && in_array($preferredTime, $timeFrames))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredTime'] = [
                '_'      => '',
                'active' => '1',
                'type'   => $preferredTime,
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PreferredTime']);
        }
    }

    public function setServiceNoNeighbourDelivery($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['NoNeigbourDelivery'] = [
                '_'      => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['NoNeigbourDelivery']);
        }
    }

    public function setServicePackagingReturn($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PackagingReturn'] = [
                '_'      => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['PackagingReturn']);
        }
    }

    public function setServiceNoticeOfNonDeliverability($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['NoticeOfNonDeliverability'] = [
                '_'      => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['NoticeOfNonDeliverability']);
        }
    }

    public function setServiceReturnImmediately($activate = false)
    {
        $activate = (bool)$activate;
        if($activate === true)
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['ReturnImmediately'] = [
                '_'      => '',
                'active' => '1',
            ];
        }
        else
        {
            unset($this->shipmentData['ShipmentOrder']['Shipment']['ShipmentDetails']['Service']['ReturnImmediately']);
        }
    }

    public function setAllServices(array $servicesArray)
    {
        if(!empty($servicesArray['dayofdelivery']))
        {
            $this->setServiceDayOfDelivery($servicesArray['dayofdelivery']);
        }
        if(!empty($servicesArray['deliverytimeframe']))
        {
            $this->setServiceDeliveryTimeframe($servicesArray['deliverytimeframe']);
        }
        if(!empty($servicesArray['individualsenderrequirement']))
        {
            $this->setServiceIndividualSenderRequirement($servicesArray['individualsenderrequirement']);
        }
        if(!empty($servicesArray['shipmenthandling']))
        {
            $this->setServiceShipmentHandling($servicesArray['shipmenthandling']);
        }
        if(!empty($servicesArray['endorsement']))
        {
            $this->setServiceEndorsement($servicesArray['endorsement']);
        }
        if(!empty($servicesArray['visualcheckofage']))
        {
            $this->setServiceVisualCheckofAge(strtoupper($servicesArray['visualcheckofage']));
        }
        if(!empty($servicesArray['preferredlocation']))
        {
            $this->setServicePreferredLocation($servicesArray['preferredlocation']);
        }
        if(!empty($servicesArray['gogreen']))
        {
            $this->setServiceGoGreen((bool)$servicesArray['gogreen'] === true);
        }
        if(!empty($servicesArray['perishables']))
        {
            $this->setServicePerishables((bool)$servicesArray['perishables'] === true);
        }
        if(!empty($servicesArray['personally']))
        {
            $this->setServicePersonally((bool)$servicesArray['personally'] === true);
        }
        if(!empty($servicesArray['returnreceipt']))
        {
            $this->setServiceReturnReceipt((bool)$servicesArray['returnreceipt'] === true);
        }
        if(!empty($servicesArray['premium']))
        {
            $this->setServicePremium((bool)$servicesArray['premium'] === true);
        }
        if(!empty($servicesArray['bulkygoods']))
        {
            $this->setServiceBulkyGoods((bool)$servicesArray['bulkygoods'] === true);
        }
        if(!empty($servicesArray['cashondelivery']))
        {
            $codAddFee = isset($servicesArray['cod_add_fee']) && (bool)$servicesArray['cod_add_fee'] === true;
            $this->setServiceCashOnDelivery((double)$servicesArray['cashondelivery'], $codAddFee);
        }
        if(!empty($servicesArray['additionalinsurance']))
        {
            $this->setServiceAdditionalInsurance((double)$servicesArray['additionalinsurance']);
        }

        if(!empty($servicesArray['preferredneighbour']))
        {
            $this->setServicePreferredNeighbour($servicesArray['preferredneighbour']);
        }
        if(!empty($servicesArray['namedpersononly']))
        {
            $this->setServiceNamedPersonOnly((bool)$servicesArray['namedpersononly'] === true);
        }
        if(!empty($servicesArray['identcheck']) && (bool)$servicesArray['identcheck'] === true)
        {
            $this->setServiceIdentCheck(
                $servicesArray['identcheck_surname'],
                $servicesArray['identcheck_givenname'],
                $servicesArray['identcheck_dateofbirth'],
                $servicesArray['identcheck_minimumage']
            );
        }
        if(!empty($servicesArray['preferredday']))
        {
            $this->setServicePreferredDay($servicesArray['preferredday']);
        }
        if(!empty($servicesArray['noneighbourdelivery']))
        {
            $this->setServiceNoNeighbourDelivery((bool)$servicesArray['noneighbourdelivery'] === true);
        }
        if(!empty($servicesArray['packagingreturn']))
        {
            $this->setServicePackagingReturn((bool)$servicesArray['packagingreturn'] === true);
        }
        if(!empty($servicesArray['noticeofnondeliverability']))
        {
            $this->setServiceNoticeOfNonDeliverability((bool)$servicesArray['noticeofnondeliverability'] === true);
        }
        if(!empty($servicesArray['preferredtime']))
        {
            $this->setServicePreferredTime($servicesArray['preferredtime']);
        }
        if(!empty($servicesArray['returnimmediately']))
        {
            $this->setServiceReturnImmediately((bool)$servicesArray['preferredtime'] === true);
        }

    }

    /* === RETURNRECEIVER === */

    public function setReturnReceiverName($name1, $name2 = '', $name3 = '')
    {
        $maxLength = 50;
        $name1 = mb_substr($name1, 0, $maxLength);
        $name2 = mb_substr($name2, 0, $maxLength);
        $name3 = mb_substr($name3, 0, $maxLength);
        $this->shipmentData['ShipmentOrder']['Shipment']['ReturnReceiver']['Name']['name1'] = $name1;
        $this->shipmentData['ShipmentOrder']['Shipment']['ReturnReceiver']['Name']['name2'] = $name2;
        $this->shipmentData['ShipmentOrder']['Shipment']['ReturnReceiver']['Name']['name3'] = $name3;
    }

    public function setReturnReceiverAddress($streetName, $streetNumber, $addition, $zip, $city, $iso2, $state = '', $country = '')
    {
        $streetName   = mb_substr($streetName,   0, 35);
        $streetNumber = mb_substr($streetNumber, 0,  5);
        $addition     = mb_substr($addition,     0, 35);
        $zip          = mb_substr($zip,          0, 10);
        $city         = mb_substr($city,         0, 35);
        $iso2         = mb_substr($iso2,         0,  2);
        $state        = mb_substr($state,        0, 30);
        $country      = mb_substr($country,      0, 30);
        $this->shipmentData['ShipmentOrder']['Shipment']['ReturnReceiver']['Address'] = [
            'streetName'             => $streetName,
            'streetNumber'           => $streetNumber,
            'addressAddition'        => $addressAddition,
            'dispatchingInformation' => $addressAddition,
            'zip'                    => $zip,
            'city'                   => $city,
            'Origin'                 => [
                'country'        => $country,
                'countryISOCode' => $iso2,
                'state'          => $state,
            ],
        ];
    }

    public function setReturnReceiverCommunication($phone = '', $email = '', $contactPerson = '')
    {
        $phone         = mb_substr($phone,         0, 20);
        $email         = mb_substr($email,         0, 50);
        $contactPerson = mb_substr($contactPerson, 0, 50);
        $this->shipmentData['ShipmentOrder']['Shipment']['ReturnReceiver']['Communication'] = [
            'phone'         => $phone,
            'email'         => $email,
            'contactPerson' => $contactPerson,
        ];
    }

    /* === SHIPPER === */

    public function setShipperName($name1, $name2 = '', $name3 = '')
    {
        $maxLength = 50;
        $name1 = mb_substr($name1, 0, $maxLength);
        $name2 = mb_substr($name2, 0, $maxLength);
        $name3 = mb_substr($name3, 0, $maxLength);
        $this->shipmentData['ShipmentOrder']['Shipment']['Shipper']['Name']['name1'] = $name1;
        $this->shipmentData['ShipmentOrder']['Shipment']['Shipper']['Name']['name2'] = $name2;
        $this->shipmentData['ShipmentOrder']['Shipment']['Shipper']['Name']['name3'] = $name3;
    }

    public function setShipperAddress($streetName, $streetNumber, $addition, $zip, $city, $iso2, $state = '', $country = '')
    {
        $streetName   = mb_substr($streetName,   0, 35);
        $streetNumber = mb_substr($streetNumber, 0,  5);
        $addition     = mb_substr($addition,     0, 35);
        $zip          = mb_substr($zip,          0, 10);
        $city         = mb_substr($city,         0, 35);
        $iso2         = mb_substr($iso2,         0,  2);
        $state        = mb_substr($state,        0, 30);
        $country      = mb_substr($country,      0, 30);
        $this->shipmentData['ShipmentOrder']['Shipment']['Shipper']['Address'] = [
            'streetName'             => $streetName,
            'streetNumber'           => $streetNumber,
            'addressAddition'        => $addressAddition,
            'dispatchingInformation' => $addressAddition,
            'zip'                    => $zip,
            'city'                   => $city,
            'Origin'                 => [
                'country'        => $country,
                'countryISOCode' => $iso2,
                'state'          => $state,
            ],
        ];
    }

    public function setShipperCommunication($phone = '', $email = '', $contactPerson = '')
    {
        $phone         = mb_substr($phone,         0, 20);
        $email         = mb_substr($email,         0, 50);
        $contactPerson = mb_substr($contactPerson, 0, 50);
        $this->shipmentData['ShipmentOrder']['Shipment']['Shipper']['Communication'] = [
            'phone'         => $phone,
            'email'         => $email,
            'contactPerson' => $contactPerson,
        ];
    }

    public function setReceiverName($name1)
    {
        $name1 = mb_substr($name1, 0, 50);
        $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['name1'] = $name1;
    }

    public function setReceiverCommunication($phone = '', $email = '', $contactPerson = '')
    {
        $phone         = mb_substr($phone,         0, 20);
        $email         = mb_substr($email,         0, 50);
        $contactPerson = mb_substr($contactPerson, 0, 50);
        $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Communication'] = [
            'phone'         => $phone,
            'email'         => $email,
            'contactPerson' => $contactPerson,
        ];
    }

    public function setReceiverAddress($streetName, $streetNumber, $addition, $zip, $city, $iso2, $state = '', $country = '')
    {
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Packstation']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Postfiliale']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['ParcelShop']);
        $streetName   = mb_substr($streetName,   0, 35);
        $streetNumber = mb_substr($streetNumber, 0,  5);
        $addition     = mb_substr($addition,     0, 35);
        $zip          = mb_substr($zip,          0, 10);
        $city         = mb_substr($city,         0, 35);
        $iso2         = mb_substr($iso2,         0,  2);
        $state        = mb_substr($state,        0, 30);
        $country      = mb_substr($country,      0, 30);
        $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address'] = [
            'streetName'             => $streetName,
            'streetNumber'           => $streetNumber,
            'addressAddition'        => $addition,
            'dispatchingInformation' => $addition,
            'zip'                    => $zip,
            'city'                   => $city,
            'Origin'                 => [
                'country'        => $country,
                'countryISOCode' => $iso2,
                'state'          => $state,
            ],
        ];
    }

    public function setReceiverAdditionalNames($name2, $name3)
    {
        $name2 = mb_substr($name2, 0, 50);
        $name3 = mb_substr($name3, 0, 50);
        if(is_array($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address']))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address']['name2'] = $name2;
            $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address']['name3'] = $name3;
        }
    }

    public function setReceiverPackstation($packstationNumber, $zip, $city, $iso2, $postNumber = '', $country = '', $state = '')
    {
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Postfiliale']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['ParcelShop']);
        $packstationNumber = sprintf('%03d', (int)$packstationNumber);
        $postNumber        = empty($postNumber) ? '' : (int)$postNumber;
        $zip               = mb_substr($zip,          0, 10);
        $city              = mb_substr($city,         0, 35);
        $iso2              = mb_substr($iso2,         0,  2);
        $state             = mb_substr($state,        0, 30);
        $country           = mb_substr($country,      0, 30);
        $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Packstation'] = [
            'postNumber'        => $postNumber,
            'packstationNumber' => $packstationNumber,
            'zip'               => $zip,
            'city'              => $city,
            'Origin'            => [
                'country'        => $country,
                'countryISOCode' => $iso2,
                'state'          => $state
            ],
        ];
    }

    public function setReceiverPostfiliale($postfilialNumber, $zip, $city, $iso2, $postNumber, $country = '', $state = '')
    {
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Packstation']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['ParcelShop']);
        $postfilialNumber  = sprintf('%03d', (int)$postfilialNumber);
        $postNumber        = (int)$postNumber;
        $zip               = mb_substr($zip,          0, 10);
        $city              = mb_substr($city,         0, 35);
        $iso2              = mb_substr($iso2,         0,  2);
        $state             = mb_substr($state,        0, 30);
        $country           = mb_substr($country,      0, 30);
        $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Postfiliale'] = [
            'postNumber'        => $postNumber,
            'postfilialNumber'  => $postfilialNumber,
            'zip'               => $zip,
            'city'              => $city,
            'Origin'            => [
                'country'        => $country,
                'countryISOCode' => $iso2,
                'state'          => $state
            ],
        ];

    }

    public function setReceiverParcelShop($parcelShopNumber, $zip, $city, $iso2, $streetName = '', $streetNumber = '', $country = '', $state = '')
    {
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Address']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Packstation']);
        unset($this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['Postfiliale']);
        $parcelShopNumber = mb_substr($parcelShopNumber, 0,  3);
        $zip              = mb_substr($zip,              0, 10);
        $city             = mb_substr($city,             0, 35);
        $iso2             = mb_substr($iso2,             0,  2);
        $streetName       = mb_substr($streetName,       0, 35);
        $streetNumber     = mb_substr($streetNumber,     0,  5);
        $country          = mb_substr($country,          0, 30);
        $state            = mb_substr($state,            0, 30);
        $this->shipmentData['ShipmentOrder']['Shipment']['Receiver']['ParcelShop'] = [
            'parcelShopNumber' => $parcelShopNumber,
            'streetName'       => $streetName,
            'streetNumber'     => $streetNumber,
            'zip'              => $zip,
            'city'             => $city,
            'Origin'           => [
                'country'        => $country,
                'countryISOCode' => $iso2,
                'state'          => $state,
            ],
        ];
    }

    public function setExportDocument($exportType, $placeOfCommital, $additionalFee, $invNumber = '', $termsOfTrade = '', $permitNumber = '', $attestationNumber = '', $withElectronicExportNtfctn = null)
    {
        if(!in_array((string)$exportType, ['EU', 'OTHER', 'PRESENT', 'COMMERCIAL_SAMPLE', 'DOCUMENT', 'RETURN_OF_GOODS']))
        {
            throw new GeschaeftskundenversandShipmentInvalidExportTypeException();
        }
        if(!in_array((string)$termsOfTrade, ['DDP', 'DXV', 'DDU', 'DDX']))
        {
            throw new GeschaeftskundenversandShipmentInvalidTermsOfTradeException();
        }
        if($exportType === 'EU')
        {
            $exportType = '';
        }
        $this->shipmentData['ShipmentOrder']['Shipment']['ExportDocument'] = [
            'invoiceNumber'              => mb_substr($invNumber,         0, 35),
            'exportType'                 => $exportType,
            'exportTypeDescription'      => '',
            'termsOfTrade'               => $termsOfTrade,
            'placeOfCommital'            => mb_substr($placeOfCommital,   0, 35),
            'additionalFee'              => number_format((double)$additionalFee, 2, '.', ''),
            'permitNumber'               => mb_substr($permitNumber,      0, 10),
            'attestationNumber'          => mb_substr($attestationNumber, 0, 35),
            'WithElectronicExportNtfctn' => ['_' => '', 'active' => $withElectronicExportNtfctn === true ? '1' : '0'],
            'ExportDocPosition'          => [],
        ];
    }

    public function setExportTypeDescription($exportTypeDescription)
    {
        if(is_array($this->shipmentData['ShipmentOrder']['Shipment']['ExportDocument']))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ExportDocument']['exportTypeDescription'] = mb_substr($exportTypeDescription, 0, 256);
        }
    }

    public function addExportDocPosition($description, $countryCode, $customsTariffNumber, $amount, $netWeightKG, $customsValue)
    {
        if(is_array($this->shipmentData['ShipmentOrder']['Shipment']['ExportDocument']['ExportDocPosition']))
        {
            $this->shipmentData['ShipmentOrder']['Shipment']['ExportDocument']['ExportDocPosition'][] = [
                'description'         => mb_substr($description,         0, 256),
                'countryCodeOrigin'   => $countryCode,
                'customsTariffNumber' => mb_substr($customsTariffNumber, 0,  10),
                'amount'              => (int)$amount,
                'netWeightInKG'       => number_format($netWeightKG,  2, '.', ''),
                'customsValue'        => number_format($customsValue, 2, '.', ''),
            ];
        }
    }

    public function setPrintOnlyIfCodeable($onlyIfCodeable)
    {
        $this->shipmentData['PrintOnlyIfCodeable']['active'] = (bool)$onlyIfCodeable === true ? '1' : '0';
    }

    public function setLabelResponseType($type = 'URL')
    {
        $this->shipmentData['labelResponseType'] = $type === 'B64' ? 'B64' : 'URL';
    }
}
API documentation generated by ApiGen