/* 
 * GK application - OmniPOS Service API
 *
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 *
 * OpenAPI spec version: 5.21.1-b03
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 */

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.ComponentModel.DataAnnotations;
using SwaggerDateConverter = IO.Swagger.Client.SwaggerDateConverter;

namespace IO.Swagger.Model
{
    /// <summary>
    /// BusinessUnitDO &lt;p&gt;A retail store, distribution center or administration center at which the retailer conducts retail operations.&lt;br /&gt;&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO :  IEquatable<ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO>, IValidatableObject
    {
        /// <summary>
        /// &lt;p&gt;The status of business unit. Possible values include the codes for enabled, disabled, scheduled for deletion, deleted.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The status of business unit. Possible values include the codes for enabled, disabled, scheduled for deletion, deleted.&lt;br /&gt;&lt;/p&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum BusinessUnitStatusCodeEnum
        {
            
            /// <summary>
            /// Enum ENABLED for value: ENABLED
            /// </summary>
            [EnumMember(Value = "ENABLED")]
            ENABLED = 1,
            
            /// <summary>
            /// Enum DISABLED for value: DISABLED
            /// </summary>
            [EnumMember(Value = "DISABLED")]
            DISABLED = 2,
            
            /// <summary>
            /// Enum SCHEDULEDFORDELETION for value: SCHEDULED_FOR_DELETION
            /// </summary>
            [EnumMember(Value = "SCHEDULED_FOR_DELETION")]
            SCHEDULEDFORDELETION = 3,
            
            /// <summary>
            /// Enum DELETED for value: DELETED
            /// </summary>
            [EnumMember(Value = "DELETED")]
            DELETED = 4
        }

        /// <summary>
        /// &lt;p&gt;The status of business unit. Possible values include the codes for enabled, disabled, scheduled for deletion, deleted.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The status of business unit. Possible values include the codes for enabled, disabled, scheduled for deletion, deleted.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="businessUnitStatusCode", EmitDefaultValue=false)]
        public BusinessUnitStatusCodeEnum? BusinessUnitStatusCode { get; set; }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO" /> class.
        /// </summary>
        /// <param name="key">&lt;p&gt;Getter for inner key class.&lt;/p&gt; (required).</param>
        /// <param name="externalBusinessUnitID">&lt;p&gt;External identifier for the business unit.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="parentBusinessUnitGroupID">&lt;p&gt;ID of the parent business unit group&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="parentExternalBusinessUnitGroupID">&lt;p&gt;External ID of the parent business unit group&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="businessUnitGroupLevelID">&lt;p&gt;A unique internal identifier for a level within the business unit grouping hierarchy.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="externalBusinessUnitGroupLevelID">&lt;p&gt;Name of the level within the business unit grouping hierarchy (external identifier of level).&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="globalLocationNumber">&lt;p&gt;Global location number&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="vatRegistrationNumber">&lt;p&gt;VAT registration number&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="isoCountryCode">&lt;p&gt;The country code of the store.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="timeZoneCode">&lt;p&gt;SAP time zone code&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="timeZoneLongID">&lt;p&gt;ID of the time zone in the Java format (e.g. &#39;US/Eastern&#39;, &#39;Europe/Prague&#39;)&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="languageID">&lt;p&gt;ISO-Code of the language which is used in the business unit&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="name">&lt;p&gt;The name of the business unit&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="surrogateName">&lt;p&gt;The surrogate name of the business unit&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="gkEffectiveDate">&lt;p&gt;Effective date of the assignment to the GK&lt;br /&gt;&lt;/p&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone).</param>
        /// <param name="regionFlag">&lt;p&gt;Determines the assignment to the RG business unit group hierarchy&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="independentRetailerFlag">&lt;p&gt;Determines the assignment to the SEH business unit group hierarchy&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="ownerOfMultipleStoresParentID">&lt;p&gt;ID of the parent business unit group with the function code &#39;OMS&#39;&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="gkSystemFlag">&lt;p&gt;Determines whether the GK system is installed in the store or not&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="mainCurrencyID">&lt;p&gt;Identifier of the main currency of the retail store.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="exportToGfkFlag">&lt;p&gt;Determines whether this store provides data to the GFK organization&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="size">&lt;p&gt;The size of the retail store. This is usually split by the non-sales and sales areas.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="sellingAreaSize">&lt;p&gt;The size of the selling floor. In a large store this is further split by the sales floor and by the merchandise departments.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="merchandiseHierarchyFunctionCode">&lt;p&gt;Code of the MerchandiseHierarchyFunction which is relevant for that store&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="includesSalesTaxFlag">&lt;p&gt;Indicates if the prices include all applicable sales taxes or not.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="taxNumber">&lt;p&gt;The company&#39;s tax number given by the tax office (this is not the sales tax ID).&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="alternateISOCurrencyCode">&lt;p&gt;The second currency which is e.g. to be shown in the receipt total and to be printed on the receipt (during the time of changing of a local currency to EURO)&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="mainWeighingUnit">&lt;p&gt;The name of the unit which is mainly used for weighing information&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="purchasingOrganization">&lt;p&gt;An organizational unit responsible for procuring materials or services for one or more plants and for negotiating general conditions of purchase with suppliers.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="receiverLocationList">&lt;p&gt;List of receiving locations.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="companyCodeList">&lt;p&gt;List of company codes of the store.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="bankAccountList">&lt;p&gt;List of bank accounts&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="partyID">&lt;p&gt;ID of the party information&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="party">&lt;p&gt;Reference to the party structure&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="contact">&lt;p&gt;List of contacts&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="translationList">&lt;p&gt;List of translations for the business unit.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="packageID">&lt;p&gt;Internal identification of the import package (e.g. IDoc file). The identification is used for monitoring purposes.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="salesOrganizationID">&lt;p&gt;Identifier of an organizational unit responsible for the sale of certain products or services.&lt;br /&gt; The responsibility of a sales organization may include legal liability for products and customer claims.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="distributionChannelTypeCode">&lt;p&gt;Distribution channel is the way in which products or services reach the customer.&lt;br /&gt; Typical examples of distribution channels are wholesale, retail, or direct sales.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="deleteTimestampUTC0">&lt;p&gt;The UTC0 date and time when the business unit was finally deleted&lt;br /&gt;&lt;/p&gt; UTC0 date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSSZ&#39; (with timezone).</param>
        /// <param name="businessUnitStatusCode">&lt;p&gt;The status of business unit. Possible values include the codes for enabled, disabled, scheduled for deletion, deleted.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="latitudeDecimalDegrees">&lt;p&gt;Geo positional co-ordinates of a business unit specifying its latitude using Decimal Degrees system (ISO 6709).&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="longitudeDecimalDegrees">&lt;p&gt;Geo positional co-ordinates of a business unit specifying its longitude using Decimal Degrees system (ISO 6709).&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="tid">&lt;p&gt;Translation identifier - used for the unique identification of translations in the common translation table.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom08">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom10">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom09">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom07">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom05">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom06">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom11">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom12">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom13">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom14">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom15">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom03">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom02">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom04">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom16">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom17">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom18">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom19">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom20">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom21">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom22">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom23">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom24">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom25">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom26">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom27">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom28">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom29">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom30">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom01">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;.</param>
        public ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO(ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDOKey key = default(ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDOKey), string externalBusinessUnitID = default(string), string parentBusinessUnitGroupID = default(string), string parentExternalBusinessUnitGroupID = default(string), string businessUnitGroupLevelID = default(string), string externalBusinessUnitGroupLevelID = default(string), string globalLocationNumber = default(string), string vatRegistrationNumber = default(string), string isoCountryCode = default(string), string timeZoneCode = default(string), string timeZoneLongID = default(string), string languageID = default(string), string name = default(string), string surrogateName = default(string), string gkEffectiveDate = default(string), bool? regionFlag = default(bool?), bool? independentRetailerFlag = default(bool?), string ownerOfMultipleStoresParentID = default(string), bool? gkSystemFlag = default(bool?), string mainCurrencyID = default(string), bool? exportToGfkFlag = default(bool?), double? size = default(double?), double? sellingAreaSize = default(double?), string merchandiseHierarchyFunctionCode = default(string), bool? includesSalesTaxFlag = default(bool?), string taxNumber = default(string), string alternateISOCurrencyCode = default(string), string mainWeighingUnit = default(string), string purchasingOrganization = default(string), List<string> receiverLocationList = default(List<string>), List<string> companyCodeList = default(List<string>), List<ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBankAccount> bankAccountList = default(List<ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBankAccount>), string partyID = default(string), ComGkSoftwareGkrApiServerMdPartyDtoDomPartyDO party = default(ComGkSoftwareGkrApiServerMdPartyDtoDomPartyDO), ComGkSoftwareGkrApiServerMdContactDtoDomContactDO contact = default(ComGkSoftwareGkrApiServerMdContactDtoDomContactDO), List<ComGkSoftwareGkrApiServerCommonTranslationsDtoDomTranslationDO> translationList = default(List<ComGkSoftwareGkrApiServerCommonTranslationsDtoDomTranslationDO>), string packageID = default(string), string salesOrganizationID = default(string), string distributionChannelTypeCode = default(string), DateTime? deleteTimestampUTC0 = default(DateTime?), BusinessUnitStatusCodeEnum? businessUnitStatusCode = default(BusinessUnitStatusCodeEnum?), double? latitudeDecimalDegrees = default(double?), double? longitudeDecimalDegrees = default(double?), string tid = default(string), string xxcustom08 = default(string), string xxcustom10 = default(string), string xxcustom09 = default(string), string xxcustom07 = default(string), string xxcustom05 = default(string), string xxcustom06 = default(string), string xxcustom11 = default(string), string xxcustom12 = default(string), string xxcustom13 = default(string), string xxcustom14 = default(string), string xxcustom15 = default(string), string xxcustom03 = default(string), string xxcustom02 = default(string), string xxcustom04 = default(string), string xxcustom16 = default(string), string xxcustom17 = default(string), string xxcustom18 = default(string), string xxcustom19 = default(string), string xxcustom20 = default(string), string xxcustom21 = default(string), string xxcustom22 = default(string), string xxcustom23 = default(string), string xxcustom24 = default(string), string xxcustom25 = default(string), string xxcustom26 = default(string), string xxcustom27 = default(string), string xxcustom28 = default(string), string xxcustom29 = default(string), string xxcustom30 = default(string), string xxcustom01 = default(string))
        {
            // to ensure "key" is required (not null)
            if (key == null)
            {
                throw new InvalidDataException("key is a required property for ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO and cannot be null");
            }
            else
            {
                this.Key = key;
            }
            this.ExternalBusinessUnitID = externalBusinessUnitID;
            this.ParentBusinessUnitGroupID = parentBusinessUnitGroupID;
            this.ParentExternalBusinessUnitGroupID = parentExternalBusinessUnitGroupID;
            this.BusinessUnitGroupLevelID = businessUnitGroupLevelID;
            this.ExternalBusinessUnitGroupLevelID = externalBusinessUnitGroupLevelID;
            this.GlobalLocationNumber = globalLocationNumber;
            this.VatRegistrationNumber = vatRegistrationNumber;
            this.IsoCountryCode = isoCountryCode;
            this.TimeZoneCode = timeZoneCode;
            this.TimeZoneLongID = timeZoneLongID;
            this.LanguageID = languageID;
            this.Name = name;
            this.SurrogateName = surrogateName;
            this.GkEffectiveDate = gkEffectiveDate;
            this.RegionFlag = regionFlag;
            this.IndependentRetailerFlag = independentRetailerFlag;
            this.OwnerOfMultipleStoresParentID = ownerOfMultipleStoresParentID;
            this.GkSystemFlag = gkSystemFlag;
            this.MainCurrencyID = mainCurrencyID;
            this.ExportToGfkFlag = exportToGfkFlag;
            this.Size = size;
            this.SellingAreaSize = sellingAreaSize;
            this.MerchandiseHierarchyFunctionCode = merchandiseHierarchyFunctionCode;
            this.IncludesSalesTaxFlag = includesSalesTaxFlag;
            this.TaxNumber = taxNumber;
            this.AlternateISOCurrencyCode = alternateISOCurrencyCode;
            this.MainWeighingUnit = mainWeighingUnit;
            this.PurchasingOrganization = purchasingOrganization;
            this.ReceiverLocationList = receiverLocationList;
            this.CompanyCodeList = companyCodeList;
            this.BankAccountList = bankAccountList;
            this.PartyID = partyID;
            this.Party = party;
            this.Contact = contact;
            this.TranslationList = translationList;
            this.PackageID = packageID;
            this.SalesOrganizationID = salesOrganizationID;
            this.DistributionChannelTypeCode = distributionChannelTypeCode;
            this.DeleteTimestampUTC0 = deleteTimestampUTC0;
            this.BusinessUnitStatusCode = businessUnitStatusCode;
            this.LatitudeDecimalDegrees = latitudeDecimalDegrees;
            this.LongitudeDecimalDegrees = longitudeDecimalDegrees;
            this.Tid = tid;
            this.Xxcustom08 = xxcustom08;
            this.Xxcustom10 = xxcustom10;
            this.Xxcustom09 = xxcustom09;
            this.Xxcustom07 = xxcustom07;
            this.Xxcustom05 = xxcustom05;
            this.Xxcustom06 = xxcustom06;
            this.Xxcustom11 = xxcustom11;
            this.Xxcustom12 = xxcustom12;
            this.Xxcustom13 = xxcustom13;
            this.Xxcustom14 = xxcustom14;
            this.Xxcustom15 = xxcustom15;
            this.Xxcustom03 = xxcustom03;
            this.Xxcustom02 = xxcustom02;
            this.Xxcustom04 = xxcustom04;
            this.Xxcustom16 = xxcustom16;
            this.Xxcustom17 = xxcustom17;
            this.Xxcustom18 = xxcustom18;
            this.Xxcustom19 = xxcustom19;
            this.Xxcustom20 = xxcustom20;
            this.Xxcustom21 = xxcustom21;
            this.Xxcustom22 = xxcustom22;
            this.Xxcustom23 = xxcustom23;
            this.Xxcustom24 = xxcustom24;
            this.Xxcustom25 = xxcustom25;
            this.Xxcustom26 = xxcustom26;
            this.Xxcustom27 = xxcustom27;
            this.Xxcustom28 = xxcustom28;
            this.Xxcustom29 = xxcustom29;
            this.Xxcustom30 = xxcustom30;
            this.Xxcustom01 = xxcustom01;
        }
        
        /// <summary>
        /// &lt;p&gt;Getter for inner key class.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Getter for inner key class.&lt;/p&gt;</value>
        [DataMember(Name="key", EmitDefaultValue=false)]
        public ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDOKey Key { get; set; }

        /// <summary>
        /// &lt;p&gt;External identifier for the business unit.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;External identifier for the business unit.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="externalBusinessUnitID", EmitDefaultValue=false)]
        public string ExternalBusinessUnitID { get; set; }

        /// <summary>
        /// &lt;p&gt;ID of the parent business unit group&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;ID of the parent business unit group&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="parentBusinessUnitGroupID", EmitDefaultValue=false)]
        public string ParentBusinessUnitGroupID { get; set; }

        /// <summary>
        /// &lt;p&gt;External ID of the parent business unit group&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;External ID of the parent business unit group&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="parentExternalBusinessUnitGroupID", EmitDefaultValue=false)]
        public string ParentExternalBusinessUnitGroupID { get; set; }

        /// <summary>
        /// &lt;p&gt;A unique internal identifier for a level within the business unit grouping hierarchy.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;A unique internal identifier for a level within the business unit grouping hierarchy.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="businessUnitGroupLevelID", EmitDefaultValue=false)]
        public string BusinessUnitGroupLevelID { get; set; }

        /// <summary>
        /// &lt;p&gt;Name of the level within the business unit grouping hierarchy (external identifier of level).&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Name of the level within the business unit grouping hierarchy (external identifier of level).&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="externalBusinessUnitGroupLevelID", EmitDefaultValue=false)]
        public string ExternalBusinessUnitGroupLevelID { get; set; }

        /// <summary>
        /// &lt;p&gt;Global location number&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Global location number&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="globalLocationNumber", EmitDefaultValue=false)]
        public string GlobalLocationNumber { get; set; }

        /// <summary>
        /// &lt;p&gt;VAT registration number&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;VAT registration number&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="vatRegistrationNumber", EmitDefaultValue=false)]
        public string VatRegistrationNumber { get; set; }

        /// <summary>
        /// &lt;p&gt;The country code of the store.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The country code of the store.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="isoCountryCode", EmitDefaultValue=false)]
        public string IsoCountryCode { get; set; }

        /// <summary>
        /// &lt;p&gt;SAP time zone code&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;SAP time zone code&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="timeZoneCode", EmitDefaultValue=false)]
        public string TimeZoneCode { get; set; }

        /// <summary>
        /// &lt;p&gt;ID of the time zone in the Java format (e.g. &#39;US/Eastern&#39;, &#39;Europe/Prague&#39;)&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;ID of the time zone in the Java format (e.g. &#39;US/Eastern&#39;, &#39;Europe/Prague&#39;)&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="timeZoneLongID", EmitDefaultValue=false)]
        public string TimeZoneLongID { get; set; }

        /// <summary>
        /// &lt;p&gt;ISO-Code of the language which is used in the business unit&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;ISO-Code of the language which is used in the business unit&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="languageID", EmitDefaultValue=false)]
        public string LanguageID { get; set; }

        /// <summary>
        /// &lt;p&gt;The name of the business unit&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The name of the business unit&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="name", EmitDefaultValue=false)]
        public string Name { get; set; }

        /// <summary>
        /// &lt;p&gt;The surrogate name of the business unit&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The surrogate name of the business unit&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="surrogateName", EmitDefaultValue=false)]
        public string SurrogateName { get; set; }

        /// <summary>
        /// &lt;p&gt;Effective date of the assignment to the GK&lt;br /&gt;&lt;/p&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>&lt;p&gt;Effective date of the assignment to the GK&lt;br /&gt;&lt;/p&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        [DataMember(Name="gkEffectiveDate", EmitDefaultValue=false)]
        public string GkEffectiveDate { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines the assignment to the RG business unit group hierarchy&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines the assignment to the RG business unit group hierarchy&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="regionFlag", EmitDefaultValue=false)]
        public bool? RegionFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines the assignment to the SEH business unit group hierarchy&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines the assignment to the SEH business unit group hierarchy&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="independentRetailerFlag", EmitDefaultValue=false)]
        public bool? IndependentRetailerFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;ID of the parent business unit group with the function code &#39;OMS&#39;&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;ID of the parent business unit group with the function code &#39;OMS&#39;&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="ownerOfMultipleStoresParentID", EmitDefaultValue=false)]
        public string OwnerOfMultipleStoresParentID { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines whether the GK system is installed in the store or not&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines whether the GK system is installed in the store or not&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="gkSystemFlag", EmitDefaultValue=false)]
        public bool? GkSystemFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;Identifier of the main currency of the retail store.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Identifier of the main currency of the retail store.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="mainCurrencyID", EmitDefaultValue=false)]
        public string MainCurrencyID { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines whether this store provides data to the GFK organization&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines whether this store provides data to the GFK organization&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="exportToGfkFlag", EmitDefaultValue=false)]
        public bool? ExportToGfkFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;The size of the retail store. This is usually split by the non-sales and sales areas.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The size of the retail store. This is usually split by the non-sales and sales areas.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="size", EmitDefaultValue=false)]
        public double? Size { get; set; }

        /// <summary>
        /// &lt;p&gt;The size of the selling floor. In a large store this is further split by the sales floor and by the merchandise departments.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The size of the selling floor. In a large store this is further split by the sales floor and by the merchandise departments.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="sellingAreaSize", EmitDefaultValue=false)]
        public double? SellingAreaSize { get; set; }

        /// <summary>
        /// &lt;p&gt;Code of the MerchandiseHierarchyFunction which is relevant for that store&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Code of the MerchandiseHierarchyFunction which is relevant for that store&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="merchandiseHierarchyFunctionCode", EmitDefaultValue=false)]
        public string MerchandiseHierarchyFunctionCode { get; set; }

        /// <summary>
        /// &lt;p&gt;Indicates if the prices include all applicable sales taxes or not.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Indicates if the prices include all applicable sales taxes or not.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="includesSalesTaxFlag", EmitDefaultValue=false)]
        public bool? IncludesSalesTaxFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;The company&#39;s tax number given by the tax office (this is not the sales tax ID).&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The company&#39;s tax number given by the tax office (this is not the sales tax ID).&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="taxNumber", EmitDefaultValue=false)]
        public string TaxNumber { get; set; }

        /// <summary>
        /// &lt;p&gt;The second currency which is e.g. to be shown in the receipt total and to be printed on the receipt (during the time of changing of a local currency to EURO)&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The second currency which is e.g. to be shown in the receipt total and to be printed on the receipt (during the time of changing of a local currency to EURO)&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="alternateISOCurrencyCode", EmitDefaultValue=false)]
        public string AlternateISOCurrencyCode { get; set; }

        /// <summary>
        /// &lt;p&gt;The name of the unit which is mainly used for weighing information&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The name of the unit which is mainly used for weighing information&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="mainWeighingUnit", EmitDefaultValue=false)]
        public string MainWeighingUnit { get; set; }

        /// <summary>
        /// &lt;p&gt;An organizational unit responsible for procuring materials or services for one or more plants and for negotiating general conditions of purchase with suppliers.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;An organizational unit responsible for procuring materials or services for one or more plants and for negotiating general conditions of purchase with suppliers.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="purchasingOrganization", EmitDefaultValue=false)]
        public string PurchasingOrganization { get; set; }

        /// <summary>
        /// &lt;p&gt;List of receiving locations.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of receiving locations.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="receiverLocationList", EmitDefaultValue=false)]
        public List<string> ReceiverLocationList { get; set; }

        /// <summary>
        /// &lt;p&gt;List of company codes of the store.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of company codes of the store.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="companyCodeList", EmitDefaultValue=false)]
        public List<string> CompanyCodeList { get; set; }

        /// <summary>
        /// &lt;p&gt;List of bank accounts&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of bank accounts&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="bankAccountList", EmitDefaultValue=false)]
        public List<ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBankAccount> BankAccountList { get; set; }

        /// <summary>
        /// &lt;p&gt;ID of the party information&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;ID of the party information&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="partyID", EmitDefaultValue=false)]
        public string PartyID { get; set; }

        /// <summary>
        /// &lt;p&gt;Reference to the party structure&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Reference to the party structure&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="party", EmitDefaultValue=false)]
        public ComGkSoftwareGkrApiServerMdPartyDtoDomPartyDO Party { get; set; }

        /// <summary>
        /// &lt;p&gt;List of contacts&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of contacts&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="contact", EmitDefaultValue=false)]
        public ComGkSoftwareGkrApiServerMdContactDtoDomContactDO Contact { get; set; }

        /// <summary>
        /// &lt;p&gt;List of translations for the business unit.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of translations for the business unit.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="translationList", EmitDefaultValue=false)]
        public List<ComGkSoftwareGkrApiServerCommonTranslationsDtoDomTranslationDO> TranslationList { get; set; }

        /// <summary>
        /// &lt;p&gt;Internal identification of the import package (e.g. IDoc file). The identification is used for monitoring purposes.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Internal identification of the import package (e.g. IDoc file). The identification is used for monitoring purposes.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="packageID", EmitDefaultValue=false)]
        public string PackageID { get; set; }

        /// <summary>
        /// &lt;p&gt;Identifier of an organizational unit responsible for the sale of certain products or services.&lt;br /&gt; The responsibility of a sales organization may include legal liability for products and customer claims.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Identifier of an organizational unit responsible for the sale of certain products or services.&lt;br /&gt; The responsibility of a sales organization may include legal liability for products and customer claims.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="salesOrganizationID", EmitDefaultValue=false)]
        public string SalesOrganizationID { get; set; }

        /// <summary>
        /// &lt;p&gt;Distribution channel is the way in which products or services reach the customer.&lt;br /&gt; Typical examples of distribution channels are wholesale, retail, or direct sales.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Distribution channel is the way in which products or services reach the customer.&lt;br /&gt; Typical examples of distribution channels are wholesale, retail, or direct sales.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="distributionChannelTypeCode", EmitDefaultValue=false)]
        public string DistributionChannelTypeCode { get; set; }

        /// <summary>
        /// &lt;p&gt;The UTC0 date and time when the business unit was finally deleted&lt;br /&gt;&lt;/p&gt; UTC0 date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSSZ&#39; (with timezone)
        /// </summary>
        /// <value>&lt;p&gt;The UTC0 date and time when the business unit was finally deleted&lt;br /&gt;&lt;/p&gt; UTC0 date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSSZ&#39; (with timezone)</value>
        [DataMember(Name="deleteTimestampUTC0", EmitDefaultValue=false)]
        public DateTime? DeleteTimestampUTC0 { get; set; }


        /// <summary>
        /// &lt;p&gt;Geo positional co-ordinates of a business unit specifying its latitude using Decimal Degrees system (ISO 6709).&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Geo positional co-ordinates of a business unit specifying its latitude using Decimal Degrees system (ISO 6709).&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="latitudeDecimalDegrees", EmitDefaultValue=false)]
        public double? LatitudeDecimalDegrees { get; set; }

        /// <summary>
        /// &lt;p&gt;Geo positional co-ordinates of a business unit specifying its longitude using Decimal Degrees system (ISO 6709).&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Geo positional co-ordinates of a business unit specifying its longitude using Decimal Degrees system (ISO 6709).&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="longitudeDecimalDegrees", EmitDefaultValue=false)]
        public double? LongitudeDecimalDegrees { get; set; }

        /// <summary>
        /// &lt;p&gt;Translation identifier - used for the unique identification of translations in the common translation table.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Translation identifier - used for the unique identification of translations in the common translation table.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="tid", EmitDefaultValue=false)]
        public string Tid { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom08", EmitDefaultValue=false)]
        public string Xxcustom08 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom10", EmitDefaultValue=false)]
        public string Xxcustom10 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom09", EmitDefaultValue=false)]
        public string Xxcustom09 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom07", EmitDefaultValue=false)]
        public string Xxcustom07 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom05", EmitDefaultValue=false)]
        public string Xxcustom05 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom06", EmitDefaultValue=false)]
        public string Xxcustom06 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom11", EmitDefaultValue=false)]
        public string Xxcustom11 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom12", EmitDefaultValue=false)]
        public string Xxcustom12 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom13", EmitDefaultValue=false)]
        public string Xxcustom13 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom14", EmitDefaultValue=false)]
        public string Xxcustom14 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom15", EmitDefaultValue=false)]
        public string Xxcustom15 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom03", EmitDefaultValue=false)]
        public string Xxcustom03 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom02", EmitDefaultValue=false)]
        public string Xxcustom02 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom04", EmitDefaultValue=false)]
        public string Xxcustom04 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom16", EmitDefaultValue=false)]
        public string Xxcustom16 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom17", EmitDefaultValue=false)]
        public string Xxcustom17 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom18", EmitDefaultValue=false)]
        public string Xxcustom18 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom19", EmitDefaultValue=false)]
        public string Xxcustom19 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom20", EmitDefaultValue=false)]
        public string Xxcustom20 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom21", EmitDefaultValue=false)]
        public string Xxcustom21 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom22", EmitDefaultValue=false)]
        public string Xxcustom22 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom23", EmitDefaultValue=false)]
        public string Xxcustom23 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom24", EmitDefaultValue=false)]
        public string Xxcustom24 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom25", EmitDefaultValue=false)]
        public string Xxcustom25 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom26", EmitDefaultValue=false)]
        public string Xxcustom26 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom27", EmitDefaultValue=false)]
        public string Xxcustom27 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom28", EmitDefaultValue=false)]
        public string Xxcustom28 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom29", EmitDefaultValue=false)]
        public string Xxcustom29 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom30", EmitDefaultValue=false)]
        public string Xxcustom30 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom01", EmitDefaultValue=false)]
        public string Xxcustom01 { get; set; }

        /// <summary>
        /// Returns the string presentation of the object
        /// </summary>
        /// <returns>String presentation of the object</returns>
        public override string ToString()
        {
            var sb = new StringBuilder();
            sb.Append("class ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO {\n");
            sb.Append("  Key: ").Append(Key).Append("\n");
            sb.Append("  ExternalBusinessUnitID: ").Append(ExternalBusinessUnitID).Append("\n");
            sb.Append("  ParentBusinessUnitGroupID: ").Append(ParentBusinessUnitGroupID).Append("\n");
            sb.Append("  ParentExternalBusinessUnitGroupID: ").Append(ParentExternalBusinessUnitGroupID).Append("\n");
            sb.Append("  BusinessUnitGroupLevelID: ").Append(BusinessUnitGroupLevelID).Append("\n");
            sb.Append("  ExternalBusinessUnitGroupLevelID: ").Append(ExternalBusinessUnitGroupLevelID).Append("\n");
            sb.Append("  GlobalLocationNumber: ").Append(GlobalLocationNumber).Append("\n");
            sb.Append("  VatRegistrationNumber: ").Append(VatRegistrationNumber).Append("\n");
            sb.Append("  IsoCountryCode: ").Append(IsoCountryCode).Append("\n");
            sb.Append("  TimeZoneCode: ").Append(TimeZoneCode).Append("\n");
            sb.Append("  TimeZoneLongID: ").Append(TimeZoneLongID).Append("\n");
            sb.Append("  LanguageID: ").Append(LanguageID).Append("\n");
            sb.Append("  Name: ").Append(Name).Append("\n");
            sb.Append("  SurrogateName: ").Append(SurrogateName).Append("\n");
            sb.Append("  GkEffectiveDate: ").Append(GkEffectiveDate).Append("\n");
            sb.Append("  RegionFlag: ").Append(RegionFlag).Append("\n");
            sb.Append("  IndependentRetailerFlag: ").Append(IndependentRetailerFlag).Append("\n");
            sb.Append("  OwnerOfMultipleStoresParentID: ").Append(OwnerOfMultipleStoresParentID).Append("\n");
            sb.Append("  GkSystemFlag: ").Append(GkSystemFlag).Append("\n");
            sb.Append("  MainCurrencyID: ").Append(MainCurrencyID).Append("\n");
            sb.Append("  ExportToGfkFlag: ").Append(ExportToGfkFlag).Append("\n");
            sb.Append("  Size: ").Append(Size).Append("\n");
            sb.Append("  SellingAreaSize: ").Append(SellingAreaSize).Append("\n");
            sb.Append("  MerchandiseHierarchyFunctionCode: ").Append(MerchandiseHierarchyFunctionCode).Append("\n");
            sb.Append("  IncludesSalesTaxFlag: ").Append(IncludesSalesTaxFlag).Append("\n");
            sb.Append("  TaxNumber: ").Append(TaxNumber).Append("\n");
            sb.Append("  AlternateISOCurrencyCode: ").Append(AlternateISOCurrencyCode).Append("\n");
            sb.Append("  MainWeighingUnit: ").Append(MainWeighingUnit).Append("\n");
            sb.Append("  PurchasingOrganization: ").Append(PurchasingOrganization).Append("\n");
            sb.Append("  ReceiverLocationList: ").Append(ReceiverLocationList).Append("\n");
            sb.Append("  CompanyCodeList: ").Append(CompanyCodeList).Append("\n");
            sb.Append("  BankAccountList: ").Append(BankAccountList).Append("\n");
            sb.Append("  PartyID: ").Append(PartyID).Append("\n");
            sb.Append("  Party: ").Append(Party).Append("\n");
            sb.Append("  Contact: ").Append(Contact).Append("\n");
            sb.Append("  TranslationList: ").Append(TranslationList).Append("\n");
            sb.Append("  PackageID: ").Append(PackageID).Append("\n");
            sb.Append("  SalesOrganizationID: ").Append(SalesOrganizationID).Append("\n");
            sb.Append("  DistributionChannelTypeCode: ").Append(DistributionChannelTypeCode).Append("\n");
            sb.Append("  DeleteTimestampUTC0: ").Append(DeleteTimestampUTC0).Append("\n");
            sb.Append("  BusinessUnitStatusCode: ").Append(BusinessUnitStatusCode).Append("\n");
            sb.Append("  LatitudeDecimalDegrees: ").Append(LatitudeDecimalDegrees).Append("\n");
            sb.Append("  LongitudeDecimalDegrees: ").Append(LongitudeDecimalDegrees).Append("\n");
            sb.Append("  Tid: ").Append(Tid).Append("\n");
            sb.Append("  Xxcustom08: ").Append(Xxcustom08).Append("\n");
            sb.Append("  Xxcustom10: ").Append(Xxcustom10).Append("\n");
            sb.Append("  Xxcustom09: ").Append(Xxcustom09).Append("\n");
            sb.Append("  Xxcustom07: ").Append(Xxcustom07).Append("\n");
            sb.Append("  Xxcustom05: ").Append(Xxcustom05).Append("\n");
            sb.Append("  Xxcustom06: ").Append(Xxcustom06).Append("\n");
            sb.Append("  Xxcustom11: ").Append(Xxcustom11).Append("\n");
            sb.Append("  Xxcustom12: ").Append(Xxcustom12).Append("\n");
            sb.Append("  Xxcustom13: ").Append(Xxcustom13).Append("\n");
            sb.Append("  Xxcustom14: ").Append(Xxcustom14).Append("\n");
            sb.Append("  Xxcustom15: ").Append(Xxcustom15).Append("\n");
            sb.Append("  Xxcustom03: ").Append(Xxcustom03).Append("\n");
            sb.Append("  Xxcustom02: ").Append(Xxcustom02).Append("\n");
            sb.Append("  Xxcustom04: ").Append(Xxcustom04).Append("\n");
            sb.Append("  Xxcustom16: ").Append(Xxcustom16).Append("\n");
            sb.Append("  Xxcustom17: ").Append(Xxcustom17).Append("\n");
            sb.Append("  Xxcustom18: ").Append(Xxcustom18).Append("\n");
            sb.Append("  Xxcustom19: ").Append(Xxcustom19).Append("\n");
            sb.Append("  Xxcustom20: ").Append(Xxcustom20).Append("\n");
            sb.Append("  Xxcustom21: ").Append(Xxcustom21).Append("\n");
            sb.Append("  Xxcustom22: ").Append(Xxcustom22).Append("\n");
            sb.Append("  Xxcustom23: ").Append(Xxcustom23).Append("\n");
            sb.Append("  Xxcustom24: ").Append(Xxcustom24).Append("\n");
            sb.Append("  Xxcustom25: ").Append(Xxcustom25).Append("\n");
            sb.Append("  Xxcustom26: ").Append(Xxcustom26).Append("\n");
            sb.Append("  Xxcustom27: ").Append(Xxcustom27).Append("\n");
            sb.Append("  Xxcustom28: ").Append(Xxcustom28).Append("\n");
            sb.Append("  Xxcustom29: ").Append(Xxcustom29).Append("\n");
            sb.Append("  Xxcustom30: ").Append(Xxcustom30).Append("\n");
            sb.Append("  Xxcustom01: ").Append(Xxcustom01).Append("\n");
            sb.Append("}\n");
            return sb.ToString();
        }
  
        /// <summary>
        /// Returns the JSON string presentation of the object
        /// </summary>
        /// <returns>JSON string presentation of the object</returns>
        public virtual string ToJson()
        {
            return JsonConvert.SerializeObject(this, Formatting.Indented);
        }

        /// <summary>
        /// Returns true if objects are equal
        /// </summary>
        /// <param name="input">Object to be compared</param>
        /// <returns>Boolean</returns>
        public override bool Equals(object input)
        {
            return this.Equals(input as ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO);
        }

        /// <summary>
        /// Returns true if ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO instances are equal
        /// </summary>
        /// <param name="input">Instance of ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(ComGkSoftwareGkrApiServerMdBusinessUnitDtoDomBusinessUnitDO input)
        {
            if (input == null)
                return false;

            return 
                (
                    this.Key == input.Key ||
                    (this.Key != null &&
                    this.Key.Equals(input.Key))
                ) && 
                (
                    this.ExternalBusinessUnitID == input.ExternalBusinessUnitID ||
                    (this.ExternalBusinessUnitID != null &&
                    this.ExternalBusinessUnitID.Equals(input.ExternalBusinessUnitID))
                ) && 
                (
                    this.ParentBusinessUnitGroupID == input.ParentBusinessUnitGroupID ||
                    (this.ParentBusinessUnitGroupID != null &&
                    this.ParentBusinessUnitGroupID.Equals(input.ParentBusinessUnitGroupID))
                ) && 
                (
                    this.ParentExternalBusinessUnitGroupID == input.ParentExternalBusinessUnitGroupID ||
                    (this.ParentExternalBusinessUnitGroupID != null &&
                    this.ParentExternalBusinessUnitGroupID.Equals(input.ParentExternalBusinessUnitGroupID))
                ) && 
                (
                    this.BusinessUnitGroupLevelID == input.BusinessUnitGroupLevelID ||
                    (this.BusinessUnitGroupLevelID != null &&
                    this.BusinessUnitGroupLevelID.Equals(input.BusinessUnitGroupLevelID))
                ) && 
                (
                    this.ExternalBusinessUnitGroupLevelID == input.ExternalBusinessUnitGroupLevelID ||
                    (this.ExternalBusinessUnitGroupLevelID != null &&
                    this.ExternalBusinessUnitGroupLevelID.Equals(input.ExternalBusinessUnitGroupLevelID))
                ) && 
                (
                    this.GlobalLocationNumber == input.GlobalLocationNumber ||
                    (this.GlobalLocationNumber != null &&
                    this.GlobalLocationNumber.Equals(input.GlobalLocationNumber))
                ) && 
                (
                    this.VatRegistrationNumber == input.VatRegistrationNumber ||
                    (this.VatRegistrationNumber != null &&
                    this.VatRegistrationNumber.Equals(input.VatRegistrationNumber))
                ) && 
                (
                    this.IsoCountryCode == input.IsoCountryCode ||
                    (this.IsoCountryCode != null &&
                    this.IsoCountryCode.Equals(input.IsoCountryCode))
                ) && 
                (
                    this.TimeZoneCode == input.TimeZoneCode ||
                    (this.TimeZoneCode != null &&
                    this.TimeZoneCode.Equals(input.TimeZoneCode))
                ) && 
                (
                    this.TimeZoneLongID == input.TimeZoneLongID ||
                    (this.TimeZoneLongID != null &&
                    this.TimeZoneLongID.Equals(input.TimeZoneLongID))
                ) && 
                (
                    this.LanguageID == input.LanguageID ||
                    (this.LanguageID != null &&
                    this.LanguageID.Equals(input.LanguageID))
                ) && 
                (
                    this.Name == input.Name ||
                    (this.Name != null &&
                    this.Name.Equals(input.Name))
                ) && 
                (
                    this.SurrogateName == input.SurrogateName ||
                    (this.SurrogateName != null &&
                    this.SurrogateName.Equals(input.SurrogateName))
                ) && 
                (
                    this.GkEffectiveDate == input.GkEffectiveDate ||
                    (this.GkEffectiveDate != null &&
                    this.GkEffectiveDate.Equals(input.GkEffectiveDate))
                ) && 
                (
                    this.RegionFlag == input.RegionFlag ||
                    (this.RegionFlag != null &&
                    this.RegionFlag.Equals(input.RegionFlag))
                ) && 
                (
                    this.IndependentRetailerFlag == input.IndependentRetailerFlag ||
                    (this.IndependentRetailerFlag != null &&
                    this.IndependentRetailerFlag.Equals(input.IndependentRetailerFlag))
                ) && 
                (
                    this.OwnerOfMultipleStoresParentID == input.OwnerOfMultipleStoresParentID ||
                    (this.OwnerOfMultipleStoresParentID != null &&
                    this.OwnerOfMultipleStoresParentID.Equals(input.OwnerOfMultipleStoresParentID))
                ) && 
                (
                    this.GkSystemFlag == input.GkSystemFlag ||
                    (this.GkSystemFlag != null &&
                    this.GkSystemFlag.Equals(input.GkSystemFlag))
                ) && 
                (
                    this.MainCurrencyID == input.MainCurrencyID ||
                    (this.MainCurrencyID != null &&
                    this.MainCurrencyID.Equals(input.MainCurrencyID))
                ) && 
                (
                    this.ExportToGfkFlag == input.ExportToGfkFlag ||
                    (this.ExportToGfkFlag != null &&
                    this.ExportToGfkFlag.Equals(input.ExportToGfkFlag))
                ) && 
                (
                    this.Size == input.Size ||
                    (this.Size != null &&
                    this.Size.Equals(input.Size))
                ) && 
                (
                    this.SellingAreaSize == input.SellingAreaSize ||
                    (this.SellingAreaSize != null &&
                    this.SellingAreaSize.Equals(input.SellingAreaSize))
                ) && 
                (
                    this.MerchandiseHierarchyFunctionCode == input.MerchandiseHierarchyFunctionCode ||
                    (this.MerchandiseHierarchyFunctionCode != null &&
                    this.MerchandiseHierarchyFunctionCode.Equals(input.MerchandiseHierarchyFunctionCode))
                ) && 
                (
                    this.IncludesSalesTaxFlag == input.IncludesSalesTaxFlag ||
                    (this.IncludesSalesTaxFlag != null &&
                    this.IncludesSalesTaxFlag.Equals(input.IncludesSalesTaxFlag))
                ) && 
                (
                    this.TaxNumber == input.TaxNumber ||
                    (this.TaxNumber != null &&
                    this.TaxNumber.Equals(input.TaxNumber))
                ) && 
                (
                    this.AlternateISOCurrencyCode == input.AlternateISOCurrencyCode ||
                    (this.AlternateISOCurrencyCode != null &&
                    this.AlternateISOCurrencyCode.Equals(input.AlternateISOCurrencyCode))
                ) && 
                (
                    this.MainWeighingUnit == input.MainWeighingUnit ||
                    (this.MainWeighingUnit != null &&
                    this.MainWeighingUnit.Equals(input.MainWeighingUnit))
                ) && 
                (
                    this.PurchasingOrganization == input.PurchasingOrganization ||
                    (this.PurchasingOrganization != null &&
                    this.PurchasingOrganization.Equals(input.PurchasingOrganization))
                ) && 
                (
                    this.ReceiverLocationList == input.ReceiverLocationList ||
                    this.ReceiverLocationList != null &&
                    this.ReceiverLocationList.SequenceEqual(input.ReceiverLocationList)
                ) && 
                (
                    this.CompanyCodeList == input.CompanyCodeList ||
                    this.CompanyCodeList != null &&
                    this.CompanyCodeList.SequenceEqual(input.CompanyCodeList)
                ) && 
                (
                    this.BankAccountList == input.BankAccountList ||
                    this.BankAccountList != null &&
                    this.BankAccountList.SequenceEqual(input.BankAccountList)
                ) && 
                (
                    this.PartyID == input.PartyID ||
                    (this.PartyID != null &&
                    this.PartyID.Equals(input.PartyID))
                ) && 
                (
                    this.Party == input.Party ||
                    (this.Party != null &&
                    this.Party.Equals(input.Party))
                ) && 
                (
                    this.Contact == input.Contact ||
                    (this.Contact != null &&
                    this.Contact.Equals(input.Contact))
                ) && 
                (
                    this.TranslationList == input.TranslationList ||
                    this.TranslationList != null &&
                    this.TranslationList.SequenceEqual(input.TranslationList)
                ) && 
                (
                    this.PackageID == input.PackageID ||
                    (this.PackageID != null &&
                    this.PackageID.Equals(input.PackageID))
                ) && 
                (
                    this.SalesOrganizationID == input.SalesOrganizationID ||
                    (this.SalesOrganizationID != null &&
                    this.SalesOrganizationID.Equals(input.SalesOrganizationID))
                ) && 
                (
                    this.DistributionChannelTypeCode == input.DistributionChannelTypeCode ||
                    (this.DistributionChannelTypeCode != null &&
                    this.DistributionChannelTypeCode.Equals(input.DistributionChannelTypeCode))
                ) && 
                (
                    this.DeleteTimestampUTC0 == input.DeleteTimestampUTC0 ||
                    (this.DeleteTimestampUTC0 != null &&
                    this.DeleteTimestampUTC0.Equals(input.DeleteTimestampUTC0))
                ) && 
                (
                    this.BusinessUnitStatusCode == input.BusinessUnitStatusCode ||
                    (this.BusinessUnitStatusCode != null &&
                    this.BusinessUnitStatusCode.Equals(input.BusinessUnitStatusCode))
                ) && 
                (
                    this.LatitudeDecimalDegrees == input.LatitudeDecimalDegrees ||
                    (this.LatitudeDecimalDegrees != null &&
                    this.LatitudeDecimalDegrees.Equals(input.LatitudeDecimalDegrees))
                ) && 
                (
                    this.LongitudeDecimalDegrees == input.LongitudeDecimalDegrees ||
                    (this.LongitudeDecimalDegrees != null &&
                    this.LongitudeDecimalDegrees.Equals(input.LongitudeDecimalDegrees))
                ) && 
                (
                    this.Tid == input.Tid ||
                    (this.Tid != null &&
                    this.Tid.Equals(input.Tid))
                ) && 
                (
                    this.Xxcustom08 == input.Xxcustom08 ||
                    (this.Xxcustom08 != null &&
                    this.Xxcustom08.Equals(input.Xxcustom08))
                ) && 
                (
                    this.Xxcustom10 == input.Xxcustom10 ||
                    (this.Xxcustom10 != null &&
                    this.Xxcustom10.Equals(input.Xxcustom10))
                ) && 
                (
                    this.Xxcustom09 == input.Xxcustom09 ||
                    (this.Xxcustom09 != null &&
                    this.Xxcustom09.Equals(input.Xxcustom09))
                ) && 
                (
                    this.Xxcustom07 == input.Xxcustom07 ||
                    (this.Xxcustom07 != null &&
                    this.Xxcustom07.Equals(input.Xxcustom07))
                ) && 
                (
                    this.Xxcustom05 == input.Xxcustom05 ||
                    (this.Xxcustom05 != null &&
                    this.Xxcustom05.Equals(input.Xxcustom05))
                ) && 
                (
                    this.Xxcustom06 == input.Xxcustom06 ||
                    (this.Xxcustom06 != null &&
                    this.Xxcustom06.Equals(input.Xxcustom06))
                ) && 
                (
                    this.Xxcustom11 == input.Xxcustom11 ||
                    (this.Xxcustom11 != null &&
                    this.Xxcustom11.Equals(input.Xxcustom11))
                ) && 
                (
                    this.Xxcustom12 == input.Xxcustom12 ||
                    (this.Xxcustom12 != null &&
                    this.Xxcustom12.Equals(input.Xxcustom12))
                ) && 
                (
                    this.Xxcustom13 == input.Xxcustom13 ||
                    (this.Xxcustom13 != null &&
                    this.Xxcustom13.Equals(input.Xxcustom13))
                ) && 
                (
                    this.Xxcustom14 == input.Xxcustom14 ||
                    (this.Xxcustom14 != null &&
                    this.Xxcustom14.Equals(input.Xxcustom14))
                ) && 
                (
                    this.Xxcustom15 == input.Xxcustom15 ||
                    (this.Xxcustom15 != null &&
                    this.Xxcustom15.Equals(input.Xxcustom15))
                ) && 
                (
                    this.Xxcustom03 == input.Xxcustom03 ||
                    (this.Xxcustom03 != null &&
                    this.Xxcustom03.Equals(input.Xxcustom03))
                ) && 
                (
                    this.Xxcustom02 == input.Xxcustom02 ||
                    (this.Xxcustom02 != null &&
                    this.Xxcustom02.Equals(input.Xxcustom02))
                ) && 
                (
                    this.Xxcustom04 == input.Xxcustom04 ||
                    (this.Xxcustom04 != null &&
                    this.Xxcustom04.Equals(input.Xxcustom04))
                ) && 
                (
                    this.Xxcustom16 == input.Xxcustom16 ||
                    (this.Xxcustom16 != null &&
                    this.Xxcustom16.Equals(input.Xxcustom16))
                ) && 
                (
                    this.Xxcustom17 == input.Xxcustom17 ||
                    (this.Xxcustom17 != null &&
                    this.Xxcustom17.Equals(input.Xxcustom17))
                ) && 
                (
                    this.Xxcustom18 == input.Xxcustom18 ||
                    (this.Xxcustom18 != null &&
                    this.Xxcustom18.Equals(input.Xxcustom18))
                ) && 
                (
                    this.Xxcustom19 == input.Xxcustom19 ||
                    (this.Xxcustom19 != null &&
                    this.Xxcustom19.Equals(input.Xxcustom19))
                ) && 
                (
                    this.Xxcustom20 == input.Xxcustom20 ||
                    (this.Xxcustom20 != null &&
                    this.Xxcustom20.Equals(input.Xxcustom20))
                ) && 
                (
                    this.Xxcustom21 == input.Xxcustom21 ||
                    (this.Xxcustom21 != null &&
                    this.Xxcustom21.Equals(input.Xxcustom21))
                ) && 
                (
                    this.Xxcustom22 == input.Xxcustom22 ||
                    (this.Xxcustom22 != null &&
                    this.Xxcustom22.Equals(input.Xxcustom22))
                ) && 
                (
                    this.Xxcustom23 == input.Xxcustom23 ||
                    (this.Xxcustom23 != null &&
                    this.Xxcustom23.Equals(input.Xxcustom23))
                ) && 
                (
                    this.Xxcustom24 == input.Xxcustom24 ||
                    (this.Xxcustom24 != null &&
                    this.Xxcustom24.Equals(input.Xxcustom24))
                ) && 
                (
                    this.Xxcustom25 == input.Xxcustom25 ||
                    (this.Xxcustom25 != null &&
                    this.Xxcustom25.Equals(input.Xxcustom25))
                ) && 
                (
                    this.Xxcustom26 == input.Xxcustom26 ||
                    (this.Xxcustom26 != null &&
                    this.Xxcustom26.Equals(input.Xxcustom26))
                ) && 
                (
                    this.Xxcustom27 == input.Xxcustom27 ||
                    (this.Xxcustom27 != null &&
                    this.Xxcustom27.Equals(input.Xxcustom27))
                ) && 
                (
                    this.Xxcustom28 == input.Xxcustom28 ||
                    (this.Xxcustom28 != null &&
                    this.Xxcustom28.Equals(input.Xxcustom28))
                ) && 
                (
                    this.Xxcustom29 == input.Xxcustom29 ||
                    (this.Xxcustom29 != null &&
                    this.Xxcustom29.Equals(input.Xxcustom29))
                ) && 
                (
                    this.Xxcustom30 == input.Xxcustom30 ||
                    (this.Xxcustom30 != null &&
                    this.Xxcustom30.Equals(input.Xxcustom30))
                ) && 
                (
                    this.Xxcustom01 == input.Xxcustom01 ||
                    (this.Xxcustom01 != null &&
                    this.Xxcustom01.Equals(input.Xxcustom01))
                );
        }

        /// <summary>
        /// Gets the hash code
        /// </summary>
        /// <returns>Hash code</returns>
        public override int GetHashCode()
        {
            unchecked // Overflow is fine, just wrap
            {
                int hashCode = 41;
                if (this.Key != null)
                    hashCode = hashCode * 59 + this.Key.GetHashCode();
                if (this.ExternalBusinessUnitID != null)
                    hashCode = hashCode * 59 + this.ExternalBusinessUnitID.GetHashCode();
                if (this.ParentBusinessUnitGroupID != null)
                    hashCode = hashCode * 59 + this.ParentBusinessUnitGroupID.GetHashCode();
                if (this.ParentExternalBusinessUnitGroupID != null)
                    hashCode = hashCode * 59 + this.ParentExternalBusinessUnitGroupID.GetHashCode();
                if (this.BusinessUnitGroupLevelID != null)
                    hashCode = hashCode * 59 + this.BusinessUnitGroupLevelID.GetHashCode();
                if (this.ExternalBusinessUnitGroupLevelID != null)
                    hashCode = hashCode * 59 + this.ExternalBusinessUnitGroupLevelID.GetHashCode();
                if (this.GlobalLocationNumber != null)
                    hashCode = hashCode * 59 + this.GlobalLocationNumber.GetHashCode();
                if (this.VatRegistrationNumber != null)
                    hashCode = hashCode * 59 + this.VatRegistrationNumber.GetHashCode();
                if (this.IsoCountryCode != null)
                    hashCode = hashCode * 59 + this.IsoCountryCode.GetHashCode();
                if (this.TimeZoneCode != null)
                    hashCode = hashCode * 59 + this.TimeZoneCode.GetHashCode();
                if (this.TimeZoneLongID != null)
                    hashCode = hashCode * 59 + this.TimeZoneLongID.GetHashCode();
                if (this.LanguageID != null)
                    hashCode = hashCode * 59 + this.LanguageID.GetHashCode();
                if (this.Name != null)
                    hashCode = hashCode * 59 + this.Name.GetHashCode();
                if (this.SurrogateName != null)
                    hashCode = hashCode * 59 + this.SurrogateName.GetHashCode();
                if (this.GkEffectiveDate != null)
                    hashCode = hashCode * 59 + this.GkEffectiveDate.GetHashCode();
                if (this.RegionFlag != null)
                    hashCode = hashCode * 59 + this.RegionFlag.GetHashCode();
                if (this.IndependentRetailerFlag != null)
                    hashCode = hashCode * 59 + this.IndependentRetailerFlag.GetHashCode();
                if (this.OwnerOfMultipleStoresParentID != null)
                    hashCode = hashCode * 59 + this.OwnerOfMultipleStoresParentID.GetHashCode();
                if (this.GkSystemFlag != null)
                    hashCode = hashCode * 59 + this.GkSystemFlag.GetHashCode();
                if (this.MainCurrencyID != null)
                    hashCode = hashCode * 59 + this.MainCurrencyID.GetHashCode();
                if (this.ExportToGfkFlag != null)
                    hashCode = hashCode * 59 + this.ExportToGfkFlag.GetHashCode();
                if (this.Size != null)
                    hashCode = hashCode * 59 + this.Size.GetHashCode();
                if (this.SellingAreaSize != null)
                    hashCode = hashCode * 59 + this.SellingAreaSize.GetHashCode();
                if (this.MerchandiseHierarchyFunctionCode != null)
                    hashCode = hashCode * 59 + this.MerchandiseHierarchyFunctionCode.GetHashCode();
                if (this.IncludesSalesTaxFlag != null)
                    hashCode = hashCode * 59 + this.IncludesSalesTaxFlag.GetHashCode();
                if (this.TaxNumber != null)
                    hashCode = hashCode * 59 + this.TaxNumber.GetHashCode();
                if (this.AlternateISOCurrencyCode != null)
                    hashCode = hashCode * 59 + this.AlternateISOCurrencyCode.GetHashCode();
                if (this.MainWeighingUnit != null)
                    hashCode = hashCode * 59 + this.MainWeighingUnit.GetHashCode();
                if (this.PurchasingOrganization != null)
                    hashCode = hashCode * 59 + this.PurchasingOrganization.GetHashCode();
                if (this.ReceiverLocationList != null)
                    hashCode = hashCode * 59 + this.ReceiverLocationList.GetHashCode();
                if (this.CompanyCodeList != null)
                    hashCode = hashCode * 59 + this.CompanyCodeList.GetHashCode();
                if (this.BankAccountList != null)
                    hashCode = hashCode * 59 + this.BankAccountList.GetHashCode();
                if (this.PartyID != null)
                    hashCode = hashCode * 59 + this.PartyID.GetHashCode();
                if (this.Party != null)
                    hashCode = hashCode * 59 + this.Party.GetHashCode();
                if (this.Contact != null)
                    hashCode = hashCode * 59 + this.Contact.GetHashCode();
                if (this.TranslationList != null)
                    hashCode = hashCode * 59 + this.TranslationList.GetHashCode();
                if (this.PackageID != null)
                    hashCode = hashCode * 59 + this.PackageID.GetHashCode();
                if (this.SalesOrganizationID != null)
                    hashCode = hashCode * 59 + this.SalesOrganizationID.GetHashCode();
                if (this.DistributionChannelTypeCode != null)
                    hashCode = hashCode * 59 + this.DistributionChannelTypeCode.GetHashCode();
                if (this.DeleteTimestampUTC0 != null)
                    hashCode = hashCode * 59 + this.DeleteTimestampUTC0.GetHashCode();
                if (this.BusinessUnitStatusCode != null)
                    hashCode = hashCode * 59 + this.BusinessUnitStatusCode.GetHashCode();
                if (this.LatitudeDecimalDegrees != null)
                    hashCode = hashCode * 59 + this.LatitudeDecimalDegrees.GetHashCode();
                if (this.LongitudeDecimalDegrees != null)
                    hashCode = hashCode * 59 + this.LongitudeDecimalDegrees.GetHashCode();
                if (this.Tid != null)
                    hashCode = hashCode * 59 + this.Tid.GetHashCode();
                if (this.Xxcustom08 != null)
                    hashCode = hashCode * 59 + this.Xxcustom08.GetHashCode();
                if (this.Xxcustom10 != null)
                    hashCode = hashCode * 59 + this.Xxcustom10.GetHashCode();
                if (this.Xxcustom09 != null)
                    hashCode = hashCode * 59 + this.Xxcustom09.GetHashCode();
                if (this.Xxcustom07 != null)
                    hashCode = hashCode * 59 + this.Xxcustom07.GetHashCode();
                if (this.Xxcustom05 != null)
                    hashCode = hashCode * 59 + this.Xxcustom05.GetHashCode();
                if (this.Xxcustom06 != null)
                    hashCode = hashCode * 59 + this.Xxcustom06.GetHashCode();
                if (this.Xxcustom11 != null)
                    hashCode = hashCode * 59 + this.Xxcustom11.GetHashCode();
                if (this.Xxcustom12 != null)
                    hashCode = hashCode * 59 + this.Xxcustom12.GetHashCode();
                if (this.Xxcustom13 != null)
                    hashCode = hashCode * 59 + this.Xxcustom13.GetHashCode();
                if (this.Xxcustom14 != null)
                    hashCode = hashCode * 59 + this.Xxcustom14.GetHashCode();
                if (this.Xxcustom15 != null)
                    hashCode = hashCode * 59 + this.Xxcustom15.GetHashCode();
                if (this.Xxcustom03 != null)
                    hashCode = hashCode * 59 + this.Xxcustom03.GetHashCode();
                if (this.Xxcustom02 != null)
                    hashCode = hashCode * 59 + this.Xxcustom02.GetHashCode();
                if (this.Xxcustom04 != null)
                    hashCode = hashCode * 59 + this.Xxcustom04.GetHashCode();
                if (this.Xxcustom16 != null)
                    hashCode = hashCode * 59 + this.Xxcustom16.GetHashCode();
                if (this.Xxcustom17 != null)
                    hashCode = hashCode * 59 + this.Xxcustom17.GetHashCode();
                if (this.Xxcustom18 != null)
                    hashCode = hashCode * 59 + this.Xxcustom18.GetHashCode();
                if (this.Xxcustom19 != null)
                    hashCode = hashCode * 59 + this.Xxcustom19.GetHashCode();
                if (this.Xxcustom20 != null)
                    hashCode = hashCode * 59 + this.Xxcustom20.GetHashCode();
                if (this.Xxcustom21 != null)
                    hashCode = hashCode * 59 + this.Xxcustom21.GetHashCode();
                if (this.Xxcustom22 != null)
                    hashCode = hashCode * 59 + this.Xxcustom22.GetHashCode();
                if (this.Xxcustom23 != null)
                    hashCode = hashCode * 59 + this.Xxcustom23.GetHashCode();
                if (this.Xxcustom24 != null)
                    hashCode = hashCode * 59 + this.Xxcustom24.GetHashCode();
                if (this.Xxcustom25 != null)
                    hashCode = hashCode * 59 + this.Xxcustom25.GetHashCode();
                if (this.Xxcustom26 != null)
                    hashCode = hashCode * 59 + this.Xxcustom26.GetHashCode();
                if (this.Xxcustom27 != null)
                    hashCode = hashCode * 59 + this.Xxcustom27.GetHashCode();
                if (this.Xxcustom28 != null)
                    hashCode = hashCode * 59 + this.Xxcustom28.GetHashCode();
                if (this.Xxcustom29 != null)
                    hashCode = hashCode * 59 + this.Xxcustom29.GetHashCode();
                if (this.Xxcustom30 != null)
                    hashCode = hashCode * 59 + this.Xxcustom30.GetHashCode();
                if (this.Xxcustom01 != null)
                    hashCode = hashCode * 59 + this.Xxcustom01.GetHashCode();
                return hashCode;
            }
        }

        /// <summary>
        /// To validate all properties of the instance
        /// </summary>
        /// <param name="validationContext">Validation context</param>
        /// <returns>Validation Result</returns>
        IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
        {
            yield break;
        }
    }

}
