/* 
 * 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>
    /// UomSO &lt;p&gt;Units in which a value is being expressed, or manner in which a measurement has been taken.&lt;br /&gt; Unit of measure codes are referred from the item. The codes have to be initialized before they are used on the item.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from dc_import_UnitOfMeasure. &lt;br /&gt;&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO :  IEquatable<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO" /> class.
        /// </summary>
        /// <param name="unitOfMeasureCode">&lt;p&gt;Identification of the unit of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UOMCode&lt;br /&gt;&lt;/p&gt; (required).</param>
        /// <param name="translatedUOMCode">&lt;p&gt;Localized code of the unit of measure. This code is displayed in the GUI and can be used also in exports. Example: The unit of measure with the code &#39;PCE&#39; has the localized code &#39;ST&#39;.&lt;br /&gt;&lt;/p&gt; (required).</param>
        /// <param name="unitOfMeasureTypeCode">&lt;p&gt;Indicates what this unit of measure entity type instance measures. Examples include weight or mass, length, cube (length x width x depth), volume, discrete items (each), etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UOMTypeCode&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="englishMetricFlag">&lt;p&gt;Indicates whether this unit of measure is part of the English or metric system of measurements.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="name">&lt;p&gt;Name assigned to this unit of measure.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="description">&lt;p&gt;Description assigned to this unit of measure.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="uomConversionList">&lt;p&gt;List of conversions from this unit of measure into other units of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not used. Not filled in the data maintenance.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="decimalPlacesCount">&lt;p&gt;Allowed count of decimal places. The quantities are displayed with this decimal places count in the GUI and reports. When registering an item in this unit, there can be registered maximally this count of decimal places.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="isoUnitOfMeasureCode">&lt;p&gt;The corresponding ISO code for this unit of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not imported.&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;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="translations">&lt;p&gt;List of translations of unit of measure texts&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UomTranslationList&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="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="xxcustom01">&lt;p&gt;Additional field for custom development&lt;br /&gt;&lt;/p&gt;.</param>
        public ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO(string unitOfMeasureCode = default(string), string translatedUOMCode = default(string), string unitOfMeasureTypeCode = default(string), bool? englishMetricFlag = default(bool?), string name = default(string), string description = default(string), List<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomConversionSO> uomConversionList = default(List<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomConversionSO>), int? decimalPlacesCount = default(int?), string isoUnitOfMeasureCode = default(string), string tid = default(string), List<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomTranslationSO> translations = default(List<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomTranslationSO>), string xxcustom05 = default(string), string xxcustom03 = default(string), string xxcustom02 = default(string), string xxcustom04 = default(string), string xxcustom01 = default(string))
        {
            // to ensure "unitOfMeasureCode" is required (not null)
            if (unitOfMeasureCode == null)
            {
                throw new InvalidDataException("unitOfMeasureCode is a required property for ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO and cannot be null");
            }
            else
            {
                this.UnitOfMeasureCode = unitOfMeasureCode;
            }
            // to ensure "translatedUOMCode" is required (not null)
            if (translatedUOMCode == null)
            {
                throw new InvalidDataException("translatedUOMCode is a required property for ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO and cannot be null");
            }
            else
            {
                this.TranslatedUOMCode = translatedUOMCode;
            }
            this.UnitOfMeasureTypeCode = unitOfMeasureTypeCode;
            this.EnglishMetricFlag = englishMetricFlag;
            this.Name = name;
            this.Description = description;
            this.UomConversionList = uomConversionList;
            this.DecimalPlacesCount = decimalPlacesCount;
            this.IsoUnitOfMeasureCode = isoUnitOfMeasureCode;
            this.Tid = tid;
            this.Translations = translations;
            this.Xxcustom05 = xxcustom05;
            this.Xxcustom03 = xxcustom03;
            this.Xxcustom02 = xxcustom02;
            this.Xxcustom04 = xxcustom04;
            this.Xxcustom01 = xxcustom01;
        }
        
        /// <summary>
        /// &lt;p&gt;Identification of the unit of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UOMCode&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Identification of the unit of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UOMCode&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="unitOfMeasureCode", EmitDefaultValue=false)]
        public string UnitOfMeasureCode { get; set; }

        /// <summary>
        /// &lt;p&gt;Localized code of the unit of measure. This code is displayed in the GUI and can be used also in exports. Example: The unit of measure with the code &#39;PCE&#39; has the localized code &#39;ST&#39;.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Localized code of the unit of measure. This code is displayed in the GUI and can be used also in exports. Example: The unit of measure with the code &#39;PCE&#39; has the localized code &#39;ST&#39;.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="translatedUOMCode", EmitDefaultValue=false)]
        public string TranslatedUOMCode { get; set; }

        /// <summary>
        /// &lt;p&gt;Indicates what this unit of measure entity type instance measures. Examples include weight or mass, length, cube (length x width x depth), volume, discrete items (each), etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UOMTypeCode&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Indicates what this unit of measure entity type instance measures. Examples include weight or mass, length, cube (length x width x depth), volume, discrete items (each), etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UOMTypeCode&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="unitOfMeasureTypeCode", EmitDefaultValue=false)]
        public string UnitOfMeasureTypeCode { get; set; }

        /// <summary>
        /// &lt;p&gt;Indicates whether this unit of measure is part of the English or metric system of measurements.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Indicates whether this unit of measure is part of the English or metric system of measurements.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="englishMetricFlag", EmitDefaultValue=false)]
        public bool? EnglishMetricFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;Name assigned to this unit of measure.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Name assigned to this unit of measure.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="name", EmitDefaultValue=false)]
        public string Name { get; set; }

        /// <summary>
        /// &lt;p&gt;Description assigned to this unit of measure.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Description assigned to this unit of measure.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="description", EmitDefaultValue=false)]
        public string Description { get; set; }

        /// <summary>
        /// &lt;p&gt;List of conversions from this unit of measure into other units of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not used. Not filled in the data maintenance.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of conversions from this unit of measure into other units of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not used. Not filled in the data maintenance.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="uomConversionList", EmitDefaultValue=false)]
        public List<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomConversionSO> UomConversionList { get; set; }

        /// <summary>
        /// &lt;p&gt;Allowed count of decimal places. The quantities are displayed with this decimal places count in the GUI and reports. When registering an item in this unit, there can be registered maximally this count of decimal places.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Allowed count of decimal places. The quantities are displayed with this decimal places count in the GUI and reports. When registering an item in this unit, there can be registered maximally this count of decimal places.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="decimalPlacesCount", EmitDefaultValue=false)]
        public int? DecimalPlacesCount { get; set; }

        /// <summary>
        /// &lt;p&gt;The corresponding ISO code for this unit of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not imported.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The corresponding ISO code for this unit of measure&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not imported.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="isoUnitOfMeasureCode", EmitDefaultValue=false)]
        public string IsoUnitOfMeasureCode { 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;&lt;br /&gt;&lt;p&gt;Generated, not imported.&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;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="tid", EmitDefaultValue=false)]
        public string Tid { get; set; }

        /// <summary>
        /// &lt;p&gt;List of translations of unit of measure texts&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UomTranslationList&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of translations of unit of measure texts&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; dc_import_UnitOfMeasure: UnitOfMeasure.UomTranslationList&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="translations", EmitDefaultValue=false)]
        public List<ComGkSoftwareSweeSesApiServerMdUomDtoSoUomTranslationSO> Translations { 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="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="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 ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO {\n");
            sb.Append("  UnitOfMeasureCode: ").Append(UnitOfMeasureCode).Append("\n");
            sb.Append("  TranslatedUOMCode: ").Append(TranslatedUOMCode).Append("\n");
            sb.Append("  UnitOfMeasureTypeCode: ").Append(UnitOfMeasureTypeCode).Append("\n");
            sb.Append("  EnglishMetricFlag: ").Append(EnglishMetricFlag).Append("\n");
            sb.Append("  Name: ").Append(Name).Append("\n");
            sb.Append("  Description: ").Append(Description).Append("\n");
            sb.Append("  UomConversionList: ").Append(UomConversionList).Append("\n");
            sb.Append("  DecimalPlacesCount: ").Append(DecimalPlacesCount).Append("\n");
            sb.Append("  IsoUnitOfMeasureCode: ").Append(IsoUnitOfMeasureCode).Append("\n");
            sb.Append("  Tid: ").Append(Tid).Append("\n");
            sb.Append("  Translations: ").Append(Translations).Append("\n");
            sb.Append("  Xxcustom05: ").Append(Xxcustom05).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("  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 ComGkSoftwareSweeSesApiServerMdUomDtoSoUomSO);
        }

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

            return 
                (
                    this.UnitOfMeasureCode == input.UnitOfMeasureCode ||
                    (this.UnitOfMeasureCode != null &&
                    this.UnitOfMeasureCode.Equals(input.UnitOfMeasureCode))
                ) && 
                (
                    this.TranslatedUOMCode == input.TranslatedUOMCode ||
                    (this.TranslatedUOMCode != null &&
                    this.TranslatedUOMCode.Equals(input.TranslatedUOMCode))
                ) && 
                (
                    this.UnitOfMeasureTypeCode == input.UnitOfMeasureTypeCode ||
                    (this.UnitOfMeasureTypeCode != null &&
                    this.UnitOfMeasureTypeCode.Equals(input.UnitOfMeasureTypeCode))
                ) && 
                (
                    this.EnglishMetricFlag == input.EnglishMetricFlag ||
                    (this.EnglishMetricFlag != null &&
                    this.EnglishMetricFlag.Equals(input.EnglishMetricFlag))
                ) && 
                (
                    this.Name == input.Name ||
                    (this.Name != null &&
                    this.Name.Equals(input.Name))
                ) && 
                (
                    this.Description == input.Description ||
                    (this.Description != null &&
                    this.Description.Equals(input.Description))
                ) && 
                (
                    this.UomConversionList == input.UomConversionList ||
                    this.UomConversionList != null &&
                    this.UomConversionList.SequenceEqual(input.UomConversionList)
                ) && 
                (
                    this.DecimalPlacesCount == input.DecimalPlacesCount ||
                    (this.DecimalPlacesCount != null &&
                    this.DecimalPlacesCount.Equals(input.DecimalPlacesCount))
                ) && 
                (
                    this.IsoUnitOfMeasureCode == input.IsoUnitOfMeasureCode ||
                    (this.IsoUnitOfMeasureCode != null &&
                    this.IsoUnitOfMeasureCode.Equals(input.IsoUnitOfMeasureCode))
                ) && 
                (
                    this.Tid == input.Tid ||
                    (this.Tid != null &&
                    this.Tid.Equals(input.Tid))
                ) && 
                (
                    this.Translations == input.Translations ||
                    this.Translations != null &&
                    this.Translations.SequenceEqual(input.Translations)
                ) && 
                (
                    this.Xxcustom05 == input.Xxcustom05 ||
                    (this.Xxcustom05 != null &&
                    this.Xxcustom05.Equals(input.Xxcustom05))
                ) && 
                (
                    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.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.UnitOfMeasureCode != null)
                    hashCode = hashCode * 59 + this.UnitOfMeasureCode.GetHashCode();
                if (this.TranslatedUOMCode != null)
                    hashCode = hashCode * 59 + this.TranslatedUOMCode.GetHashCode();
                if (this.UnitOfMeasureTypeCode != null)
                    hashCode = hashCode * 59 + this.UnitOfMeasureTypeCode.GetHashCode();
                if (this.EnglishMetricFlag != null)
                    hashCode = hashCode * 59 + this.EnglishMetricFlag.GetHashCode();
                if (this.Name != null)
                    hashCode = hashCode * 59 + this.Name.GetHashCode();
                if (this.Description != null)
                    hashCode = hashCode * 59 + this.Description.GetHashCode();
                if (this.UomConversionList != null)
                    hashCode = hashCode * 59 + this.UomConversionList.GetHashCode();
                if (this.DecimalPlacesCount != null)
                    hashCode = hashCode * 59 + this.DecimalPlacesCount.GetHashCode();
                if (this.IsoUnitOfMeasureCode != null)
                    hashCode = hashCode * 59 + this.IsoUnitOfMeasureCode.GetHashCode();
                if (this.Tid != null)
                    hashCode = hashCode * 59 + this.Tid.GetHashCode();
                if (this.Translations != null)
                    hashCode = hashCode * 59 + this.Translations.GetHashCode();
                if (this.Xxcustom05 != null)
                    hashCode = hashCode * 59 + this.Xxcustom05.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.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;
        }
    }

}
